Полученное значение добавляется к младшей 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];
}
}
