PDA

Zobacz pełną wersję : Potrzebujesz kogoś, kto rzuci trochę światła na kwestię programowania



oxik3dp
11-14-2006 19:00, 19:00
Cześć,

Mam dwie rzeczy, które naprawdę by się podobały, gdyby ktoś wiedział, dlaczego tak się dzieje i jak to osiągnąć.

Czasami porównując do wartości równych, pliki warunków

na przykład:

/* Wartości, które porównuję, są dynamiczne, ale je drukuję i drukuję wyniki warunków, a czasem się to nie udaje *

val1 = 0,01;
val2 = 0,01;
/* czasami, jeśli warunek się nie powiedzie *
if (val1 == val2)
{
}

Drugi problem: SOLVED

Dzięki za pomoc.
Saaedb.

Raxaelcatg
10-31-2021 20:31, 20:31
Myślę, że pierwszy może być błędem mt. na forum meta-cytatów znajduje się post podobny do tego.

sakipkg
10-31-2021 21:51, 21:51
To tylko strzał w ciemno, ale czy nie powinieneś powiedzieć, co IsActiveLongPostion nie jest równe? Czy nie powinien być bardziej podobny do tego? if (var == 1) {if (X! = IsActiveLongPostion var2 gt; = varCont) {CloseAllSellTrades (); if (IsTradingTime ()) {BuySignalGenerated (); }}}

oxik3dp
10-31-2021 23:12, 23:12
To tylko strzał w ciemno, ale czy nie powinieneś powiedzieć, co IsActiveLongPostion nie jest równe? Czy nie powinien być bardziej podobny do tego? if (var == 1) {if (X! = IsActiveLongPostion var2 gt; = varCont) {CloseAllSellTrades (); if (IsTradingTime ()) {BuySignalGenerated (); }}}
To jest Bool

oxik3dp
11-01-2021 00:33, 00:33
Myślę, że pierwszy może być błędem mt. na forum meta-cytatów znajduje się post podobny do tego.
Mam nadzieję, że nie, bo sprawia, że ​​rzeczy są bardzo niespójne.

asdregvegar
11-01-2021 01:54, 01:54
Krótka notka o pierwszym. Nigdy nie używam porównania == dla podwójnego typu. Lepiej zdefiniować próg. Na przykład jeśli var1-var2 lt; = 0.001. podwójne parametry są zwykle bardzo trudne.

oxik3dp
11-01-2021 03:14, 03:14
Krótka notka o pierwszym. Nigdy nie używam porównania == dla podwójnego typu. Lepiej zdefiniować próg. Na przykład jeśli var1-var2 lt; = 0.001. podwójne parametry są zwykle bardzo trudne.
Aparsai, tak naprawdę robię, jeśli (dblVal1 - dblVal2 gt; = ThreshHold) i próbowałem również spillting większy niż i równy na dwa warunki jeśli. Programuję od ponad 8 lat, więc jestem pewien, że nie robię czegoś głupiego. Jest to albo błąd w MT, albo coś takiego o sterowaniu przepływem MT, o którym nie wiem. A ta kwestia jest sporadyczna. Na każde 50 czeków para może zawieść.

asdregvegar
11-01-2021 04:35, 04:35
Aparsai, tak naprawdę robię, jeśli (dblVal1 - dblVal2 gt; = ThreshHold) i próbowałem również spillting większy niż i równy na dwa warunki jeśli. Programuję od ponad 8 lat, więc jestem pewien, że nie robię czegoś głupiego. Jest to albo błąd w MT, albo coś takiego o sterowaniu przepływem MT, o którym nie wiem. A ta kwestia jest sporadyczna. Na każde 50 czeków para może zawieść.
Mogę być bardzo wybredny, ale MT4 jest najwyraźniej bardzo wrażliwy na użycie parantez. Proponuję dodać parę parantez w następujący sposób: if ((dblVal1 - dblVal2) gt; = ThreshHold) BTW, umieściłem ten komentarz na podstawie podanych informacji. Robię to samo na podstawie tego, co wpisałeś. Powodzenia, Al

oxik3dp
11-01-2021 05:56, 05:56
Mogę być bardzo wybredny, ale MT4 jest najwyraźniej bardzo wrażliwy na użycie parantez. Proponuję dodać parę parantez w następujący sposób: if ((dblVal1 - dblVal2) gt; = ThreshHold) BTW, umieściłem ten komentarz na podstawie podanych informacji. Robię to samo na podstawie tego, co wpisałeś. Powodzenia, Al
nawiasy są tam i, jak już powiedziałem, ich intermitent. Tutaj, spróbuj uruchomić tę jedną minę wykresową Alert (MathAbs, MathAbs (Open [1] - Close [1]), Open, Open [1], Close, Close [1], Condition, MathAbs (Open [1] - Zamknij [1]) gt; = 1 * Punkt); if (MathAbs (Open [1] - Close [1]) gt; = 1 * Point) {Alert (tutaj); } Robię to samo dla testowania i co najmniej raz na 30 minut jego nie trafia czeku. Mój aktualny stan wygląda jak Val1 = 1.800 Val2 = 1.799 ThreshHold = 1 if (MathAbs (Val1 - Val2) gt; = MathAbs (ThreshHold * Point)) {} Jedyny problem tutaj może być, że ustawiam wartość ThreshHold na karcie Wejście w oknie Właściwości EA.

garacubixxo
11-01-2021 07:17, 07:17
Myślę, że pierwszy może być błędem mt. na forum meta-cytatów znajduje się post podobny do tego.
nie błąd, tylko zmiennoprzecinkowe. Wystarczy google, by porównać duble, by uzyskać więcej informacji.

oxik3dp
11-01-2021 08:38, 08:38
nie błąd, tylko zmiennoprzecinkowe. Wystarczy google, by porównać duble, by uzyskać więcej informacji.
Normalizing the Doubles dba o problem, o którym mówisz. I normalizuję je.

339mopkrgport
11-01-2021 09:58, 09:58
Normalizing the Doubles dba o problem, o którym mówisz. I normalizuję je.
Kilka pomysłów - Pomnóż przez potęgę dziesięciu 10 (jeśli dokładnie wiesz ile miejsc po przecinku i rób to, co chcesz robić w arytmetyce całkowitej, - Przekształć ją w ciąg i porównaj część, którą chcesz

oxik3dp
11-01-2021 11:19, 11:19
Kilka pomysłów - Pomnóż przez potęgę dziesięciu 10 (jeśli dokładnie wiesz ile miejsc po przecinku i rób to, co chcesz robić w arytmetyce całkowitej, - Przekształć ją w ciąg i porównaj część, którą chcesz
W tej chwili dzielę go przez punkt, aby uzyskać ten problem. Ale nadal byłoby miło wiedzieć, czy to błąd w MQL, czy też czegoś mi brakowało.