![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Yura, voglio contare l'RMS più velocemente della funzione standard. E se funzionasse? Per una singola chiamata dovrebbe essere più veloce di qualsiasi codice scritto nel linguaggio, ma per la massa (calcolo dell'intero grafico) è possibile risparmiare sui costi.
Se parliamo di sco per la regressione lineare, si calcola analiticamente in un passo con la formula
SKO^2=D[Y] - D[X]*A^2,
dove D[Y]=M[Y^2]-M[Y]^2, D[X]=M[X^2]-M[X]^2, e A è il coefficiente di regressione lineare Y=A*X+B
Quindi la ricorrenza non è necessaria in questo caso.
PS E le somme incrociate sono azzerate in modo esplicito e puramente analitico. La dimensione del campione non c'entra niente.
Ancora un errore 2008.02.15 17:07:22 2007.01.11 12:15 OTF_1 EURUSD,M1: argomento negativo per la funzione MathSqrt
Ecco perché l'unica cosa che mi viene in mente, per sicurezza, è di eseguire lambda=0,0;
e/o MathSqrt(MathAbs(lambda*lambda*lambda*lambda)) per liberarsi di questo errore per sempre.
//---- ciclo principale
doppio alfa, lambda=0.0 ;
//********************************************************************************************
per (i = limite; i >= 0; i--)
{
Price[i]=(High[i]+Low[i])/2.0;
}
per (i = limite; i >= 0; i--)
{
Value1[i]=SC*(Price[i]-Price[i+1])+4*SC*Value1[i+1];
Value2[i]=SC*(High[i]-Low[i])+4*SC*Value2[i+1];
}
per (i = limite; i >= 0; i--)
{
if(Value2[i]< Point)Value2[i]= Point;else lambda=MathAbs(Value1[i]/Value2[i]);
alpha=(-lambda*lambda+ MathSqrt(lambda*lambda*lambda) )/8.0;
Value3[i]=alpha*Price[i]+(1.0-alpha)*Value3[i+1];
}
//********************************************************************************************
P.S. In generale non ha senso. Questo errore deve spuntare nel vostro tester.
P.P.S. Molto probabilmente, la variabile double lambda; è stata inizializzata di default con una spazzatura negativa molto piccola. Allora la doppia espressione lambda=0.0; dovrebbe aiutare.
Slava ci insegna - mai lavorare per difetto, e non impariamo!
Ancora un errore 2008.02.15 17:07:22 2007.01.11 12:15 OTF_1 EURUSD,M1: argomento negativo per la funzione MathSqrt
P.S. È pazzesco. È probabile che questo errore appaia nel vostro tester?
P.P.S. Molto probabilmente, la variabile double lambda; è stata inizializzata di default con una spazzatura negativa molto piccola. Allora la doppia espressione lambda=0.0; dovrebbe aiutare.
Slava ci insegna - mai lavorare per difetto, e non impariamo!
I botniks locali cercano sempre di inventare qualche bicicletta.
Non preoccupatevi per niente. Tra gli indici personalizzati c'è Bands.mq4 - c'è un algoritmo di calcolo RMS
SKO^2=D[Y] - D[X]*A^2,
dove D[Y]=M[Y^2]-M[Y]^2, D[X]=M[X^2]-M[X]^2, e A è il coefficiente di regressione lineare Y=A*X+B
Quindi la ricorrenza non è necessaria in questo caso.
E cosa vuol dire che la ricorrenza non è necessaria, come si calcolano le somme? O avete un'idea di come fare senza sostituire l'aspettativa con la media?
P.S. A proposito, le somme incrociate non partono da sole. Almeno io non l'ho fatto. Cerca di lavorare non con la varianza ma con l'espressione "reale".
Quindi per la regressione lineare è
Di conseguenza, per una regressione lineare sarebbe
SKO^2=D[Y] - D[X]*A^2,
dove D[Y]=M[Y^2]-M[Y]^2, D[X]=M[X^2]-M[X]^2, e A è il coefficiente di regressione lineare Y=A*X+B
Quindi la ricorrenza non è necessaria in questo caso.
E cosa vuol dire che la ricorrenza non è necessaria, come si calcolano le somme? O hai un'idea di come evitare la sostituzione dei payoff attesi con una media?
P.S. A proposito, le somme incrociate non partono da sole. Almeno io non l'ho fatto. Cercate di lavorare non con la varianza ma con l'espressione "reale".
Molto desideroso di sapere cosa potrebbe essere extra in queste formule? :-)
MO, ovviamente, è sostituito dalla media e le somme devono essere calcolate. Tuttavia, la recidiva o anche un ciclo non sono necessari. La seguente formula è sufficiente
S(X)[i+1]=S(X)[i] - X[i-N+1] + X[i+1] dove S(X)[i]=Somma(X[k]; k=i-N+1, i-N+2, ...,i-1,i )
Beh, forse intende questa espressione quando parla di ricorrenza? Allora, naturalmente, hai ragione.
Per quanto riguarda "l'espressione reale", da dove pensi che vengano tutte queste formule? Bene, se si sostituisce in questa "espressione reale" le formule finite derivate dal MNC per A e B, si ottiene solo l'espressione di cui sopra per RMS. Posso darvi i calcoli analitici corrispondenti.
Posso darvi i relativi calcoli analitici.
Se non è troppo difficile elaborare da qui. Con i nuovi dati i coefficienti A e B possono cambiare, penso, anche se potrei sbagliarmi :-). Per LR sembra essere risolto, ma per la regressione parabolica come?
Questo è per definizione. Se LR non è troppo corto, si può calcolare RMS più accuratamente, senza alcun ciclo extra. C'è un codice per il calcolo dell'RMS nel sorgente MovingLR.mq4, ma è commentato e l'RMS è chiamato rmsY.