Funkcja normalizująca wielkość 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(value < minLots)
     value = minLots;

  if(value > maxLots)
     value = maxLots;

  int digits = 1;

  if(minLots == 0.01)
     digits = 2;
  if (minLots ==0.05)
  {
   return(NormalizeDouble(2*value,1)/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.

 

Autor: Łukasz Tomaszkiewicz

Podziel się ze znajomymi:

Prześlij nam swoje uwagi

[contact-form-7 404 "Not Found"]
  • Facebook