Скрипты
Скриптом является 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
|