void calcPolynomialRegression(double &PricesArray[],double &RegressionArray[], int power) { ArrayResize(RegressionArray, ArraySize(PricesArray)); ArraySetAsSeries(RegressionArray,ArrayGetAsSeries(PricesArray)); double summ_x_value[21],summ_y_value[11],constant[11],matrix[11][11]; ArrayInitialize(summ_x_value,0); ArrayInitialize(summ_y_value,0); ArrayInitialize(constant,0); ArrayInitialize(matrix,0); double summ=0,summ_x=0,summ_y=0; int pos=ArraySize(PricesArray)-1; summ_x_value[0]=ArraySize(PricesArray); for(int exp_n=1; exp_n<=2*power; exp_n++) { summ_x=0; summ_y=0; for(int k=1; k<=ArraySize(PricesArray); k++) { summ_x+=MathPow(k,exp_n); if(exp_n==1) summ_y+=PricesArray[pos-k+1]; else if(exp_n<=power+1) summ_y+=PricesArray[pos-k+1]*MathPow(k,exp_n-1); } summ_x_value[exp_n]=summ_x; if(summ_y!=0) summ_y_value[exp_n-1]=summ_y; } for(int row=0; row<=power; row++) for(int col=0; col<=power; col++) matrix[row][col]=summ_x_value[row+col]; int initial_row=1; int initial_col=1; for(int i=1; i<=power; i++) { for(int row=initial_row; row<=power; row++) { summ_y_value[row]=summ_y_value[row]-(matrix[row][i-1]/matrix[i-1][i-1])*summ_y_value[i-1]; for(int col=initial_col; col<=power; col++) matrix[row][col]=matrix[row][col]-(matrix[row][i-1]/matrix[i-1][i-1])*matrix[i-1][col]; } initial_col++; initial_row++; } int j=0; for(int i=power; i>=0; i--) { if(j==0) constant[i]=summ_y_value[i]/matrix[i][i]; else { summ=0; for(int k=j; k>=1; k--) summ+=constant[i+k]*matrix[i][i+k]; constant[i]=(summ_y_value[i]-summ)/matrix[i][i]; } j++; } int k=1; for(int i=ArraySize(PricesArray)-1; i>=0; i--) { summ=0; for(int n=0; n<=power; n++) summ+=constant[n]*MathPow(k,n); RegressionArray[i]=summ; k++; } }
我已经实现了回归计算(不仅仅是线性),完全没有循环。更确切地说,在初始化过程中只需要一次循环。
因此,计算速度快了一千倍。
而且代码更短。
但很抱歉,我不会公布代码。这是个秘密。
我只是说这是真实的。
![Пример разработки спредовой стратегии на фьючерсах Московской биржи Пример разработки спредовой стратегии на фьючерсах Московской биржи](https://c.mql5.com/36/27/primer-razrabotki-spredovoy-strategii.jpg)
- www.mql5.com
我实现了回归的计算(不仅是线性),完全没有循环。更确切地说,这个循环只需要在初始化时使用一次。
因此,计算速度快了一千倍。
而且代码更短。
但很抱歉,我不会公布代码。这是个秘密。
我只是说这是真实的。
代码非常简单。我们将当前的方块相加,减去区间外的方块。就这样了。这就是整个秘密)。
它甚至可以更有趣,但遵循不同的原则。
代码非常简单。我们将当前的方块相加,减去区间外的方块。就这样了。这就是秘密)。
这很有趣 ))
更有趣的是,你可以不讲渠道,而是讲如何做一条没有周期的多项式回归线。但我绝对不会这样做。你不需要它。
我已经实现了回归计算(不仅仅是线性),完全没有循环。更确切地说,这个循环只需要在初始化时进行一次。
因此,计算速度提高了数千倍。
而且代码更短。
但很抱歉,我不会公布代码。这是个秘密。
我只是说这是真实的。
快了几千倍,而且没有输入值的循环?
我不相信!!。
至少,输入参数的循环是必须的 !
我已经实现了回归计算(不仅仅是线性),完全没有循环。更确切地说,这个循环只需要在初始化时进行一次。
因此,计算速度快了一千倍。
而且代码更短。
但很抱歉,我不会公布代码。这是个秘密。
我只是说这是真实的。
而且即使没有x*y求和循环?如果x和y不是直线呢?
快了几千倍,而且没有输入值的循环?
我不相信!!。
至少在输入参数上有一个循环是必须的 !
即使没有x*y的求和循环?如果x和y不是直线呢?
不要相信它的价值。
拉希德放弃了这些文章。仔细阅读它们。那里有另一篇文章的链接。
https://www.mql5.com/ru/articles/270
如果你在7-8年级的数学水平上绞尽脑汁,你可以得到标准差来得到通道,而不仅仅是滑动平均数,以类似的方式没有周期。我已经为任何程度的多项式实现了这一点,而不仅仅是第一程度(线性回归)。 你可以在市场上的演示版本中感受到它。
HH我写道,在初始化时需要循环一次。
速度提高数千倍 - 这包括标准偏差的计算(即通道宽度)。
我有一个线性回归 的指标。
如何在EA中建立其计算,并在0条或1条上获得数据。
我试图这样做。
但它并没有给出一些...