запись и востановление настроек советника (MQL5)

 
Подскажите пожалуйста есть ли возможность программной (mql5) записи и восстановления настроек советника ? А так же перехват времени их изменения.
 
Andrey Mikhailov:
Подскажите пожалуйста есть ли возможность программной (mql5) записи и восстановления настроек советника ? А так же перехват времени их изменения.
Конечно существует, сохранение и восстановление input переменных реализовано на штатном уровне терминала, все остальные переменные значение которых нужно восстановить при перезапуске советника записываются в файл или или в глобальные переменные терминала например в функции OnDeinit() а восстановление в функции OnInit(). Примерно так
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(MQLInfoInteger(MQL_VISUAL_MODE))flag_save=false;
   if(MQLInfoInteger(MQL_OPTIMIZATION))flag_save=false;
   if(MQLInfoInteger(MQL_TESTER)) flag_save=false;
   if(flag_save)LoadParametres();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   if(flag_save)SaveParametres();
  }
//+------------------------------------------------------------------+
void SaveParametres()
  {
   int handle=FileOpen(Имя файла.csv",FILE_CSV|FILE_WRITE);

   if(handle>0)
     {
      FileWrite(handle,tiket);
      FileWrite(handle,flag_series);
      FileWrite(handle,TP);
      FileWrite(handle,SL);
      FileWrite(handle,series);
      FileWrite(handle,Lots);

      FileClose(handle);
     }
   else Print("Error saving data № - ",GetLastError(),"Magic = ",Magic," ",_Symbol);
  }
//+------------------------------------------------------------------+
void LoadParametres()
  {
   Print("*******************************************");
   Print("Start downloading data Magic = ",Magic," ",_Symbol);
   Print("*******************************************");
   int handle=FileOpen("Имя файла.csv",FILE_CSV|FILE_READ);

   if(handle>0)
     {

      tiket=(int)FileReadNumber(handle);
      flag_series=FileReadBool(handle);
      TP = FileReadNumber(handle);
      SL = FileReadNumber(handle);
      series=(int)FileReadNumber(handle);
      Lots=FileReadNumber(handle);

      FileClose(handle);
      Print("*******************************************");
      Print("Loading data completed Magic = ",Magic," ",_Symbol);
      Print("*******************************************");
     }
  }
//+------------------------------------------------------------------+
 
А в советнике можно поймать момент когда изменены параметры советника ?
 
Andrey Mikhailov:
А в советнике можно поймать момент когда изменены параметры советника ?

скорее всего да, только для какой цели это нужно 

 
Andrey Mikhailov:
А в советнике можно поймать момент когда изменены параметры советника ?

Создайте статическую переменную, или глобальную например bool one_start=true; и проверяйте её в OnInit, при изменении параметров они не сбрасываются. По значению этой переменной вы узнаете, это просто запуск, или же изменение параметров.

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
//---
bool one_start=true;
//--- 
   if(one_start){
      Print("One start");
      one_start=false;
   }
   else Print("Parameters changed");

   return(INIT_SUCCEEDED);
}
 
Andrey Mikhailov:
Подскажите пожалуйста есть ли возможность программной (mql5) записи и восстановления настроек советника ? А так же перехват времени их изменения.
Вчера вышла статья Текстовые файлы для хранения входных параметров советников, индикаторов и скриптов
 
Всем спасибо !
Причина обращения: