Главным преимуществом торговых терминалов MetaTrader является возможность создания автоматических торговых систем, способных совершать торговые операции без вмешательства трейдера, что позволяет исключить влияние психологии на результаты торговли. Для этого нужно сформулировать торговую стратегию и реализовать ее в виде программы на языке MQL...
А почему бы не подписаться на все стаканы, которые возможны?
Можно придумать еще что-то.
На одном инструменте с подпиской на один стакан OnBookEvent() срабатывает чаще, чем OnTick()
Какая разница, сколько пришло событий OnBookEvent? Вы заявляли, что при получении тиков в нем это произойдет раньше, чем в OnTick. А я предложил это проверить, вывести время получения тика там и там (только не в одном советнике).
prostotrader:
И давайте закончим на этом!
У Вас одни фантазии и предположения, а
а у меня 7 летний опыт написания роботов и успешной торговли на ФОРТС +
конкретный работающий код.
У вас апломб, который сквозит через все сообщения. Почему вы решили, что НА ФОРТС можно работать только из OnBookEvent — одному вам известно.
А за код — респект. Найду время, выложу свой. Это не приоритетная задача.
Какая разница, сколько пришло событий OnBookEvent? Вы заявляли, что при получении тиков в нем это произойдет раньше, чем в OnTick. А я предложил это проверить, вывести время получения тика там и там (только не в одном советнике).
У вас апломб, который сквозит через все сообщения. Почему вы решили, что НА ФОРТС можно работать только из OnBookEvent — одному вам известно.
А за код — респект. Найду время, выложу свой. Это не приоритетная задача.
Да работайте через что угодно!
Я выложил свое решение, исходя из своего опыта работы на ФОРТС.
Апломб - Излишняя самоуверенность в поведении, в речи.
Был бы согласен с Вами, если бы не было опыта работы.
2020.01.3019:31:11.112 Test_freeze (BR-3.20,M1) OnTick Tick is done!
2020.01.3019:31:11.113 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.132 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.192 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.199 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.219 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.249 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.261 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.309 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.323 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.414 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.433 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.539 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.667 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.703 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.789 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.802 Test_freeze (BR-3.20,M1) OnTick Tick is done!
Время первого OnTick() 2020.01.3019:31:11.112
время второго OnTick() 2020.01.3019:31:11.802
Т.е прошло 690 мс, тем временем, между OnTick() за эти 690 мс
15 раз сработал OnBookEvent()
Вы считаете что это срабатывания не имеют отношения к тикам?
Ну и почитайте справку о OnBookEvent()
События BookEvent никогда не пропускаются и всегда ставятся в очередь, даже если в данный момент еще не закончена обработка предыдущего события BookEvent.
При этом необходимо иметь в виду, что события BookEvent доставляются сами по себе и не несут с собой состояния стакана заявок.
Это означает, что вызов MarketBookGet() из обработчика OnBookEvent() позволяет получить текущее актуальное состояние стакана на момент вызова,
а не то состояние стакана, которое вызвало отправку события BookEvent.
Для гарантированного получения всех уникальных состояний стакана функция OnBookEvent() должна быть максимально быстрой.
Пришел новый пакет тиков - гарантированно сработал OnBookEvent() это дает возможность с помошью CopyTicks() получать тики в реальном времени.
Тогда как при срабатывании OnTick(), Вы можете получить тики только из истории.
Вы получите их все и ничего не будет пропущено, но уже не в реальном времени.
Очень странно, что мне приходится так детально объяснять все это человеку с большим опытом.
Еще раз оговорюсь, что каждый волен выбирать методы программирования и торговли, которые ему нравятся!
Добавлено
Есть еще один существенный момент о котором многие забывают.
Это скорость принятия решения советником, анализируя входные данные.
Используя OnBookEvent() вместо OnTick() мой советник окажется быстрее Вашего.
Т.е прошло 690 мс, тем временем, между OnTick() за эти 690 мс
15 раз сработал OnBookEvent()
Вы считаете что это срабатывания не имеют отношения к тикам?
Распечатывайте, пожалуйста, и значения тиков. Из приведенного лога не видно, что OnBookEvent поймал изменение MqlTick-структуры.
Если выставить SellLimit за пределы спреда, то это создаст событие OnBookEvent, но не породит сделку или изменения BestBid/BestAsk/BestVolume. Т.е. INFO и LAST-ленты тиков (CopyTicks-история) не обновятся.
Распечатывайте, пожалуйста, и значения тиков. Из приведенного лога не видно, что OnBookEvent поймал изменение MqlTick-структуры.
Если выставить SellLimit за пределы спреда, то это создаст событие OnBookEvent, но не породит сделку или изменения BestBid/BestAsk/BestVolume. Т.е. INFO и LAST-ленты тиков (CopyTicks-история) не обновятся.
Зачем распечатывать?
В первой строке описания OnBookEvent() написано
Вызывается в индикаторах и экспертах при наступлении события BookEvent.
Функция предназначена для обработки изменений стакана цен (Depth of Market).
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Замените в своем коде OnBookEvent на OnTick, и сравните результат.
Нельзя сравнить результат :)
Нужно одновременно запускать оба советника, что бы сравнить результаты.
Но я и так знаю, что будет одно и тоже, НО
только если будет OnTick(), то будет иногда задержка получения результатов,
т.е не реальное время.
Нельзя сравнить результат :)
Нужно запускать оба советника, что бы сравнить результаты.
Но я и так знаю, что будет одно и тоже, НО
только если будет OnTick(), то будет задержка получения результатов,
т.е не реальное время.
Не будет задержки. Наоборот, если подписаться на обновления стакана по многим инструментам, ОнТик может отработать быстрее. Не поленитесь сравнить.
Не будет задержки. Наоборот, если подписаться на обновления стакана по многим инструментам, ОнТик может отработать быстрее. Не поленитесь сравнить.
А почему бы не подписаться на все стаканы, которые возможны?
Можно придумать еще что-то.
На одном инструменте с подпиской на один стакан OnBookEvent() срабатывает чаще, чем OnTick()
Пришел новый пакет тиков - сработал OnBookEvent()
Не нравится мой вариант - пишите свои.
Кстати, результат выше, при подписанных 84 стаканах на реале!
Добавлено
Вот еще
Добавлено
И давайте закончим на этом!
У Вас одни фантазии и предположения, а
а у меня 7 летний опыт написания роботов и успешной торговли на ФОРТС +
конкретный работающий код.
Бала ошибка в коде.
Выложил с исправлениями на 5 странице
https://www.mql5.com/ru/forum/331060/page5#comment_14783678
А почему бы не подписаться на все стаканы, которые возможны?
Можно придумать еще что-то.
На одном инструменте с подпиской на один стакан OnBookEvent() срабатывает чаще, чем OnTick()
Какая разница, сколько пришло событий OnBookEvent? Вы заявляли, что при получении тиков в нем это произойдет раньше, чем в OnTick. А я предложил это проверить, вывести время получения тика там и там (только не в одном советнике).
И давайте закончим на этом!
У Вас одни фантазии и предположения, а
а у меня 7 летний опыт написания роботов и успешной торговли на ФОРТС +
конкретный работающий код.
У вас апломб, который сквозит через все сообщения. Почему вы решили, что НА ФОРТС можно работать только из OnBookEvent — одному вам известно.
А за код — респект. Найду время, выложу свой. Это не приоритетная задача.
Какая разница, сколько пришло событий OnBookEvent? Вы заявляли, что при получении тиков в нем это произойдет раньше, чем в OnTick. А я предложил это проверить, вывести время получения тика там и там (только не в одном советнике).
У вас апломб, который сквозит через все сообщения. Почему вы решили, что НА ФОРТС можно работать только из OnBookEvent — одному вам известно.
А за код — респект. Найду время, выложу свой. Это не приоритетная задача.
Да работайте через что угодно!
Я выложил свое решение, исходя из своего опыта работы на ФОРТС.
Апломб - Излишняя самоуверенность в поведении, в речи.
Был бы согласен с Вами, если бы не было опыта работы.
Время первого OnTick() 2020.01.30 19:31:11.112
время второго OnTick() 2020.01.30 19:31:11.802
Т.е прошло 690 мс, тем временем, между OnTick() за эти 690 мс
15 раз сработал OnBookEvent()
Вы считаете что это срабатывания не имеют отношения к тикам?
Ну и почитайте справку о OnBookEvent()
Пришел новый пакет тиков - гарантированно сработал OnBookEvent() это дает возможность с помошью CopyTicks() получать тики в реальном времени.
Тогда как при срабатывании OnTick(), Вы можете получить тики только из истории.
Вы получите их все и ничего не будет пропущено, но уже не в реальном времени.
Очень странно, что мне приходится так детально объяснять все это человеку с большим опытом.
Еще раз оговорюсь, что каждый волен выбирать методы программирования и торговли, которые ему нравятся!
Добавлено
Есть еще один существенный момент о котором многие забывают.
Это скорость принятия решения советником, анализируя входные данные.
Используя OnBookEvent() вместо OnTick() мой советник окажется быстрее Вашего.
Время первого 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-история) не обновятся.
Распечатывайте, пожалуйста, и значения тиков. Из приведенного лога не видно, что OnBookEvent поймал изменение MqlTick-структуры.
Если выставить SellLimit за пределы спреда, то это создаст событие OnBookEvent, но не породит сделку или изменения BestBid/BestAsk/BestVolume. Т.е. INFO и LAST-ленты тиков (CopyTicks-история) не обновятся.
Зачем распечатывать?
В первой строке описания OnBookEvent() написано
Зачем распечатывать?
В первой строке описания OnBookEvent() написано
Если замерите, сколько за час происходит BookEvent-событий и сколько записей в CopyTicks, сможете сделать вывод.
Если замерите, сколько за час происходит BookEvent-событий и сколько записей в CopyTicks, сможете сделать вывод.
Есть выше код, проверьте сами.
Есть работающий код.
Я считаю что он работает в реальном времени и уж тем более быстрее,
чем OnTick()
В чем проблема? Сделай то, сделай это...
Вы должны выложить Ваш работающий код, чтобы что-то доказать или опровергнуть!