MQL4 Перерисовка

 
Всем привет, делаю индикатор уровней, но он почему то перерисовывается. Помогите исправить перерисовку.
Файлы:
 

Наверно из-за этого:

      if(iBarShift(NULL,0,t)>=i+50)
      {
         j=0;
      }

Рисование может зависеть от начального бара. После перезапуска терминала и при прокрутке графика начальный бар меняется. 

 
Dmitry Fedoseev:

Наверно из-за этого:

Рисование может зависеть от начального бара. После перезапуска терминала и при прокрутке графика начальный бар меняется. 


Интересно, не знал такого, даже не представлял. Какие есть методы исправить это?

 
Igor Kryuchkov:

Интересно, не знал такого, даже не представлял. Какие есть методы исправить это?


Убрать эту проверку. Из-а нее игнорируются некоторые выполнения условий. Но если убрать, появится куча уровней, даже свалка. Поэтому надо рисовать не графическими объектами, а индикаторными буферами. На тех барах, где условия не выполняются, брать значение с предыдущего бара. 

 
Dmitry Fedoseev:

Убрать эту проверку. Из-а нее игнорируются некоторые выполнения условий. Но если убрать, появится куча уровней, даже свалка. Поэтому надо рисовать не графическими объектами, а индикаторными буферами. На тех барах, где условия не выполняются, брать значение с предыдущего бара. 


Как рисовать буферы длинной 50 свечей?

 
Igor Kryuchkov:

Как рисовать буферы длинной 50 свечей?


А зачем? Не надо, а то будет еще одна перерисовка. Как выполнились условия, так присваиваем новое значение соответствующему элементу буфера, а если не исполняются условия, то копируем значение с предыдущего элемента. Будет выглядеть как канал.