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++; } }
Ich habe eine Regressionsberechnung (nicht nur linear) ganz ohne Zyklen implementiert. Genauer gesagt, wird ein Zyklus nur einmal während der Initialisierung benötigt.
Das Ergebnis ist eine tausendfach höhere Rechengeschwindigkeit.
Und der Code ist kürzer.
Aber es tut mir leid, ich werde den Code nicht veröffentlichen. Das ist ein Geheimnis.
Ich sage nur, dass es real ist.
Zwei Artikel sind hilfreich

- www.mql5.com
Ich habe die Berechnung der Regression (nicht nur linear) ganz ohne Zyklen implementiert. Um genauer zu sein, wird die Schleife nur einmal bei der Initialisierung benötigt.
Das Ergebnis ist eine tausendfach höhere Rechengeschwindigkeit.
Und der Code ist kürzer.
Aber es tut mir leid, ich werde den Code nicht veröffentlichen. Das ist ein Geheimnis.
Ich sage nur, dass es real ist.
Der Code ist sehr einfach. Wir addieren die aktuellen Quadrate und subtrahieren die Quadrate außerhalb des Intervalls. Das war's. Das ist das ganze Geheimnis.)
Es kann sogar noch interessanter sein, aber nach anderen Prinzipien.
Der Code ist sehr einfach. Wir addieren die aktuellen Quadrate und subtrahieren die Quadrate außerhalb des Intervalls. Das war's. Das ist das Geheimnis.)
lustig ))
Um es noch lustiger zu machen, könnten Sie nicht über den Kanal berichten, sondern darüber, wie man eine polynomiale Regressionslinie ohne Zyklen erstellt. Aber das werde ich definitiv nicht tun. Sie brauchen es nicht.
Ich habe eine Regressionsberechnung (nicht nur linear) ganz ohne Zyklen durchgeführt. Genauer gesagt, wird der Zyklus nur einmal während der Initialisierung benötigt.
Dadurch wird die Berechnungsgeschwindigkeit um das Tausendfache erhöht.
Und der Code ist kürzer.
Aber es tut mir leid, ich werde den Code nicht veröffentlichen. Das ist ein Geheimnis.
Ich sage nur, dass es real ist.
Tausendmal schneller und ohne eine Schleife von Eingabewerten...
Ich kann es nicht glauben!!!
Zumindest eine Schleife der Eingabeparameter ist obligatorisch!
Ich habe eine Regressionsberechnung (nicht nur linear) ganz ohne Zyklen implementiert. Genauer gesagt, wird die Schleife nur einmal bei der Initialisierung benötigt.
Das Ergebnis ist eine tausendfach höhere Rechengeschwindigkeit.
Und der Code ist kürzer.
Aber es tut mir leid, ich werde den Code nicht veröffentlichen. Das ist ein Geheimnis.
Ich sage nur, dass es real ist.
Und auch ohne eine x*y-Summenschleife? Und wenn x und y keine Geraden sind?
Tausendmal schneller und ohne eine Schleife von Eingabewerten...
Ich kann es nicht glauben!!!
Zumindest eine Schleife über die Eingabeparameter ist obligatorisch!
Und auch ohne eine x*y-Summenschleife ? Was ist, wenn x und y keine Geraden sind?
Glauben Sie es nicht für bare Münze.
Rashid ließ die Artikel fallen. Lesen Sie sie sorgfältig. Dort gibt es einen Link zu einem anderen Artikel:
https://www.mql5.com/ru/articles/270
Wenn Sie sich auf dem Niveau der 7. bis 8. Klasse das Hirn zermartern, können Sie die Standardabweichung ermitteln, um den Kanal, nicht nur den gleitenden Durchschnitt, auf ähnliche Weise ohne einen Zyklus zu erhalten. Ich habe dies für ein Polynom beliebigen Grades implementiert, nicht nur für den ersten Grad (lineare Regression). Sie können es in der Demoversion auf dem Marktplatz erleben.
HH Ich habe geschrieben, dass die Schleife einmal bei der Initialisierung benötigt wird.
Tausendmal schneller - auch bei der Berechnung der Standardabweichung (d.h. der Kanalbreite)
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Ich habe einen Indikator für eine lineare Regression.
Wie die Berechnung in EA zu bauen und Daten auf 0 bar oder auf 1 erhalten.
Ich habe versucht, es so zu machen:
Aber es gibt nichts her...