GlobalVariableDel() - удаление глобальной переменной
В этом выпуске я расскажу о том, как удалить глобальную переменную. Для этого используется функция GlobalVariableDel():
bool GlobalVariableDel(string name)
Функция GlobalVariableDel() удаляет переменную name и возвращает true в случае успешного удаления переменной и false - в случае какой-то ошибки. Код ошибки можно получить с помощью функции GetLastError().
Функция GlobalVariableDel() очень часто применяется при работе с глобальными переменными, поэтому можно привести огромное количество примеров ее использования. Например, очень часто перед трейдером стоит задача сохранения массивов данных (список тикеров позиций, открытых этим экспертом, и т.д.) в глобальных переменных.
Конечно, можно все данные хранить в переменных эксперта, но при перезапуске клиентского терминала они будут потеряны, поэтому лучше критические данные, которые нельзя потерять ни в коем случае, хранить не в памяти, а сразу в глобальных переменных.
Функции для работы с такими массивами:
- AddItem()
- DeleteItem()
- Count()
- Search()
- BSearch
- Sort()
Однако перед тем, как написать эти функции, я хотел бы рассказать о реализации "критических секций" в советнике.
Дело в том, что если в момент выполнения этих функций будет осуществлен доступ к массивам данных, хранимых в глобальных переменных, из нескольких советников одновременно, то результат будет непредсказуемым и в большинстве случаев данные будут испорчены.
Для того, чтобы избежать этого, мы создадим объект "критическая секция", который может находиться в двух состояниях:
- "зеленый свет" (-1); и
- "красный свет" (1).
В каждый конкретный момент только один советник может получить доступ к данным. Пока советник получает данные, будет гореть "красный свет" и другие советники будут ждать "зеленового света". Если горит "зеленый свет", то дорога свободна, т.к. никто в данный момент к данным не обращается.
О реализации "критической секции" на MQL4 я расскажу в следующем выпуске, а уже после этого мы начнем создавать функции доступа к массивам даным, хранимых в глобальных переменных.
Все статьи по теме "Пишем советников для MetaTrader 4".
- Механическая торговая система - миф или реальность?
- С чего начать при написании советника:
- Создаем нового советника - Настраиваем параметры. - Язык MetaQuotes Language 4: