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

 
Yurixx:
Privato:

Ma VBAG ha prima postato 1 indicatore, poi l'ha sostituito con un altro (ho visto tutto :-) ), e ha postato il terzo, ma già un esperto. E non riesco ancora a vedere il quadro in movimento, che mi convincerà che il matematico ha ragione. Il militare dalla testa dura è così "stupido" :-) sulla fede cieca non ci vuole :-)


Non so, Sergey, perché hai bisogno di immagini in movimento, ma posso farti un indicatore con 2 linee. Una LRMA, l'altra 3*LWMA-2*MA. Si sovrapporranno completamente, cioè uno di loro non sarà visibile a causa dell'altro. Se si spegne il colore dell'altro, si vede il primo. Se accendi il colore, vedi solo l'altro.

Ti manderei anche una prova di equivalenza, è breve - solo una dozzina di righe. Ma si basa su formule che sono derivate analiticamente per implementare la regressione lineare. Beh, non contare tutto in numeri, e se possibile usare formule finite - meno cicli ci sono, più velocemente si conta. Ma questo è un calcolo piuttosto lungo, non voglio pasticciare in Word.


Grazie. Cercherò di farlo io stesso. Ho bisogno di una distrazione. Ho finalmente finito il filtro Kalman. Ma non sono stato in grado di farlo funzionare sul tester per una settimana. Ho paura se funziona :-(. Sono alla ricerca di errori cercando di preparare meglio i suoi dati e rendere la previsione ancora più accurata. Funziona in Matkadec, ma ho paura di eseguirlo nel tester.

 
VBAG:
Se avete algoritmi più snelli per calcolare i trattini o la regressione, sarebbe molto interessante dare un'occhiata!

Gli algoritmi sono troppo forti per chiamarlo, ma posso darvi un'idea. Il principio è semplice: si vince in velocità, si perde in memoria. Poiché il primo è richiesto di più, carichiamo la memoria.

Per esempio, una semplice SMA. L'algoritmo incorporato deve essere universale e calcolarlo ovunque, indipendentemente dal contesto. E potete usare i risultati dei calcoli precedenti nel vostro programma. Per calcolare il nuovo valore SMA, si deve prendere la somma dei precedenti N valori di prezzo, sottrarre il primo e aggiungere il nuovo valore attuale. Questa somma viene poi divisa per N. Perciò, dovremmo tenere la somma variabile degli N prezzi precedenti e l'array di questi N prezzi e aggiornare la somma e l'array su ogni barra. Come risultato, per calcolare la SMA su ogni barra, abbiamo bisogno di eseguire 3 operatori: aggiornare la somma, aggiornare l'elemento dell'array e calcolare il valore SMA. Non ci sono anelli.

 
Prival:

Ma non sono stato in grado di farlo funzionare sul tester per una settimana. Ho paura che possa funzionare:-( .


Sì, succede anche questo. :-))
 
LeoV ha scritto:
Ecco per esempio JMA e SSA con un periodo di 50. Ma ho il CSSA basato su SSA ma non il ridisegno. Molto veloce. Raccomando questo algoritmo .....

Off-topic, naturalmente, ma ancora interessante - LeoV, potresti mostrarmi una foto dell'indicatore CSSA Cycles dello stesso sviluppatore (sembra molto buono sulle azioni) ? Voglio vedere come appare sulle quotazioni forex.
 
Yurixx:
Un tale metodo ha probabilmente senso, ma solo se i periodi sono brevi e la memoria non è la ragione principale. Un reset farà perdere quello che ci trasciniamo dietro. Ma è fantastico, grazie per la risposta.
 
Prival:

Il filtro Kalman è finalmente finito.

Ho sentito che stai spingendo il tema Kalman. Mi sono perso quella discussione per qualche motivo. Dove posso vederlo?

P.S. Ho allegato un file sull'argomento - forse qualcuno sarà interessato.
 
Sì, se ti definisci un codardo, entri nella scatola. OK, Sergey, ecco una prova (ne ho bisogno comunque, per la mia sicurezza):

Abbiamo campioni di tempo - t = 1, 2, ... N. La numerazione è invertita in MQL4, cioè N è la barra corrente, "zero". Queste letture corrispondono alla clausola Сlose(1), Сlose(2), ... perdere(N). Proviamo a costruire una retta y = A*t+B passante per le chiusure di MNC. Poi calcoliamo A*N + B, cioè LRMA alla barra corrente.

Calcoliamo la somma dei quadrati dell'errore:

Delta^2 = Somma( ( y(i) - Close(i) )^2; i = 1..N ) = Somma( ( A*i + B - Close(i) )^2; i = 1..N )

Differenziamo questa roba per A e B e otteniamo un sistema di equazioni per i quozienti ottimali di A e B:

Somma( ( ( A*i + B - Chiudi(i) ) * i ); i = 1...N ) = 0
Somma ( A*i + B - Close(i) ); i = 1...N ) = 0

Espandendo le somme, otteniamo (ometto gli intervalli di indice per semplificare la notazione)

A*Somma( i^2 ) + B*Somma( i ) = Somma( i*Chiusura(i) )
A*Somma( i ) + B*Somma( 1 ) = Somma( Chiudi(i) )

Prival, ora guardate i lati destri. La somma sul lato destro della prima equazione è quasi LWMA, solo senza il fattore di normalizzazione. Nel secondo, è SMA, anche senza. Ecco le formule esatte per queste scale:

LWMA = 2/(N*(N+1)) * Somma ( i*Close(i) )
SMA = 1/N * Somma ( Close(i) )

Ora ricordate che cosa è la somma dei quadrati dei naturali da 1 a N è uguale (è N*(N+1)*(2*N+1)/6), sostituitela nel nostro sistema e otteniamo:

A * N*(N+1)*(2*N+1)/6 + C * N*(N+1)/2 = LWMA * N*(N+1)/2
A * N*(N+1)/2 + C * N = SMA * N

Semplificare:

A * (2*N+1)/3 + C = LWMA
A * (N+1)/2 + C = SMA

Non ho intenzione di risolvere il sistema, sono troppo pigro (è già chiaro qui). Mi basta moltiplicare la prima equazione per 3, e la seconda per 2, e poi sottrarre la seconda dalla prima:

A * (2*N+1) + 3 * C - A * (N+1) - 2 * C = 3 * LWMA - 2 * SMA

A sinistra, dopo la semplificazione, rimane A*N + B, cioè esattamente la nostra regressione nel punto N.
 
Alexey! Rispetto ancora! Mi sono chiesto da dove viene il "/6" nella mia formula LRMA (o dovrei dire formula Omega)!
 
VBAG:
Questo metodo probabilmente ha senso, ma solo se i periodi sono piccoli e la memoria non è la ragione principale. Quando si riparte, quello che ci trasciniamo dietro andrà perso. Ma grande, grazie per la risposta.


Questo metodo è buono per qualsiasi periodo. Quando si riavvia, tutto, ovviamente, è perso. Tuttavia, all'avvio, possiamo sempre eseguire prima questo algoritmo poco sofisticato attraverso l'intero grafico, creando le informazioni necessarie. Oppure è possibile non eseguirlo su tutto il grafico, ma solo su una parte sufficiente di esso.

Questo metodo ha solo uno svantaggio - invece di un iMA dovete scrivere un certo numero di righe di codice a mano. :-)

 

Alexei, grazie. Mi siedo con una matita. Le derivate di A e B sono così


Ho ricontrollato la risposta, sì, effettivamente A*N+B=3*LWMA-2*SMA

anche se il matematico ha mancato un due nel prendere la derivata.

e ho qualche dubbio che non debbano coincidere nel punto N, ma in (N-1)/2. Bulashev p.156. Sembra. Ecco un'immagine che coincide con il punto N. Quindi sono piuttosto in errore.