Сейчас советнику для определения момента появления нового значения Actual приходится регулярно вызывать CalendarValueLast() и фактически постоянно опрашивать календарь.
Это просто у вас неоптимально сделано. Для большинства событий указано время, у вас есть таймер и все карты вам в руки - реализуйте свой OnCalendarEvent(), с фильтрами, алертами, блекджеком и девами
Это просто у вас неоптимально сделано. Для большинства событий указано время, у вас есть таймер и все карты вам в руки - реализуйте свой OnCalendarEvent(), с фильтрами, алертами, блекджеком и девами
Я как раз имею в виду не эмуляцию события через OnTimer() . Время публикации известно, но точный момент появления Actual на сервере MetaQuotes заранее неизвестен. Таймер всё равно заставляет советник после времени релиза постоянно вызывать CalendarValueLast() и проверять, появились ли новые данные.
Главное здесь — скорость получения фактического значения Actual. Хотелось бы, чтобы терминал сам генерировал событие в момент получения нового Actual от сервера MetaQuotes, например через OnCalendarEvent() , без polling со стороны советника.
А точное серверное время появления Actual нужно прежде всего для измерения задержки: чтобы можно было посчитать, через сколько миллисекунд после официального релиза данные дошли до MetaQuotes и затем до терминала.
Если терминал и сейчас получает обновления календаря PUSH-ом, а CalendarValueLast() только читает уже обновлённый локальный кэш, было бы интересно узнать, так ли это.
Весь смысл именно в скорости доставки Actual, а timestamp — как инструмент измерения задержки.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
Предлагаю рассмотреть возможность добавления PUSH / событийного механизма для экономического календаря MetaTrader 5, реализованного MetaQuotes.
Сейчас советнику для определения момента появления нового значения Actual приходится регулярно вызывать CalendarValueLast() и фактически постоянно опрашивать календарь.
Было бы значительно удобнее иметь событийный механизм, например что-то вроде:
OnCalendarEvent()
или функцию подписки на обновления календаря, чтобы советник получал новое значение Actual сразу после его появления на серверах MetaQuotes, без постоянного polling.
Это дало бы несколько преимуществ:
уменьшение количества постоянных запросов к календарю;
снижение нагрузки на серверы MetaQuotes;
уменьшение задержки получения Actual;
возможность более корректной автоматизации систем, работающих на экономических новостях.
Также было бы очень полезно, если вместе с событием передавалось точное серверное время появления Actual на стороне MetaQuotes, желательно с точностью до миллисекунд. Это позволило бы объективно измерять задержку получения экономических данных.
Например, логика могла бы выглядеть примерно так:
OnCalendarEvent(event_id, actual, forecast, previous, server_timestamp)
Разумеется, конкретная реализация может быть другой.
Главная идея — дать MQL5 возможность подписаться на обновления встроенного экономического календаря MetaTrader 5 и получать их сразу после появления новых данных, вместо постоянных вызовов CalendarValueLast() .
Возможно ли технически реализовать такой механизм? Рассматривается ли подобная функциональность в будущих версиях MetaTrader 5?