Обсуждение статьи "Использование Экономического календаря MQL5 для фильтрации новостей (Часть 3): Сохранение работы при перезапусках терминала во время новостного окна"
В статье представлена устойчивая к перезапуску модель хранения состояния для удаления стопов на время новостей. Состояние приостановки и исходные значения SL/TP для каждой позиции записываются в глобальные переменные терминала, считываются и реконструируются в OnInit() и удаляются после восстановления стопов. Это позволяет советнику продолжить активное окно приостановки после перекомпиляции или перезапуска и восстановить стопы только после окончания новостного окна.
В части 2 этой серии уже был реализован новостной фильтр, который временно снимает SL/TP и восстанавливает их после новостного окна. Однако существующая реализация хранит состояние только в памяти: в массиве savedStops[] и флаге newsSuspended. Если между вызовами SuspendStops(true) и SuspendStops(false) происходит перезапуск или перекомпиляция, это состояние теряется. Советник больше не может определить, у каких позиций были удалены стоп-уровни. Результат: открытые позиции могут остаться незащищенными, а их стопы — так и не быть восстановлены. Без механизма восстановления система не сможет безопасно восстановить прежнее состояние.
Для решения этой проблемы зададим правила восстановления. Система должна сохранять состояние позиций во внешнем хранилище: идентификаторы тикетов, стоп-уровни и статус приостановки. При повторной инициализации данные должны быть точно восстановлены, чтобы система возобновила работу без преждевременного восстановления стопов и без оставления позиций незащищенными.
В статье реализуется слой постоянного состояния на основе глобальных переменных терминала, который сохраняет непрерывность работы системы при сбоях и обеспечивает детерминированное поведение после любого перезапуска.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Опубликована статья Использование Экономического календаря MQL5 для фильтрации новостей (Часть 3): Сохранение работы при перезапусках терминала во время новостного окна:
В части 2 этой серии уже был реализован новостной фильтр, который временно снимает SL/TP и восстанавливает их после новостного окна. Однако существующая реализация хранит состояние только в памяти: в массиве savedStops[] и флаге newsSuspended. Если между вызовами SuspendStops(true) и SuspendStops(false) происходит перезапуск или перекомпиляция, это состояние теряется. Советник больше не может определить, у каких позиций были удалены стоп-уровни. Результат: открытые позиции могут остаться незащищенными, а их стопы — так и не быть восстановлены. Без механизма восстановления система не сможет безопасно восстановить прежнее состояние.
Для решения этой проблемы зададим правила восстановления. Система должна сохранять состояние позиций во внешнем хранилище: идентификаторы тикетов, стоп-уровни и статус приостановки. При повторной инициализации данные должны быть точно восстановлены, чтобы система возобновила работу без преждевременного восстановления стопов и без оставления позиций незащищенными.
В статье реализуется слой постоянного состояния на основе глобальных переменных терминала, который сохраняет непрерывность работы системы при сбоях и обеспечивает детерминированное поведение после любого перезапуска.
Автор: Solomon Anietie Sunday