Проблема с GV-переменными

 
Здравствуйте. Ведь переменные терминала сохраняются при перезагрузке терминала? Вот я запускаю советника,  в OnInit создаю переменную и всё ок, перезапускаю терминал и Alert мне сообщает что переменная не найдена и он создаёт её заново
 
Murat Ishakov:
Здравствуйте. Ведь переменные терминала сохраняются при перезагрузке терминала? Вот я запускаю советника,  в OnInit создаю переменную и всё ок, перезапускаю терминал и Alert мне сообщает что переменная не найдена и он создаёт её заново

Код пожалуйста для воспроизведения.

 
Vladimir Karputov:

Код пожалуйста для воспроизведения.

Специально написал минимальный код для проверки. Дважды проверяю алертом

#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
string gvname;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   gvname="val_"+Symbol();
   Alert (GlobalVariableCheck(gvname));
   if(GlobalVariableCheck(gvname)==false) {
         if(GlobalVariableTemp(gvname)==true)
            GlobalVariableSet(gvname,0);
      }
   Alert (GlobalVariableCheck(gvname));
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
 
Murat Ishakov:

Специально написал минимальный код для проверки. Дважды проверяю алертом

Справка GlobalVariableTemp

Примечание

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

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


Вам нужна функция 

GlobalVariableSet

Устанавливает новое значение глобальной переменной

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

 
Vladimir Karputov:

Справка GlobalVariableTemp

Примечание

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

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


Вам нужна функция 

GlobalVariableSet

Устанавливает новое значение глобальной переменной

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

Спасибо спасибо вам огромное. Моя ошибка, не обратил внимание что в GlobalVariableTemp формулировка "временная". Точнее и не думал на неё, думал ошибка в другом. Потому что думал что всё что связано с GlobalVariable сохраняется всегда
Причина обращения: