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

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

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

Murat Ishakov
3991
Murat Ishakov  
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()
  {
//---
   
  }
//+------------------------------------------------------------------+
Vladimir Karputov
Модератор
182154
Vladimir Karputov  
Murat Ishakov:

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

Справка GlobalVariableTemp

Примечание

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

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


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

GlobalVariableSet

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

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

Murat Ishakov
3991
Murat Ishakov  
Vladimir Karputov:

Справка GlobalVariableTemp

Примечание

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

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


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

GlobalVariableSet

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

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

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