Effetto bordo sulla strada per il GRAAL - pagina 2

 
E quali wavelets sono state usate, ho usato le wavelets di Matlab. Gli effetti dei bordi sembrano essere meno visibili lì, ma ovviamente ci sono (non possono farne a meno) Ho anche provato le decomposizioni (approssimazioni) e una rete neurale. Sui dati su cui la rete ha imparato molto fresco. e impara maglia sembra facile, ma su quelli nuovi - inferno. Sono giunto alla conclusione che le wavelets sono una buona cosa, specialmente se si applica il lag space. Ma finora non l'ho applicato nella pratica.
 
vladevgeniy писал(а) >>
E che tipo di wavelets hai usato, io ho usato quelli di Matlab. Sembra che ci siano meno effetti di bordo, ma ovviamente ci sono (non possono farne a meno) Ho anche provato ad applicare decomposizioni (approssimazioni) e una rete neurale. Sui dati su cui la rete ha imparato molto fresco. e impara maglia sembra facile, ma su quelli nuovi - inferno. Sono giunto alla conclusione che le wavelets sono una buona cosa, specialmente se si applica il lag space. Ma finora non l'ho applicato nella pratica.

Utilizzato Dobeshi wavelets. Dicono che le wavelet Meyer sono meno inclini agli effetti di bordo, ma non l'ho ancora provato.

Il fatto è che costa molto tempo programmare ogni metodo.

Cosa sono le wavelet di Matlab? Non ho mai lavorato in Matlab.

Intende i polinomi? Quanto bene ha funzionato?

 
Desperado писал(а) >>

Attraversare i livelli non dà un risultato molto attraente. Questo è successo anche a me.

Nell'indicatore la distribuzione dei massimi e dei minimi segue una legge gaussiana, solo con MO diversi.

I massimi hanno circa 0,3, i minimi -0,3.

Più la barra è alta, più i segnali sono affidabili e meno sono numerosi.

E non è interessante guadagnare 200 punti al mese :)

Sì, purtroppo o distorsioni o ritardi.

Non mi piace la distribuzione normale gaussiana. Preferisco Lognormal. Ma questo, purtroppo, non è adatto a tutti. Sono arrivato alla conclusione che è ragionevole approssimare con il fitting (come ho scritto sopra). E se ci sarà un risultato, o qualcosa di interessante, allora aggiusterò la funzione di distribuzione. In generale le deviazioni non sono grandi, quindi ci si può fidare.

 
Desperado, matlab qualsiasi matlab toolbox su wavelets. È possibile ottenere la decomposizione necessaria, il dettaglio e l'approssimazione. M viene scritta una funzione, poi viene usata una dll transitiva e collegata alla metrica attraverso la dll. Credo che ci sia anche una funzione Mayer, o forse no, non ricordo. Ma si può risparmiare tempo sulla programmazione, anche se ho avuto un sacco di problemi nel tradurre le matrici da Matlab a variabili regolari e viceversa. Ho provato a riscrivere la famosa libreria scritta in Delphi in C++ (ce ne sono molte in rete). È qui che sono state osservate le distorsioni dei bordi più forti. Ma Matlab non ha nulla di tutto ciò, anche se si curva (gli piace disegnare ganci ai bordi quando si tende). Provate a costruire semplicemente il wavelet richiesto in Matlab, e se vi piace il risultato, potete collegarlo a Mt attraverso una dll.
 
vladevgeniy писал(а) >>
Desperado, qualsiasi matlab che puoi trovare nella casella degli strumenti di Matlab su wavelets. Puoi ottenere la decomposizione di cui hai bisogno e il dettaglio e l'approssimazione. Si scrive la funzione M, poi una dll di transizione, e si collega via dll a MT. Credo che ci sia anche una funzione Mayer, o forse no, non ricordo. Ma si può risparmiare tempo nella programmazione, anche se ho avuto un sacco di problemi nel tradurre le matrici da Matlab a variabili regolari e viceversa. Ho provato a riscrivere la famosa libreria scritta in Delphi in C++ (ce ne sono molte in rete). È qui che sono state osservate le distorsioni dei bordi più forti. Ma Matlab non ha nulla di tutto ciò, anche se si curva (gli piace disegnare ganci ai bordi quando si tende). Provate a costruire semplicemente il wavelet richiesto in Matlab, e se vi piace il risultato, potete collegarlo a Mt attraverso una dll.

Grazie mille. In realtà, questo è il delph che ho usato :) Solo che c'era un modulo, l'ho riciclato in una biblioteca.

Cercherò di trovare prima Matlab.

 
infinum13 писал(а) >>

Non mi piace la distribuzione normale gaussiana. Lognormale è meglio. Ma anche questo, purtroppo, non va bene per tutti. Sono arrivato alla conclusione che è ragionevole approssimare per adattamento (come ho scritto sopra). E se ci sarà un risultato, o qualcosa di interessante, allora aggiusterò la funzione di distribuzione. In generale, le deviazioni non sono grandi, quindi posso fidarmi anche di questo.

