Код: Выделить всё
function Initialize()
{
IndicatorName = "HMA";
AddInput("Input", Inputs.Price);
AddSeries("U", DrawAs.Custom, Color.Green);
AddSeries("D", DrawAs.Custom, Color.Red);
AddSeries("HMA", DrawAs.Custom, Color.Green, false);
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
//
// http://alfadirect4.ru
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] )
{
U = HMA[0]; U[1] = HMA[1];
U.DrawLine();
}
else
{
D = HMA[0]; D[1] = HMA[1];
D.DrawLine();
}
}
else
HMA = Input[0];
}