Не отображаются линии каналов на всех пеиродах?

 

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

Канала в свою очередь рассчитываются по следующим временным зонам, это: М30, Н1 и Н4. Если начинаю переключать период на Н1 в МТ, то с графика сразу исчезает ценовой канал М30, от него остается только линия тренда, а вот сами границы канала, которые строятся по этой самой линии тренда исчезают. Остается только канал Н1 и Н4.

Тоже самое происходит и с остальными каналами, если поставить период Н4, остается только канала Н4, а от М30 и Н1 опять же видны только линии трендов, но вот их границ нет.

Переключаю на D1 и тут уже соответственно остаются только три линии тренда, без единого канала. Хотелось бы чтобы все эти три канала отображались на всех периодах. Так как вручную заниматся ихней постройкой уже подустал, торговля у меня во многом основана на этом методе. Помогите пожалуйста, в коде ничего сложного нету, думаю просто какая то небольшая ошибка, но вот в чем дело мне сложно понять.

Вот сам индикатор

Файлы:
 
Файлы:
aspirin.mq4  13 kb
 
Спасибо за исправления. Но все же каналы на обновленном индикаторе от Vitali отображаются не так как на оригинале, например теперь на периоде М30 - 30ти мин. канал становится намного шире, нежели чем на оригинале, а вот если переключить на период Н1, то вроде становится уже таким же стандартным, но на данном периоде уже той же самой проблемой страдает канал Н1 - как бы раздвигает свои границы, можете сами сравнить установив на одно окно прикрепленный мною индикатор, а на соседнее от Vitali, тоже самое повторяется и с каналом Н4 на периоде Н4. Если кто-то знает в чем дело буду рад выслушать.
 

Ширина каналов определяется величиной std.channel.2 умноженной для каждого периода на соответсвующее std.dev_..., расчитанное очень интересным образом - проверьте.

В первоначальном варианте для этого расчета используются данные трендовой линии ObjectGetValueByShift(period+"m "+LR.length+" TL",i)) некорректной длины, т.к. для отрисовки тредовых линий используется время бара текущего таймфрема для баров таймфреймов Н4, H1 и М30 (Time[end.bar], Time[end.bar_M30], Time[end.bar_H1]). Осюда каша и "исчезающие" каналы (каналы рисуются, но только в "заэкранных" ценах, которых не видно на графике)

Будьте внимательны и аккуратны.

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