Код на языке Амиброкера для обычного канала:
bars=10;
HCH=Ref(HHV(H,bars),-1); // верхняя граница канала
LCH=Ref(LLV(L,bars),-1); // нижняя граница канала
Несмотря на простоту обычного канала, основным его недостатком может считаться тот факт что граница канала вовсе не обязательно приходятся на предыдущий экстремум (хай или лоу). То есть присутствует определенная неточность. С этой точки зрения это конечно минус.
Но с другой стороны, есть и определенный плюс. Канал не "заглядывает" в прошлое дальше установленного количества баров. Чаще всего границей канала будет самый сильный экстремум попавший в поле "зрения" канала. В остальных случаях границей канала станет некий средний уровень между попавшимся в канал экстремумом и предыдущим, более сильным экстремумом, но в канал уже не попавшим. В общем-то, и такой вариант не однозначно плохой, скорее это некоторое "приближение".
Для людей, любящих точность и не любящих приближения, предлагаю вариант канала, когда границей канала всегда является предыдущий хай или лоу цены вне зависимости от того как давно он случился.
Код индикатора на языке Амиброкера:
Код:
revers=3; // в процентах
ex1[0]=High[0];
ex2[0]=Low[0];
Lasttype[0]=1;
for (i=1;i<BarCount-1;i++) {
ex1[i]=ex1[i-1];
ex2[i]=ex2[i-1];
Lasttype[i]=Lasttype[i-1];
Hlimit[i]=(1+revers/100)*ex2[i];
Llimit[i]=(1-revers/100)*ex2[i];
if (Lasttype[i-1]==1) {
if (High[i]>Hlimit[i]) {
Lasttype[i]=3-Lasttype[i-1];
ex1[i]=ex2[i];
ex2[i]=High[i];
Llimit[i]=(1-revers/100)*ex2[i];
} else {
if (Low[i]<ex2[i]) {
ex2[i]=Low[i];
newex[i]=1;
}
}
} else {
if (Low[i]<Llimit[i]) {
Lasttype[i]=3-Lasttype[i-1];
ex1[i]=ex2[i];
ex2[i]=Low[i];
Hlimit[i]=(1+revers/100)*ex2[i];
} else {
if (High[i]>ex2[i]) {
ex2[i]=High[i];
newex[i]=1;
}
}
}
}
Hch=Ref(Max(ex1,ex2),-1); // верхняя граница канала
Lch=Ref(Min(ex1,ex2),-1); // нижняя граница канала
Здесь ключевым параметром построения канала является параметр revers, который задает величину движения от предыдущего экстремума, которая будет считаться достаточно сильной чтобы считаться новым экстремумом.
В общем то, принцип здесь тот же что используется в индикаторе ZigZag или при построении графиков крестиков-ноликов.
Достоинство такого канала - границы точно приходятся на экстремумы.
Недостаток - если тренд движется достаточно плавно, а реверс достаточно большой, ширина канала может увеличиться значительно. Собственно, реверс задает ограничение на минимальную ширину канала. Он не может стать меньше реверса. А вот больше - пожалуйста.