Блог им. AlgoTrader1

Обработчики событий, которые есть в каждом советнике

Господа, всех приветствую. Продолжаем изучение mql4. В прошлый раз мы познакомились с «Мастером MQL4», а так же программами и файлами, которые в нём можно создавать и разобрались, чем они друг от друга отличаются и какие задачи выполняют.

Сегодня я расскажу о трёх основных функциях, которые у Вас будут в каждом советнике. Эти функции называются OnInit(), OnDeinit(), OnTick() и являются обработчиками событий: инициализация, деинициализация и новый тик.

Если Вы попробуете создать шаблон советника в «Мастере MQL4», Вам будет предложено добавить и другие имеющиеся обработчики событий, но перечисленные функции являются базовыми, о них Вас даже не будут спрашивать. После получения пустой заготовки для советника, эти 3 функции уже будут в исходнике, после чего Вы можете их наполнить программным кодом.

В этом посте разберёмся, что следует размещать в каждой из функций и когда каждая из них выполняется.

Функция OnInit() выполняется первой, когда торговый терминал посылает событие init (инициализация). А делает он это в следующих ситуациях: запуск советника на графике, смена торгового символа или таймфрейма, перекомпиляция советника в MetaEditor’e, если его копия установлена на графике, изменение входных параметров советника из окна его настроек, а так же при смене счёта.

Инициализация – это процесс подготовки советника к работе. Поэтому внутри функции OnInit() имеет смысл выполнить все проверки готовности к работе или сразу прекратить её, если условия не выполнены. Например, если в советнике используются индикаторы, их настройки должны быть заданы корректно. Например, указанный период индикатора может превышать количество доступных баров в истории и его значение не будет посчитано. В этом случае имеет смысл вывести соответствующее сообщение и закончить работу советника сразу же. Или может быть указано нулевое или отрицательное значение, что так же не корректно. Поэтому, если перед запуском советника требуются какие-то подготовительные работы, подготовка данных, проверка корректности ввода настроек, всё это нужно вынести в функцию OnInit().

Деинициализация – противоположный процесс. Если инициализация – это подготовка к работе, то деинициализация – это её завершение. Событие Deinit генерируется при завершении работы торгового терминала, при закрытии графика, перед сменой финансового инструмента или периода графика, при удачной перекомпиляции программы, при смене входных параметров советника или типа счёта. В общем, каждый раз когда работа советника прекращается, даже для того чтобы просто сменить параметры, финансовый инструмент или таймфрейм.

Функция OnDeinit() срабатывает, когда происходит событие Deinit. В ней необходимо высвободить память от объектов, которые требовались для работы советника, удалить следы его работы на графике, если он осуществлял вывод информации на график и производил какие-либо построения. Причём, на выполнение всех задач функции OnDeinit() выделяется не более 2,5 секунд, после чего программа будет выгружена с графика принудительно.  

Ну и под конец рассмотрим событие NewTick и функцию, которая его обрабатывает OnTick(). Событие NewTick генерируется, когда по торговому инструменту поступает новая котировка. В этот момент начинает выполняться функция OnTick(). Именно в ней и необходимо прописывать весь аналитическо-торговый алгоритм советника, т.е. то, что отвечает за поиск торговых сигналов и реагирование на них в виде торговых операций. Если новые котировки приходят в процессе выполнения функции OnTick, они не прерывают её выполнение. Функция отработает весь свой алгоритм до конца, прежде чем будет готова срабатывать на новые тики. Если отключить возможность автоматической торговли (кнопкой «Разрешить/запретить Авто-торговлю»), то события NewTick не прекращают генерироваться. Запрет распространяется только на совершение советником торговых операций.

На сегодня у меня всё, кому лень читать, можно посмотреть видео-версию. Благодарю за внимание.

4.7К | ★8
1 комментарий

Читайте на SMART-LAB:
Фото
СЕО «Просебя» рассказала, почему бизнес будет инвестировать в ментальное здоровье сотрудников даже в текущих экономических условиях
Мы превращаем ментальное благополучие из разовой «плюшки» в управляемый инструмент устойчивости бизнеса. Ксения Винцюнене, СЕО нашей компании в...
Топ-5 популярных фьючерсов на Мосбирже в январе
Московская биржа  опубликовала  итоги торгов на срочном рынке FORTS за январь 2026 г. Максимальный практический интерес представляет статистика...
Не тихая гавань. Как меняется восприятие розничных инвесторов на фоне взлетов и падений драгоценных металлов
После январских исторических максимумов по цене на унцию разнообразных драгоценных металлов восприятие розничных инвесторов относительно данного...
Фото
Выручка Инарктики в 2025 году почти полностью совпала с нашим прогнозом. Есть ли потенциал в акциях?
Инарктика вчера опубликовала операционные результаты за 2025 год.  Ключевые данные в таблице:   Падение выручки связано главным образом...

теги блога AlgoTrading Solutions

....все тэги



UPDONW
Новый дизайн