Индикатор не обновляется при новых тиках. Помогите плизз!

 

Помогите пожалуйста, а то интернета и своих мозгов не хватает.

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

  for( i = 0; i < rates_total; i++)

   {      Переменная 1=0;      

          Переменная 2 =0;        

          Переменная 3 =0;       

          Переменная 4 =0;        

      for( k = i; k < Период расчета + i; k++)

   {        Считаем переменные 1, 2, 3 и 4      }    

   Переменная для буфера = формула;

   Буфер [i] = Переменная для буфера ;

  


Что не так то? где я накосячил? 

И ещё... подскажите пожалуйста как рассчитать среднюю из  Буфер [i] за заданный период.

   for(i=0; i<rates_total; i++)

     { double sum=0.0;

       for(k=0; k<TotalSignal; k++)

        {    sum+= Буфер [i] ;

      SignalBuffer[i]=sum/TotalSignal;  } }


 SignalBuffer[i]  в таком варианте совсем не рисуется на графике


Буду рад любому совету. Спасибо!

Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
ChartIndicatorAdd - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Это что? Он что, каждый раз шурует по всем котировкам? В смысле такая задумка и была?
for( i = 0; i < rates_total; i++)
 
Yevhenii Levchenko:
Это что? Он что, каждый раз шурует по всем котировкам? В смысле такая задумка и былаЕсли 

Если не брать все котировки, то он рисует только период который указываешь (пробовал). Или я что то не догоняю? Чтобы индикатор отрисовал всю историю, разве не надо все котировки пересчитывать?

 
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[]){

int total = rates_total - 2;
int limit = rates_total - IndicatorCounted();


if(limit > 1){limit = total;}

// Calculating the indicator
for(int i = limit; i >= 0 && !IsStopped(); i--){
    

Buf_0[i] = ....       
}
//--------------------------------------------------------------------

return(rates_total);                         
}
//--------------------------------------------------------------------


Используйте такой шаблон

 
Evgeniy Chumakov:


Используйте такой шаблон

Работает! Спасибо ОГРОМНОЕ)))

 
Evgeniy Chumakov:


Используйте такой шаблон

Шедеврально!

А это "prev_calculated" зачем сделали?

 
Vitaly Muzichenko:

Шедеврально!

А это "prev_calculated" зачем сделали?

Не заметил сразу ))) Да я  тоже бар по времени иногда в индикаторе отслеживаю, потом тока догоняю)))

Причина обращения: