Normalizacja wielkości pozycji
Często, czy to na forach, czy też za pośrednictwem komunikatorów ludzi pytają dlaczego ich EA nie działa, po czym okazuje się, że w kodzie nie sprawdzają, czy wyliczona na podstawie ich money management wartość wielkości pozycji jest dopuszczalna przez brokera.
A sprawa jest bardzo prosta - wystarczy przepuścić obliczoną wielkość przez funkcję normalizującą, taką jak ta:
double normalizeLots(double value) {
double minLots=MarketInfo(Symbol(),MODE_MINLOT);
double maxLots=MarketInfo(Symbol(),MODE_MAXLOT);
if(valuemaxLots) {
value=maxLots;
}
int digits=1;
if(minLots<0.1) {
digits=2;
}
return(NormalizeDouble(value,digits));
}
Funkcja zwróci wartość wielkości pozycji w dopuszczalnym przez brokera zakresie, jeśli wartość na wejściu wykracza poza ten zakres.
UPDATE: poprawiłem funkcję, aby automatycznie wykrywała, czy dany broker obsługuje mikroloty czy też nie, teraz powinno działać absolutnie wszędzie (czyli zarówno jeśli minimalną jednostką jest minilot jak i mikrolot).
0 odpowiedzi do wpisu "Normalizacja wielkości pozycji"