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++; } }
Ho implementato il calcolo della regressione (non solo lineare) senza cicli. Più precisamente, un ciclo è necessario solo una volta durante l'inizializzazione.
Di conseguenza, la velocità di calcolo è mille volte più veloce.
E il codice è più corto.
Ma mi dispiace, non posterò il codice. È un segreto.
Sto solo dicendo che è reale.
Ci sono due articoli che vi aiuteranno

- www.mql5.com
Ho implementato il calcolo della regressione (non solo lineare) senza cicli. Per essere più precisi, il ciclo è necessario solo una volta all'inizializzazione.
Di conseguenza, la velocità di calcolo è mille volte più veloce.
E il codice è più corto.
Ma mi dispiace, non posterò il codice. È un segreto.
Sto solo dicendo che è reale.
Il codice è molto semplice. Aggiungiamo i quadrati attuali, sottraiamo i quadrati fuori dall'intervallo. Questo è tutto. Questo è tutto il segreto).
Può essere ancora più interessante, ma seguendo principi diversi.
Il codice è molto semplice. Aggiungiamo i quadrati attuali, sottraiamo i quadrati fuori dall'intervallo. Questo è tutto. Questo è il segreto).
Questo è divertente ))
Per renderlo ancora più divertente, si potrebbe raccontare non del canale, ma di come fare una linea di regressione polinomiale senza cicli. Ma sicuramente non lo farò. Non ne hai bisogno.
Ho implementato il calcolo della regressione (non solo lineare) senza cicli. Più precisamente il ciclo è necessario solo una volta all'inizializzazione.
Di conseguenza, la velocità di calcolo è migliaia di volte più veloce.
E il codice è più corto.
Ma mi dispiace, non posterò il codice. È un segreto.
Sto solo dicendo che è reale.
Migliaia di volte più veloce, e senza un ciclo di valori di input?
Non ci credo!!!
Come minimo, un ciclo di parametri di input è obbligatorio!
Ho implementato il calcolo della regressione (non solo lineare) senza cicli. Più precisamente, il ciclo è necessario solo una volta all'inizializzazione.
Di conseguenza, la velocità di calcolo è mille volte più veloce.
E il codice è più corto.
Ma mi dispiace, non posterò il codice. È un segreto.
Sto solo dicendo che è reale.
E anche senza un ciclo di somma x*y? E se x e y non sono linee rette?
Migliaia di volte più veloce, e senza un ciclo di valori di input?
Non ci credo!!!
Almeno un ciclo sui parametri di ingresso è obbligatorio!
E anche senza un ciclo di somma x*y ? E se x e y non sono linee rette?
Non crederci per tutto il suo valore.
Rashid ha fatto cadere gli articoli. Leggeteli attentamente. Lì c'è un link ad un altro articolo:
https://www.mql5.com/ru/articles/270
Se vi scervellate a livello di matematica di 7°-8° grado, potete ottenere la deviazione standard per ottenere il canale, non solo la media scorrevole, in un modo simile senza un ciclo. Ho implementato questo per un polinomio di qualsiasi grado, non solo il primo grado (regressione lineare). Lo si può sentire nella versione demo sul mercato.
HH ho scritto che il ciclo è necessario una volta all'inizializzazione.
Migliaia di volte più veloce - questo include il calcolo della deviazione standard (cioè la larghezza del canale)
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Ho un indicatore di regressione lineare.
Come costruire il suo calcolo nell'EA e ottenere dati su 0 bar o su 1.
Ho cercato di fare così:
Ma non dà qualcosa...