线性回归渠道 - 页 18

 
这里有一个mql4中抛物线和线性回归 的紧凑快速版本,但是在计算sxxy值时如何摆脱一个周期,我还没有想好。
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 clrDeepSkyBlue
#property indicator_color2 clrRed
#property indicator_width1 2
#property indicator_width2 2
#property indicator_type1 DRAW_LINE
#property indicator_type2 DRAW_LINE
//================================
extern int p = 2 4;
//================================
double lr[],qr[];
double lwi,mai,fxi;
double ci,cp,sy,sxy,sxxy,lri,qri;
double a1,a2;
int w,n;
//*************************************************
int init()
{
   SetIndexBuffer(0,qr);
   SetIndexBuffer(1,lr);
   //-----------------------
   if (p<3) p=3;
   
   return(0);
}
//*******************************************************************
int start()
{
   int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1);
   if (cbi==0) return(0); if (cbi==1) cbi=0; 
   if (cbi>1)
   { 
      cbi=Bars-p-1;
     
      sy=0; sxy=0; w=0;  
      for(int j=1; j<=p; j++) 
      {
         ci=Open[cbi+p-j];
         sy+=ci; 
         sxy+=j*ci;
         w+=j; 
      }
      cbi--;
      
      a1=6.0/(p*(p+1)*(2*p+1))*(10-15.0/(p+2)); 
      a2=12-15.0/(p+2);
   }
   //----------------------------------------
   for (int i=cbi; i>=0; i--) 
   {
      sxxy=0;
      for (int j=1; j<=p; j++)
         sxxy+=j*j*Open[i+p-j];
      
      ci=Open[i]; 
      cp=Open[i+p];
      
      sxy+=ci*p-sy;
      sy+=ci-cp;
      
      mai=sy/p;
      lwi=sxy/w;
      
      lri=3*lwi-2*mai;
      
      qri=3*mai+a1*sxxy-lwi*a2;
      
      qr[i]=qri;
      lr[i]=lri;
   }
   //----------------------------------------
   return(0);
}
//*********************************************************



 
Yousufkhodja Sultonov:

该指标的作用

而你现在在哪里寻找幸福,又是天花板上的东西(比如采矿)?
 
ANG3110:
这里是mql4中抛物线和线性回归 的一个紧凑快速的版本,但是我仍然没有弄清楚如何在计算sxxy值时摆脱一个周期。

这有什么意义呢?

试着在其他地方应用这段代码来计算回归,比如说,如果你有一个数组的值--你必须深入了解代码的工作原理。而为什么,如果反其道而行之更合理,代码可能没有那么高效,但却很容易修改。

就个人而言,我的回归类有三个虚拟函数--获取点的数量和它们的坐标,应用回归--你应该声明一个类,将这些函数重载为所需的函数--并立即得到从零到三度的任何程度的回归多项式的系数。此外,还有两个可选的函数--用于获得权重和 "极点"(即多项式必须经过的点),但这些函数可以省略,权重将被等效为1,多项式的计算将没有极点。它可能没有那么高效(既牺牲了内部循环,也牺牲了虚拟函数),但它非常灵活,而且没有必要去琢磨它。

 
Georgiy Merts:

这有什么意义呢?

试着在其他地方应用这段代码来计算回归,比如说,如果你有一个数组的值--你将不得不深入到代码的工作原理中。还有,为什么在更合理的情况下,要反其道而行之,让代码不是那么有效,而是容易修改。

就个人而言,我的回归类有三个虚拟函数--获得点的数量和它们的坐标,应用回归--你必须声明一个类,这些函数必须被重载--我们立即得到从零到三度的任何程度的回归多项式的系数。此外,还有两个可选的函数--用于获得权重和 "极点"(即多项式必须经过的点),但这些函数可以省略,权重将被等效为1,多项式的计算将没有极点。它可能没有那么高效(既牺牲了内部循环,也牺牲了虚拟函数),但它非常灵活,而且没有必要去琢磨它。

这些快速变体,用于特定的目的,正是那些需要速度的地方,当测试和回归结束的位置。如果你需要系数和不同程度的多项式,那么我应用这个变体。这里代码中的系数数组--X[]。也就是说,对于绘制任何深度的曲线都有详尽的信息。如果我们谈论的是一件事的权宜之计,那可能取决于谁需要它。我不在交易中使用它,到目前为止只用于特定的研究目的。
#property strict
//********************************************************************
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 clrMediumSlateBlue
#property indicator_width1 2
#property indicator_type1 DRAW_LINE
//================================
extern int p = 120;
extern int m = 2;
//================================
double fx[];
double a[],b[],sx[],x[];
double ci,sum;
int N;
//********************************************************************
int init()
{
   SetIndexBuffer(0,fx);
   //------------------------------------------------
   N=m+1;
  
   if (p<N+2) p=N+2;
  
   ArrayResize(sx,2*N);
   ArrayResize(a,N*N);
   ArrayResize(b,N);
   ArrayResize(x,N);
  
   return(0);
}
//********************************************************************
int start()
{
   int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1);
   if (cbi==0) return(0);
  
   //--------sx-------
   sx[0]=p;
   for(int n=1; n<N*2; n++)
   {
      sum=0;
      for(int j=0; j<p; j++)
         sum+=MathPow(j,n);
      sx[n]=sum;
   } 
   //-------syx--------
   for(int n=0; n<N; n++)
   {
      sum=0;
      for(int j=0; j<p; j++)
      {
         ci=Open[j];
         if (n==0) sum+=ci; else
         sum+=ci*MathPow(j,n);
      }
      b[n]=sum;
   }
   //------Matrix------
   for(int j=0; j<N; j++)
   for(int n=0; n<N; n++)
      a[n+j*N]=sx[n+j];
   //------Gauss-------
   af_Gauss(N,a,b,x);
   //------------------
   for (int j=0; j<p; j++)
   {
      sum=x[0];
      for(int n=1; n<N; n++)
         sum+=x[n]*MathPow(j,n);
        
      fx[j]=sum;
   }
  
   SetIndexDrawBegin(0,Bars-p);
  
   return(0);
}
//***************************************************************
void af_Gauss(int M, double& A[],double& B[], double& X[])
{
   double r,s;
   for(int k=0; k<M-1; k++)
   for(int i=k+1; i<M; i++)
   {
      r=0; if (A[k+k*M]!=0) r=A[k+i*M]/A[k+k*M];
      for(int j=k; j<M; j++)
         A[j+i*M]-=A[j+k*M]*r;
      B[i]-= B[k]*r;
   }
   if (A[M-1+(M-1)*M]!=0) X[M-1]=B[M-1]/A[M-1+(M-1)*M]; else X[M-1]=0;

   for(int i=M-2; i>=0; i--)
   {
      s=0;
      for(int j=i+1; j<M; j++)
         s+=A[j+i*M]*X[j];
      if (A[i+i*M]!=0) X[i]=(B[i]-s)/A[i+i*M]; else X[i]=0;
   }
}
//***************************************************************
 
我准备驳斥根深蒂固的观点,即任何程度的多项式都是幸运和不可替代的。在参与者的真实例子中,我将证明,多项式在URM回归的几乎所有指标上都输了(上面给出了链接),所以要永远忘记多项式的不可逆性。
 
Yousufkhodja Sultonov:
我准备驳斥那种根深蒂固的观点,即任何程度的多项式都是至关重要和不可替代的。在参与者的真实例子上,我将证明多项式在URM回归的几乎所有指标上都输了(上面我给了一个链接),以永远忘记多项式的不沉性。

不需要,你早就证明了这一点,我们相信它。

 
TheXpert:

换取什么?我不在乎他,只要他不开始在技术线程中跑来跑去,特别是关于专业人员的线程,胡说八道,戏弄会员,提到 "俱乐部 "和其他胡言乱语。

只是在这个主题中,他的捣乱行为被漂亮地转化为自我封杀,我对此表示感谢。

你怎么能越过这样的东西呢?这里是俱乐部里的另一个人--11页的废话,互相拉屎,但没有人有足够的胆量写一个正常的测试--来检查和论证他们的立场。而最好是直接联合起来,至少为自己想出办法。这就是所谓的超级技术专家的专业...我可以想象他们在自己的优点上写了什么。

这里还有一个俱乐部--拥有新概念的OOP受害者俱乐部--事实证明,如果不使用继承,就不再是OOP了,所以有了这个垃圾。他们也缺乏勇气去写一个测试,检查什么时候更快--什么时候是多态性,什么时候是捎带等等......所有这些面孔我们在C++的受害者俱乐部中都知道。

 
Vladimir Baskakov:
而你现在在哪里寻找幸福,又是天花板上的东西(如采矿)?

任何地方都没有 "幸福 "的食谱,寻找它是没有用的。我对已经取得的成绩感到满意。我为自己成功开发了SDMhttps://www.mql5.com/ru/articles/250 和"市场理论 "https://www.mql5.com/ru/articles/1825 而 感到自豪,但是,它们将在100年或更长时间内被理解。我之前说过,https://www.mql5.com/ru/forum/318795/page17#comment_13020163 指标坚持不懈地等待时机,现在时机已经到来。


Канал линейной регрессии
Канал линейной регрессии
  • 2019.08.29
  • www.mql5.com
Есть индикатор линейной регрессии. Как встроить его расчет в советник и получить данные на 0 баре или на 1...
 
Yousufkhodja Sultonov:

没有任何地方有 "幸福 "的秘方

可怜你的学生,Semko很久以前就证明这种想法是站不住脚的。
 
Dmitry Fedoseev:

如果你能找到一个没有递归的解决方案,那就比有递归的好。

没关系的。