Как посчитать прибыль по истории

R-TRY

Интересующийся
Привет. Нужная такая функция, советник увеличивает лов в зависимости от профита, но при достижении определенной величины сбрасывает лот на начальный и все понесло заново.

Сделал вот так:
Код:
for(int pr=OrdersHistoryTotal()-1;pr>=prstop;pr--)
   {
   if (profitclots < depo)  
     {
     profitclots += (OrderProfit()+OrderCommission()+OrderSwap());
     GetLots();
     }  
     
   if (profitclots > depo) 
     {
     profitclots =0;
     GetLots();
     prstop = (OrdersHistoryTotal()-1);
     }
   }
Считает, сбрасывает, но! Когда меняется тип ордера, то профит становится отрицательным. Если ордера все одного типа, то все гуд.

Подскажите, куда копать?
 

Ugar

Гуру форума
Привет. Нужная такая функция, советник увеличивает лов в зависимости от профита, но при достижении определенной величины сбрасывает лот на начальный и все понесло заново.

Сделал вот так:
Код:
for(int pr=OrdersHistoryTotal()-1;pr>=prstop;pr--)
   {
   if (profitclots < depo)  
     {
     profitclots += (OrderProfit()+OrderCommission()+OrderSwap());
     GetLots();
     }  
     
   if (profitclots > depo) 
     {
     profitclots =0;
     GetLots();
     prstop = (OrdersHistoryTotal()-1);
     }
   }
Считает, сбрасывает, но! Когда меняется тип ордера, то профит становится отрицательным. Если ордера все одного типа, то все гуд.

Подскажите, куда копать?
Для начала, в цикле нет выбора ордера. А значит он считает прибыль последнего выбранного ордера в другой функции.

(OrderProfit()+OrderCommission()+OrderSwap()) Считает прибыль независимо от типа. Но если ордер закрылся с убытком, то это отрицательная прибыль.
 
Верх