Проблему удалось решить самостоятельно
Вот правильный код:
Вот правильный код:
//maximal deviation ln_maxDev = 0; double deviation; double dvalue = 0; for (i = 0; i < n; i++) { dvalue = a + b * (i - 1); deviation = MathAbs(Close[beginBar + i] - dvalue); if (deviation >= ln_maxDev) ln_maxDev = deviation; }
Обращаюсь с просьбой - помогите написать индикатор линейной регресии
Был у меня в МТ3 вот бюсь и не могу найти ошибку:
Был у меня в МТ3 вот бюсь и не могу найти ошибку:
//+------------------------------------------------------------------+ //| KVNLinearRegression.mq4 | //| Copyright © 2008, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 MediumBlue //---- input parameters extern int nn=21; //---- buffers double LR1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); //SetIndexBuffer(0,ExtMapBuffer1); SetIndexBuffer(0,LR1); //---- return(0); } //+------------------------------------------------------------------+ //| пользовательский индикатор | //+------------------------------------------------------------------+ int start() { int n,n1,n2; double ssm1,ssm2,ssm3,ssm4,a,b,LR; ssm1=0; ssm2=0; ssm3=0; ssm4=0; // for(n=0;n<=Bars;n++) for(n=0;n<=100;n++) { for(n1=1;n1<=nn;n1++) { n2=n+n1-1; ssm1=ssm1+n1*Close[n2]; ssm2=ssm2+n1; ssm3=ssm3+Close[n2]; ssm4=ssm4+n1*n1; } //Индикатор строится по формуле:LR = at+b //где LR - прогнозируемая "средняя" цена закрытия, //t - момент времени,Pt - цены закрытия за n последних периодов. //a = (n*СУММА (t*Pt) - СУММА(t)*CУММА(Pt))/(n*СУММА(t^2) - (СУММА(t))^2) - тангенс угла наклона линии регрессии, //b = 1/n*(СУММА(Pt) - a*СУММА(t)), - смещение по горизонтали} a=(nn*ssm1-ssm2*ssm3)/(nn*ssm4-ssm2*ssm2); b=(1/nn)*(ssm3-a*ssm2); LR=a*nn+b; ssm1=0; ssm2=0; ssm3=0; ssm4=0; LR1[n]=LR; } //---- return(0); } //+------------------------------------------------------------------+
и ещё гиперболическая регрессия(тоже не могу найти ошибку)
//+------------------------------------------------------------------+ //| гиперболическая регрессия.mq4 | //| Copyright © 2008, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" //#property indicator_chart_window #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Red //---- input parameters extern int nn=21; //---- buffers double ExtMapBuffer1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- double barr, as, bs,cs,ds,e, f,k,LR,ExtMapBuffer1[]; int n,n1; // Индикатор Гиперболической Регресии for (barr=0;barr<=100;barr++){ for (n=1;n<=nn;n++){ n1=barr+n-1; as=as+1/n; bs=bs+1/(n*n); cs=cs+Close[n1]; ds=ds+Close[n1]/n; } e=nn*bs-as*as; f=cs*bs-ds*as; k=nn*ds-as*cs; f=f/e; k=k/e; LR = f+k/nn; as=0; bs=0; cs=0; ds=0; ExtMapBuffer1[n]=LR; } //---- return(0); } //+------------------------------------------------------------------+
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Использую найденный здесь код, однако границы с графическим инструментом не совпадают:
Вот здесь "Вопрос к разработчикам по поводу "Канала линейной регрессии"" ANG3110 писал об ошибке расчета границ, но его пример кода тоже не работает.
Используемый код: