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

 
Aleksandr Slavskii #:
Я не эксперт, поэтому не могу понять, каким образом вы собираетесь получить тики из стакана? Ну или хотя бы не сам тик, а событие "новый тик".

Каждому тику соответствует изменение стакана, но не каждому изменению стакана соответствует тик.

 

Для вас тоже, что стакан, что лента сделок - всё едино?

 
JRandomTrader #:

Каждому тику соответствует изменение стакана, но не каждому изменению стакана соответствует тик.

Совершенно верно!

 
Aleksandr Slavskii #:

Я не эксперт, поэтому не могу понять, каким образом вы собираетесь получить тики из стакана? Ну или хотя бы не сам тик, а событие "новый тик".

Мнится мне, вы путаете тёплое с мягким. Поправьте, если ошибаюсь.

Вот два кода

void OnBookEvent(const string &symbol)
 {
  MarketBookGet(SYMBOL_NAME, bookInfo);
  string comment = StringFormat("Стакан по %s \n%s %f\n%s %f", SYMBOL_NAME, EnumToString(bookInfo[4].type), bookInfo[4].price,
                                EnumToString(bookInfo[5].type), bookInfo[5].price);
  MqlTick tick;
  SymbolInfoTick(SYMBOL_NAME, tick);
  printf("%s Symbol %s time_msc %s:%d", __FUNCTION__, SYMBOL_NAME, TimeToString(tick.time), tick.time_msc%1000);
  Comment(comment);
 }/******************************************************************/
void OnTick()
 {
  MqlTick tick;
  SymbolInfoTick(_Symbol, tick);
  printf("%s Symbol %s time_msc %s:%d", __FUNCTION__, _Symbol, TimeToString(tick.time), tick.time_msc%1000);
 }/******************************************************************/

запущены одновременно. OnBookEvent работает на EURUSD а OnTick на GBPUSD. ТФ не выбирал. Какой график был открыт такой и использовался.

И вот результат

2024.10.04 14:01:35.593 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 2024.10.04 14:01:200
2024.10.04 14:01:35.595 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:200
2024.10.04 14:01:36.092 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 2024.10.04 14:01:699
2024.10.04 14:01:36.098 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:699
2024.10.04 14:01:36.593 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:699
2024.10.04 14:01:36.595 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 2024.10.04 14:01:201
2024.10.04 14:01:38.097 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 2024.10.04 14:01:704
2024.10.04 14:01:38.101 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:704
2024.10.04 14:01:38.596 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:704
2024.10.04 14:01:39.514 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 2024.10.04 14:01:3
2024.10.04 14:01:39.515 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:3
2024.10.04 14:01:39.899 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 2024.10.04 14:01:504
2024.10.04 14:01:39.903 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:504
2024.10.04 14:01:40.602 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:504
2024.10.04 14:01:40.609 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 2024.10.04 14:01:209
2024.10.04 14:01:41.101 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:209
2024.10.04 14:01:42.002 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:209
2024.10.04 14:01:42.005 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 2024.10.04 14:01:606
2024.10.04 14:01:42.506 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:606
2024.10.04 14:01:43.376 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 2024.10.04 14:01:919
2024.10.04 14:01:43.376 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:919
2024.10.04 14:01:44.606 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:919
2024.10.04 14:01:44.618 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 2024.10.04 14:01:212
2024.10.04 14:01:45.510 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:212
2024.10.04 14:01:46.014 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 2024.10.04 14:01:615
2024.10.04 14:01:46.015 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:615
2024.10.04 14:01:47.814 TestOnTick (GBPUSD,H1)  OnTick Symbol GBPUSD time_msc 2024.10.04 14:01:416
2024.10.04 14:01:47.814 TestBookEvent (EURUSD,H4)       OnBookEvent Symbol GBPUSD time_msc 2024.10.04 14:01:416

Вывод: стопицот валютных пар обработать не получится, слишком долго будет обрабатываться каждый стакан, но получать тики другой валютной пары можно. И так-же определять новый бар на другой паре тоже можно.

Да,,, забыл в начале первого кода

#define   SYMBOL_NAME   "GBPUSD" 

MqlBookInfo bookInfo[];
 
Aleksandr Slavskii #:

Для вас тоже, что стакан, что лента сделок - всё едино?

когда начнете справку читать?

вам дают информацию,

 

Alexey Viktorov #:

И вот результат

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

 
Alexey Viktorov #:

Вот два кода

запущены одновременно. OnBookEvent работает на EURUSD а OnTick на GBPUSD. ТФ не выбирал. Какой график был открыт такой и использовался.

И вот результат

Вывод: стопицот валютных пар обработать не получится, слишком долго будет обрабатываться каждый стакан, но получать тики другой валютной пары можно. И так-же определять новый бар на другой паре тоже можно.

Да,,, забыл в начале первого кода

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

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

 

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