Zero-Lag MACD

Опубликовано в AmiBroker

Известно, что индикатор MACD в классическом варианте имеет довольно большое запаздывание генерируемых им сигналов. Вот две попытки преодолеть этот недостаток.

ZeroLag MACD

p1 = Param("Short period", 12, 3, 50, 1);
p2 = Param("Long period", 26, 5, 100, 1);
p3 = Param("Signal period", 9, 3, 25, 1);

EMAshort = EMA(C, p1);
EMA2 = EMA( EMAshort, p1);
Diff = EMAshort - EMA2;
ZLEMAshort = EMAshort + Diff;

EMAlong = EMA(C, p2);
EMA2 = EMA(EMAlong, p2);
Diff = EMAlong - EMA2;
ZLEMAlong = EMAlong + Diff;

ZLMACD = ZLEMAshort - ZLEMAlong;

EMA1 = EMA(ZLMACD, p3);
EMA2 = EMA(EMA1, p3);
Diff = EMA1 - EMA2;
ZLSignal = EMA1 + Diff;

Plot(ZLMACD, "zero lag MACD", colorGreen);
Plot(ZLSignal, "zero lag Signal", colorRed);
Plot(Diff,"MACD",colorBlue,styleHistogram|styleLeftAxisScale|styleThick);

LaglessMACD

_SECTION_BEGIN("Lagless MACD");
a= TSF(C,3)+TSF(C,5)+TSF(C,8)+TSF(C,13)+TSF(C,17)+TSF (C,26);
b= TSF(C,8)+TSF(C,13)+TSF(C,26)+TSF(C,35)+TSF(C,50)+TSF(C,56);
mova= TSF(a,3);
movb=TSF(b,26);
Param("MA style",styleLine,maskAll);
Plot(mova,"Fast MA",ParamColor("Fast MA Color",colorRed),styleLine);
Plot(movb,"Slow MA",ParamColor("Slow MA Color",colorBlue),styleLine);
diff= a + mova;
diff1= b + movb;
m= diff - diff1;
m1= TSF(m,5)*.5;
m2=IIf(Ref(m1,-1)< m1,Ref(m1,-1),IIf(Ref(m1,-1) > m1,m,0));
HistColour = colorBlue;
HistColour = IIf( m2 > Ref(m2,-1), IIf(m2 >0,27,41),IIf(m2 >0,43,32) );
Plot( m2,StrFormat(_SECTION_NAME()),HistColour, ParamStyle("MACD Style",styleLine|styleHistogram|styleLeftAxisScale|styleThick,maskAll|styleHistogram));
_SECTION_END();

Верхняя панель - график цены. Под ней - стандартный индикатор MACD. Две нижние панели содержат видоизменённые MACD, формулы которых приведены выше. Параметры индикаторов настроены одинаково.

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

 


См. также Zero-Lag Moving Average

Комментарии   

# AlexLan 01.03.2013 17:59
Михаил, спасибо за идею и пример. :-)
Обязательно попробую.
С уважением, Александр.
# admin 01.03.2013 22:00
Nokia: connecting people :roll:
# AlexLan 01.03.2013 22:34
:lol: Это к чему? )))))
# admin 01.03.2013 22:40
Ну хорошо, по другому: ;-)
"Просто мы работаем для вас!"
# AlexLan 01.03.2013 22:53
;-) Так гораздо лучше.))

Недостаточно прав для комментирования