Как быстро обновляется история сделок в МТ5 - страница 2

 

а может все работает верно?
Вот только на запрос времени вы отсылаете TimeCurrent() - время сервера, когда пришли последние котировки
а на компе история хранится в каком времени? локальном? Может из за этого рассинхронизация на 7 сек ? 

 
ALXIMIKS:

а может все работает верно?
Вот только на запрос времени вы отсылаете TimeCurrent() - время сервера, когда пришли последние котировки
а на компе история хранится в каком времени? локальном? Может из за этого рассинхронизация на 7 сек ? 

да нет, ну я TimeCurrent вообще не использую, попробуйте мой код выше, откройте вкладку эксперты и понаблюдайте, при открытии сделок в один клик. 

 Это видно невооруженным глазом, после того как сделка открылась новые записи в журнале появляются спустя время. всегда разное. 

 

поставил так: И вроде стал определять ордер нормально, спустя все то же время около 2-7 секунд

      if(lastdeals!=HistoryDealsTotal())// селл

        {

         lastdeals=HistoryDealsTotal();

ОТКРЫВАЕМСЯ 

 }
 

Вы как-то неправильно считаете.

Вот проверочный скрипт:

#include <trade\trade.mqh>
//+------------------------------------------------------------------+
//| Tester function                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   CTrade tr;
//--- show initial
   HistorySelect(0,TimeCurrent()+60);
   Print("Before: ",HistoryDealsTotal()," deals, ",HistoryOrdersTotal()," orders");
//--- do a deal
   if(tr.Buy(1.0))
     {
      uint ticks =GetTickCount();
      int  deals =HistoryDealsTotal();
      int  orders=HistoryOrdersTotal();
      //--- let's wait for 10 seconds
      Print("After: ",deals," deals, ",orders," orders");

      while((GetTickCount()-ticks)<10000)
        {
         HistorySelect(0,TimeCurrent()+60);
         if(HistoryDealsTotal()>deals || HistoryOrdersTotal()>orders)
           {
            Print("Result: ",HistoryDealsTotal()," deals, ",HistoryOrdersTotal()," orders");
            break;
           }
         Sleep(1);
        }
     }
//---
   Print("Finished");
  }

Ни о каких 2-7 секунд задержки говорить нельзя.

Вот мои результаты при пинге до сервера 97 мс.

2014.10.31 21:22:15.268 Sink (USDJPY,D1)        Before: 11 deals, 10 orders
2014.10.31 21:22:15.409 Sink (USDJPY,D1)        After: 11 deals, 10 orders
2014.10.31 21:22:15.425 Sink (USDJPY,D1)        Result: 12 deals, 11 orders
2014.10.31 21:22:15.425 Sink (USDJPY,D1)        Finished

Сделка пошла в 15.268, завершилась (пришло полное подтверждение в терминал о завершении сделки) в 15.409, что дало 141 мс на совершение сделки.

Далее сканируем свою историю и ждем появления одного ордера и одной сделки. Дождались в 15.425, через 16 мс после окончания сделки.

Доказано: информация о совершенной сделке попадает в историю в пределах пинга до сервера и чаще быстрее, так как процессы доставки асинхронны.

Как я и написал выше - надо понимать и уметь правильно делать замеры.

 
Приветствую. Ок спасибо. Тогда почему запрос из из истории последней сделки даже через секунду. Возвращает предпоследнюю сделку? И у Вас история +60 секунд зачем? попробую Вашим кодом. У Вас кстати цикл через скрипт. А я торгую экспертом через ОнТик. И при открытии сделки даже через график - эксперт, выводящий прини каждый тик-получает информацию о новом ордере спустя время.
 

Скрипт или эксперт - не важно.

Проверяйте свой код - у вас явная ошибка. Подумайте, почему нельзя использовать чистый TimeCurrent, когда речь идет о микросекундах.

Как надо точно проверять, я показал.

 
Renat:

Скрипт или эксперт - не важно.

Проверяйте свой код - у вас явная ошибка. Подумайте, почему нельзя использовать чистый TimeCurrent, когда речь идет о микросекундах.

Как надо точно проверять, я показал.

Спасибо, буду пробовать. 
 

Подскажите, а сортировка в истории как то влияет на результат выборки в эксперте?

Я помню в МТ4 , если показана не вся история а за 3 дня, то дальше 3 дня - эксперт историю не видил.  

 

С новым билдом все стало ок. 

кстати добавил + 60 может это помогло?  

 
Vladon:

С новым билдом все стало ок. 

кстати добавил + 60 может это помогло?  

Ну так легко проверить. ;)
Причина обращения: