В этом уроке мы разберем основные функциональные блоки кода советника на MQL, который мы с Вами создали в предыдущей статье.
Итак, первый блок — так называемая «Шапка». Она отображает справочную информацию:
- наименование советника;
- авторские права;
- сайт или email;
- версия советника;
- свойство-команда, необходимое для того, чтобы во время компилирования MetaEditor строго проверял в коде наши ошибки и выдавал предупреждения.
Следующий блок — это объявление внешних переменных.
Это те самые параметры, которые мы заполняли в мастере создания советника и которые будут появляться в окне при переносе советника на график.
Ключевое слово input определяет переменную как внешнюю и указывается он перед типом данных. Изменять значение переменной с ключевым словом input внутри mql4-программы нельзя, такие переменные доступны только для чтения. Изменять значения input-переменных может только пользователь из окна свойств программы.
И наконец последний блок — это блок самой программы.
В этом блоке мы видим три предопределённые функции(события): OnInit(), OnDeinit() и OnTick():
- Функция OnInit() является обработчиком события Init. Может иметь тип void или int, параметров не имеет.Функция OnInit () выполняется один раз при загрузке советника — она выполняется самая первая (иначе этот процесс называется инициализация). Иначе говоря, OnInit () выполняется только один раз при загрузке советника на наш график. Например, если мы поставим наш советник на график в MetaTrader4 и первое, что произойдет в советнике — это выполнится функция OnInit().
- Функция OnDeinit() похожа на OnInit(), она также выполняется только один раз, но уже при удалении советника. Должна быть объявлена с типом void и иметь один параметр типа const int , который содержит код причины деинициализации. Если объявлен иной тип, компилятор выдаст предупреждение, но функция вызываться не будет.
- Функция OnTick() вызывается только для экспертов при поступлении нового тика по символу, к графику которого прикреплен эксперт. Функцию OnTick() бесполезно определять в пользовательском индикаторе или скрипте, поскольку событие NewTick для них не генерируется. Должна быть объявлена с типом void, параметров не имеет.
Более подробно о событиях программы можно почитать на этой страничке в разделе «События клиентского терминала».
Подведём итог:
- при переносе советника на график выполняется функция OnInit();
- при поступлении новой котировки в терминал — выполняется функция OnTick();
- при удалении советника с графика выполняется функция OnDeinit().
На следующем уроке мы познакомимся с комментариями в коде советника.
Один комментарий к “Урок №2: Функциональные блоки программы”