Risonanza stocastica - pagina 26

 
Prival:

Così il compito ha preso piede. Questo è un bene. Ora cercherò di esprimere il mio pensiero. Se ho scritto qualcosa di sbagliato (o non comprensibile - ditemelo).

grasn

  1. Sì, c'è davvero un effetto di bordo. Ma è proprio questo il punto, è spesso considerato un male (interferire). E se fosse qui che si manifesta la "risonanza stocastica". Supponiamo questa variante - la direzione del movimento dei prezzi coincide con la direzione della curva (risonanza), ma non coincide (nessuna risonanza). Chi l'ha controllato? (Forse è lì che si trova il Graal ). Anche le varie finestre Henning, Hemming, Blackman, ecc. non possono essere scontate. (riducendo questo effetto).
  2. Per quanto riguarda il rumore, noi abbiamo sempre una miscela di segnale+rumore. E non abbiamo nessun meccanismo per separarlo dal segnale, meccanicamente (come nel mio esempio, chiudendo il ricevitore e misurando la sua intensità). Quindi suggerisco un'altra opzione. Partire dal concetto di energia. L'energia del segnale muove il mercato. L'energia del rumore ci impedisce di vedere (isolare un segnale utile).
  3. Come agire
...

Cosa intende per catturare? Ne stiamo discutendo per venti pagine, se lo leggete attentamente (prendetevi il vostro tempo). Buona panoramica sull'elaborazione dei segnali, grazie, ma vi consiglio di scaricare tutto, se volete fare un lavoro fruttuoso su questo argomento, e sostituirlo con un normale filtro passa-basso digitale di classe FIR o IIR, a meno che non siate sicuri che il filtro passa-basso troverà un vero segnale.

Per quanto riguarda il rumore sarebbe meglio selezionare TUTTO invece di NOI, è più logico, ma che l'effetto bordo sia mal rimosso con questo approccio è un fatto, e quindi sui bordi non selezionerai alcun rumore, il tuo segnale stesso sarà rumore.

PS: come risultato inventerete un filtro molto peggiore di FATL. Non ingannate voi stessi e me, fare un filtro adattivo è tutta un'arte e i principi della sua progettazione sono molto diversi.

 
AAB:
Candido, questo lavoro descrive la previsione del movimento dei prezzi in termini di livelli potenziali, potresti essere interessato. La qualità non è buona, ma è una lettura mono, inoltre ci sono solo quattro pagine di formule e grafici.


Hmm, non ho dato un link all'inizio? :) Come si dice: lascia scorrere il pane e ti tornerà indietro :). Buon lavoro, imho.

Privato:

- costruire un indicatore


Mi ricordo che quando stavo provando la libreria di Klot ho fatto una specie di indicatore. Solo dovrebbe essere eseguito in visualizer e aspettare fino a quando ci saranno abbastanza barre per FFT. salti ci sono chiari da ciò, numero di frequenze gioca, se per aumentare il campionamento saranno lisciati. Naturalmente la libreria klot deve essere a posto (ce n'è una in CodeBase).

File:
offtma_e.mq4  4 kb
 
lna01:

Hm, non era il link che ho dato all'inizio? :) Come si dice, metti del pane sull'acqua e ti tornerà indietro :). Buon lavoro, imho.


Sì, sono fregato, almeno segno dove che da dove e da cui feed swiped, Vot t ricordare dopo aver letto che ti piace l'articolo, e che ha dato il link e dimenticato, sì, ricordare il pesce in Strugatsky ha detto, "I miei anni non sono quelli, legno visto...". Ma ogni nuvola ha un rivestimento d'argento, la gente potrebbe scaricare questo documento ancora una volta.
 

Attenzione a tutte le parti interessate e agli spettatori.

Ecco la soluzione al problema che ho rivolto a tutti voi qualche giorno fa. In linea di principio, non c'è nulla di nuovo. Ho semplicemente implementato il programma, che ho descritto nell'ultimo post su questo argomento. Il punto di metterlo là fuori è semplice: vedo diverse applicazioni di questo metodo, quindi può essere utile a qualcuno. Voglio anche "dimostrare" l'utilità dell'approccio teorico.

Quindi, il problema è semplice. C'è una serie {X} di numeri casuali che obbediscono a una certa statistica. La statistica non è gaussiana perché i possibili valori di X appartengono all'intervallo [0,∞]. Il punto X = 0, in generale, può non appartenere alla popolazione generale. Il numero di membri della serie {X} è N, che è abbastanza grande per dare qualche credito alla distribuzione basata sui dati disponibili e su altri parametri statistici:

