Помогите с линией регрессии.

 

Линия регрессии строится на базе канала регрессии, у канала есть начало и конец, так вот линия регрессии строится по конечной точке канала, Нужно построить линию по начальной точке...


Подскажите, что заменить в формуле, для получения данной линии, спасибо.

Файлы:
 
chivin >>:

Линия регрессии строится на базе канала регрессии, у канала есть начало и конец, так вот линия регрессии строится по конечной точке канала, Нужно построить линию по начальной точке...


Подскажите, что заменить в формуле, для получения данной линии, спасибо.

а может по средней построить?

 

этот файо ничего общего не имеет с линией регрессии

 
m_a_sim >>:

этот файо ничего общего не имеет с линией регрессии



  хм... но расчёт последней точки совпадает с конечной точкой канала...  Есть ещё другие коды, может в них можно подкорректировать...

Файлы:
 

Где вы взяли первый код? Просто ужас какой-то.

Ваше счастье выглядит примерно вот так:

//+------------------------------------------------------------------+
//|                                                         SPMA.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
//////////////////////////////////////////////////////////////////////
//
//                                                LinearRegression.mq4
//                                       Copyright © 2008 Antonuk Oleg 
//
//////////////////////////////////////////////////////////////////////

#property indicator_chart_window

#property indicator_buffers 2
#property indicator_width1 1
#property indicator_color1 Gold
#property indicator_width2 1
#property indicator_color2 Red

extern int barsToCount=50;


double bufferB[];
double bufferE[];

//////////////////////////////////////////////////////////////////////
int init()
{

   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,bufferB);
   SetIndexEmptyValue(0,0.0);
   
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,bufferE);
   SetIndexEmptyValue(1,0.0);
   
   return(0);
}

//////////////////////////////////////////////////////////////////////
int deinit()
{  
   return(0);
}

//////////////////////////////////////////////////////////////////////
int start()
{   int    limit;
   int    counted_bars=IndicatorCounted();
   
   //---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;

   double a,b,c,sumy,sumx,sumxy,sumx2;
         
          
for(int j=limit; j>=0; j--)
{        sumy=0.0;
          sumx=0.0;
          sumxy=0.0;
          sumx2=0.0;
   for(int i=0; i<barsToCount; i++)
   {
      sumy+=Close[i+j];
      sumxy+=Close[i+j]*i;
      sumx+=i;
      sumx2+=i*i;
   }
   
   c=sumx2*barsToCount-sumx*sumx;
   
   if(c==0.0)
   {
      Alert("LinearRegression error: can\'t resolve equation");
      return;
   }
      
   b=(sumxy*barsToCount-sumx*sumy)/c;
   a=(sumy-sumx*b)/barsToCount;
   
     bufferB[j]=a;
   bufferE[j]=a+b*barsToCount;
}  

   return(0);
}
Файлы:
 
MVV >>:

Где вы взяли первый код? Просто ужас какой-то.

Ваше счастье выглядит примерно вот так:


Да, это то, что я искал, спасибо! Вот только она(линия)  смещена к текущей цене, как её отправить на своё законное место?

Чта касается первого кода, то я его нашёл где-то на форуме... А за 2 последних кода, отдельное спасибо! вообще не тормозят.

 
chivin писал(а) >>

как её отправить на своё законное место?

bufferE[j+barsToCount]=a+b*barsToCount;

 
chivin >>:


Да, это то, что я искал, спасибо! Вот только она(линия)  смещена к текущей цене, как её отправить на своё законное место?

Чта касается первого кода, то я его нашёл где-то на форуме... А за 2 последних кода, отдельное спасибо! вообще не тормозят.

конечно можно сделать, но разве не видно красная хуже коррелирует с ценой?

 
MVV >>:

bufferE[j+barsToCount]=a+b*barsToCount;


Спасибо! теперь можно приступать к исследованиям...