проблема с отображением индикатора

 
нормально индикатор отображаться должен так как на рисунке 1, когда меняется таймфрейм, то отображаться не пойми что(рисунок 2),как это исправить
Файлы:
triykba_1.png  102 kb
4zy4q3u_2.png  155 kb
 
Dmitry Melnichenko:
нормально индикатор отображаться должен так как на рисунке 1, когда меняется таймфрейм, то отображаться не пойми что(рисунок 2),как это исправить

Соблюдайте простое правило: в OnCalculate() если prev_calculated==0 - значит или это новая загрузка индикатора

Индикаторы загружаются в следующих случаях:

  • прикрепление индикатора к графику;
  • запуск терминала (если индикатор был прикреплен к графику перед предыдущим закрытием терминала);
  • загрузка шаблона (если в шаблоне указан прикрепленный к графику индикатор);
  • смена профиля (если индикатор прикреплен к одному из графиков профиля);
  • смена символа и/или периода графика, к которому прикреплен индикатор;
  • после удачной перекомпиляции индикатора, если данный индикатор был прикреплен к графику.
  • изменение входных параметров индикатора.

или была подкачана история - в любом случае нужно пересчитать ВЕСЬ ИНДИКАТОР ЗАНОВО.


В Вашем случае (так Вы используете графические объекты) при prev_calculated==0 нужно сначала очистить график - удалить все графические объекты, которые могли остаться от предыдущего запуска, а уже потом заново отрисовать.

 

Наверное нужно в коде что-то прописать при инициализации. Пробовали?

 
Vladimir Karputov:

Соблюдайте простое правило: в OnCalculate() если prev_calculated==0 - значит или это новая загрузка индикатора

Индикаторы загружаются в следующих случаях:

  • прикрепление индикатора к графику;
  • запуск терминала (если индикатор был прикреплен к графику перед предыдущим закрытием терминала);
  • загрузка шаблона (если в шаблоне указан прикрепленный к графику индикатор);
  • смена профиля (если индикатор прикреплен к одному из графиков профиля);
  • смена символа и/или периода графика, к которому прикреплен индикатор;
  • после удачной перекомпиляции индикатора, если данный индикатор был прикреплен к графику.
  • изменение входных параметров индикатора.

или была подкачана история - в любом случае нужно пересчитать ВЕСЬ ИНДИКАТОР ЗАНОВО.


В Вашем случае (так Вы используете графические объекты) при prev_calculated==0 нужно сначала очистить график - удалить все графические объекты, которые могли остаться от предыдущего запуска, а уже потом заново отрисовать.

спасибо, пробовал не помогло
 
Dmitry Melnichenko:
спасибо, пробовал не помогло

Значит что-то делали неправильно. Другого не бывает.

 
Vladimir Karputov:

Значит что-то делали неправильно. Другого не бывает.


дело в том что на каждом тике он удаляет объекты, а потом все расчитывает

 
Dmitry Melnichenko:

дело в том что на каждом тике он удаляет объекты, а потом все расчитывает


Вот и рецепт. Нужно сделать экономный пересчёт индикатора на нулевом баре (на самом правом на графике баре). Ещё лучше сделать так: ловить момент рождения нового бара и просчитывать ТОЛЬКО ДЛЯ НОВЫХ НЕПРОСЧИТАННЫХ баров, а внутри бара вообще не работать.

 
Vladimir Karputov:

Вот и рецепт. Нужно сделать экономный пересчёт индикатора на нулевом баре (на самом правом на графике баре). Ещё лучше сделать так: ловить момент рождения нового бара и просчитывать ТОЛЬКО ДЛЯ НОВЫХ НЕПРОСЧИТАННЫХ баров, а внутри бара вообще не работать.


теперь я использую буфер для отрисовки зигзага, но появляються такие разрывы, как с эти справиться???

и как этот зигзаг раскрасить в разные цвета, читал, пробовал, не получилось
Файлы:
404eni2_3.png  65 kb
 
Dmitry Melnichenko:

теперь я использую буфер для отрисовки зигзага, но появляються такие разрывы, как с эти справиться???

и как этот зигзаг раскрасить в разные цвета, читал, пробовал, не получилось

Вы каким стилем рисуете буфер? "DRAW_SECTION"?

 
Vladimir Karputov:

Вы каким стилем рисуете буфер? "DRAW_SECTION"?


да

 
Dmitry Melnichenko:

да


Значит где-то в расчётах пропускаете один или несколько баров (а возможно в этих барах или оставляете значение "0" или даже принудительно ставите "0"). Вот отрезок и рисует от цены с графика вниз в пропасть к нулю (а может даже не к нулю, а к какому-то значению со знаком минус).