Скрипты

Скриптом является MQL-программа с единственным обработчиком OnStart, при условии отсутствия директивы #property service (иначе получится сервис, см. следующий раздел).

По умолчанию скрипт сразу начинает выполняться при его размещении на графике. Разработчик имеет возможность запросить у пользователя подтверждение на запуск, добавив в начало файла директиву #property script_show_confirm. Терминал в этом случае покажет сообщение с вопросом "Вы действительно хотите присоединить 'программу' к графику 'символ,таймфрейм'?" и кнопками Да и Нет.

Скрипты, также как и другие программы, могут иметь входные переменные. Однако для скриптов диалог ввода параметров не показывается по умолчанию, даже если в скрипте определены input-ы. Чтобы гарантировать открытие диалога свойств перед запуском скрипта, следует применить другую директиву #property script_show_inputs. Она имеет приоритет перед script_show_confirm, то есть вывод диалога отключает запрос на подтверждение (поскольку диалог сам выступает в аналогичной роли). Директива вызывает диалог даже при отсутствии входных переменных: его имеет смысл открывать, чтобы показать пользователю описание и версию продукта (они выводятся на закладке Общие, первой по счету).

В следующей таблице показаны варианты сочетаний директив #property и их эффект на программу.

Директива

Эффект

script_show_confirm

script_show_inputs

Немедленный запуск

нет

нет

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

да

нет

Открытие диалога свойств

неважно

да

Простой пример скрипта с заготовками директив находится в файле ScriptNoComment.mq5. Назначение скрипта следующее. Иногда MQL-программы оставляют после себя ненужные комментарии в левом верхнем углу графика. Комментарии хранятся в chr-файлах вместе с графиком, поэтому даже после перезагрузки терминала они восстанавливаются. Данный скрипт позволяет очистить комментарий или установить его в произвольное значение. Если Назначить горячую клавишу скрипту с помощью одноименной команды контекстного меню Навигатора, можно будет чистить комментарий текущего графика одним нажатием.

Изначально директивы script_show_confirm и script_show_inputs отключены за счет превращения в строчные комментарии. Вы можете поэкспериментировать с разным сочетанием директив, раскомментируя их по одной или одновременно.

//#property script_show_confirm
//#property script_show_inputs
   
input string Text = "";
   
void OnStart()
{
   Comment(""); // чистим комментарий
}