Dialogo con l'autore. Alexander Smirnov. - pagina 41

 
lna01:
I coefficienti di linea a e b sono calcolati in queste linee.
A = (SumXY - N3*SumY)*N4;
B = (N1*SumY - SumXY)*N2;
Per illustrazione, allego la versione MovingLR_2 che disegna solo la regressione lineare attuale. Soprattutto perché c'era un errore nel precedente, quando si calcolava N4 :)

MovingLR_2 dà una regressione lineare pura ed è abbastanza facile assicurarsene. In at_LR0 c'è l'imprecisione del passaggio dal periodo in ore al periodo in barre. Se cambiate Close in at_LR0 a (High+Low)/2 e prendete un periodo di 1, e cambiate il periodo in MovingLR_2 a 61 invece di 60 e lo visualizzate sul grafico di un minuto, i risultati saranno gli stessi.


Allora MovingLR_2 è un buon algoritmo, basta modificare il layout del codice e va bene!

In at_LR0 l'offset di una barra è fatto per adattare la regressione lineare dal toolkit standard di MT4. Forse non era necessario farlo...

 
Mathemat:

2 zigan:

Per la regressione lineare, la formula è: LRMA = 3*LWMA - 2*MA

Per la regressione quadratica:

Regressione quadratica MA = 3 * SMA + QWMA * ( 10 - 15/( N + 2 ) ) - LWMA * ( 12 - 15/( N + 2 ) )

Qui N è il periodo delle medie,

QWMA( i; N ) = 6/( N*(N+1)(2*N+1) ) * somma( Close[i] * (N-i)^2; i = 0...N-1 ) (la macchina dei pesi quadrati).

per il cubo: ops, non riesco ancora a tirarlo fuori da Trading Solutions, la mia formula è troppo selvaggia lì.

2 Candido: sei davvero paranoico, non ci avrei mai pensato...


Ho diverse formule.

dove è

 
Hmm, per RMS, è un risultato ancora più gustoso di quello di Yurixx:

RMS^2 = (Somma(Y*Y) - A*Somma(X*Y) - B*Somma(Y))/(N-2)

Come per Yurixx, la semplicità di espressione è dovuta alla scelta dell'origine e della direzione dell'asse X. Se nessuno troverà errori, questa è la fine dell'approccio all'algoritmo. Affinché A calcolato e RMS non spariscano, ho lasciato il disegno della linea LR nell'indicatore e ho aggiunto il canale RMS :)

ANG3110:

un piccolo ritocco al layout del codice, e tutto è OK!

Non credo che userò esattamente questo indicatore, userò un algoritmo.

2 Yurixx:
Sembra che la differenza nei valori RMS per piccoli N non sia dovuta alla correzione RMS, ma alla scelta dell'inizio e della direzione X. Perché quando li cambiate anche la mia formula precedente comincia a dare risultati diversi, ed è accurata senza alcuna riserva.
File:
 
lna01:

2 Yurixx:
Sembra che la differenza nei valori RMS per piccoli N non sia dovuta alla correzione RMS, ma alla scelta dell'inizio e della direzione X. Perché quando li cambiate anche la mia vecchia formula comincia a dare risultati diversi, mentre è precisa senza riserve.

Hai certamente ragione che la scelta corretta del sistema di coordinate è una tecnica potente per semplificare i calcoli e l'aspetto delle formule finali. Non l'ho usato per la regressione lineare, tutto è risultato abbastanza bello. Ma per la regressione parabolica, data una certa scelta di origine, le espressioni finali risultano essere due volte più facili, mentre l'efficacia dell'algoritmo aumenta di un ordine di grandezza. Inoltre, il problema delle limitazioni sulla precisione dei calcoli è completamente eliminato.

Tuttavia, non posso essere d'accordo con lei su un punto. I valori RMS, così come i valori reali di regressione, non possono dipendere dalla scelta dell'origine dell'asse X. Forse non è la formula in sé che comincia a dare risultati diversi, ma il problema stesso della precisione del calcolo diventa evidente. Dato che solo 15 cifre significative di double sono memorizzate (per non parlare di int), un errore si accumula piuttosto rapidamente nel processo dei calcoli. Questo è particolarmente vero quando X e Y hanno diversi ordini di grandezza. Per esempio, X è un numero di barra dell'ordine di centinaia di migliaia, Y è un prezzo dell'ordine di 1 e la variazione di prezzo è dell'ordine di 0,0001.


PS

Volevo capire cosa rende questa formula "gustosa". Ovviamente, è molto più semplice - in una riga. Anche se non capisco perché si divide per (N-2) e non per (N-1). Devo ancora notare che, puntando alla massima accelerazione, si dovrebbe usare una formula diversa. Se fissate la scelta dell'origine X in relazione al valore attuale del prezzo, è più vantaggioso usare formule senza Sum(X*Y). Allora non dovrete calcolare la convoluzione su ogni barra. Ma aggiornare Somma(Y*Y) o Somma(X*X) su ogni barra è un operatore.

 

Se si conosce il valore attuale dei coefficienti A e B in una regressione lineare, si può calcolare l'RMS

ecco le formule

coefficiente A

coefficiente B

 
Prival:

Se si conosce il valore attuale dei coefficienti A e B in una regressione lineare, si può calcolare l'RMS

Con un termine quadratico come il QWMA, è probabilmente possibile. Ma l'algoritmo via dummies è intrinsecamente non ottimale. Un'occasione era quella di usare il codice nativo per i trattini incorporati, ma sembra che sia fallita.
P.S. Mi sono appena ricordato che QWMA è quadratico per X e avrò bisogno di un termine quadratico per Y. Quindi il QWMA non aiuta.
 
Prival:

Se si conosce il valore attuale dei coefficienti A e B in una regressione lineare, si può calcolare l'RMS


Non credo che si possa. La retta di regressione è definita da due costanti, A e B. Con gli stessi A e B, ci può essere qualsiasi diffusione di valori intorno a questa linea retta. Per calcolare l'RMS hai bisogno anche della varianza di X e Y. Probabilmente nemmeno il QWMA sarà sufficiente, poiché non contiene i quadrati di Y e quindi non determina la varianza di Y.
 
Yurixx:
Anche il QWMA probabilmente non sarà sufficiente, perché non quadra Y e quindi non determina la varianza di Y.
Sì, ho solo dimenticato che il QWMA non è affatto Y-squared. Quando mi sono ricordato, ho aggiunto un poscritto.
 
Yurixx:

Su una cosa, però, non posso essere d'accordo con te. I valori RMS, così come i valori di regressione stessi, non possono dipendere dalla scelta del punto di partenza per l'asse X. Forse non è la formula in sé che comincia a produrre risultati diversi, ma proprio questo problema di precisione del calcolo.

Questo è esattamente ciò che intendevo per risultati di calcolo.

Anche se non capisco perché si divide per (N-2) e non per (N-1).

Perché la regressione ha un grado di libertà in più. Yandex può aiutare con i dettagli, ad esempio http://cmacfm.mazoo.net/archives/000936.html
Devo ancora notare che, puntando alla massima accelerazione, avresti dovuto usare una formula diversa. Se fissate la scelta dell'origine X in relazione al valore attuale del prezzo, è più vantaggioso usare formule senza Sum(X*Y). Allora non dovrete calcolare la convoluzione su ogni barra. Ma aggiornare Somma(Y*Y) o Somma(X*X) su ogni barra è un operatore.
Abbiamo già Sum(X*Y) - non si può calcolare né A né B senza di essa. Si calcola in modo ricorrente, in tre operazioni. Guardate più attentamente a_LR0 o MovingLRv3.

P.S. Per Sum(Y*Y) - ho anche tre operazioni, per Sum(X*X) - nessuna.
 
Prival:
Matematica:

Regressione quadratica MA = 3 * SMA + QWMA * ( 10 - 15/( N + 2 ) ) - LWMA * ( 12 - 15/( N + 2 ) )

QWMA( i; N ) = 6/( N*(N+1)(2*N+1) ) * somma( Close[i] * (N-i)^2; i = 0...N-1 ) (il mago dei pesi quadrati).

Ho altre formule.

dove

Esattamente le stesse formule, grazie, Prival. Dammene di simili in relazione ai mash-up.
Motivazione: