Discussione sull’articolo "Reti neurali di terza generazione: Reti profonde" - pagina 6

 

Un altro test rapido, questa volta con un set di allenamento di 6000 barre da settembre 2014 a febbraio 2015. Il test fuori campione inizia a marzo:

Anche in questo caso abbiamo una fase di profitto di circa 5 settimane fino al deterioramento del modello.

Ritengo che la suddivisione in dati di test e di allenamento sia inutile: possiamo utilizzare tutti i dati per l'allenamento. L'accuratezza e la matrice di confusione sono fuorvianti perché nella maggior parte dei casi il segno ZZ è identico al segno della barra precedente, suggerendo erroneamente un'elevata accuratezza. Per il profitto, contano solo i cambiamenti di segno.

 
jcl365:

Ora ho addestrato un nuovo modello con la previsione della barra successiva e sembra che funzioni davvero. L'accuratezza è ancora nell'ordine del 74%. Questa è la curva dell'equity ora:

:

Si comporta proprio come mi sarei aspettato: il sistema è redditizio subito dopo l'addestramento, per poi peggiorare lentamente man mano che il mercato cambia.

Il prossimo passo sarà quindi un test WFO con una riqualificazione regolare del modello. A tal fine, l'addestramento deve essere integrato nello script della strategia.

Questa è la funzione corretta per calcolare il Sig della barra successiva:

La funzione "Compute" che viene eseguita ogni 30 minuti dallo script della strategia:

Lo script di strategia, l'"EA":

jcl365:

Ora ho addestrato un nuovo modello con la previsione della barra successiva e sembra che funzioni davvero. L'accuratezza è ancora nell'ordine del 74%. Questa è la curva di equity ora:

:

Si comporta proprio come mi sarei aspettato: il sistema è redditizio subito dopo l'addestramento, per poi peggiorare lentamente man mano che il mercato cambia.

Il prossimo passo sarà quindi un test WFO con una riqualificazione regolare del modello. A tal fine, l'addestramento deve essere integrato nello script della strategia.

Questa è la funzione corretta per calcolare il Sig della barra successiva:

La funzione "Compute" che viene eseguita ogni 30 minuti dallo script della strategia:

Lo script della strategia, l'"EA":

Ciao

Hai spostato la serie ZZ di una barra nel futuro.

for(i in 1:length(ZZ)-1) { ZZ[i] = ZZ[i+1] }

Hai spostato la serie dz di una barra nel futuro.

 dz <- c(diff(ZZ), NA)

Quindi hai spostato la variabile target nelle due barre nel futuro.

Ciò equivale a

dz <- Hmisc::Lag(diff(ZZ), shift=-2)

Questa opzione può anche essere utilizzata.


 


Anche in questo caso abbiamo una fase proficua di circa 5 settimane fino al deterioramento del modello.

Questo è normale. Il modello può e deve essere periodicamente riappreso.

Ritengo che la suddivisione in dati di test e di allenamento non sia necessaria: possiamo utilizzare tutti i dati per l'allenamento.

Può. È importante ricordare alcuni punti importanti:
1. gli insiemi di allenamento e di test non devono essere incrociati.
2. Il set di addestramento deve essere misto

3. Se il rapporto tra le classi è in equilibrio , è necessario effettuare un aggiustamento.

Sono contento che ci siano colleghi che utilizzano R.

Cordiali saluti

Vladimir

 

Hai ragione per quanto riguarda il doppio cambio: Il sistema prevede infatti una differenza ZZ basata sul prezzo medio della barra successiva. Lo ZZ viene calcolato a partire dai prezzi medi, ma al momento del calcolo abbiamo il prezzo di chiusura, che normalmente è circa a metà strada tra l'ultimo e il prossimo prezzo medio. Quindi lo spostamento aggiuntivo prevede circa 1,5 barre nel futuro, e in effetti ho ottenuto risultati molto peggiori senza lo spostamento aggiuntivo.

Ora ho uno script Zorro che si riaddestra ogni 4 settimane e che esegue i test nelle 4 settimane successive all'addestramento. La deepnet è piuttosto veloce, lo script ha bisogno solo di circa 10 minuti per un'esecuzione che copre circa 60 cicli di allenamento/test. Questo è il risultato:

Non sembra così buono come le prime impressioni. C'è chiaramente un potenziale di miglioramento, quindi i prossimi passi saranno quelli di sperimentare con diverse configurazioni di rete, periodi di tempo e indicatori diversi.

 
Dobbiamo raccogliere non solo gli indicatori , ma anche i loro parametri. L'algoritmo genico vi aiuterà.

Che cos'è Zorro? Dare i link?


 
Vladimir Perervenko:
Dobbiamo raccogliere non solo gli indicatori , ma anche i loro parametri. L'algoritmo genico vi aiuterà.

Che cos'è Zorro? Dare i link?


Sì, c'è un libro di Yu / Wang / Lai che descrive un algoritmo genetico per la preselezione degli indicatori per la formazione NN Forex. - Io uso Zorro perché gli script sono più semplici e il backtesting è migliore, ma credo che anche MT4 possa andare bene con un certo sforzo. Non posso fornire un link perché si tratta di un sito web di MT4, ma potete cercare su Google Zorro trading automaton. Anche la dll R di Bernd Kreuss funziona con Zorro.
 

Ho scaricato e installato tutto e ho messo tutti i file nelle cartelle. Tutti i pacchetti sono installati. Le cartelle sono impostate sulle mie destinazioni.

Quando metto l'esperto sul grafico EURUSD m30 tutto va bene anche in DebugView, ma non appena metto l'indicatore sul grafico ottengo un errore:

ExecutedCode: in >>> as.Logical(res <-GetRes()) [1]

Errore in if (z) { :

Il risultato della funzione GetRes in "i_SAE_fun.r" è sempre NA e quindi non può convertirlo in bool e smette di funzionare.

Qualcuno può indicarmi la giusta direzione? Cosa mi manca?

Cordiali saluti,

APoLLo

 
APoLLo_MQL:

Ho scaricato e installato tutto e ho messo tutti i file nelle cartelle. Tutti i pacchetti sono installati. Le cartelle sono impostate sulle mie destinazioni.

Quando metto l'esperto sul grafico EURUSD m30 tutto va bene anche in DebugView, ma non appena metto l'indicatore sul grafico ottengo un errore:

ExecutedCode: in >>> as.Logical(res <-GetRes()) [1]

Errore in if (z) { :

Il risultato della funzione GetRes in "i_SAE_fun.r" è sempre NA e quindi non può convertirlo in bool e smette di funzionare.

Qualcuno può indicarmi la giusta direzione? Cosa mi manca?

Cordiali saluti,

APoLLo

Ciao APoLLo.

Quale versione R hai ?
Si tratta di un articolo piuttosto lungo e dopo l'aggiornamento dei pacchetti in R alcune funzioni smettono di funzionare.
Meglio usare Revolution R Open (RRO 8.01)
Per controllare, esegui uno script in Rstudio.

Se hai tempo, controllo anche dove si trova l'errore.

Cordiali saluti/

Vladimir

Revolution R Open
  • www.revolutionanalytics.com
Revolution R Open is our enhanced distribution of the world's most widely used data analysis software. Based on open source R, Revolution R Open is built, tested and distributed by Revolution Analytics and delivers: The latest R language engine from the R Foundation for Statistical Computing High-performance R language engine (multi-threaded...
 
Vladimir Perervenko:

Ciao APoLLo.

Quale versione di R hai ?
Questo è un articolo abbastanza lungo e dopo l'aggiornamento dei pacchetti in R alcune funzioni smettono di funzionare.
Meglio usare Revolution R Open (RRO 8.01)
Per verificare, eseguire uno script in Rstudio.

Se hai tempo, controllo anche dove si trova l'errore.

Cordiali saluti/

Vladimir

Sto utilizzando l'ultima versione di R 3.2.0 64bit insieme all'ultima versione di MT4. Tutti i pacchetti di R sono stati scaricati ieri, quindi dovrebbero essere anch'essi dell'ultima versione.

Se avvio l'EA su EURUSD M30 posso anche collegarmi ad esso con RGUI e controllare "SAE" e "prepr" e ottenere molti numeri.

A me sembra che la funzione GetRes in R stia controllando se una connessione è aperta recuperando il valore di flag1 che non è disponibile sul server (EA).

Forse la causa è che "Acc" o "K" o "Kmax" non sono mai stati calcolati correttamente.


Ho tempo, quindi se avete la possibilità di dare un'occhiata ne sarei molto felice.

Più tardi proverò Revolution R 8.01 per verificare se funziona meglio.

Grazie per l'aiuto :)

 
Vladimir Perervenko:

Un enorme GRAZIE all'autore per l'articolo. Con il suo articolo ho iniziato a familiarizzare con l'applicazione delle reti neurali al mercato. Prima non conoscevo le reti neurali e non avevo mai usato il linguaggio R. Ma ora l'ho installato e lo sto imparando. Ma ora l'ho installato e lo sto imparando. Sembra complicato, ma interessante!

E sì, mi dica, non riesco a capire come funziona il file SAE.model come libreria per un Expert Advisor o come cosa? Cioè, possiamo salvare la struttura della rete neurale da R e poi usarla come una normale libreria in un Expert Advisor, o cosa? È tutto molto confuso e complicato (per me).