GlobalVariableTemp

Производит попытку создания временной глобальной переменной. Если переменная не существует, то система создает новую временную глобальную переменную.

bool  GlobalVariableTemp(
   string  name      // имя
   );

Параметры

name

[in]  Имя временной глобальной переменной.

Возвращаемое значение

При успешном выполнении функция возвращает true, иначе false. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().

Примечание

Временные глобальные переменные существуют только во время работы клиентского терминала, после закрытия терминала они автоматически уничтожаются. При выполнении операции GlobalVariablesFlush() временные глобальные переменные на диск не записываются.

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

Пример:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#define   GV_NAME    "TestGlobalVariableTemp"
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double value=0;   // сюда будем получать значения глобальной переменной
   
//--- если временной глобальной переменной клиентского терминала ещё нет, значит:
//--- 1. либо программа ещё не запускалась,
//--- 2. либо была перезагрузка терминала с работающей программой
   if(!GlobalVariableCheck(GV_NAME))
     {
      //--- создаём новую временную глобальную переменную клиентского терминала
      if(!GlobalVariableTemp(GV_NAME))
        {
         Print("GlobalVariableTemp() failed. Error "GetLastError());
         return;
        }
      //--- устанавливаем в глобальную переменную текущую дату-время
      if(!GlobalVariableSet(GV_NAME,(double)TimeCurrent()))
        {
         Print("GlobalVariableSet() failed. Error "GetLastError());
         return;
        }
 
      //--- получаем значение временной глобальной переменной и выводим в журнал время первого запуска программы или перезагрузки терминала
      if(!GlobalVariableGet(GV_NAME,value))
        {
         Print("GlobalVariableGet() failed. Error "GetLastError());
         return;
        }
      Print("First start or starting the program after rebooting the terminal at "TimeToString((datetime)value,TIME_DATE|TIME_MINUTES|TIME_SECONDS));
     }
   
//--- если временная глобальная переменная клиентского терминала уже создана, значит это перезапуск программы
   else
     {
      //--- устанавливаем в глобальную переменную текущую дату-время
      if(!GlobalVariableSet(GV_NAME,(double)TimeCurrent()))
        {
         Print("GlobalVariableSet() failed. Error "GetLastError());
         return;
        }
 
      //--- получаем значение временной глобальной переменной и выводим в журнал время перезапуска программы
      if(!GlobalVariableGet(GV_NAME,value))
        {
         Print("GlobalVariableGet() failed. Error "GetLastError());
         return;
        }
      Print("Restarting the program at "TimeToString((datetime)valueTIME_DATE|TIME_MINUTES|TIME_SECONDS));
     }
 
   /*
   результат при первом запуске, либо после перезагрузки терминала:
   First start or starting the program after rebooting the terminal at 2024.11.29 15:03:18
   
   результат нескольких перезапусков программы подряд:
   Restarting the program at 2024.11.29 15:03:25
   Restarting the program at 2024.11.29 15:03:33
   Restarting the program at 2024.11.29 15:03:45
   */
  }