Главная функция скриптов и сервисов: OnStart
Утилитарные программы — скрипты и сервисы — выполняются в терминале посредством вызова их единственной функции обработки событий OnStart.
void OnStart()
Функция не имеет параметров и не возвращает значения. Она лишь служит "точкой входа" в прикладную программу со стороны терминала.
Скрипты предназначены, как правило, для разовых действий, выполняемых на графике (позднее мы изучим все возможности, которые предоставляет API графиков). Например, скрипт можно использовать для установки сетки ордеров или, наоборот, для закрытия всех прибыльных открытых позиций, для автоматического нанесения разметки графическими объектами или временного скрытия всех объектов.
Допускается использовать в скриптах постоянные действия, обернутые в "бесконечный" цикл, в котором, как уже говорилось ранее, следует всегда проверять признак остановки (_StopFlag) и периодически освобождать процессор (Sleep). Здесь следует помнить, что при выключении и включении терминала скрипт прийдется запускать снова.
Поэтому для такой постоянной активности, если она не связана напрямую с графиком, лучше использовать сервис. Стандартным приемом в реализации сервиса является как раз "бесконечный" цикл.
В предыдущих частях книги практически все примеры были реализованы в виде скриптов. В качестве примера сервиса можно напомнить программу GlobalsWithCondition.mq5 из раздела Синхронизация программ с помощью глобальных переменных. В следующем разделе об остановке советников и скриптов с помощью функции ExpertRemove будет приведен еще один.