Канал Дончиана: остался ли порох в пороховницах

Автор: Ким Оксана, Кондратенко Юрий

 

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

Следующая наша жертва –  трендследящая система пробоя канала. Пробойная система реагирует на выход цены за границы канала, открывая позицию. Существуют различные каналы: полосы Болинджера, каналы линейной регрессии, канал Дончиана и т д. Сегодня речь пойдет о канале Дончиана, созданном отцом следования за трендом Ричардом Дончианом и обнародованном еще в 1970г.

Канал Дончиана – индикатор волатильности, построенный на максимальной и минимальной цене за выбранный период. Какова же его эффективность в условиях сегодняшнего рынка? Были протестированы различные вариации пробойной стратегии.

Сигналом на вход неизменно был пробой канала, то есть превышение максимальной  за N баров цены

Сигналы на выход:

  • 1 стратегия: выход по стопу при пробое минимума 3х последних баров для лонга и максимума для шорта.
  • 2 стратегия: выход по стопу при падении цены ниже нескольких ATR от максимальной цены с момента входа в лонг, и при повышении цены выше нескольких ATR от минимальной цены с момента входа в шорт.
  • 3 стратегия: выход при пробое ценой канала меньшего диапазона.

Для шорта аналогично.

Результаты тестирования и оптимизации были неутешительными и были введены дополнительные фильтры:

  • Если короткая ЕМА(25) выше длинной ЕМА(350) – только лонги. Если же ниже – только шорты.
  • Не входить в позиции до 12.00  (и не есть после 18.00) и закрывать шорты в конце торговой сессии.

Результаты тестирования на RI 30min, 1000 дней, длина канала 55, без комиссии и реинвестирования.

 NetProfit№Trds%WinPfactNetProfit/MaxDDAvgTrdRatio 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;

Описание и ссылки на скачивание стратегий доступны в разделе Бесплатные сигналы и стратегии.