Ошибки, баги, вопросы - страница 3584

 

Maxim Kuznetsov #:

там ненадо (вообще нельзя) обращаться к SymbolInfoTick - bid и ask надо брать по мин и макс лимиток из стакана.

Поддерживаю.

Кусок кода для поиска bid и ask в стакане:

bool GetBookTop(MqlBookInfo &book[], int &is, int &ib)
  {
   int i, book_size;
   bool res=true;

   book_size=ArraySize(book);
   if(book_size==0)return false;

   i=book_size/2;
   if(book[i].type!=BOOK_TYPE_SELL)
     {
      while(i>=0 && book[i].type!=BOOK_TYPE_SELL)i--;
      if(i<0)
        res=false;
      else
        is=i;
     }
   else
     {
      while(i<book_size && book[i].type==BOOK_TYPE_SELL)i++;
      if(i>=book_size)
        res=false;
      else
        is=i-1;
     }
   if(res)
     {
      while(i<book_size && book[i].type!=BOOK_TYPE_BUY)i++;
      if(i>=book_size)
        res=false;
      else
        ib=i;
     }
   return res;
  }
 
Alexey Viktorov #:
OnBookEvent 

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

На ликвидных инструментах Мосбиржи он будет выдавать сигналы чаще, чем миллисекундный таймер.

Это одна из причин почему он не заменит Spy . Вторая -  OnBookEvent в тестере работать не может в принципе

Собственно, вопрос был по функции EventChartCustom и индикатору Spy, так как он даёт очень хороший прирост скорости тестирования мультивалютных советников в тестере стратегий, по сравнению с таймером.

 
JRandomTrader #:

Жаль, в "результате" секунды потеряны, есть только минуты и ms.

Грешен, не обратил внимания. Исправляюсь…

2024.10.04 15:28:35.545 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:36:0
2024.10.04 15:28:35.552 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:36:0
2024.10.04 15:28:36.054 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:36:0
2024.10.04 15:28:36.062 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:36:504
2024.10.04 15:28:36.659 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:36:504
2024.10.04 15:28:36.662 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:37:103
2024.10.04 15:28:37.154 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:37:103
2024.10.04 15:28:37.160 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:37:605
2024.10.04 15:28:37.651 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:37:605
2024.10.04 15:28:37.661 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:38:106
2024.10.04 15:28:38.371 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:38:817
2024.10.04 15:28:38.376 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:38:817
2024.10.04 15:28:38.856 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:38:817
2024.10.04 15:28:38.868 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:39:310
2024.10.04 15:28:39.350 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:39:805
2024.10.04 15:28:39.360 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:39:805
2024.10.04 15:28:39.852 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:40:308
2024.10.04 15:28:39.859 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:40:308
2024.10.04 15:28:40.354 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:40:308
2024.10.04 15:28:40.364 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:40:811
2024.10.04 15:28:40.857 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:41:310
2024.10.04 15:28:40.869 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:41:310
2024.10.04 15:28:41.357 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:41:811
2024.10.04 15:28:41.361 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:41:811
2024.10.04 15:28:41.860 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:42:314
2024.10.04 15:28:41.867 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:42:314
2024.10.04 15:28:42.364 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:42:314
2024.10.04 15:28:42.370 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:42:816
2024.10.04 15:28:42.875 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:43:317
2024.10.04 15:28:42.875 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:43:317
2024.10.04 15:28:43.367 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:43:317
2024.10.04 15:28:43.378 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:43:815
2024.10.04 15:28:43.864 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:43:815
2024.10.04 15:28:43.871 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:44:316
2024.10.04 15:28:44.460 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:44:316
2024.10.04 15:28:44.967 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:45:417
2024.10.04 15:28:44.968 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:45:417
2024.10.04 15:28:45.466 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:45:417
2024.10.04 15:28:45.473 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:45:923
2024.10.04 15:28:45.966 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:46:421
2024.10.04 15:28:45.974 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:46:421
2024.10.04 15:28:46.472 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:46:421
2024.10.04 15:28:46.478 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:46:921
2024.10.04 15:28:46.966 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:46:921
2024.10.04 15:28:46.979 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:47:422
2024.10.04 15:28:47.773 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:47:422
2024.10.04 15:28:47.785 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:48:226
2024.10.04 15:28:48.275 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:48:226
2024.10.04 15:28:48.813 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:48:226
2024.10.04 15:28:49.288 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:49:726
2024.10.04 15:28:49.288 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:49:726
2024.10.04 15:28:49.805 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:50:259
2024.10.04 15:28:49.809 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:50:259
2024.10.04 15:28:50.376 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:50:831
2024.10.04 15:28:50.380 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:50:831
2024.10.04 15:28:50.872 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:50:831
2024.10.04 15:28:51.881 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:50:831
2024.10.04 15:28:52.584 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:50:831
2024.10.04 15:28:53.088 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:50:831
2024.10.04 15:28:53.581 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:50:831
2024.10.04 15:28:54.077 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:50:831
2024.10.04 15:28:54.582 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:55:35
2024.10.04 15:28:54.584 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:55:35
2024.10.04 15:28:55.184 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 15:28:55:638
2024.10.04 15:28:55.195 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:55:638
2024.10.04 15:28:55.687 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 15:28:55:638
 
Aleksandr Slavskii #:

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

На ликвидных инструментах Мосбиржи он будет выдавать сигналы чаще, чем миллисекундный таймер.

Это одна из причин почему он не заменит Spy . Вторая -  OnBookEvent в тестере работать не может в принципе

Собственно, вопрос был по функции EventChartCustom и индикатору Spy, так как он даёт очень хороший прирост скорости тестирования в тестере стратегий, по сравнению с таймером.

Я никого не агитирую. Хотите пишите так как вам нравится. Зачем вы второй раз указываете на то, что в тестере не работает???

OnChartEvent  в тестере работать не может в принципе. И ЧТО???

 
Alexey Viktorov #:

Грешен, не обратил внимания. Исправляюсь…

Вот уже видны издержки (понятно, что printf и TimeToString - достаточно медленные функции) - временами неприличная задержка между соответствующими OnTick и OnBookEvent, иногда для OnTick соответствующий OnBookEvent вообще отсутствует.

 
Maxim Kuznetsov #:

в обработке OnBookEvent идеологическая ошибка !

там ненадо (вообще нельзя) обращаться к SymbolInfoTick - bid и ask надо брать по мин и макс лимиток из стакана. Это не только для MT, это вообще во всех терминалах и API

Спорить не буду, но не убедительно.

Какая разница между обработчиком события OnTimer(),  OnTick() или OnBookEvent()??? Произошло событие, обработчик этого события выполняет то, что в него написали. Какая разница откуда была вызвана функция? Я не понимаю.

 
Alexey Viktorov #:

Спорить не буду, но не убедительно.

Какая разница между обработчиком события OnTimer(),  OnTick() или OnBookEvent()??? Произошло событие, обработчик этого события выполняет то, что в него написали. Какая разница откуда была вызвана функция? Я не понимаю.

На практике, bid и ask, полученные из SymbolInfoTick и из стакана, могут отличаться.

 
JRandomTrader #:

Вот уже видны издержки (понятно, что printf и TimeToString - достаточно медленные функции) - временами неприличная задержка между соответствующими OnTick и OnBookEvent, иногда для OnTick соответствующий OnBookEvent вообще отсутствует.

Кто вас заставляет ими пользоваться??? Да и вообще на сколько нужны распечатки в боевом советнике, тем более с преобразованием даты…

Всё. Это уже похоже на придирки. Я беру самоотвод и больше не участвую в обсуждении этого вопроса.

 
Alexey Viktorov #:

Кто вас заставляет ими пользоваться??? Да и вообще на сколько нужны распечатки в боевом советнике, тем более с преобразованием даты…

Всё. Это уже похоже на придирки. Я беру самоотвод и больше не участвую в обсуждении этого вопроса.

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

 
Alexey Viktorov #:

Спорить не буду, но не убедительно.

Какая разница между обработчиком события OnTimer(),  OnTick() или OnBookEvent()??? Произошло событие, обработчик этого события выполняет то, что в него написали. Какая разница откуда была вызвана функция? Я не понимаю.

частота и приоритеты

OnBookEvent самый частый и наиболее приоритетный..

даже если терминал их отдаёт в советник в общем порядке поступления, но на сервере всё равно OnBook возникает раньше