Проблема с глобальными переменными

 

Вопрос касается как изменить глобальную переменную при оптимизации чтобы результат в окне входных параметров был верным, приведу пример, когда с файла считываются переменные (параметры советника extern)


//Для оптимизации
extern int Counter = 1; // Счетчик подсчета количества оптимизаций. Если равен 0, то обычная оптимизация...
extern string Filename = "opt.txt"; // Имя файла с оптимизируемыми параметрами
int FilePtr=0; //  Положение файлового указателя

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
if(IsOptimization() && Counter>0)
   {
// Для ускорения процесса будем поддерживать сквозной указатель файловой позиции
// с помощью глобальной переменной FilePtr 
// На первом проходе инициализируем её нулём.
      if (GlobalVariableCheck("FilePtr")==false || Counter == 1) 
      {
         FilePtr = 0; 
         GlobalVariableSet("FilePtr",0); 
      } 
      else 
      {
         FilePtr = GlobalVariableGet("FilePtr"); 
      }

      int handle=FileOpen(Filename,FILE_CSV|FILE_READ,';');
      if(handle<1)
      {
     	Print("Файл не найден: ", GetLastError());
     	return(0);
      }
      FileSeek(handle,FilePtr, SEEK_SET);
      
      int value1 = StrToInteger(FileReadString(handle));
      int value2 = StrToInteger(FileReadString(handle)); 
      plwmas=value1;  // тут должны быть параметры Вашего советника
      plwmasc=value2;
      FilePtr = FileTell(handle); 
      GlobalVariableSet("FilePtr",FilePtr);
      
      FileClose(handle); 
   }  
//----


Результат оптимизации


график

Заметно что значения графика при оптимизации изменяются, но входные параметры, которые считываются с файла и не обновляются, то есть value1=50 и value2= 50, и непонятно соответственно, как отбирать мне нужные для меня результаты. Кто в курсе как изменить структуру?, может ошибка, но все компилируется отлично, + график меняет свою форму по идеи параметры нормально обрабатываются, но не обновляются в окне вывода... Структура входного файла приведена ниже:



Жду рекомендаций и ответа....

 

Как вариант - выставляете параметры value1 и value2 оптимизироваться как обычно,

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

Т.е. советник стартовал с параметрами value1=10 value2=30- в ините прочитал файл.

Если там есть комбинация значений value1=10 value2=30, то тест запускается.

Если нет- то функция start() выполняет return;

.

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

Думаю, массив фибо под второй параметр построите без проблем, а первый задать списком значений.

 
Ок спасибо, попробую...