MQL4 - automated forex trading   /  

Документация

Справочник MQL4  Глобальные переменные  GlobalVariableSetOnCondition

 
Используй возможности
MQL5 в MetaTrader 5
Learn possibilities of the new MQL5
Интересуешься новым?
Доступна справка по MQL5
bool GlobalVariableSetOnCondition( string name, double value, double check_value)
Устанавливает новое значение существующей глобальной переменной, если текущее значение переменной равно значению третьего параметра check_value. Если переменной не существует, функция сгенерирует ошибку ERR_GLOBAL_VARIABLE_NOT_FOUND (4058) и вернет FALSE. При успешном выполнении функция возвращает TRUE, иначе FALSE. Для того, чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). Если текущее значение глобальной переменной отличается от check_value, функция вернет FALSE.
Функция обеспечивает атомарный доступ к глобальной переменной, поэтому она может быть использована для организации семафора при взаимодействии нескольких одновременно работающих экспертов в пределах одного клиентского терминала.
Параметры:
name   -   Имя глобальной переменной.
value   -   Новое значение.
check_value   -   Значение для проверки текущего значения глобальной переменной.
Пример:
  int init()
    {
     //---- создание глобальной переменной
     GlobalVariableSet("DATAFILE_SEM",0);
     //...
    }
  
  int start()
    {
     //---- перед использованием ресурса пытаемся его заблокировать
     while(!IsStopped())
       {
        //---- блокируем
        if(GlobalVariableSetOnCondition("DATAFILE_SEM",1,0)==true)  break;
        //---- переменная удалена?
        if(GetLastError()==ERR_GLOBAL_VARIABLE_NOT_FOUND) return(0);
        //---- задержка исполнения в полсекунды
        Sleep(500);
       }
     //---- ресурс заблокирован
     // ... работа с файлом
     //---- разблокируем ресурс
     GlobalVariableSet("file_semaphore",0);
    }