[Решено] Не могу переписать функцию AccountDeposit() на mql5

 

Приветствую всех.

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

 

string AccountDeposit()
{
int k = OrdersHistoryTotal();
double Deposit = 0;

for(int i=0; i<k; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
     
  if(OrderType() == 6)                                        // Ордера balance
  {
     if(StringFind(OrderComment(),"IR",0)!=-1)     continue;  // IR
     if(StringFind(OrderComment(),"result",0)!=-1) continue;  // trade result for
           
     if(OrderProfit() > 0)
     {
     Deposit += NormalizeDouble(OrderProfit(),2);  continue;
     }                  
  }  
}

return (Deposit);
}
 

Хоть бы кто-то пример показал, как работать с сделками в истории... тишина... не лезет в голову это MQL5, не могу сдвинуться с места, с MQL4 как-то все намного проще...

Почитав документацию я понял, что мне нужно искать ордер по DEAL_TYPE_BALANCE, вместо OrderType() == 6 в MQL4, но остается пока вопрос, как правильно обратиться к истории терминала и вытащить в цикле все сделки данного типа?

Допустим, я напишу

long HistoryDealGetInteger( tiket, DEAL_TYPE_BALANCE ); 

Но как найти тикет ордера типа  DEAL_TYPE_BALANCE, хз...

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

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок - Документация по MQL5
 
Посмотрите пример из документации - https://www.mql5.com/ru/docs/trading/historydealgetinteger
Документация по MQL5: Торговые функции / HistoryDealGetInteger
Документация по MQL5: Торговые функции / HistoryDealGetInteger
  • www.mql5.com
Торговые функции / HistoryDealGetInteger - Документация по MQL5
 

Кажется осилил эту функцию )))

 

void OnStart()
  {
     Print("Депозит: ",AccountDeposit());
  }
  
  double AccountDeposit()
  {
   HistorySelect(0,TimeCurrent());
   uint     total=HistoryDealsTotal();
   ulong    ticket=0;
   double   depo=0;

   for(uint i=0;i<total;i++)
     {
      if((ticket=HistoryDealGetTicket(i))>0)
        {
        if (HistoryDealGetInteger(ticket,DEAL_TYPE)!=DEAL_TYPE_BALANCE) continue;
         depo += HistoryDealGetDouble(ticket,DEAL_PROFIT);
        }
     }     
     return (depo);
  }
Причина обращения: