Тики в реальном времени - страница 6

 
Andrey Khatimlianskii:

Замените в своем коде OnBookEvent на OnTick, и сравните результат.

Нельзя сравнить результат :)

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

Но я и так знаю, что будет одно и тоже, НО

только если будет OnTick(), то будет иногда задержка получения результатов,

т.е не реальное время.

 
prostotrader:

Нельзя сравнить результат :)

Нужно запускать оба советника, что бы сравнить результаты.

Но я и так знаю, что будет одно и тоже, НО

только если будет OnTick(), то будет задержка получения результатов,

т.е не реальное время.

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

 
Andrey Khatimlianskii:

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

А почему бы не подписаться на все стаканы, которые возможны?

Можно придумать еще что-то.

На одном инструменте с подпиской на один стакан OnBookEvent() срабатывает чаще, чем OnTick()

2020.01.23 16:56:53.226	Ticks_test (GOLD-3.20,M1)	OnTick Tick is done!
2020.01.23 16:56:53.226	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:53.712	Ticks_test (GOLD-3.20,M1)	OnTick Tick is done!
2020.01.23 16:56:53.712	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:53.930	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:53.996	Ticks_test (GOLD-3.20,M1)	OnTick Tick is done!
2020.01.23 16:56:53.996	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:54.016	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:54.280	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:54.392	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!

Пришел новый пакет тиков - сработал OnBookEvent()

Не нравится мой вариант - пишите свои.

Кстати, результат выше, при подписанных 84 стаканах на реале!

Добавлено

Вот еще

//+------------------------------------------------------------------+
//|                                                  Test_freeze.mq5 |
//|                                     Copyright 2018, prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
bool is_book;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
    //int fr_level = int(SymbolInfoInteger(Symbol(), SYMBOL_TRADE_FREEZE_LEVEL));
   // Print(__FUNCTION__, ": ", Symbol(), " Freeze level is ", fr_level);
   is_book = MarketBookAdd(Symbol());
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  if(is_book == true) MarketBookRelease(Symbol());
}
//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnTick()
{
  Print(__FUNCTION__, " Tick is done!");
}
//---
void OnBookEvent(const string &symbol)
{
  if(Symbol() == symbol)
  {
    Print(__FUNCTION__, " Tick is done!");
  }
}


2020.01.30 19:31:11.112 Test_freeze (BR-3.20,M1)        OnTick Tick is done!
2020.01.30 19:31:11.113 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.132 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.192 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.199 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.219 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.249 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.261 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.309 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.323 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.414 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.433 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.539 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.667 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.703 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.789 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.802 Test_freeze (BR-3.20,M1)        OnTick Tick is done!
2020.01.30 19:31:11.809 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.821 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.949 Test_freeze (BR-3.20,M1)        OnTick Tick is done!
2020.01.30 19:31:11.950 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.049 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.122 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.201 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.292 Test_freeze (BR-3.20,M1)        OnTick Tick is done!
2020.01.30 19:31:12.293 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.314 Test_freeze (BR-3.20,M1)        OnTick Tick is done!
2020.01.30 19:31:12.315 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.336 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.350 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.372 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.412 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.433 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.491 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.577 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.740 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.799 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.862 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.992 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!

Добавлено

И давайте закончим на этом!

У Вас одни фантазии и предположения, а

 а у меня 7 летний опыт написания роботов и успешной торговли на ФОРТС +

конкретный работающий код.

Как заказать торгового робота на MQL5 и MQL4
Как заказать торгового робота на MQL5 и MQL4
  • www.mql5.com
Главным преимуществом торговых терминалов MetaTrader является возможность создания автоматических торговых систем, способных совершать торговые операции без вмешательства трейдера, что позволяет исключить влияние психологии на результаты торговли. Для этого нужно сформулировать торговую стратегию и реализовать ее в виде программы на языке MQL...
 

Бала ошибка в коде.

Выложил с исправлениями на 5 странице

https://www.mql5.com/ru/forum/331060/page5#comment_14783678

Тики в реальном времени
Тики в реальном времени
  • 2020.01.30
  • www.mql5.com
Всем доброго времени суток. Появилась необходимость протестировать торговый алгоритм на реальных тиках брокера "Открытие...
 
prostotrader:

А почему бы не подписаться на все стаканы, которые возможны?

Можно придумать еще что-то.

На одном инструменте с подпиской на один стакан OnBookEvent() срабатывает чаще, чем OnTick()

Какая разница, сколько пришло событий OnBookEvent? Вы заявляли, что при получении тиков в нем это произойдет раньше, чем в OnTick. А я предложил это проверить, вывести время получения тика там и там (только не в одном советнике).


prostotrader:

И давайте закончим на этом!

У Вас одни фантазии и предположения, а

 а у меня 7 летний опыт написания роботов и успешной торговли на ФОРТС +

конкретный работающий код.

У вас апломб, который сквозит через все сообщения. Почему вы решили, что НА ФОРТС можно работать только из OnBookEvent — одному вам известно.

А за код — респект. Найду время, выложу свой. Это не приоритетная задача.

 
Andrey Khatimlianskii:

Какая разница, сколько пришло событий OnBookEvent? Вы заявляли, что при получении тиков в нем это произойдет раньше, чем в OnTick. А я предложил это проверить, вывести время получения тика там и там (только не в одном советнике).


У вас апломб, который сквозит через все сообщения. Почему вы решили, что НА ФОРТС можно работать только из OnBookEvent — одному вам известно.

А за код — респект. Найду время, выложу свой. Это не приоритетная задача.

Да работайте через что угодно!

Я выложил свое решение, исходя из своего опыта работы на ФОРТС.

Апломб - Излишняя самоуверенность в поведении, в речи.

Был бы согласен с Вами, если бы не было опыта  работы.

2020.01.30 19:31:11.112 Test_freeze (BR-3.20,M1)        OnTick Tick is done!
2020.01.30 19:31:11.113 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.132 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.192 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.199 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.219 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.249 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.261 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.309 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.323 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.414 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.433 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.539 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.667 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.703 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.789 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.802 Test_freeze (BR-3.20,M1)        OnTick Tick is done!

Время первого OnTick() 2020.01.30 19:31:11.112

время второго OnTick() 2020.01.30 19:31:11.802

Т.е прошло 690 мс, тем временем, между OnTick() за эти 690 мс

15 раз сработал OnBookEvent() 

Вы считаете что это срабатывания не имеют отношения к тикам?

Ну и почитайте справку о OnBookEvent()

События BookEvent никогда не пропускаются и всегда ставятся в очередь, даже если в данный момент еще не закончена обработка предыдущего события BookEvent.
При этом необходимо иметь в виду, что события BookEvent доставляются сами по себе и не несут с собой состояния стакана заявок.
Это означает, что вызов MarketBookGet() из обработчика OnBookEvent() позволяет получить текущее актуальное состояние стакана на момент вызова,
а не то состояние стакана, которое вызвало отправку события BookEvent.
Для гарантированного получения всех уникальных состояний стакана функция OnBookEvent() должна быть максимально быстрой. 

Пришел новый пакет тиков - гарантированно сработал OnBookEvent() это дает возможность с помошью CopyTicks() получать тики в реальном времени.

Тогда как при срабатывании OnTick(), Вы можете получить тики только из истории.

Вы получите их все и ничего не будет пропущено, но уже не в реальном времени.

Очень странно, что мне приходится так детально объяснять все это человеку с большим опытом.

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

Добавлено

Есть еще один существенный момент о котором многие забывают.

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

Используя OnBookEvent() вместо OnTick() мой советник окажется быстрее Вашего.

 
prostotrader:

Время первого OnTick() 2020.01.30 19:31:11.112

время второго OnTick() 2020.01.30 19:31:11.802

Т.е прошло 690 мс, тем временем, между OnTick() за эти 690 мс

15 раз сработал OnBookEvent() 

Вы считаете что это срабатывания не имеют отношения к тикам?

Распечатывайте, пожалуйста, и значения тиков. Из приведенного лога не видно, что OnBookEvent поймал изменение MqlTick-структуры.

Если выставить SellLimit за пределы спреда, то это создаст событие OnBookEvent, но не породит сделку или изменения BestBid/BestAsk/BestVolume. Т.е. INFO и LAST-ленты тиков (CopyTicks-история) не обновятся.

 
fxsaber:

Распечатывайте, пожалуйста, и значения тиков. Из приведенного лога не видно, что OnBookEvent поймал изменение MqlTick-структуры.

Если выставить SellLimit за пределы спреда, то это создаст событие OnBookEvent, но не породит сделку или изменения BestBid/BestAsk/BestVolume. Т.е. INFO и LAST-ленты тиков (CopyTicks-история) не обновятся.

Зачем распечатывать?

В первой строке описания OnBookEvent() написано

Вызывается в индикаторах и экспертах при наступлении события BookEvent.
Функция предназначена для обработки изменений стакана цен (Depth of Market).
 
prostotrader:

Зачем распечатывать?

В первой строке описания OnBookEvent() написано

Если замерите, сколько за час происходит BookEvent-событий и сколько записей в CopyTicks, сможете сделать вывод.

 
fxsaber:

Если замерите, сколько за час происходит BookEvent-событий и сколько записей в CopyTicks, сможете сделать вывод.

Есть выше код, проверьте сами.

Есть работающий код.

Я считаю что он работает в реальном времени и уж тем более быстрее,

чем OnTick()

В чем проблема? Сделай то, сделай это...

Вы должны выложить Ваш работающий код, чтобы что-то доказать или опровергнуть!

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