В этом и последующих выпусках мы немножко углубим наши познания о глобальных переменных и о функциях, с ними связанных.
Для человека, имеющего уже опыт написания экспертов, выражение "глобальные переменные" может внести небольшую путанницу. Дело в том, что в действительности существует два вида "глобальных переменных":
О глобальных переменных первого типа - тех, которые являются общими для всех функций ОДНОГО эксперта, - я рассказывал ранее, в выпуске "Глобальные переменные".
Сейчас же речь пойдет именно о глобальных переменных второго типа - общих для ВСЕХ экспертов.
Глобальная переменная второго типа - это переменная, к которой можно обратиться из любого эксперта. Если в течение четырех недель не было сделано попытки прочесть значение глобальной переменной или записать в нее новое значение, то глобальная переменная автоматически удаляется клиентским терминалом.
Для работы с глобальными переменными используются следующие функции:
Для начала рассмотрим функцию GlobalVariableCheck().
bool GlobalVariableCheck(string name)
Эта функция возвращает true, если глобальная переменная с именем name существует, и false, если такой переменной нет.
В нашей функции WaitBeforeTransaction() мы храним время и дату совершения последней торговой операции в глобальной переменной "LastTradeTime".
Перед тем, как узнать время последней операции, прочитав значение этой переменной, мы проверяем, существует ли она вообще:
// если глобальная переменная LastTradeTime не существует, // то создать ее if (!GlobalVariableCheck("LastTradeTime")) { ... создаем переменную... }
Проверять существование глобальной переменной и создавать ее в случае отсутствия можно в двух местах: при инициализации эксперта - в функции init() - или на каждом тике - в функции start().
Несмотря на то, что на первый взгляд напрашивается осуществлять эти действия в функции init(), я бы советовал Вам делать это все-таки в функции start(). Дело в том, что если пользователь при работающем эксперте удалит глобальную переменную, а проверка на ее существование делается только при инициализации эксперта, то дальнейшее поведение такого советника сложно спрогнозировать. Скорее всего, такой советник просто перестанет торговать и начнет выдавать ошибки при обращении к удаленной глобальной переменной.
В следующем выпуске мы продолжим знакомство с функциями для работы с глобальными переменными.
Есть что сказать? Не стесняйтесь!
Последние статьи:
Видео по теме:
УГОЛОК АДМИНИСТРАТОРА