Расчет текущей просадки по отдельной паре

Roman Meskhidze  

Коллеги, глаз замылился не вижу где ошибка, прошу помощи

 

double CurentDD()
{
   double profit = 0;
   double dd = 0;
   
   for (int i=OrdersTotal()-1; i >= 0; i--)
   {
      if (OrderSelect(i,SELECT_BY_POS)) 
      {
         if (OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
         {
            profit += OrderTakeProfit();
         }
      }
   }
   
   dd = profit / (AccountBalance()/100);
   
   return(dd);
}
Alexander Bereznyak  
вместо OrderTakeProfit() поставить OrderProfit()+OrderCommission()+OrderSwap()
Aleksey Lebedev  

Наверно умножить на 100.

AccountBalance() желательно проверить перед делением, как-то так:

   double Balance=AccountBalance();
   if(Balance!=0.0) dd=100.0*profit/Balance;
   else return(EMPTY_VALUE);
Roman Meskhidze  
Alexander Bereznyak:
вместо OrderTakeProfit() поставить OrderProfit()+OrderCommission()+OrderSwap()

Александр, вот оно! Вы поймали проблему!

Спасибо большое! 

Причина обращения: