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

Раздел: Язык программирования MQL4
Автор темы: R-TRY
Создана: 2018-10-16 08:57
Ответов: 1 | Просмотров: 2410
Страница 1 из 1
Источник: https://forexsystemru.com/threads/86939/

---

## R-TRY — 2018-10-16 08:57

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

Сделал вот так:

```
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 — 2018-10-17 12:10

> Цитата (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);
>      }
>    }
```
Считает, сбрасывает, но! Когда меняется тип ордера, то профит становится отрицательным. Если ордера все одного типа, то все гуд.
>
>  Подскажите, куда копать?

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

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

