Prevedere il futuro con le trasformate di Fourier - pagina 2

 
ANG3110:

Solo l'indicatore allegato non disegna nulla.

Lo fa. Scorri il grafico a sinistra, vedrai.

 

Nel thread parallelo "Not Mashka's Business!" c'è una discussione sulla previsione con la "MA perfetta". Credo che lo smoothing perfetto possa essere ottenuto solo usando la Fourier e il thresholding, come fatto qui. La stima più accurata è proprio al centro della finestra del campione. Dovete fare una ricerca simile, ma basandola su questo algoritmo piuttosto che sul MA.

In secondo luogo, si può giustificare matematicamente con precisione il valore della soglia(porog), liberandosi così del tentativo (trovare il valore ottimale) di questo valore.

In terzo luogo, per aumentare il tempo di previsione, è necessario aumentare la precisione delle misurazioni del valore corrente, è possibile in due modi - analisi simultanea di più valute, o aumentare il numero di fornitori di quotazioni . Ottimizzazione. DDE in VB (VBA)".

 

Per vedere il futuro,

La casella di controllo "Offset grafico" deve essere selezionata nelle impostazioni della finestra del grafico,

extern int InPast=0,

extern inttern Futur=100 per quante barre la previsione

 

Per quanto riguarda il porog, in linea di principio rifarò questa parte, perché quando una frequenza va oltre la soglia, il grafico cambia bruscamente, forse lo lascerò come era a klot, o farò una diminuzione morbida.

 

Divertente idyuk, grazie!

L'ho provato nel tester, per così dire, in condizioni reali. A volte sembra essere lo stesso, ma a volte è viceversa, soprattutto prima delle mosse forti o alla fine delle mosse forti.

Una situazione molto interessante è quando 3 indicatori con diverse potenze di due, come 8, 9 e 10 sono applicati al grafico, e spesso guardano in direzioni diverse. E se provassimo a usare il valore medio di questi 3 indicatori?

L'avete provato?

 
m_keeper:

Per quanto riguarda il porog, in linea di principio rifarò questa parte, perché quando una qualsiasi frequenza attraversa la soglia il grafico cambia bruscamente, forse lo lascerò come era a klot o farò una diminuzione graduale.

Un'altra cosa che vorrei fare, sbarazzarmi della FFT (il grado due non è la scelta migliore per trovare la finestra migliore). Meglio una trasformazione discreta.

Per quanto riguarda la soglia, ci sono i criteri di Neumann Pearson, osservatore ideale, cercali. L'applicazione di questa teoria permetterà di allontanarsi dall'ottimizzazione (trovare il valore ottimale sulla storia), e permetterà di fare una soglia adattiva, ci sono parecchie varianti di realizzazione.

 

Sembra che l'angolo del digitalizzatore sia ora in questo thread :), allora ecco una domanda-pensiero. Se si prende la densità spettrale media per il grafico dei prezzi, si ottiene questo tipo di immagine


Potete vedere che per le basse frequenze non è un cattivo 1/f, ma per le alte frequenze c'è una deviazione notevole da questa legge. Questo è stato discusso qualche tempo fa e la versione principale suggeriva di avere una sorta di rumore di digitalizzazione. Il pensiero è che potrebbe essere utile filtrare questa componente. Cioè lasciare un 1/f pulito per tutta la gamma di frequenze. E la domanda è come farlo. L'idea è di avere una procedura che prende come input un array di densità spettrale e restituisce i coefficienti del filtro digitale. In linea di principio, posso pensare a una semplice funzione di ponderazione per le ampiezze di Fourier, ma un filtro digitale sarebbe più economico da usare.
 

La libreria ora contiene il file __lib_FFT.mq4, mentre il testo dell'indicatore contiene #_lib_FFT.mq4, ecco perché non viene disegnato.

 
Prival:
m_keeper:

Per quanto riguarda il porog, in linea di principio rifarò questa parte, perché quando una qualsiasi frequenza attraversa la soglia il grafico cambia bruscamente, forse lo lascerò come era a klot o farò una diminuzione graduale.

Un'altra cosa che vorrei fare, per sbarazzarmi della FFT (il grado due non è la scelta migliore per trovare la finestra migliore). Meglio una trasformazione discreta.

Per quanto riguarda la soglia, ci sono i criteri di Neumann Pearson, osservatore ideale, cercali. L'applicazione di questa teoria permetterà di allontanarsi dall'ottimizzazione (trovare il valore ottimale sulla storia), e permetterà di fare una soglia adattiva, ci sono un sacco di opzioni di implementazione.

In linea di principio è molto facile sbarazzarsi del grado 2:

w=2*pi/T;

for (int k=0; k<=N; k++)
   {                                                              
      sum_cos=0.0; 
      sum_sin=0.0;                                           
      for (int n=0; n<T; n++) 
      {
         sum_cos+=Close[n]*MathCos(k*n*w); 
         sum_sin+=Close[n]*MathSin(k*n*w);
      }
      ak[k]=sum_cos*2/T; 
      bk[k]=sum_sin*2/T;
   }
   ak[0]=ak[0]/2;
   //------------------------------------
   for (n=T-1; n>=0; n--)
   {                                                        
      sum=0.0;                                       
      for (k=0; k<=N; k++)
      {                                                             
         sum+=ak[k]*MathCos(k*n*w)+bk[k]*MathSin(k*n*w);
      }                                                             
      fx[n]=sum;
   }

N - numero di armoniche,

T - periodo.


La finestra ottimale, o più precisamente il periodo ottimale T è più facile da scegliere secondo 2 criteri, per minimo RMS e per massimo della somma delle ampiezze armoniche. Ma a causa delle molteplici ondate sul mercato, ci saranno diverse finestre ottimali.

E dovremmo anche tenere a mente che quando si cerca di estrapolare, a causa di seni e coseni periodici, le componenti periodiche precedenti saranno solo aggiunte alla fine e, anche se la probabilità di ripetizione è abbastanza alta, la fase e soprattutto l'ampiezza sarà ancora diversa e infatti, si dovrebbe sempre regolare la fase, come un rilevatore di fase.


La definizione di fase come MathArctan() non va bene a causa delle proprietà arctan, almeno +/- pi/2 deve essere presa in considerazione.

Meglio definire la fase in modo leggermente diverso.

 

Non c'è bisogno di allontanarsi dalla FFT, infatti non è necessario dividere la serie esattamente a metà, la si divide per aumentare la velocità di conteggio, e non perché sia necessario dividere strettamente per due. Una volta ho lavorato con FFT che funziona con serie di qualsiasi lunghezza, lo riscriverò per mql più tardi.


Sto cercando di scoprire quali caratteristiche possono indicare falsi positivi

Ecco due immagini, con n=9 e n=10

In entrambi i casi, la coda della finestra ha colpito un brusco picco che potrebbe essere quello del futuro.

Ora sto sperimentando la pre-elaborazione delle serie, forse aiuterà.


Cambiata la condizione di lisciatura, nessun salto del grafico ora, tutto funziona senza problemi.


Per quanto riguarda il ridisegno del grafico, non vedo alcun problema.

Iprezzi di chiusura non sono il passato ma gli eventi che li hanno generati - le onde (nel caso di Fourier) - sono il passato

e impariamo sempre di più su di loro con ogni nuova barra.

File: