Как гарантированно получить корректную информацию о сделках?

 
Всех с Новым Годом!

Скрипт анализирует результаты торговли советника по величине прибыли, которые берет из истории сделок за период HistorySelect(t0,t1) функцией HistoryDealGetDouble(ticket, DEAL_PROFIT, deal_profit). Проблема в том, что ИНОГДА скрипт выдает правильные результаты, а иногда - кривые. Для того, чтобы убедиться, что расчет верный, приходится проверять по истории сделок на платформе МТ5. Если результаты не совпадают, то  запускаю скрипт несколько раз, пока не выдаст результат, совпадающий с платформой. Алгоритм скрипта собираюсь зашить в советник для самоанализа. Поэтому, такой расчет, который приходится перепроверять, мне не годится. Ставил задержку Sleep() после HistorySelect() — не помогает. Также, использую вариант bool HistoryDealGetDouble(), надеялся, что покажет ошибки чтения - не помогло, ошибок чтения не выдает.
Как добиться, чтобы гарантированно получить от платформы корректную информацию о сделках?
Спасибо.

 
Leonids Drics:
Всех с Новым Годом!

Скрипт анализирует результаты торговли советника по величине прибыли, которые берет из истории сделок за период HistorySelect(t0,t1) функцией HistoryDealGetDouble(ticket, DEAL_PROFIT, deal_profit). Проблема в том, что ИНОГДА скрипт выдает правильные результаты, а иногда - кривые. Для того, чтобы убедиться, что расчет верный, приходится проверять по истории сделок на платформе МТ5. Если результаты не совпадают, то  запускаю скрипт несколько раз, пока не выдаст результат, совпадающий с платформой. Алгоритм скрипта собираюсь зашить в советник для самоанализа. Поэтому, такой расчет, который приходится перепроверять, мне не годится. Ставил задержку Sleep() после HistorySelect() — не помогает. Также, использую вариант bool HistoryDealGetDouble(), надеялся, что покажет ошибки чтения - не помогло, ошибок чтения не выдает.
Как добиться, чтобы гарантированно получить от платформы корректную информацию о сделках?
Спасибо.

С большой долей вероятности проблема в скрипте. 

Вот здесь  fxsaber выложил удобную библу, которая работает с закрытыми позициями, то есть то же, что ваш скрипт. Попробуйте её.

HistoryPosition - неопубликованный функционал MQL5-языка.
HistoryPosition - неопубликованный функционал MQL5-языка.
  • 2023.11.22
  • www.mql5.com
HistoryPositionsTotal Возвращает количество всех закрытых позиций в истории. HistorySelect() не влияет на результат данной функции. int HistoryPositionsTotal(); Возвращаемое значение Значение типа