Скачать MetaTrader 5

Почему при завершении тестирования и финальном закрытии позиций, не происходят события OnTrade[Transaction]?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Aleksey
2455
Aleksey  
Собственно сабж. Логично, ведь, их обработать, сделка-то произошла.
Валерий
1433
Валерий  
pronych:
Собственно сабж. Логично, ведь, их обработать, сделка-то произошла.
Потому, что они выходят за пределы интервала тестирования. Раньше, точно также, OnTrade не обрабатывала эти события.
Aleksey
2455
Aleksey  
Valmars:
Потому, что они выходят за пределы интервала тестирования. Раньше, точно также, OnTrade не обрабатывала эти события.

А как же лучше поступить? В OnTester эмулировать?

Догадываюсь, разработчики уже в курсе  этого, не побоюсь этого слова -  'бага'

Может включить эти события в интервал  тестирования? Этот вопрос разработчикам

Валерий
1433
Валерий  
pronych:

А как же лучше поступить? В OnTester эмулировать?

Догадываюсь, разработчики уже в курсе  этого, не побоюсь этого слова -  'бага'

Может включить эти события в интервал  тестирования? Этот вопрос разработчикам

Тоже столкнулся с этим при подсчёте суммарной прибыли по инструментам при тестировании мультивалютников. Для учёта сделок 'end of test' и 'so' и однозначного соответствия результатов отчёту тестера, учитываю их в Deinit-e:

   if(MQL5InfoInteger(MQL5_TESTING))
     { 
       if(HistorySelect(0,TimeTradeServer()))   // Поправка для 'end of test'
        {
         int DeelsTotal=HistoryDealsTotal();
         for(int i=0;i<SymbolsNumber;i++)
           {
            ulong ticket=HistoryDealGetTicket(DeelsTotal-1-i);
            string comment=HistoryDealGetString(ticket,DEAL_COMMENT);
            if(comment!="end of test"&&StringSubstr(comment,0,3)!="so ")
               break;
            for(int j=0;j<SymbolsNumber;j++)
              {
               if(HistoryDealGetString(ticket,DEAL_SYMBOL)!=m_expert[j].Name())
                continue;
               m_Profit[j]=m_Profit[j]+HistoryDealGetDouble(ticket,DEAL_PROFIT)+  // Добавим профит закрытой позиции для "end of test" и "so"
                           HistoryDealGetDouble(ticket,DEAL_SWAP)+HistoryDealGetDouble(ticket,DEAL_COMMISSION);
              }
           }
        }
     } 
Aleksey
2455
Aleksey  
Придется и мне опять огород городить
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий