Нужна помощь (не знаю как убрать мерцание индикатора в mql5)

 

Здравствуйте, помогите пожалуйста убрать мерцание в индикаторе. Индикатор полностью рабочий.

Вот часть кода:

...........................
int OnCalculate(const int total,
                const int calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick[],
                const long &real[],
                const int &spread[])
  {
 if(calculated==0) last=0;
   for(int i=calculated>2?calculated-1:0; i<total-1; i++)
     {
      bool set=false;
      zzL[i]=0;
      zzH[i]=0;
     
      //---
      if(direction>0)
        {
         if(high[i]>zzH[last])//-deviation)
           {
            zzH[last]=0;
            zzH[i]=high[i];
            if(low[i]<high[last]-depth)
              {
               if(open[i]<close[i]) zzH[last]=high[last]; else direction=-1;
               zzL[i]=low[i];
              }
            last=i;
            set=true;
           }
         if(low[i]<zzH[last]-depth && (!set || open[i]>close[i]))
           {
            zzL[i]=low[i];
            if(high[i]>zzL[i]+depth && open[i]<close[i]) zzH[i]=high[i]; else direction=-1;
            last=i;
           }
        }
      else
        {
         if(low[i]<zzL[last])//+deviation)
           {
            zzL[last]=0;
            zzL[i]=low[i];
            if(high[i]>low[last]+depth)
              {
               if(open[i]>close[i]) zzL[last]=low[last]; else direction=1;
               zzH[i]=high[i];
              }
            last=i;
            set=true;
           }
         if(high[i]>zzL[last]+depth && (!set || open[i]<close[i]))
           {
            zzH[i]=high[i];
            if(low[i]<zzH[i]-depth && open[i]>close[i]) zzL[i]=low[i]; else direction=1;
            last=i;
           }
        }
........

Пробую подправить строки:

 if(calculated==0) last=0;
   for(int i=calculated>2?calculated-1:0; i<total-1; i++)

Вылазит куча ошибок.  

 
Игорь:

А если

int i=(calculated>2)?calculated-1:0;

?

 
Сейчас попробую
 
Игорь #:
Сейчас попробую

Совсем  перестал рисовать графику

 

Был весь код, уже бы давно кто-нибудь исправил.

 
Игорь:

Здравствуйте, помогите пожалуйста убрать мерцание в индикаторе. Индикатор полностью рабочий.

Вот часть кода:

а в конце, после этой длинной простынки кода наверняка стоит return 0 и индикатор каждый вызов всё пересчитывает и перерисовывает :-)

 
Maxim Kuznetsov #:

а в конце, после этой длинной простынки кода наверняка стоит return 0 и индикатор каждый вызов всё пересчитывает и перерисовывает :-)

Спасибо за помощь.

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