Канал Дончиана: остался ли порох в пороховницах
Автор: Ким Оксана, Кондратенко Юрий
Мы продолжаем разбираться в классике технического анализа.
Следующая наша жертва – трендследящая система пробоя канала. Пробойная система реагирует на выход цены за границы канала, открывая позицию. Существуют различные каналы: полосы Болинджера, каналы линейной регрессии, канал Дончиана и т д. Сегодня речь пойдет о канале Дончиана, созданном отцом следования за трендом Ричардом Дончианом и обнародованном еще в 1970г.
Канал Дончиана – индикатор волатильности, построенный на максимальной и минимальной цене за выбранный период. Какова же его эффективность в условиях сегодняшнего рынка? Были протестированы различные вариации пробойной стратегии.
Сигналом на вход неизменно был пробой канала, то есть превышение максимальной за N баров цены.
Сигналы на выход:
- 1 стратегия: выход по стопу при пробое минимума 3х последних баров для лонга и максимума для шорта.
- 2 стратегия: выход по стопу при падении цены ниже нескольких ATR от максимальной цены с момента входа в лонг, и при повышении цены выше нескольких ATR от минимальной цены с момента входа в шорт.
- 3 стратегия: выход при пробое ценой канала меньшего диапазона.
Для шорта аналогично.
Результаты тестирования и оптимизации были неутешительными и были введены дополнительные фильтры:
- Если короткая ЕМА(25) выше длинной ЕМА(350) – только лонги. Если же ниже – только шорты.
- Не входить в позиции до 12.00 (и не есть после 18.00) и закрывать шорты в конце торговой сессии.
Результаты тестирования на RI 30min, 1000 дней, длина канала 55, без комиссии и реинвестирования.
NetProfit | №Trds | %Win | Pfact | NetProfit/MaxDD | AvgTrd | Ratio W/L | |
---|---|---|---|---|---|---|---|
Страт 1 | 64 525 | 287 | 43,5 | 1,65 | 4,6 | 224,8 | 2,13 |
Страт 2 | 75 621 | 286 | 42,3 | 1,87 | 7,72 | 264,4 | 2,55 |
Страт 3 | 54 624 | 155 | 47 | 1,39 | 3,4 | 352,4 | 1,56 |
В итоге имеем следующую картину. Фильтров наложено много, результаты конечно немного улучшились, но, профит фактор все еще несомненно печалит. Если же ввести еще один фильтр на подтверждение тренда: 3 растущих фрактала до входа в лонг и 3 падающих фрактала до шорта, то получим вполне сносную систему.
Изменение способа входа в позицию (вход на закрытии после пробоя или вход по цене пробоя), уменьшение числа подтверждающих фракталов и различные вариации длин ЕМА не привели к существенному улучшению показателей прибыльности системы. Видимо, трендовые рынки времен Дончиана остались в далеком прошлом, и в наших реалиях на небольших движениях системы пробоя канала в чистом виде неэффективны.
Код системы:
{
N - length of main Donchian chanel;
N1 - length of ATR(used in Strategy 2 LX and SX);
Strategy -nimber of Strategy (1 ,2 or 3).
K: - number of bars back when you looking for worse price(used in Strategy 1)
- quantity of ATR values (used in Strategy 2 LX and SX)
- multiplier for length of small Donchian chanel. Small length=K*N (used in Strategy 3 LX and SX)
EMA - 1(use EMA),0(dont use it);
L1 and L2 - length of fast and slow EMA respectively;
writen by Oxana Kim,2013
}
inputs: Price(Close),N(20),Strategy(1),K(3),L1(25),L2(350),EMA(0),N1(14);
vars:LastH(0),LastL(0),HH(0),LL(0),HH1(0),LL1(0),j(1);
array: Max[3](0),Min[3](0);
if currentbar<3 then begin
HH=H;
LL=L;
for j=1 to 3 begin
Max[j]=H;
Min[j]=L;
end;
end
else begin
HH=Highest(H,N);
LL=Lowest(L,N);
HH1=Highest(H,N*K);
LL1=Lowest(L,N*K);
if SwingHighbar(1,H,3,100)=3 then begin
Max[3]=Max[2];
Max[2]=Max[1];
Max[1]=SwingHigh(1,H,3,100);
end;
if SwingLowbar(1,L,3,100)=3 then begin
Min[3]=Min[2];
Min[2]=Min[1];
Min[1]=SwingLow(1,L,3,100);
end;
if T>=1200 then begin
{*********************Long entry***}
if EMA=0 and Price>HH[1] and Min[1]>Min[2]and Min[2]>Min[3] then begin
Buy ("LE") at Price STOP;
if Strategy=2 then LastH=H;
end;
if EMA=1 and {XAverage(Price,L1)>XAverage(Price,L2) and} Price>HH[1]and Min[1]>Min[2] and Min[2]>Min[3]then begin
Buy ("LE1")at Price STOP;
if Strategy=2 then LastH=H;
end;
{*********************Short entry***}
if EMA=0 and Price<LL[1]and Max[1]<Max[2] and Max[2]<Max[3] then begin
Sell ("SE") at close{ Price STOP};
if Strategy=2 then LastL=L;
end;
if EMA=1 and XAverage(Price,L1)<XAverage(Price,L2) and Price<LL[1] and Max[1]<Max[2] and Max[2]<Max[3] then begin
Sell ("SE1")at Price STOP;
if Strategy=2 then LastL=L;
end;
{***********************Long exit***}
if Strategy=1 and MarketPosition=1 then
ExitLong ("LX1") at LowestFC(L,K) Stop;
if Strategy=2 and MarketPosition=1 then begin
LastH=IFF(H>LastH,H,LastH);
ExitLong("LX2") at LastH-K*AvgTrueRange(N1) Stop;
end;
if Strategy=3 and MarketPosition=1 and Price<LL1[1]then
ExitLong ("LX3") at Close;
if Strategy=4 and MarketPosition=1 and BarsSinceEntry=K then
ExitLong ("LX4") at Close;
{***********************Short exit***}
if Strategy=1 and MarketPosition=-1 then
ExitShort ("SX1") at HighestFC(H,K) Stop;
if Strategy=2 and MarketPosition=-1 then begin
LastL=IFF(L<LastL,L,LastL);
ExitShort("SX2") at LastL+K*AvgTrueRange(N1) Stop;
end;
if Strategy=3 and MarketPosition=-1 and Price>HH1[1]then
ExitShort ("SX3") at Close;
if Strategy=4 and MarketPosition=-1 and BarsSinceEntry=K then
ExitShort ("SX4") at Close;
{if t>=2350 and marketposition=1 then
ExitLong ("LX") at Close;}
if t>=2350 and marketposition=-1 then
ExitShort ("SX") at Close;
end;
end;
Описание и ссылки на скачивание стратегий доступны в разделе Бесплатные сигналы и стратегии.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии