Сброс глобальных переменных на диск

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

void GlobalVariablesFlush()

Функция принудительно записывает содержимое глобальных переменных на диск. Функция не имеет параметров и ничего не возвращает.

Простейший пример приведен в скрипте GlobalsFlush.mq5.

void OnStart()
{
   GlobalVariablesFlush();
}

С помощью него вы можете сбрасывать переменные на диск в любой момент, по необходимости. В своем любимом файловом менеджере вы можете убедиться, что дата и время у файла gvariables.dat меняется сразу после запуска скрипта. Однако учтите, что файл обновится, только если глобальные переменные каким-либо образом редактировались или хотя бы считывались (это изменяет время доступа) после предыдущего сохранения.

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