Полученное значение добавляется к младшей EMA.
Итоговое значение получаем сглаживая EMMA взвешенной средней с периодом √P
Типовые параметры:
Автор рассматривает значение P = 16, половина которого равна 8, а корень – 4.
Сигналы:
Так как данная средняя имеет малое запаздывание и часто втягивается в саму цену, то наиболее рациональным сигналом является изменение ее направления.
Пример:
Исходный текст:
Код: Выделить всё
function Initialize()
{
IndicatorName = "EHMA";
AddInput("Input", Inputs.Price);
AddSeries("EHMA", DrawAs.Custom, Color.LightGreen);
PriceStudy = true;
AddParameter("P", 16, 2);
AddGlobalVariable("EMA1", Types.Double, 0.0);
AddGlobalVariable("EMA2", Types.Double, 0.0);
}
function Evaluate()
{
// AlfaDirect. 2015. OX
// EHMA (Exponential Hull Moving Average) - эксп. скользящая средняя Халла.
if (CurrentIndex > 0)
{
var SC1 = 2.0 / (0.5*P + 1.0);
var SC2 = 2.0 / (P + 1.0);
var SC3 = 2.0 / (Math.Sqrt(P) + 1.0);
EMA1 = (1.0 - SC1)*EMA1 + SC1*Input[0];
EMA2 = (1.0 - SC2)*EMA2 + SC2*Input[0];
EHMA = (1.0 - SC3)*EHMA[-1] + SC3*(2.0*EMA1 - EMA2);
if ( EHMA > EHMA[-1] )
EHMA.DrawLine(Color.Cyan, Line.Solid, 1);
else
EHMA.DrawLine(Color.Yellow, Line.Solid, 1);
}
else
{
EMA1 = Input[0];
EMA2 = Input[0];
EHMA = Input[0];
}
}