Ho provato il tuo algoritmo. Come previsto in linea di principio, rimuove il rumore fine. Funziona bene con piccoli periodi e grandi TF.

Vedrò cosa posso farci.

Il suo risultato è mostrato con la linea rossa. E ho bisogno di qualcosa come la linea verde.

 

Questo è il tipo di linea verde che si ottiene in Matlab, con grandi livelli di decomposizione. È tutto fatto con una linea di codice. C'è una modalità speciale di denoising wavelet, dove si seleziona il tipo di wavelet, e ci sono alcuni altri parametri. Il compito principale è quello di fare un dll transitorio. Quel modulo Delph ha effetti di bordo molto forti, sì. Non so come, ma in Matlab sono molto ridotti - a volte sembra addirittura che non ce ne siano affatto.

L'ultimo Matlab è quasi 4 giga su un torrent. )))) Meglio usarlo. Ho controllato e la dll si compila bene e si aggancia bene.

 

Dall'articolo in allegato:

La nostra applicazione - la previsione - indica l'importanza critica per noi dei valori finali. La nostra serie temporale è finita, e i valori n, n-1, n-2, ..., sono di grande interesse per noi. Qualsiasi funzione wavelet simmetrica è problematica per la gestione di un tale confine (o bordo). Non possiamo nemmeno usare i coefficienti wavelet se questi coefficienti sono stati calcolati da valori di dati "futuri". Un asymmetric filter può permetterci di aggirare questo problema. Una tale funzione wavelet può trattare adeguatamente il bordo per noi importante. I primi valori della nostra serie temporale, che costituiscono anche un confine, possono essere trattati arbitrariamente come risultato, ma questo non ha alcuna conseguenza pratica.

Da quanto ho capito, la funzione non simmetrica si basa solo sui valori precedenti della serie temporale.

Simmetrico - su valori passati e futuri. Per esempio, qui dall'algoritmo CDF 9/7:

// Predire 1

a=-1.586134342;

per (i=1; i<n-2; i+=2) {

x[n-1]+=2*a*x[n-2];

}

x[i]+=a*(x[i-1]+x[i+1]);

Gli effetti di bordo che l'ultima linea crea.

Secondo l'articolo, tra l'altro, l'ha scritto un indyuke:

Qui ogni coefficiente wavelet è calcolato solo sui valori precedenti della serie.

È possibile allinearsi, naturalmente:

La regione incognita è funzioni simmetriche e riempita con qualcosa come x[n-1]+=2*a*x[n-2]

Dovrebbe essere ridisegnato.

Se vuoi giocarci, clicca qui.

 
vladevgeniy писал(а) >>

Questo è il tipo di linea verde che si ottiene in Matlab, con grandi livelli di decomposizione. È tutto fatto con una linea di codice. C'è una modalità speciale di denoising wavelet, dove si seleziona il tipo di wavelet, e ci sono alcuni altri parametri. Il compito principale è quello di fare un dll transitorio. Quel modulo Delph ha effetti di bordo molto forti, sì. Non so come, ma in Matlab sono molto ridotti - a volte sembra addirittura che non ce ne siano affatto.

L'ultimo Matlab è quasi 4 giga su un torrent. )))) Meglio usarlo. Ho controllato e la dll si compila bene e si aggancia bene.

Scusa per la domanda in stile RTFM, ma potresti descrivere in poche parole,

come creare una dll in MathLab e chiamarla da MT4?

Se possibile, con un esempio.

 

Oh, mi sarebbe stato facile un paio di mesi fa. Ora ho dimenticato tutto. Ma Matlab è standard, c'è una descrizione nel manuale. In generale, troverete un aiuto di ottima qualità in Matlab. Dopo la compilazione vengono creati un file .dll e uno lib insieme a un paio di altri meno importanti. Nel file m avrete una funzione in linguaggio matlab e questa funzione è chiamata dalla dll intermedia. Hai solo bisogno di chiamare l'inizializzazione lì prima, beh, l'aiuto ce l'ha. Tuttavia, c'è un "ma". Abbiamo bisogno di sovraccaricare le variabili stringa doppia, ecc. in mxArray e poi chiamare la funzione in Matlab e poi di nuovo in C.

Ecco un esempio di lavoro con mxArray in C

mxArray *inm = mxCreateDoubleMatrix(1,size,mxREAL); variabile mxArray con dimensione creata per l'array di input
memcpy(mxGetPr(inm), &in[0], size*sizeof(double)); riempito con variabili dall'array di input

allora la funzione matlab è chiamata

allora l'array di uscita di mxArray è convertito in un doppio

// ---------------------- convertire mxArray in doppio ------
memcpy(out, mxGetPr(outm), size*sizeof(double))


Questo è circa adesso, è difficile da ricordare esattamente.

Inclusioni per lavorare con mxArray

#include "mex.h"

si trovano nella cartella matlab

Motivazione: