Сравнение скользящих средних.
В литературе посвященной техническому анализу рынков обычно приводится некоторое количество различных скользящих средних, при этом говорят о достоинствах и недостатках тех или иных методов усреднения. Иногда сообщаются различные параметры этих фильтров, но далеко не всем понятны эти заумные цифры. DIMITRIS TSOKAKIS в
группе пользователей AmiBroker на Yahoo предложил для сравнения средних использовать искусственную линию с резкими скачками.
Вот код этой линии.
per=Param("Period", 20, 5, 50, 1 );
L1=LastValue(Cum(1));
C1=IIf(Cum(1)>L1-2*per ANDCum(1)<=L1-per,110,IIf(Cum(1)<=L1-2*PER,100,105));
Plot(C1,"TEST",1,8);
Основываясь на этой идее написал код для сравнения 13 различных методов усреднения
- Адаптивный мувинг Кауфмана
- DEMA – двойное экспоненциальное сглаживание
- EMA - Экспоненциальный мувинг
- Linear Regression - Линейная регрессия
- SMA - простой мувинг
- Percentile
- TEMA - тройное экспоненциальное сглаживание
- TSF – прогноз временного ряда
- T3
- ViDYA(CMO)
- ViDYA(StDev)
- Wilders - Усреднение Уайлдера
- WMA - Взвешенная скользящая средняя
С возможностью скрывать ненужные и выбирать цвета используя параметры
per=Param("Period",
20, 5, 50, 1);
L1=LastValue(Cum(1));
C1=IIf(Cum(1)>L1-2*per AND Cum(1)<=L1-per,110,IIf(Cum(1)<=L1-2*PER,100,105));
Plot(C1,"TEST",1,8);
m10 = ParamToggle("AMA Kaufman", "Hide|Show");
C10 = ParamColor( "AMA_Kaufman Color" , colorCycle );
if (m10)
{
P = C1;
fast = 2/(2+1);
slow =
2/(30+1 );
dir=abs(p-Ref(p,-Per));
vol=Sum(abs(p-Ref(p,-1)),Per);
ER=dir/vol;
sc =(
ER*(fast-slow)+slow)^2;
Plot( AMA(P, SC), "\n AMA_Kaufman", C10, ParamStyle("Style" ));
}
m11 = ParamToggle("DEMA", "Hide|Show" );
C11 = ParamColor( "DEMA Color", colorCycle );
if (m11)
{
P = C1;
Plot( DEMA( P,
per ), "\n DEMA", C11,
ParamStyle("Style" ) );
}
m12 = ParamToggle("EMA", "Hide|Show" );
C12 = ParamColor( "EMA Color", colorCycle);
if (m12)
{
P = C1;
Plot( EMA( P,
per ), "\n EMA",
ParamColor( "EMA Color", colorCycle), ParamStyle("Style" ) );
}
m13 = ParamToggle("Linear Regression", "Hide|Show" );
C13 = ParamColor( "LinearReg Color", colorCycle );
if (m13)
{
P = C1;
Plot( LinearReg(
P, Per ), "\n LinearReg",
C13, ParamStyle("Style") );
}
m14 = ParamToggle("SMA", "Hide|Show" );
C14 = ParamColor( "SMA Color", colorCycle);
if (m14)
{
P = C1;
Plot( MA( P,
Per), "\n SMA", C14,
ParamStyle("Style" ) );
}
m15 = ParamToggle("Percentile", "Hide|Show" );
C15 = ParamColor( "Percentile Color", colorCycle);
if (m15)
{
P = C1;
Rank = 50;
Plot( Percentile(p, Per, rank), "\n Percentile", C15, ParamStyle("Style" ));
}
m16 = ParamToggle("TEMA", "Hide|Show" );
C16 = ParamColor( "TEMA Color", colorCycle);
if (m16)
{
P = C1;
Plot( TEMA( P,
Per),"\n TEMA", C16,
ParamStyle("Style" ) );
}
m17 = ParamToggle("TSF", "Hide|Show" );
C17 = ParamColor( "TSF Color", colorCycle);
if (m17)
{
P = C1;
Plot( TSF( P,
Per), "\n TSF", C17,
ParamStyle("Style" ) );
}
m18 = ParamToggle("T3", "Hide|Show" );
C18 = ParamColor( "T3 Color", colorCycle);
if (m18)
{
P = C1;
a
= 0.7 ;
e1=EMA (P,Per);
e2=EMA (e1,Per);
e3=EMA (e2,Per);
e4=EMA (e3,Per);
e5=EMA (e4,Per);
e6=EMA (e5,Per);
T3 = -a^3 * e6 + (3 * a^2 +3 * a^3) * e5 + (-6 * a^2 - 3 * a - 3 * a^3) * e4 + (1 + 3 * a + a^3 + 3 * a^2 ) *
e3;
Plot( T3, "\n T3", C18, ParamStyle("Style"));
}
m19 = ParamToggle("ViDYA(CMO)", "Hide|Show" );
C19 = ParamColor( "ViDYA(CMO) Color", colorCycle);
if (m19)
{
P = C1;
cmopds = per;
n = per;
f = 2/(n+1);
Up =
Sum(IIf(P > Ref(P, -1), (P - Ref(P ,-1)), 0 ),
cmopds);
Dw = Sum(IIf(P <
Ref(P, -1), (Ref(P, -1) - P), 0 ),
cmopds);
CMO = abs ((Up
- Dw)/(Up + Dw));
sc = f*CMO;
Plot( AMA(P,
sc), "\n ViDYA(CMO)", C19,
ParamStyle("Style" ));
}
m20 = ParamToggle("ViDYA(StDev)", "Hide|Show" );
C20 = ParamColor( "ViDYA(StDev)
Color" , colorCycle);
if(m20)
{
P = C1;
n = per;
f = 2/(n+1 );
K = StDev(P, per)/StDev(P, 2*Per);
sc = f*K;
Plot( AMA(P,
sc), "\n ViDYA(StDev)",
C20, ParamStyle("Style"));
}
m21 = ParamToggle("Wilders", "Hide|Show" );
C21 = ParamColor( "Wilders Color", colorCycle);
if (m21)
{
P = C1;
Plot( Wilders(
P, Per ), "\n Wilders",
C21, ParamStyle("Style") );
}
m22 = ParamToggle("WMA", "Hide|Show" );
C22 = ParamColor( "WMA Color", colorCycle);
if (m22)
{
P = C1;
Plot( WMA( P,
Per ), "\n WMA", C22,
ParamStyle("Style") );
}