Вычисление глобальных переменмых

 
У меня такая загвоздка. Ввожу внешние переменные. Потом мне нужно сдвинуть матрицу вправо на величину, которая рассчитывается через внешние данные. Но МТ ругается что выражения глобальным переменным приписывать нельзя ('Per' - expression on global scope not allowed). Я об этом и в документации прочитал. Вот мой код (заметьте while loop, который вычисляет Per, который в свою очередь используется в init и start):

//Input parameters

extern int Order=10;

//Indicator buffers
double IC[];

   int N=0;
   int Per=1;
   while(Per*2<=Bars)
   {
      Per=Per*2;
      N=N+1;
      if(N>=Order)break;
   }


int init()
{
   IndicatorBuffers(1);
   SetIndexBuffer(0,IC);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
   SetIndexShift(0,Per);
   IndicatorShortName("Predicted Closing Prices");
   return(0);
}



Хотелось бы сохранить переменные Per и N для init() и start(). Не красиво дублировать один и тот же код на вычисление Per в двух местах. Если какой нибудь выход?

 
Хотелось бы сохранить переменные Per и N для init() и start(). Не красиво дублировать один и тот же код на вычисление Per в двух местах. Если какой нибудь выход?

В MQL, точно так же как и в языке си нельзя выполнять код на глобальном уровне. Т.е. тебе надо оформить твой цикл в виде функции. И эту функцию вызывать из нужного тебе места (например из init и start).
Причина обращения: