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++; } }
回帰計算(線形だけでなく)を全くサイクルなしで実装しています。より正確には、初期化時に一度だけ必要なサイクルである。
その結果、計算速度が1000倍速くなりました。
そして、コードも短くなりました。
でも、申し訳ありませんが、コードは掲載しません。それは秘密です。
それが現実だと言っているのです。

- www.mql5.com
回帰の計算(線形だけでなく)を全くサイクルなしで実装しました。より正確には、ループは初期化時に一度だけ必要です。
その結果、計算速度が1000倍も速くなったのです。
そして、コードも短くなりました。
でも、申し訳ありませんが、コードは掲載しません。それは秘密です。
それが現実だと言っているのです。
コードはとてもシンプルです。現在の四角を足し、区間から四角を引いていく。それだけです。それが全ての秘訣です)
もっと面白いことができるのに、違う原理でやっている。
コードはとてもシンプルです。現在の四角を足し、区間から四角を引いていく。それだけです。それが秘訣です)
それは面白いですね ))
さらに面白いのは、チャンネルのことではなく、サイクルのない多項回帰線の作り方について伝えることです。でも、絶対にそんなことはしない。必要ないでしょ。
回帰計算(線形だけでなく)を全くサイクルなしで実装しています。より正確には、このサイクルは初期化時に一度だけ必要である。
その結果、計算速度が数千倍も速くなりました。
そして、コードも短くなりました。
でも、申し訳ありませんが、コードは掲載しません。それは秘密です。
それが現実だと言っているのです。
数千倍高速化、入力値のループなし ?
信じられない!!!
最低限、入力パラメータのループは必須です !
回帰計算(線形だけでなく)を全くサイクルなしで実装しています。より正確には、ループは初期化時に一度だけ必要である。
その結果、計算速度が1000倍速くなりました。
そして、コードも短くなりました。
でも、申し訳ありませんが、コードは掲載しません。それは秘密です。
それが現実だと言っているのです。
また、x*yの和算ループがなくても?また、xとyが直線でない場合は?
数千倍高速化、入力値のループなし ?
信じられない!!!
少なくとも、入力パラメータに対するループは必須です !
また、x*yの和算ループがなくても ?xとyが直線でない場合はどうするか?
全力で信じてはいけない。
ラシードが記事を落とした。よく読んでみてください。そこには、別の記事へのリンクがあります。
https://www.mql5.com/ru/articles/270
中学1~8年生レベルの数学で頭を働かせれば、周期がなくても同じようにスライド平均だけでなく、標準偏差でチャンネルを求めることができるのです。1次(線形回帰)だけでなく、任意の次数の多項式に対して実装しています。 マーケットプレイスの体験版で体感してください。
HH 初期化時に一度だけループが必要だと書きました。
数千倍高速化 - これには標準偏差(チャンネル幅)の計算も含まれます。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
線形回帰の 指標を持っています。
EAにその計算を組み込み、0 barまたは1 barでデータを取得する方法。
こんな感じでやってみました。
でも、何かを出すわけでもなく...。