#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=0; i<GV_TOTAL; i++)
{
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", name, value, TimeToString(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=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;
}
if(StringFind(name, GV_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", name, value);
}
//--- подождём ещё пару секунд и распечатаем в журнале время последнего доступа к глобальным переменным терминала с префиксом GV_NAME
//--- увидим, что теперь время последнего обращения к каждой переменной равно времени запроса её значения
Sleep(2000);
Print("");
GlobalVariableTimePrint("After getting value, the last access time");
//--- удалим все созданные для теста глобальные переменные клиентского терминала с префиксом GV_NAME
GlobalVariablesDeleteAll(GV_NAME);
/*
результат:
GlobalVariableSet(TestGlobalVariableTime_0, 3987). Create time: 2024.11.28 22:00:39
GlobalVariableSet(TestGlobalVariableTime_1, 5012302). Create time: 2024.11.28 22:00:44
GlobalVariableSet(TestGlobalVariableTime_2, 10034365). Create time: 2024.11.28 22:00:49
GlobalVariableSet(TestGlobalVariableTime_3, 15045008). Create time: 2024.11.28 22:00:54
GlobalVariableSet(TestGlobalVariableTime_4, 20060340). Create time: 2024.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 value, the last access time of global variable named "TestGlobalVariableTime_0": 2024.11.28 22:01:08
After getting value, the last access time of global variable named "TestGlobalVariableTime_1": 2024.11.28 22:01:08
After getting value, the last access time of global variable named "TestGlobalVariableTime_2": 2024.11.28 22:01:08
After getting value, the last access time of global variable named "TestGlobalVariableTime_3": 2024.11.28 22:01:08
After getting value, the 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", reason, name, TimeToString(time,TIME_DATE|TIME_MINUTES|TIME_SECONDS));
}
}
|