GlobalVariableTime

Возвращает время последнего доступа к глобальной переменной.

datetime  GlobalVariableTime(
   string  name      // имя
   );

Параметры

name

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

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

Возвращает время последнего доступа к указанной глобальной переменной. Обращение к переменной за значением, например, с помощью функций GlobalVariableGet() и GlobalVariableCheck(), также изменяет время последнего доступа. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().

Примечание

Глобальные переменные существуют в клиентском терминале 4 недели с момента последнего обращения, после этого автоматически уничтожаются.

Пример:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#define   GV_NAME    "TestGlobalVariableTime"
#define   GV_TOTAL   5
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- удалим ранее созданные для теста глобальные переменные клиентского терминала с префиксом GV_NAME
   GlobalVariablesDeleteAll(GV_NAME);
   
//--- создадим глобальные переменные клиентского терминала в количестве GV_TOTAL
//--- с префиксом GV_NAME с паузой в 5 сек. между созданием каждой
   for(int i=0i<GV_TOTALi++)
     {
      string name=GV_NAME+"_"+(string)i;
      ulong value=GetMicrosecondCount();
      ResetLastError();
      datetime time=GlobalVariableSet(name, (double)value);
      if(time==0)
        {
         Print("GlobalVariableSet() failed. Error "GetLastError());
         continue;
        }
      Sleep(5000);
      PrintFormat("GlobalVariableSet(%s, %.0f). Create time: %s"namevalueTimeToString(time,TIME_DATE|TIME_MINUTES|TIME_SECONDS));
     }
     
//--- подождём пару секунд и распечатаем в журнале время создания глобальных переменных терминала с префиксом GV_NAME
   Sleep(2000);
   Print(""); 
   GlobalVariableTimePrint("Creation time");
   
//--- подождём ещё пару секунд и распечатаем в журнале время последнего доступа к глобальным переменным терминала с префиксом GV_NAME
//--- увидим, что время последнего обращения к каждой переменной равно времени её создания
   Sleep(2000);
   Print(""); 
   GlobalVariableTimePrint("Last access time");
 
//--- теперь у каждой из созданных переменных запросим её значение
   Print(""); 
   int total=GlobalVariablesTotal();
   for(int i=0i<totali++)
     {
      string name=GlobalVariableName(i);
      if(GetLastError()!=0)
        {
         PrintFormat("Error %d occurred while getting global variable name at index %d"GetLastError(), i);
         ResetLastError();
         continue;
        }
      if(StringFind(nameGV_NAME)==WRONG_VALUE)
         continue;
         
      double value=GlobalVariableGet(name);
      if(GetLastError()!=0)
        {
         PrintFormat("Error %d occurred while getting global variable value at index %d"GetLastError(), i);
         ResetLastError();
         continue;
        }
      PrintFormat("Value of global variable named \"%s\": %.0f"namevalue);
     }
   
//--- подождём ещё пару секунд и распечатаем в журнале время последнего доступа к глобальным переменным терминала с префиксом GV_NAME
//--- увидим, что теперь время последнего обращения к каждой переменной равно времени запроса её значения
   Sleep(2000);
   Print(""); 
   GlobalVariableTimePrint("After getting value, the last access time");
 
//--- удалим все созданные для теста глобальные переменные клиентского терминала с префиксом GV_NAME
   GlobalVariablesDeleteAll(GV_NAME);
   /*
   результат:
   GlobalVariableSet(TestGlobalVariableTime_03987). Create time2024.11.28 22:00:39
   GlobalVariableSet(TestGlobalVariableTime_15012302). Create time2024.11.28 22:00:44
   GlobalVariableSet(TestGlobalVariableTime_210034365). Create time2024.11.28 22:00:49
   GlobalVariableSet(TestGlobalVariableTime_315045008). Create time2024.11.28 22:00:54
   GlobalVariableSet(TestGlobalVariableTime_420060340). Create time2024.11.28 22:00:59
   
   Creation time of global variable named "TestGlobalVariableTime_0"2024.11.28 22:00:39
   Creation time of global variable named "TestGlobalVariableTime_1"2024.11.28 22:00:44
   Creation time of global variable named "TestGlobalVariableTime_2"2024.11.28 22:00:49
   Creation time of global variable named "TestGlobalVariableTime_3"2024.11.28 22:00:54
   Creation time of global variable named "TestGlobalVariableTime_4"2024.11.28 22:00:59
   
   Last access time of global variable named "TestGlobalVariableTime_0"2024.11.28 22:00:39
   Last access time of global variable named "TestGlobalVariableTime_1"2024.11.28 22:00:44
   Last access time of global variable named "TestGlobalVariableTime_2"2024.11.28 22:00:49
   Last access time of global variable named "TestGlobalVariableTime_3"2024.11.28 22:00:54
   Last access time of global variable named "TestGlobalVariableTime_4"2024.11.28 22:00:59
   
   Value of global variable named "TestGlobalVariableTime_0"3987
   Value of global variable named "TestGlobalVariableTime_1"5012302
   Value of global variable named "TestGlobalVariableTime_2"10034365
   Value of global variable named "TestGlobalVariableTime_3"15045008
   Value of global variable named "TestGlobalVariableTime_4"20060340
   
   After getting valuethe last access time of global variable named "TestGlobalVariableTime_0"2024.11.28 22:01:08
   After getting valuethe last access time of global variable named "TestGlobalVariableTime_1"2024.11.28 22:01:08
   After getting valuethe last access time of global variable named "TestGlobalVariableTime_2"2024.11.28 22:01:08
   After getting valuethe last access time of global variable named "TestGlobalVariableTime_3"2024.11.28 22:01:08
   After getting valuethe last access time of global variable named "TestGlobalVariableTime_4"2024.11.28 22:01:08
   */
  }
//+------------------------------------------------------------------+
//| Распечатывает в журнале время последнего доступа                 |
//| к глобальным переменным клиентского терминала                    |
//+------------------------------------------------------------------+
void GlobalVariableTimePrint(const string reason)
  {
   int total=GlobalVariablesTotal();
   for(int i=0;i<total;i++)
     {
      string name=GlobalVariableName(i);
      if(GetLastError()!=0)
        {
         PrintFormat("Error %d occurred while getting global variable name at index %d"GetLastError(), i);
         ResetLastError();
         continue;
        }
      datetime time=GlobalVariableTime(name);
      if(GetLastError()!=0)
        {
         PrintFormat("Error %d occurred while getting global variable time at index %d"GetLastError(), i);
         ResetLastError();
         continue;
        }
      PrintFormat("%s of global variable named \"%s\": %s"reasonnameTimeToString(time,TIME_DATE|TIME_MINUTES|TIME_SECONDS));
     }
  }

Смотри также

GlobalVariableCheck()