Комиссии по сделкам с DealInfo возвращает неверные значения.

 

Считаю сумму комиссии по сделкам за текущие сутки:

#include <Trade\DealInfo.mqh>


CDealInfo         history_info;

void OnTick()
  {
   MqlDateTime today;
   TimeToStruct(TimeCurrent(), today);
   today.hour = 0;
   today.min = 0;
   today.sec = 0;
   datetime from = StructToTime(today);
   datetime to = TimeCurrent();
   
   double accumulator = 0;
   
   if(HistorySelect(from, to))
     {
      for(int i = HistoryDealsTotal(); i > 0; i--)
        {
         ulong ticket = HistoryDealGetTicket(i);
         if(ticket > 0)
           {
            history_info.Ticket(ticket);
            accumulator += history_info.Commission();
           }
        }
     }
     
     Print(accumulator); // -37.91999999999999
  }

Получаю -37.91999999999999

Сам MT5 при выборке за день в вкладке "История" показывает -39.33


Если залогировать каждый вызов 

Print(history_info.Commission());

и сравнить с тем что показывает вкладка истории получается следующее:


Как видно из скрина последняя строка из таблицы истории UI MT5 отсутcвуют в логе скрипта.  

Время 2022.07.14 00:05:05 должно попадать в выборку при этом половина комиссии (за вход или за выход из сделки не знаю) в выборку попадает, а вторая половина нет потому что разница между -37.91999999999999  и  -39.33 как раз последний 1.41 который отсутствует в логе.

Как такое может быть и как это исправить?


UPDATE_1

Речь идет только о закрытых сделках.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Свойства сделок - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Павел Раввич:

Считаю сумму комиссии по сделкам за текущие сутки:

Получаю -37.91999999999999

Сам MT5 при выборке за день в вкладке "История" показывает -39.33


Если залогировать каждый вызов 

и сравнить с тем что показывает вкладка истории получается следующее:


Как видно из скрина последняя строка из таблицы истории UI MT5 отсутcвуют в логе скрипта.  

Время 2022.07.14 00:05:05 должно попадать в выборку при этом половина комиссии (за вход или за выход из сделки не знаю) в выборку попадает, а вторая половина нет потому что разница между -37.91999999999999  и  -39.33 как раз последний 1.41 который отсутствует в логе.

Как такое может быть и как это исправить?


Проверьте пожалуйста этот скрипт.

Файлы:
 
Alexey Viktorov #:

Проверьте пожалуйста этот скрипт.

По незакрытым позициям не считаете комиссию.

 
fxsaber #:

По незакрытым позициям не считаете комиссию.

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

 
Alexey Viktorov #:

Павел говорит о пропаже одной сделки

Последняя ENTRY_IN-сделка.

 
fxsaber #:

Последняя ENTRY_IN-сделка.

На снимке очень мелко и я ничего не вижу. Да и 

Alexey Viktorov #:

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

 
Alexey Viktorov #:

На снимке очень мелко и я ничего не вижу.

.

 
Alexey Viktorov #:

Проверьте пожалуйста этот скрипт.

Ваш скрипт работает верно, большое спасибо за помощь.

Причина обращения: