Сигналы
Пересечение индикатора с нулем говорит, что линейная регрессионная модель изменила свой наклон, т. е. движение изменило направление.
Пример:
Исходный текст:
Код: Выделить всё
function Initialize()
{
IndicatorName = "LinRegSlope";
PriceStudy = false;
AddInput("Input", Inputs.Price);
AddSeries("LinRegSlope", DrawAs.Line, Color.Red);
AddParameter("Period", 20);
AddGlobalVariable("ZN", Types.Double, 0.0);
AddGlobalVariable("t2", Types.Double, 0.0);
AddGlobalVariable("t4", Types.Double, 0.0);
AddLevel(0, Color.Gray, "LinRegSlope");
}
function Evaluate()
{
// AlfaDirect. 2014. OX
// LinReg (Linear Regression) - Линейная регрессия
if ( CurrentIndex == 0 )
{
// Расчет неизменных коэффициентов по времени
for (int i = 0; i < Period; i++)
{
t2 = t2 + i;
t4 = t4 + i * i;
}
ZN = ((double)Period * t4 - t2 * t2);
}
if ( CurrentIndex < Period )
LinRegSlope = 0.0;
else
{
// Вариант (t=0...N-1)
double a1 = 0.0;
double a3 = 0.0;
for (int i = 0; i < Period; i++)
{
a1 = a1 + i * Input[-(int)Period + 1 + i];
a3 = a3 + Input[-i];
}
LinRegSlope = (Period * a1 - t2 * a3) / ZN;
}
}