Можно ли заставить индикатор не перерисовывать ? MQL4

 

Индикатор простенький, но т.к. он основан на МАшках , то он перерисовывает последний десяток-два баров, бился бился, никак не пойму как его сделать чтобы он не перерисовывал, а оставлял те сигналы на старых уже обсчитанных барах какие они есть

и что б сигналы на истории и визуализации (реале) совпадали - хотя думаю это невозможно, т.к. МА в истории не перерисовывают 

 

Файлы:
DeltaMA_2.mq4  6 kb
 
Нужны промежуточные значение скользящих средних средних. Те, которые возникали в процессе формирования бара. 
 

попробуйте сделать цикл не с 0 а с 1

   for(i=1; i<limit; i++)

 ведь все индикаторы на текущем баре рисуют и это как бы вполне логично ибо бар только строится. 

а машки перерисовываться не могут на 1 баре  

 

еще чтобы не перерисовывал можно сделать так:

      if(Naprav0!=Naprav60 || Naprav0!=Naprav240 || Naprav0!=Naprav1440 || Naprav0!=NapravWeek)
        {
         continue;
           }else{
         if(Naprav0=="Buy" && DeltaBuff2[i]==EMPTY_VALUE){ DeltaBuff2[i]=iClose(Symbol(),0,i); }
         if(Naprav0=="Sell"&& DeltaBuff1[i]==EMPTY_VALUE){ DeltaBuff1[i]=iClose(Symbol(),0,i); }
        }
делал так для одного индикатора, чтоб не врал.
т.е. если буфер еще не заполнен -только тогда заполняем, а иначе не перерисовываем его данные
 
Vladislav Andruschenko:

попробуйте сделать цикл не с 0 а с 1

...

Не поможет. В индикаторе обращение к старшим таймфреймом. Тогда уж все шифты увеличивать на 1, но тогда показания изменятся. 
 
Dmitry Fedoseev:
Не поможет. В индикаторе обращение к старшим таймфреймом. Тогда уж все шифты увеличивать на 1, но тогда показания изменятся. 
тогда второй вариант.
 
Vladislav Andruschenko:
тогда второй вариант.
Тоже не то. Нужно с использованием текущего таймфрейма вычислять МА старшего таймфрейма.
 
Dmitry Fedoseev:
Тоже не то. Нужно с использованием текущего таймфрейма вычислять МА старшего таймфрейма.

в данном конкретном случае стоит(и вполне обоснованно) вычислять MA "исскуственного/сдвинутого старшего" таймфема а-ла H1+5M.. но это lot-of-code :-)

 
Maxim Kuznetsov:

в данном конкретном случае стоит(и вполне обоснованно) вычислять MA "исскуственного/сдвинутого старшего" таймфема а-ла H1+5M.. но это lot-of-code :-)

Куда сдвинутого? зачем сдвинутого? Зачем искусственного, да еще H1+M5? 

Обычного H1, но с использованием M5 для формирующегося бара H1, что бы на истории можно было рассчитать промежуточные значения. 

 
Vladislav Andruschenko:
т.е. если буфер еще не заполнен -только тогда заполняем, а иначе не перерисовываем его данные
Не проще цены Close заменить на Open безо всяких доп проверок?
 
речь шла о том, чтобы индикатор не перерисовывал свой сигнал если его нарисовал, я посоветовал вариант проверки - если буфер уже имеет стрелку - не трогать ее. 
 
Vladislav Andruschenko:
речь шла о том, чтобы индикатор не перерисовывал свой сигнал если его нарисовал, я посоветовал вариант проверки - если буфер уже имеет стрелку - не трогать ее. 
Это не совсем так - он не будет её перерисовать в реальном времени, а после переинициализации всё равно перерисует, бо возьмёт уже изменившуюся цену Close. Если просто поменять Close на Open, результат будет таким же как у вас со всеми проверочными наворотами, но перерисовки после следующего OnInit'а не будет
Причина обращения: