Co jest nie tak z tą prostą linią kodu obliczeniowego?
Pokaż wyniki od 1 do 7 z 7

Wątek: Co jest nie tak z tą prostą linią kodu obliczeniowego?

  1. #1
    Witajcie ludzie.

    Przechodzę przez dach za minutę.
    Dlaczego poniższe obliczenia zwracają 0?

    Wstawiony kod double MyNewSL = OrderOpenPrice () - (StopLoss * Point * BrokerDigitCalc); OrderSelect dla OrderOpenPrice został wywołany, a orderOpenPrice zwraca poprawną wartość.
    StopLoss = double, wartość 15,
    BrokerDigitCalc = double, wartość 10.

    Nie rozumiem tego? Czy MT ma problem z obliczeniami nawiasów?
    Jeśli po prostu zamieniam wszystko w nawiasach na 0,
    Wstawiony kod double MyNewSL = OrderOpenPrice () - (0) MyNewSL to OrderOpenPrice, zgodnie z oczekiwaniami.

    Wiem, że to proste, ale w tym momencie nie rozumiem ...

    Pozdrowienia.
    Najgorsze przypadki

  2. #2

    Cytat Zamieszczone przez ;
    Witajcie ludzie. Przeszedłem przez dach w minutę. Dlaczego poniższe obliczenia zwracają 0? Wstawiony kod double MyNewSL = OrderOpenPrice () - (StopLoss * Point * BrokerDigitCalc); OrderSelect dla OrderOpenPrice został wywołany, a orderOpenPrice zwraca poprawną wartość. StopLoss = double, Value 15, BrokerDigitCalc = double, Wartość 10. Nie rozumiem tego? Czy MT ma problem z obliczeniami nawiasów? Jeśli po prostu zamieniam wszystko w nawiasach na 0, wstawiony kod double MyNewSL = OrderOpenPrice () - (0) MyNewSL ...
    Spróbuj tego: double MyNewSL = OrderOpenPrice () - (StopLoss * Point) * BrokerDigitCalc; Poza tym musiałby zobaczyć więcej kodu. Nie wiesz co masz na myśli: StopLoss = double, Value 15, BrokerDigitCalc = double, Value 10.

  3. #3

    Cytat Zamieszczone przez ;
    Witajcie ludzie. Przeszedłem przez dach w minutę. Dlaczego poniższe obliczenia zwracają 0? Wstawiony kod double MyNewSL = OrderOpenPrice () - (StopLoss * Point * BrokerDigitCalc); OrderSelect dla OrderOpenPrice został wywołany, a orderOpenPrice zwraca poprawną wartość. StopLoss = double, Value 15, BrokerDigitCalc = double, Wartość 10. Nie rozumiem tego? Czy MT ma problem z obliczeniami nawiasów? Jeśli po prostu zamieniam wszystko w nawiasach na 0, wstawiony kod double MyNewSL = OrderOpenPrice () - (0) MyNewSL to OrderOpenPrice, ...
    dałeś nam tylko część obrazu. dlaczego nie pozbyć się orderopenprice i zobaczyć, co tylko nawiasy zwracają. nie wiedząc, który punkt jest równy i na jakim wykresie się znajdujesz, mogę się tylko domyślać, że twoja matematyka zwraca wartość, która jest poza normalnymi przedziałami cenowymi ... tj. jeśli punkt = 1, to twoja kolejność zamówień - (150) będzie liczba ujemna .... stąd zmienia się na zero, ponieważ nie możesz mieć ujemnej ceny.

  4. #4
    Punkt = 0,00001
    Cytat Zamieszczone przez ;
    Nie wiesz co masz na myśli: StopLoss = double, Value 15, BrokerDigitCalc = double, Value 10.
    Tak więc - zostawiliśmy klamry (tak naprawdę nie było to konieczne) i wszystko jest w porządku. Wstawiony kod double MyNewSL = OrderOpenPrice () -StopLoss * Point * BrokerDigitCalc; Dziwny problem. Wydaje się, że MT nie może obsłużyć więcej niż 2 wartości w nawiasie ...?

  5. #5

    Cytat Zamieszczone przez ;
    Punkt = 0,00001 Więc - zostawiliśmy klamry (tak naprawdę nie było to konieczne) i wszystko jest w porządku. Wstawiony kod double MyNewSL = OrderOpenPrice () -StopLoss * Point * BrokerDigitCalc; Dziwny problem. Wydaje się, że MT nie może obsłużyć więcej niż 2 wartości w nawiasie ...?
    przestań bawić się nawiasami. zrobiłeś coś złego. Mam 99,9999999% pewności, że mql nie ma problemu z nawiasami. usuń ORDEROPENPRICE i zobacz, co zwracają BRACKETY .... WIEM, że orderopenprice będzie poprawny, a ty sam to udowodniłeś .... więc dowiedz się, co dzieje się w części OTHER. stamtąd możesz zacząć próbować dowiedzieć się, co jest nie tak. nie musimy znać wartości, która jest poprawna, musimy znać wartość, która jest zła! jeśli nie rozwiążesz problemu w tym przypadku, nigdy go nie rozwiążesz, jeśli kiedykolwiek się pojawi ... więc znajdź problem i upewnij się, że nie popełniłeś tego samego błędu (ponieważ obstawiam, że to coś, co gdzieś popełniłeś źle).

  6. #6

    Cytat Zamieszczone przez ;
    Witajcie ludzie. Przechodzę przez dach za minutę. Dlaczego poniższe obliczenia zwracają 0?
    Czy sprawdziłeś błędy dotyczące odlewania? Już mnie to złapało! Przeczytaj to, jeśli jeszcze tego nie zrobiłeś ...
    http://docs.mql4.com/basis/types/casting

  7. #7
    Widziałem błędy matematyczne z MT4, gdy nie w pełni zamknij formułę w (). (gdy formuła robi więcej niż tylko multipliion.) double xyz = OrderOpenPrice () - myValue * Point * DigitSpace; double xyz = (OrderOpenPrice () - ((myValue * Point) * DigitSpace)); Normalne działanie równań matematycznych jest zawsze najpierw mnożyć, ale aby zapewnić wynik lub rozwiązanie formuły, co masz na myśli, powinieneś użyć nawiasów.

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Używamy cookies
Używamy cookies, aby jak najlepiej dostosować witrynę do Twoich potrzeb. Kontynuowanie przeglądania tej strony, oznacza zgodę na używanie plików cookies. Aby uzyskać więcej informacji zapoznaj się z naszą Polityką Prywatności.