Общие принципы выполнения MQL-программ

Все MQL-программы можно условно разделить на несколько групп в зависимости от их возможностей и особенностей.

Большинство программ — эксперты, индикаторы и скрипты — работают в контексте графика. Иными словами, они начинают выполняться только после того, как прикреплены к одному из открытых графиков с помощью команды контекстного меню Присоединить к графику в дереве Навигатора или путем перетаскивания мышью из Навигатора на график.

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

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

Кстати говоря, привязка к графику индикаторов и экспертов является основой для шаблонов (см. документацию). Пользователь может собрать на графике набор необходимых ему программ, настроить их и сохранить в особом файле с расширением tpl. Это делается с помощью команды контекстного меню Шаблоны -> Сохранить. После этого можно применить конкретный шаблон к любому новому графику (команда Шаблоны -> Загрузить) и тем самым запустить на нем все привязанные программы. По умолчанию шаблоны хранятся в каталоге MQL5/Profiles/Templates/.

Еще одно следствие прикрепления к графику заключается в том, что закрытие графика приводит к выгрузке всех MQL-программ, которые были на нем размещены. Правда, MetaTrader 5 на всякий случай сохраняет особым образом все закрытые графики (по крайней мере, на некоторое время) и потому, если график был закрыт случайно, его можно восстановить вместе со всеми программами (и графическими объектами, если они были) с помощью команды Файл -> Открыть удаленный.

Если по какой-либо причине терминал не сможет загрузить файлы графиков, всё состояние MQL-программ (настройки и расположение), будет утеряно. В принципе, это же касается и графических объектов — программы могли добавить их для собственных нужд и ожидать наличия на графике. Делайте резервные копии графиков. Каждый график — это файл с расширением chr. Такие файлы хранятся по умолчанию в каталоге MQL5/Profiles/Charts/Default/. Это стандартный профиль, создаваемый при установке платформы. Вы можете создать другие профили с помощью команды меню Файл -> Профили и затем переключаться между ними (см. документацию).

При необходимости можно остановить работу эксперта и удалить его с графика с помощью команды контекстного меню Список экспертов (вызывается по нажатию правой кнопки мыши в окне графика). Она открывает диалог Эксперты со списком всех выполняющихся в терминале экспертов. В этом списке следует выбрать ставший ненужным советник и нажать кнопку Удалить.

Индикаторы также предполагается удалять явным образом, посредством аналогичной команды контекстного меню — Список индикаторов. Она открывает диалог со списком индикаторов текущего графика, где можно выделить конкретный индикатор и нажать кнопку Удалить. Кроме того, большинство индикаторов выводит на график различные графические построения (линии, гистограммы), для которых по клику мыши доступно контекстное меню с командами для удаления.

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

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

На графике может быть размещен только один эксперт, только один скрипт и произвольное количество индикаторов. Эксперт, скрипт и все индикаторы будут работать параллельно (одновременно).

Что касается сервисов, то их созданные и запущенные экземпляры автоматически восстанавливаются после загрузки терминала. Экземпляр сервиса можно остановить или удалить с помощью контекстного меню в ветви Сервисы окна Навигатора.

В следующей таблице в обобщенном кратком виде представлены вышеописанные свойства.

Тип программы

Привязка к графику

Количество
на графике

Восстановление
сеанса

индикатор

требуется

много

с графиком или шаблоном

эксперт

требуется

максимум 1

с графиком или шаблоном

скрипт

требуется

максимум 1

не поддерживается

сервис

не поддерживается

0

с терминалом

Напомним, что все MQL-программы выполняются в клиентском терминале и потому работают только пока терминал открыт. Для постоянного программного контроля за счетом используйте VPS.