Как правильно определить данные конкретной позиции на истории? - страница 4

 
Alexey Kozitsyn:
Да, теперь больше похоже на правду. Но, не мешало бы еще проверить результат выбора сделки. С выводом сообщений пользователю в случае неудачи. А также тикеты объявить вне цикла.

Ну типа так, а в случае неудачи профит будет нулевой

  double profit=0;
  if(id!=0)
  {
    if(HistorySelectByPosition(id))
    {
      ulong deal_ticket=0;
      ulong order_ticket=0;
      int deals=HistoryDealsTotal();
      for(int i=0;i<deals;i++)
      {
        deal_ticket=HistoryDealGetTicket(i);
        if(deal_ticket>0)
        {
          order_ticket=(ulong)HistoryDealGetInteger(deal_ticket,DEAL_ORDER);
          if(order_ticket>0)
          {
            if(HistoryDealGetInteger(deal_ticket,DEAL_ENTRY)==DEAL_ENTRY_OUT)
            {
              profit+=HistoryDealGetDouble(deal_ticket,DEAL_PROFIT);
            }
          }
        }
      }
    }
  }
 
Gennady Mazur:

Ну типа так, а в случае неудачи профит будет нулевой

В случае неудачи, Вы не узнаете в чем причина. Но решать Вам.
 
Alexey Kozitsyn:
В случае неудачи, Вы не узнаете в чем причина. Но решать Вам.

Алексей, большое Вам спасибо за помощь.  На этом этапе мне было важно правильность самой функции.

Что касается ошибок в случаях неудач, то я естественно их пропишу.

 
Gennady Mazur:

Алексей, большое Вам спасибо за помощь.  На этом этапе мне было важно правильность самой функции.

Что касается ошибок в случаях неудач, то я естественно их пропишу.

Не за что. Самое простое, что Вы можете сделать, это написать скрипт, который бы распарсил Вашу торговлю. И убедиться в правильности самостоятельно. 
 
Alexey Kozitsyn:
Не за что. Самое простое, что Вы можете сделать, это написать скрипт, который бы распарсил Вашу торговлю. И убедиться в правильности самостоятельно. 
Может так и сделаю... Спасибо.