ФОРТС Глобальная переменная

 

Добрый день!

Сервисдеск не может воспроизвести ошибку обнуления глобальной переменной

Прошу помощи у кого есть демо-ФОРТС Открытие.

Проблема в следующем:

При закрытии терминала обнуляется глобальная переменная.

До закрытия терминала:

 

 

Закрываю терминал с работающими советниками, а потом открываю:

 

К предыдущему значению 48 прибавляем 6 = 54, но переменная обнуляется у меня в терминале.

Прошу открыть демо, открыть графики любых 3-х инструментов, бросить на них этого

советника:

//+------------------------------------------------------------------+
//|                                                  Global_demo.mq5 |
//|                                          Copyright 2015, Mikalas |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Mikalas"
#property link      "http://www.mql5.com"
#property version   "1.00"
//
input int TimerTime = 1000;   //Период таймера
//
ulong   trans_count;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
//---
  trans_count = 0;  

//--- Установка таймера
  if ( !EventSetMillisecondTimer( TimerTime ) )
  {
    MessageBox( "Таймер не установлен!", "Ошибка", MB_OK | MB_ICONHAND );
    return( INIT_FAILED );
  } 
  
//---
  if ( !GlobalVariableCheck( "trans_count" ) )
  {
    datetime a_time = GlobalVariableSet( "trans_count", 0 );
    
    if ( ulong( a_time ) == 0 )
    {
      MessageBox( "Глобальная переменная терминала 'Счётчик транзакций' не создана!", "Ошибка", MB_OK | MB_ICONHAND );
      return( INIT_FAILED );
    }
  }
  
  GlobalVariableSet( _Symbol, 0 );
  
//---  
  return( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit( const int reason )
{
//--- удаление таймера
  EventKillTimer();
//---
  if ( GlobalVariableCheck( _Symbol ) )
  {
    GlobalVariableDel( _Symbol );
  }  
}
//+------------------------------------------------------------------+
//| Expert Set transaction count function                            |
//+------------------------------------------------------------------+
void SetTransCount( const bool up_down )
{
  double tr_count;
  uint i = 0;
  
  do
  {
    i++;
    if ( GlobalVariableGet( "trans_count", tr_count ) )
    {
      if ( up_down )
      {
        if ( GlobalVariableSetOnCondition( "trans_count", tr_count + 1, tr_count ) )
        {
          i = 100;
        }
      }
      else
      {
        if ( GlobalVariableSetOnCondition( "trans_count", tr_count - 1, tr_count ) )
        {
          i = 100;
        }
      }
    }
  }  
  while( i < 100 );
}
//+------------------------------------------------------------------+
//| Expert timer function                                            |
//+------------------------------------------------------------------+
void OnTimer()
{
  if ( trans_count < 2000 )
  {
    trans_count++;
    SetTransCount( true );
    GlobalVariableSet( _Symbol, double( trans_count ) );
  }        
}
  
//+------------------------------------------------------------------+
//| The END                                                          |
//+------------------------------------------------------------------+

      

 

 Подождать несколько секунд, затем нажав на F3 посмотреть значение переменной "trans_count"

Затем закрыть терминал с работающими советниками, а потом вновь открыть.

Вновь нажать F3 и посмотреть значение "trans_count"

Результаты прошу опубликовать здесь.

Спасибо. 

 
Mikalas:

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

Перед закрытием терминала:

 

После открытия терминала:

 

 
Yurich:

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

Перед закрытием терминала:

 

После открытия терминала:

 

Доброе утро Yurich!

Да что же это такое?

А Вы запускаете терминал от имени администратора?

Если нет, то попробуйте от администратора.... 

 
Mikalas:

Терминал стоит на несистемном диске и запускается с ключом portable. Ошибка не обнаруживается ни под юзером, ни под админом.

 
Yurich:

Терминал стоит на несистемном диске и запускается с ключом portable. Ошибка не обнаруживается ни под юзером, ни под админом.

У меня терминал тоже стоит НЕ на системном диске, и я запускаю его без ключа, но

от имени администратора. У меня переменная ОБНУЛЯЕТСЯ :(:(:( 

У меня Windows 7 Ultimate 64-bit 

 
Mikalas:

У меня терминал тоже стоит НЕ на системном диске, и я запускаю его без ключа, но

от имени администратора. У меня переменная ОБНУЛЯЕТСЯ :(:(:( 

У меня Windows 7 Ultimate 64-bit 

У меня W8.1 x64. Глобальные переменные сохраняются в ...\Profiles\gvariables.dat. Посмотри доступ к этому файлу и время его изменения.
 
Yurich:
У меня W8.1 x64. Глобальные переменные сохраняются в ...\Profiles\gvariables.dat. Посмотри доступ к этому файлу и время его изменения.

Посмотрел. Всё Ок. :(

Только внутри почему-то одни нули:

 

 
Mikalas:

Посмотрел. Всё Ок. :(

Только внутри почему-то одни нули:

 

 
 

Yurich!

А то, что у меня только SSD диски это может иметь значение? 

 
Mikalas:

Yurich!

А то, что у меня только SSD диски это может иметь значение? 

Не имеет значения. Попробуй удалить файл gvariables.dat.
Причина обращения: