Расскажите пожалуйста как и можно ли использовать канал линейной регрессии в написании советника.
Предполагаю, что можно. Эксперт устанавливает графический объект OBJ_REGRESSION куда надо, затем из его свойств берет значение ошибки OBJPROP_DEVIATION. Однако сам не пробовал, гарантии не даю. И еще интересно, будет ли это работать в тестере.
Сам объект устанавливать может и не придется, достаточно будет математики.
Сам объект устанавливать может и не придется, достаточно будет математики.
А не подскажете где об этой математике прочитать.Хотелось бы увидеть формулы по которым вычисляется канал.
На этом форуме уже несколько раз обсуждалось.
На этом форуме уже несколько раз обсуждалось.
Да действительно поискал- нашел много интересного
А нет ли советника в котором используется лин. регресия?
А нет ли советника в котором используется лин. регресия?
Вот на этом сайте описана целая стратегия, схожая с работой по линейной регрессии.
http://fxovereasy.50webs.com/TheSystem.html
А здесь выложены необходимые индикаторы к стратегии
http://fxovereasy.50webs.com/Indicators.html
Попробуй автоматизировать в эксперте индикатор Shi Channels.
Наверное какой-то положительный результат может и получится?
Вот нашел индикатор лин. регрессии
Каким образом затащить координату луча например нижней линии в советник?
Каким образом затащить координату луча например нижней линии в советник?
//+------------------------------------------------------------------+ //| 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); } //+------------------------------------------------------------------+
Из этого индикатора никак, т.к. он не использует буферов. Но зато этот код можно почти полностью перенести в советник.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь