Normalizacja wielkości pozycji

Kategoria: Repozytorium kodu MQL4 | 17 września 2008 o 17:20 | Odpowiedzi: Brak | Permalink

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"