Пример:
Исходный текст:
Код: Выделить всё
function Initialize()
{
  IndicatorName = "LinReg";       
  PriceStudy = true;   
  AddInput("Input", Inputs.Price);       
  AddSeries("LinReg", DrawAs.Line, Color.Red);       
  AddParameter("Period", 20);
  AddParameter("Extr", 10);
  AddGlobalVariable("ZN", Types.Double, 0.0);
  AddGlobalVariable("t2", Types.Double, 0.0);
  AddGlobalVariable("t4", Types.Double, 0.0);
}
function Evaluate()
{
// AlfaDirect. 2015. 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 + Extr )
     LinReg = Input[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];
    }
    var alfa = (Period * a1 - t2 * a3) / ZN;
    var beta = (a3 - alfa * t2) / Period; 
    LinReg = alfa * ((double)Period-1.0 + Extr) + beta ;
  }
}