µ=M(X) è il valore medio della serie {X}

D=M(X*X) - la varianza della serie {X}

σ =√D - skew della serie {X}

Poiché la serie disponibile è limitata, tutti i suoi elementi appartengono all'intervallo finito [Xmin,Xmax], Xmin>=0.

Costruiamo una media mobile Y con il periodo M sulla serie disponibile {X}. Il metodo di mediazione può essere arbitrario. Come risultato otteniamo una nuova serie {Y}, il cui numero di membri è ovviamente N-M+1. Anche l'insieme delle serie {Y} appartiene a un intervallo finito. Denotarlo con [Ymin,Ymax].

La domanda è come calcolare Ymin e Ymax dalle statistiche e dai parametri della serie {Y}? Scriverò alla fine a cosa può servire.

Il primo passo è costruire una distribuzione analitica della serie {X}. Nel libro di Bulashev, ho trovato solo una funzione di distribuzione, che ha come area di definizione [0,∞] la distribuzione lognormale. Non voglio dire niente di male, ma non mi andava bene.

Poiché la statistica della mia (e di molte altre) serie è tale che la densità di probabilità p(X) a X→0 e X→∞ tende a 0, ho assunto la seguente forma generale per p(X):

p(X)=A*(X^a)*exp(-B*(X^b)), dove a>0 e b>0

Di conseguenza, la funzione di distribuzione integrale è definita come segue: F(X)= ∫ p(ξ) dξ. Qui e ulteriori limiti di integrazione da 0 a X sono impliciti. Sfortunatamente, l'editore locale non permette di avere indici superiori e inferiori sul sito. Si deve torcere. Sembra disordinato, naturalmente, ma non si può evitare. ξ è solo una variabile di integrazione.

Per poterne fare qualcosa, questo integrale deve essere preso in forma analitica. Integrando sulle parti e utilizzando il valore limite p(0)=0, si può vedere che

∫ (ξ^a)*exp(-B*(ξ^b)) dξ = -1/(B*b) * (X^(a-b+1))*exp(-B*(X^b)) + (a-b+1)/(B*b) *∫ (ξ^(a-b))*exp(-B*(ξ^b)) dξ

Cioè, l'indice a del valore X ogni volta diminuisce di b. Se dopo k passi questo esponente diventa uguale a b-1, l'integrale si riduce a quello tabulare. Quindi, possiamo formulare la condizione di integrità in modo esplicito:

a - k*b = b - 1, o a = (k+1)*b - 1, dove k>0 è un intero.

Tuttavia, poiché dobbiamo ancora calcolare la media e la varianza, questa integrabilità non è sufficiente. Vediamo cosa è necessario per calcolare esplicitamente tutti i momenti centrali di questa distribuzione. Ovviamente µ = ∫X*p(X) dX (qui integrando a ∞). Calcoliamo µ in funzione di µ(X), assumendo che nell'integrale il limite superiore sia variabile.

µ(X) = ∫ ξ ξ*A*(ξ^a)*exp(-B*(ξ^b)) dξ = ∫ A*(ξ^(a+1))*exp(-B*(ξ^b)) dξ

Cioè, è un integrale dello stesso tipo con esponente a1=a+1. Per l'integrabilità, a1 deve soddisfare la stessa condizione:

a1 = (k1+1)*b - 1, dove k1>0 è un intero.

Confrontando questo con la condizione per a, otteniamo: b = 1/( k1 - k). Denotando n = k1 - k otteniamo finalmente una forma ammissibile del parametro b: b = 1/n, dove n>0 è un intero. Si noti anche che la relazione 0<n<=k dovrebbe essere soddisfatta.

Tenendo tutto questo in mente, possiamo ottenere in forma esplicita non solo la funzione di distribuzione integrale F(X), ma anche tutti i momenti centrali della distribuzione:

F(X) = 1 - exp(-Z)*∑ (Z^i)/i!

Ml(X) = (k+n*l)!/(k!*(B^(n*l)) *{ 1 - exp(-Z)*∑ (Z^i)/i! }, dove Z = B*(X^(1/n)) .

La costante A che appare nella funzione p(X) è calcolata dalla condizione di normalizzazione e considerata in queste espressioni. Il segno di somma ∑ nella linea superiore implica la somma sull'indice i da 0 a k, e nella linea inferiore - su i da 0 a k+n*l . Il valore Ml è l'l-esimo momento centrale (non confondere l e 1).

Si noti che tutte le funzioni ottenute diventano 0 quando X=0, e hanno i seguenti limiti quando X→∞:

F(X→∞) = 1 (condizione di normalizzazione) e Ml(X→∞) = (k+n*l)!/(k!*(B^(n*l)).

Così otteniamo:

µ = M(X) = M1(X) = (k+n)!/(k!*(B^n))

D = M(X*X) = M2(X) = (k+2*n)!/(k!*(B^(2*n))

Ora che tutto è lì per sempre, possiamo tornare alla serie originale. La funzione di distribuzione finale risultante p(X) contiene tre parametri che possono essere utilizzati per garantire che p(X) riproduca al meglio le statistiche della serie {X} - B, k, n.

Si potrebbe, naturalmente, trovarli per MNC, ma è noioso. L'ho reso più semplice per la mia serie. Dalle formule di cui sopra si può vedere che

D/µ^2 = (k+2*n)!*k!/((k+n)!)^2

Così, il valore di D/µ^2 è indipendente da B. Poiché D e µ sono noti per la serie {X}, dobbiamo solo scegliere una coppia (n,k) che dia il valore più vicino. Ho appena costruito una tabella sui possibili valori delle coppie (n,k), e ne ho trovati solo 4 adatti: (2, 3), (3,8), (4,16) e (5,26). Il valore di B è ora determinato elementarmente dalle espressioni per D o µ.

È interessante notare che i valori (n,k) delle prime due coppie (non ho controllato gli altri) hanno dato un'eccellente riproducibilità della curva di distribuzione sperimentale p(X). Almeno per me questa qualità è eccellente.

Lungo la strada mi è venuta in mente una domanda interessante. Forse qualcuno può illuminarmi sul perché una funzione di distribuzione così semplice e conveniente con buone proprietà non è usata in statistica? E se viene usato, perché non viene scritto? Non ho mai visto nessuno cercare di approssimare una distribuzione incrementale diversa dalla lognormale.

 

La terza fase del balletto marlesoniano comporta il calcolo di alcuni limiti X1 e X2.

La costruzione della serie Y = ∑ X è associata alla media di M valori di X. È ragionevole supporre che Ymin (un minimo teorico) può essere ottenuto se M dei più piccoli valori di X cadono all'interno della media.

Sull'asse OX, M dei valori più piccoli del valore X occupano l'intervallo [0, X1] e M dei valori più grandi del valore X occupano l'intervallo [X2, ∞]. Questa è in realtà la definizione dei valori X1 e X2 .

Poiché ci sono N elementi nella serie {X} in totale, F(X1) = M/N e 1 - F(X2) = M/N .

La funzione F(X) è nota in forma analitica, quindi le equazioni di cui sopra per la determinazione di X1 e X2 sono equazioni analitiche, anche se trascendentali. Qualsiasi metodo di iterazione numerica può essere applicato per risolverli. Poiché, come si può vedere dal grafico qui sotto, la funzione F(X) è monotona, si può arrivare rapidamente ai valori di F(X1) e F(X2) partendo dal punto di flesso usando il metodo della discesa del gradiente. Se calcolato con la massima precisione consentita dal MQL, 13-14 passi e meno di un secondo di tempo sono stati sufficienti per ottenere i valori di X1 e X2 . Il tempo è stato praticamente lo stesso per le coppie (2,3) e (3,8). Tuttavia, MQL è una buona cosa. (Che matcad .... J)

Spero sia chiaro dove sia p(X) e dove sia F(X).

Fig.1.

Sarebbe anche interessante guardare la dipendenza di X1 e X2 da M, o piuttosto dal rapporto M/N. Ma lo metteremo da parte per il momento perché non resta molto tempo. Si noti solo che nel limite, quando M→N, X1→∞ e X2→0 devono tenere. E ci occuperemo della definizione dell'obiettivo finale di tutta questa storia, i valori Ymin e Ymax.

Infatti ora è molto semplice. L'intervallo [0, X1] dà la posizione di M meno X e [X2, ∞] dà la posizione di M più X. Il nostro compito è determinare i due valori medi su di essi. Se l'algoritmo di mediazione non è banale, allora il problema deve essere risolto separatamente per ogni caso particolare. Se corrisponde a una semplice MA, possiamo usare le formule:

Ymin = M(X1)/F(X1) e Ymax = (µ - M(X2))/(1 - F(X2)).

Queste formule hanno un semplice "significato fisico", quindi non mi addentro in una spiegazione. Presenterò invece il grafico delle dipendenze Ymin e Ymax sui valori di Х1 e Х2. Mostra Ymin in rosso e Ymax in blu. La linea orizzontale in turchese indica il valore di µ.

Come ci si aspetterebbe, Ymin a X1→∞ e Ymax a X2→0 tendono entrambi verso µ, uno dal basso e uno dall'alto.

Figura 2.

Entrambi corrispondono a M→N, il che è perfettamente chiaro dal grafico della dipendenza di X1 e X2 dal valore di M. Non l'ho già dato? Sì, l'hai fatto. Questo è il primo dei grafici. E delle due curve si dovrebbe usare la curva F(X). Ma non si deve determinare F da X, ma viceversa, si deve determinare X da F. Mentre fate questo, dovete anche guardare le equazioni per X1 e X2 e ricordare che se M→N, allora M/N→1.

Così si scopre che quando M/N aumenta con M, X1 aumenta (e Ymin aumenta con esso) e X2 diminuisce (Ymax diminuisce con esso). Ma è sempre Ymin< X1 e Ymax>X2 .

Nei miei calcoli ho ottenuto che 1 - 3 - 5 valori della serie {X}, a seconda del valore di N, possono andare oltre il limite superiore di X2 (il limite inferiore in questo senso non è di interesse). Allo stesso tempo il valore di Ymax non viene mai superato. Il che è, in generale, comprensibile: il caso in cui tutti i valori M di X sono maggiori è eccezionale. Per quanto riguarda i valori della serie {Y}, la probabilità che superino X2 è ancora minore. Per non parlare di Ymax.

Così abbiamo due stime della gamma di valori {Y}, una dura e una morbida. Possiamo usare entrambi, a seconda delle esigenze del problema.

PS

Mi dispiace. Non posso inserire immagini. Non in nessun formato. Il sito deve avere dei problemi.

 

E infine, perché tutto questo è necessario.

Già che c'ero, ho visto diverse possibilità per utilizzare il tutto.

1. Normalizzazione di tutti gli indicatori TA conosciuti, in particolare - oscillatori. Qualcuno ha prestato attenzione al fatto che gli oscillatori possono essere utilizzati solo in una gamma ristretta dei loro periodi di lisciatura? Man mano che il periodo diminuisce, comincia a lanciare avanti e indietro, e quando aumenta l'ampiezza diminuisce così tanto che non riesce a raggiungere i livelli. Esempio di un RSI preferito qui sotto. Due variazioni per i due periodi 14 e 30. Se vi affidate al secondo, potreste non fare trading per niente. I livelli 70/30 sono raggiunti molto raramente. Oppure questi livelli dovrebbero essere ottimizzati di nuovo per ogni periodo.

Fig.3.

Gli indicatori TA non dipendono praticamente dal t/f, per quanto ne so, questa è una peculiarità delle loro statistiche. Ma qui, se il problema dello smussamento fosse risolto, allora forse si potrebbe ottenere qualcosa di nuovo da loro. Con una tale procedura di normalizzazione stocastica penso che questo sia abbastanza possibile.

2. Il mio problema personale era che la diffusione della serie dipende significativamente da N. Come potrebbe essere altrimenti, Hurst ha sofferto per niente? :-))

Ora posso portare tutto a uno standard universale, in cui né il passaggio a un altro t/f, né il cambiamento del periodo di lisciatura influenzano la gamma dei valori della serie. Questo permette di utilizzare gli stessi livelli di ingresso/uscita per tutti gli altri valori dei parametri. L'ottimizzazione ha senso in queste condizioni. Ottimizzando su un t/f, posso poi verificare il rendimento della strategia su un altro. Se persiste, significa che la strategia funziona davvero. Se non lo fa, viene scartato.

Forse sarà utile a qualcun altro.

3. Finora nessuno è riuscito a normalizzare direttamente il grafico dei prezzi. Ma sarebbe bello farlo. Siamo interessati non al valore assoluto ma alle sue fluttuazioni. Forse riusciremo a farlo in questo modo. Chi lo desidera può provarlo.

4. Nelle reti neurali, di cui non so nulla, è necessario normalizzare i dati. Andare oltre i confini della gamma condizionata porta alla perdita di neuromouse.

Forse questo modo di normalizzare si rivelerà più utile in alcuni casi di quello che si usa attualmente.

Questo è tutto. Le critiche sono accettate in qualsiasi forma.

PS

Non ho intenzionalmente postato alcun codice o esempio di codice. L'algoritmo non è descritto in dettaglio, ma molto dettagliato. È facile da capire. Se vuoi, naturalmente.

Incoraggio la comunità a seguire il mio esempio.

Le ragioni sono le seguenti.

Questa torta non è pronta per il consumo. Non è una soluzione finale, ma un metodo. Qualsiasi uso di questo metodo nei compiti privati li lascerà ancora come compiti privati. Coloro che, senza preoccuparsi di capirlo e di usarlo in modo significativo per se stessi, si affretteranno a usare le soluzioni di altre persone, saranno fuorviati, avranno perso tempo e forse denaro.

Per utilizzare correttamente questo metodo, è necessario

1. Formulate la vostra serie {X}.

2. Formarlo correttamente con una procedura appropriata.

Esaminare le sue statistiche, calcolare i parametri statistici.

Esplora la corrispondenza delle statistiche di questa serie su diverse t/fs.

5. Trova la coppia statistica appropriata k,n.

6. Calcolare il parametro B.

7. Costruisci una funzione di distribuzione modello p(X) e confrontala con quella sperimentale. Un ulteriore uso di questo metodo sarà corretto solo se l'adattamento del modello e dell'esperimento è soddisfacente. E per questo è necessario avere un criterio di stima.

8. Infine, è anche necessario essere in grado di utilizzare correttamente le Ymin e Ymax ottenute. Non è così facile come può sembrare. :-)

Quindi, colleghi programmatori, non solo evitate di incoraggiare gli omaggi, ma date anche agli altri una possibilità, un'opportunità per mostrare iniziativa e capire qualcosa da soli.

Un programmatore non è colui che programma tutto ciò su cui può mettere le mani.

Proprio come un uomo non è qualcuno che beve tutto ciò che brucia e mangia... tutto ciò che si muove.

 
Ci occuperemo di questo, grazie, e per favore carica le immagini e incollale usando "Allega file".
 

Certo, ma si chiama 'dalla porta di servizio'. Spero che sia una misura temporanea. Appena funziona bene, metterò le foto al loro posto.

PS

Ahimè, anche questo non prende piede.

Moderatori, HOOOOOOOOOOOOOOOOOOOOO!!! Sistemate il sito, per favore. Nessuna foto da allegare, nessun file ...

 

a Yurixx

Incredibile, invece di guardare solo la diffusione della serie di media mobile risultante, abbiamo tranquillamente raggiunto una stima teorica, e per discesa di gradiente, basata su una distribuzione non provata. In teoria è una figata!

Ok, non ci credo ancora, dopo un viaggio di lavoro nella gloriosa città di Kurgan, lo rileggerò di nuovo. :о)))

PS: ho ricordato un caso della mia vita quasi scientifica. È venuto dal mio capo con un lungo rotolo di formule derivate, dopo averlo guardato, ha detto che non c'erano errori, ma poteva essere più semplice. A questa osservazione ho risposto con orgoglio "non cerchiamo vie facili", al che lui ha subito risposto "ecco perché non le trovate".

 
grasn:

a Yurixx

Incredibile, invece di guardare solo la diffusione della serie di media mobile risultante, abbiamo tranquillamente raggiunto una stima teorica, e per discesa di gradiente, basata su una distribuzione non provata. In teoria è una figata!

Secondo me, è più semplice di così. Un piccolo pezzo di codice che calcola i coefficienti di normalizzazione a seconda dei parametri di t/f e di mediazione è incorporato nell'indicatore o nel consulente init(). Funziona. Come puoi farlo nel campionato se l'Expert Advisor non è sul tuo computer e la cronologia è caricata sul volume sconosciuto?

Ma questa è una questione banale. Ho una domanda più seria. Dovete ricalcolare questi rapporti ogni volta che cambiate un simbolo, t/f, etc., a mano o usando Matkad :-)? ? Non si stanca di questo? O creare un database per tutti i simboli, t/f, parametri di smoothing ecc. ? :-)

C'è un altro punto, il più importante. Ma se non l'avete notato, pazienza. :-)))

A proposito, la "distribuzione non provata", dato che in forex non si conosce nessuna distribuzione di nessun valore (solo che si sa che non è normale) è ridicola. È una buona battuta.