Скачать MetaTrader 5

Канал линейной регрессии

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114297
Forex Trader  
Расскажите пожалуйста как и можно ли использовать канал линейной регрессии в написании советника.
Forex Trader
114297
Forex Trader  
Предполагаю, что можно. Эксперт устанавливает графический объект OBJ_REGRESSION куда надо, затем из его свойств берет значение ошибки OBJPROP_DEVIATION. Однако сам не пробовал, гарантии не даю. И еще интересно, будет ли это работать в тестере.
Forex Trader
114297
Forex Trader  
Сам объект устанавливать может и не придется, достаточно будет математики.
Forex Trader
114297
Forex Trader  
Сам объект устанавливать может и не придется, достаточно будет математики.

А не подскажете где об этой математике прочитать.Хотелось бы увидеть формулы по которым вычисляется канал.
Forex Trader
114297
Forex Trader  
На этом форуме уже несколько раз обсуждалось.
Forex Trader
114297
Forex Trader  
На этом форуме уже несколько раз обсуждалось.

Да действительно поискал- нашел много интересного
А нет ли советника в котором используется лин. регресия?
Forex Trader
114297
Forex Trader  
А нет ли советника в котором используется лин. регресия?

Вот на этом сайте описана целая стратегия, схожая с работой по линейной регрессии.
http://fxovereasy.50webs.com/TheSystem.html
А здесь выложены необходимые индикаторы к стратегии
http://fxovereasy.50webs.com/Indicators.html
Попробуй автоматизировать в эксперте индикатор Shi Channels.
Наверное какой-то положительный результат может и получится?
Forex Trader
114297
Forex Trader  
Вот нашел индикатор лин. регрессии
Каким образом затащить координату луча например нижней линии в советник?


//+------------------------------------------------------------------+
//|                                                      i_FD_LR.mq4 |
//|                                                          RealJin |
//|                                              much-love@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "RealJin"
#property link      "much-love@yandex.ru"

extern int LR_Period=14;
extern bool Line_Ray=false;

#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
  
  int m_pos[2];
  m_pos[0]=0;
  m_pos[1]=LR_Period; 
  double m_value[2];  
   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(int 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;

//---- maximal deviation
   double maxdev=0;
   double deviation=0;
   double dvalue=a;
   for(i=0; i<n; i++)
     {
      value=Close[m_pos[0]+i];
      dvalue+=b;
      deviation=MathAbs(value-dvalue);
      if(maxdev<=deviation) maxdev=deviation;
     }
//----lines
   if(ObjectFind("i_LR_C_Line")!=0){
      ObjectCreate("i_LR_C_Line",OBJ_TREND,0,Time[m_pos[1]],m_value[1],Time[m_pos[0]],m_value[0]);
   }
   ObjectSet("i_LR_C_Line",OBJPROP_TIME1,Time[m_pos[1]]);
   ObjectSet("i_LR_C_Line",OBJPROP_PRICE1,m_value[1]);      
   ObjectSet("i_LR_C_Line",OBJPROP_TIME2,Time[m_pos[0]]);
   ObjectSet("i_LR_C_Line",OBJPROP_PRICE2,m_value[0]); 
   ObjectSet("i_LR_C_Line",OBJPROP_RAY,Line_Ray);
   
   if(ObjectFind("i_LR_U_Line")!=0){
      ObjectCreate("i_LR_U_Line",OBJ_TREND,0,Time[m_pos[1]],m_value[1]+maxdev,Time[m_pos[0]],m_value[0]+maxdev);
   }
   ObjectSet("i_LR_U_Line",OBJPROP_TIME1,Time[m_pos[1]]);
   ObjectSet("i_LR_U_Line",OBJPROP_PRICE1,m_value[1]+maxdev);      
   ObjectSet("i_LR_U_Line",OBJPROP_TIME2,Time[m_pos[0]]);
   ObjectSet("i_LR_U_Line",OBJPROP_PRICE2,m_value[0]+maxdev); 
   ObjectSet("i_LR_U_Line",OBJPROP_RAY,Line_Ray);   
   
   if(ObjectFind("i_LR_L_Line")!=0){
      ObjectCreate("i_LR_L_Line",OBJ_TREND,0,Time[m_pos[1]],m_value[1]-maxdev,Time[m_pos[0]],m_value[0]-maxdev);
   }
   ObjectSet("i_LR_L_Line",OBJPROP_TIME1,Time[m_pos[1]]);
   ObjectSet("i_LR_L_Line",OBJPROP_PRICE1,m_value[1]-maxdev);      
   ObjectSet("i_LR_L_Line",OBJPROP_TIME2,Time[m_pos[0]]);
   ObjectSet("i_LR_L_Line",OBJPROP_PRICE2,m_value[0]-maxdev); 
   ObjectSet("i_LR_L_Line",OBJPROP_RAY,Line_Ray);    
   
   return(0);
  }
//+------------------------------------------------------------------+
Forex Trader
114297
Forex Trader  
Из этого индикатора никак, т.к. он не использует буферов. Но зато этот код можно почти полностью перенести в советник.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий