L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 268

 
mytarmailS:

ha ricevuto un avvertimento

logicamente, lo script ha cercato di leggere la tabella creata in precedenza dal file rdata, ma ha fallito, quindi l'avviso. La prossima volta che si esegue lo script, il file rdata con la tabella verrà letto e non ci sarà alcun warping.


NA - anche logico, i dati per creare un modello dovrebbero essere preparati, non presi dall'output grezzo di quegli indicatori. C'è molto di più che si può fare lì -.

<NA> all'inizio della tabella va bene, le candele dopo tutto richiedono almeno 23 barre. Per le prime 23 battute ci si può sempre aspettare NA.
Non ho riempito la tabella fino alla larghezza della finestra, non solo ci sarà NA, ma ci si può aspettare "alcuni risultati non così" a causa della minore profondità dei calcoli degli indicatori.
Meglio tagliare tutte le prime linee alla larghezza della finestra.
trainData <- trainData[-(1:indicatorDepth), ]

Correggere <NA> nei nomi delle colonne eccetto target: colnames(trainData)[-ncol(trainData)] <- paste0("pred",1:(ncol(trainData)-1))

Sostituire target con 1 per tutti i positivi, e -1 per tutti i negativi. O {0;1} se avete i neuroni.

Quegli indicatori che contengono alcuni valori vicini ai prezzi - scala a 0-1, o conta i delta. (per esempio i valori MA sono sempre da qualche parte vicino al prezzo, devono essere scalati o delta. E l'RSI è sempre nel suo range 0-100, e questo di per sé è una buona cosa. Se i valori dell'indicatore possono andare oltre i valori conosciuti durante l'allenamento - delta, non peggiorerà)

Per la neuronica in generale è meglio scalare tutti gli indicatori in 0-1.

E così via.

Ma NA nelle colonne 46-51 - c'è davvero qualcosa che non va. O restituiscono tutto in un altro formato e abbiamo bisogno di un altro codice specifico per inserirli nella tabella.
Oppure - questi indicatori restituiscono solo NA da soli; forse hanno bisogno di una maggiore larghezza della finestra; oppure restituiscono sempre NA per l'ultima barra e poi sostituiscono NA in base ai dati della nuova barra, il che è ridisegnare, e male.

 
SanSanych Fomenko:

Ecco che arriva una nuova barra, che è l'araldo di un'inversione di mercato. Ma noi, continuando a nutrire la vacca sacra, non cambiamo la nostra visione della storia per amore di qualche idea, presa dalla sezione "analisi".

Per il trading semplice questo è abbastanza eccellente, sono d'accordo. L'indicatore ha trovato una sorta di schema che sta emergendo solo ora e ce lo ha mostrato, tutto va bene.

Ma dobbiamo preparare i dati e addestrare il modello. Se un indicatore è sovraccarico, di solito significa che i valori delle barre passate stanno cambiando costantemente sulla base di dati più recenti, cioè c'è uno sguardo al futuro. E il modello alla fine impara da questi valori che guardano al futuro, non può uscirne niente di buono.
Anche se tali indicatori possono essere utilizzati come un obiettivo per l'apprendimento, lo stesso zigzag, per esempio, guarda 100 barre in avanti, ecco perché disegna in modo attraente le tendenze.

 
Dr.Trader:

Ma NA nelle colonne 46-51 - c'è davvero qualcosa che non va. O gli indicatori restituiscono tutto in un formato diverso e hanno bisogno di un codice diverso appositamente per inserirli nella tabella.

Oppure - questi indicatori restituiscono solo NA da soli; forse è necessaria una finestra di larghezza maggiore; oppure restituiscono sempre NA per l'ultima barra e poi sostituiscono NA in base ai dati della nuova barra, il che è un ridisegno, e male.

Ho controllato, sembra che ci sia un overdrawing. Per l'ultima barra l'indicatore nextCandlePosition restituisce sempre NA. E poi, nella barra successiva, sostituisce NA con qualcosa che sembra giusto. @mytarmailS Prova di nuovo il tuo primo codice, ma senza questo indicatore e allena il modello, penso che il risultato sarà peggiore.

Ho corretto il mio script per prendere il penultimo valore di nextCandlePosition invece dell'ultimo, ora non ci saranno NA nelle ultime righe della tabella.

 
Dr.Trader:

Per il trading semplice questo è abbastanza eccellente, sono d'accordo. L'indicatore ha trovato una sorta di schema che è appena emerso e ce lo ha mostrato, tutto va bene.

Ma dobbiamo preparare i dati e insegnare il modello. Se l'indicatore ridisegna, di solito significa che i valori delle barre precedenti stanno cambiando costantemente sulla base di dati più recenti, cioè c'è uno sguardo nel futuro. E il modello alla fine impara da questi valori che guardano al futuro, non può uscirne niente di buono.
Anche se tali indicatori possono essere utilizzati come obiettivo per l'apprendimento, lo stesso zigzag, per esempio, guarda 100 barre in avanti, per questo disegna in modo attraente le tendenze.

Usiamo un semplice esempio.

1. Disegniamo una lisciatura di Hodrick-Prescott. È ridisegnato.

Sulla barra corrente la tangente guarda in alto. Sulla barra successiva la tangente punta verso il basso - l'indicatore si ridisegna tenendo conto dei cambiamenti attuali. Previsione di un passo avanti - verso il basso.

2. Disegnare la tangente.

Sulla barra attuale la tangente tende verso l'alto. Sulla barra successiva la tangente guarda verso l'alto - l'indicatore non ha ancora raggiunto i cambiamenti.

Considerate che l'indicatore HP smette di ridisegnare da qualche parte a 10-15 barre.

La tua scelta e perché?

 
SanSanych Fomenko:

La tua scelta e perché?

Nel trading a mano - posso supporre che ci sono buone strategie utilizzando entrambi questi indicatori. Non conosco nessuna di queste strategie, quindi non farei scambi con loro.

Nell'apprendimento automatico - sceglierò la procedura guidata. L'indicatore lagging stupido è meglio di qualsiasi indicatore di ridisegno.

 
Dr.Trader:

Controllato, sembra che ci sia un overdrawing. Per l'ultima barra l'indicatore nextCandlePosition restituisce sempre NA. E poi nella prossima barra sostituisce NA con qualcosa di necessario. @mytarmailS Prova di nuovo il tuo primo codice, ma senza questo indicatore e allena il modello, penso che il risultato sarà peggiore.

Ho corretto il mio script per prendere il penultimo valore di nextCandlePosition invece dell'ultimo, ora non ci saranno NA nelle ultime righe della tabella.

Ho scritto che ho cancellato circa sei dei migliori predittori per rimuovere solo quelli che potrebbero sovraverniciare, ma la precisione è scesa di circa il 3%, probabilmente sono tutti sovraverniciati...

Allora, hai già addestrato il modello? Forse dovresti iniziare con alcune migliaia per provarlo invece di contarne 50k in una volta sola?

 
anche se quello che può essere ridisegnato lì non lo so, la stragrande maggioranza delle formazioni candlestick ha solo tre opzioni di uscita TRUE,FALSE,NA
 
mytarmailS:

Sì ho scritto che ho rimosso circa sei dei migliori predittori per rimuovere solo quelli che possono ridisegnare, ma la precisione è scesa letteralmente del 3%, ci probabilmente tutti redraw ...

Ho preso il tuo codice, rimosso 6 indicatori ottenuti da nextCandlePosition (X27), ho ottenuto una precisione del 52% invece del 100%. Su indici leggermente diversi per l'addestramento, la precisione è talvolta inferiore al 50%. Tutto sommato - casuale.

mytarmailS:
anche se quello che potrebbe essere ridisegnato non lo so, ci sono solo tre uscite TRUE,FALSE,NA nella stragrande maggioranza delle formazioni candlestick

Usando nextCandlePosition - si ottengono valori veramente rilevanti per la prossima barra, qui guardando nel futuro di 1 passo.

Quindi non ha funzionato.

 
Dr.Trader:

Ho preso il tuo codice, rimosso 6 indicatori ottenuti da nextCandlePosition (X27), ho ottenuto una precisione del 52% invece del 100%. Su indici leggermente diversi per l'addestramento, la precisione è talvolta inferiore al 50%. In generale - casuale.

Usando nextCandlePosition - si ottengono i valori veramente rilevanti per la prossima barra, qui guardando nel futuro di 1 passo.

In generale non funziona.

Beh, è un bene che tutto si sia chiarito, non credevo davvero al Graal.

 

C'è un nuovo e molto promettente pacchetto RKEEL gateway to KEEL.

Buona fortuna

KEEL: Software tool. Evolutionary algorithms for Data Mining
  • www.keel.es
KEEL contains classical knowledge extraction algorithms, preprocessing techniques, Computational Intelligence based learning algorithms, evolutionary rule learning algorithms, genetic fuzzy systems, evolutionary neural networks, etc.