Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Они уже зарабатывают с помощью сервиса Фриланс. Зарабатывай и ты!
. ... Rick D. ... .
1076
. ... Rick D. ... . 2016.01.15 22:38 

Вопрос к разработчикам - а что за хитрая формула используется в OBJ_REGRESSION? :)

Попросили подправить индикатор регрессии, чтобы он точно совпадал с OBJ_REGRESSION.

Счтаю ширину канала регрессии как максимальное отклонение цены закрытия бара от средней линии регрессии. В итоге получаю небольшое расхождение с реальной шириной канала буквально в 1-2 пункта.

PS. Код пока не аттачу, но если надо - добавлю.


Victor Nikolaev
Модератор
14055
Victor Nikolaev 2016.01.16 03:10  
RickD:

Вопрос к разработчикам - а что за хитрая формула используется в OBJ_REGRESSION? :)

Попросили подправить индикатор регрессии, чтобы он точно совпадал с OBJ_REGRESSION.

Счтаю ширину канала регрессии как максимальное отклонение цены закрытия бара от средней линии регрессии. В итоге получаю небольшое расхождение с реальной шириной канала буквально в 1-2 пункта.

PS. Код пока не аттачу, но если надо - добавлю.


Делал когда-то. Проблема была в разном количестве баров для расчета.
Vasyl Nosal
18211
Vasyl Nosal 2016.01.16 20:32  
RickD:

Вопрос к разработчикам - а что за хитрая формула используется в OBJ_REGRESSION? :)

Попросили подправить индикатор регрессии, чтобы он точно совпадал с OBJ_REGRESSION.

Счтаю ширину канала регрессии как максимальное отклонение цены закрытия бара от средней линии регрессии. В итоге получаю небольшое расхождение с реальной шириной канала буквально в 1-2 пункта.

PS. Код пока не аттачу, но если надо - добавлю.


Может нормализированы цены? Или переведены в 4-х знак.
. ... Rick D. ... .
1076
. ... Rick D. ... . 2016.01.19 00:07  

Вообще не понятно - как в канале линейной регрессии у разработчиков считаются границы. На рисунке видно - что границы ни через один Close не проходят.


. ... Rick D. ... .
1076
. ... Rick D. ... . 2016.01.19 00:19  

Еще один вариант. Тут граница вообще улетает за все Close.


Slawa
Модератор
6678
Slawa 2016.01.19 06:26  
https://forum.mql4.com/ru/70824/page10#1028767
. ... Rick D. ... .
1076
. ... Rick D. ... . 2016.01.22 13:59  

После проведения исследований удалось получить формулу для вычисления границ регрессии, совпадающих с графическим инструментом OBJ_REGRESSION:

Для массива close (который по умолчанию таймсерия) :

   int n=m_pos[1]-m_pos[0]+1;
//---- calculate price values
   double value=Close[m_pos[0]];
   double a,b,c;
   double sumy=value;
   double sumx=0.0;
   double sumxy=0.0;
   double sumx2=0.0;
   for(i=1; i<n; i++)
     {
      value=Close[m_pos[0]+i];
      sumy+=value;
      sumxy+=value*i;
      sumx+=i;
      sumx2+=i*i;
     }
   c=sumx2*n-sumx*sumx;
   if(c==0.0) return;
   b=(sumxy*n-sumx*sumy)/c;
   a=(sumy-sumx*b)/n;
   m_value[0]=a;
   m_value[1]=a+b*(n-1);
//---- maximal deviation
   double maxdev=0;
   double deviation=0;
   double dvalue=a-b*2;
   for(i=0; i<n; i++)
     {
      value=Close[m_pos[0]+i];
      dvalue+=b;
      deviation=fabs(value-dvalue);
      if(maxdev<=deviation) maxdev=deviation;
     }
maxdev и будет расстояние от центральной линии регрессии до границы.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий