Канал стандартных отклонений: неправильная высота

 

Пытаюсь реализовать канал стандартных отклонений, чтобы его потом изменить, но порой не совпадает высота со стандартным


void CalculateStdDevChannel()
  {

   int N = MathAbs(result.bar2 - result.bar1) + 1;
   if(N < 2)
      return;

   double x[], y[];
   ArrayResize(x, N);
   ArrayResize(y, N);

   for(int i = 0; i < N; i++)
     {
      int index = MathMin(result.bar1, result.bar2) + i;
      x[i] = i;
      y[i] = (iHigh(Symbol(), 0, index) + iLow(Symbol(), 0, index)) / 2.0;
     }

   double sumX = 0, sumY = 0;
   for(int i = 0; i < N; i++)
     {
      sumX += x[i];
      sumY += y[i];
     }

   double meanX = sumX / N;
   double meanY = sumY / N;

   double numerator = 0, denominator = 0;
   for(int i = 0; i < N; i++)
     {
      numerator += (x[i] - meanX) * (y[i] - meanY);
      denominator += (x[i] - meanX) * (x[i] - meanX);
     }

   double slope = numerator / denominator;
   double intercept = meanY - slope * meanX;

// y = slope * x + intercept
   double y_start = slope * 0 + intercept;
   double y_end = slope * (N - 1) + intercept;

// Стандартное отклонение от линии
   double sumSq = 0;
   for(int i = 0; i < N; i++)
     {
      double y_reg = slope * x[i] + intercept;
      sumSq += MathPow(y[i] - y_reg, 2);
     }
   double stddev = MathSqrt(sumSq / N);

   result.price1 = y_start;
   result.price2 = y_end;
   result.std_dev_points = stddev *deviation_multiplier;
  }
 
Стандартный вроде по ценам close считается.
 
Stanislav Korotky #:
Стандартный вроде по ценам close считается.
И по нему отличается