Полученное значение добавляется к младшей WMA.
Итоговое значение получается сглаживанием MMA взвешенной средней с периодом √P
Типовые параметры:
Автор рассматривает значение P = 16, половина которого равна 8, а корень – 4.
Сигналы:
Так как средняя Халла имеет малое запаздывание и часто втягивается в саму цену, то наиболее рациональным сигналом является изменение ее направления.
Пример:
Исходный текст:
Код: Выделить всё
function Initialize()
{
IndicatorName = "HMA";
AddInput("Input", Inputs.Price);
AddSeries("HMA", DrawAs.Custom, Color.Green);
AddSeries("MMA", DrawAs.Line, Color.Green, false);
PriceStudy = true;
AddParameter("P", 16, 2);
}
function Evaluate()
{
// AlfaDirect. 2015. OX
// HMA (Hull Moving Average) - скользящая средняя Халла.
// http://alanhull.com/hull-moving-average
if ( CurrentIndex > P)
{
double WMA1 = WMA(Input, 0.5*P)[0];
double WMA2 = WMA(Input, P)[0];
MMA = 2.0*WMA1 - WMA2;
double P3 = Math.Truncate(Math.Sqrt(P));
var sum = 0.0;
var sumZ = 0.0;
for (var i = 0; i < P3; i++)
{
sum = sum + MMA[-i]*(P3-i);
sumZ = sumZ + (i+1);
}
HMA = sum/sumZ;
if ( HMA > HMA[-1] )
HMA.DrawLine(Color.LightBlue, Line.Solid, 1);
else
HMA.DrawLine(Color.Orange, Line.Solid, 1);
}
else
HMA = Input[0];
}