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

 
Anaxagor:

Sembra un complimento che viene dal produttore di questo equivoco.

Beh, usalo finché sono gentile :-) Non mi dispiace..... E il fatto che tu non abbia potuto capire l'articolo, mi fa persino piacere. Meno siamo, più siamo :-)

 

Ciao Maxim,

Se voglio aggiungere prezzi alti e bassi, allora devo solo cambiare SOLO la funzione calcsignal (). Ho ragione?

Il codice seguente è corretto? O devo fare altri cambiamenti nel codice EA o nel codice della libreria?

Inoltre, puoi dare un codice indicatore in questo codice?

void calcSignal ()

{

sig1 = 0;

per (int i = 0; i <ArraySize (ag1.agent); i ++)

{

CopyClose (_Symbol, 0.0, 100, ag1.agent [i] .inpVector);

normalizeArrays (ag1.agent [i] .inpVector);

}

per (int i = 0; i <ArraySize (ag1.agent); i ++)

{

CopyHigh (_Symbol, 0.0, 100, ag1.agent [i] .inpVector);

normalizeArrays (ag1.agent [i] .inpVector);

}

per (int i = 0; i <ArraySize (ag1.agent); i ++)

{

CopyLow (_Symbol, 0.0, 100, ag1.agent [i] .inpVector);

normalizeArrays (ag1.agent [i] .inpVector);

}

sig1 = ag1.getTradeSignal ();

}

 
Mmmm... programmazione triste
 
Maxim Dmitrievsky:
mde ... programmazione triste

Vuoi dire che il codice di cui sopra non è corretto o ti riferisci all'implementazione del codice GMDH? Il codice GMGH era solo un'implementazione approssimativa che ho trovato rapidamente. Ma non posso migliorarlo per ora. Penso che ci possano essere modi migliori per codificarlo, che proverò anche io.

Nel tuo codice sorgente attuale, ci sono molti agenti o variabili con nomi simili e operatori di punti multipli come " ag1.agent [i] .inpVector " che è una confusione per me fino a quando non passo attraverso l'intero codice...

 
FxTrader562:

Vuoi dire che il codice di cui sopra non è corretto o ti riferisci all'implementazione del codice GMDH? Il codice GMGH era solo un'implementazione approssimativa che ho trovato rapidamente... Ma penso che ci possano essere modi migliori per farlo... ma non lo faccio per ora

Nel tuo codice sorgente attuale, ci sono molti agenti o variabili con nomi simili e operatori di punti multipli come " ag1.agent [i] .inpVector " che è una confusione per me fino a quando non passo attraverso l'intero codice...

L'ho spiegato prima. Avete 100 predittori, quindi avete bisogno di copiare in questo array 25 diversi prezzi di chiusura, 25 diversi open, 25 high, 25 low. Totale 100

o fare 4 array di predittori, e copiare 1 close, 1 open,..... o qualsiasi altro valore di indicatori diversi

O aspettare un articolo, perché le comunicazioni sul forum richiedono troppo tempo (per me)

Riguardo a gdmh - ci sono molte implementazioni diverse, non ci sono problemi. Ma per il mio compito ho bisogno di ulteriori ricerche

 
Maxim Dmitrievsky:

L'ho spiegato prima. Avete 100 predittori, quindi avete bisogno di copiare in questo array 25 diversi prezzi di chiusura, 25 diversi open, 25 high, 25 low. Totale 100

o fare 4 array di predittori, e copiare 1 close, 1 open,..... o qualsiasi altro valore di indicatori diversi

O aspettare un articolo, perché le comunicazioni sul forum richiedono troppo tempo (per me)

Riguardo a gdmh - ci sono molte implementazioni diverse, non ci sono problemi. Ma per il mio compito ho bisogno di ulteriori ricerche

Sì, ho capito.

Inoltre, ho il vostro codice sorgente e quindi mi ci vorrà del tempo per capirlo e cambiarlo dato che non ci sono molti commenti. Inoltre, non sono un programmatore esperto. Quindi stavo solo cercando di accelerare il processo con il vostro aiuto :))

Comunque, aspetterò il tuo articolo con una spiegazione dettagliata.

Sì, per quanto riguarda GMDH come ho detto prima ci sono più approcci e più formule e quindi, di conseguenza è necessario scegliere uno che è applicabile per l'implementazione RDF. Ho semplicemente tradotto o convertito la formula generale di GMDH dal link di wikipedia al codice MQL5 che mi hai fornito prima.

Inoltre, ho dato sufficienti spiegazioni all'interno del codice per renderlo comprensibile. Ho provato a guardare in più codici python già prima di scrivere il codice MQL5, ma niente ha soddisfatto il mio bisogno. Ecco perché ho scritto il modo più semplice di GMDH usando una funzione e l'istruzione switch case.

 
FxTrader562:

Sì, ho capito.

Inoltre, ho il vostro codice sorgente e quindi mi ci vorrà del tempo per capirlo e cambiarlo dato che non ci sono molti commenti. Inoltre, non sono un programmatore esperto. Quindi stavo solo cercando di accelerare il processo con il vostro aiuto :))

Comunque, aspetterò il tuo articolo con una spiegazione dettagliata.

Sì, per quanto riguarda GMDH come ho detto prima ci sono più approcci e più formule e quindi, di conseguenza è necessario scegliere uno che è applicabile per l'implementazione RDF. Ho semplicemente tradotto o convertito la formula generale di GMDH dal link di wikipedia al codice MQL5 che mi hai fornito prima.

Inoltre, ho dato sufficienti spiegazioni all'interno del codice per renderlo comprensibile. Ho provato a guardare in più codici python già prima di scrivere il codice MQL5, ma niente ha soddisfatto il mio bisogno. Ecco perché ho scritto il modo più semplice di GMDH usando una funzione e l'istruzione switch case.

Viene descritto un caso lineare. Per esempio, stiamo cercando i migliori membri per la 1a linea, 2a, ecc. E poi aggiungere i migliori membri a una (nuova) variabile dalla formula. Nel caso di RDF non possiamo farlo, perché è un modello non lineare, quindi dobbiamo semplicemente aggiungere tutte le linee come variabili indipendenti agli ingressi, ad ogni giro di selezione

 
Maxim Dmitrievsky:

Viene descritto un caso lineare. Per esempio, stiamo cercando i migliori membri per la 1a linea, 2a, ecc. E poi aggiungere i migliori membri a una (nuova) variabile dalla formula. Nel caso di RDF non possiamo farlo, perché è un modello non lineare, quindi dobbiamo semplicemente aggiungere tutte le linee come variabili indipendenti agli ingressi, ad ogni giro di selezione

Puoi per favore darmi un codice di esempio esattamente dove stai cercando di implementare in modo che io possa aiutarti meglio?

Stai parlando di pesi come w1,w2, w3....? Queste sono le cose che devono essere calcolate e memorizzate in RDF durante l'addestramento quando alimentiamo x1.w1,x2.w2,x3.w3.... come input individuali.

Si noti che in realtà, quando si considerano le funzioni, non esistono funzioni lineari e non lineari, perché si può sempre spezzare una funzione non lineare in infinite funzioni lineari. Ecco perché stiamo usando piccoli pezzi di funzioni lineari come input e possiamo espanderlo a qualsiasi numero se necessario. Ma non posso dire molto sulla parte di codifica per ora.

Vi prego di fornirmi il codice di RDF dove siete bloccati in modo che io possa capire meglio.

O facendo riferimento al mio codice puoi spiegare cos'altro stai cercando, perché nella mia comprensione ho convertito la formula GMDH in codice. Quindi, se è necessario, allora possiamo portare la casualità o semplicemente espandere i componenti della funzione di base a qualsiasi numero e scegliere in modo casuale.

 
FxTrader562:

Puoi per favore darmi un codice di esempio esattamente dove stai cercando di implementare in modo che io possa aiutarti meglio?

Stai parlando di pesi come w1,w2, w3....? Queste sono le cose che devono essere calcolate e memorizzate in RDF durante l'addestramento quando alimentiamo x1.w1,x2.w2,x3.w3.... come input individuali.

Si noti che in realtà, quando si considerano le funzioni, non esistono funzioni lineari e non lineari, perché si può sempre spezzare una funzione non lineare in infinite funzioni lineari. Ecco perché stiamo usando piccoli pezzi di funzioni lineari come input e possiamo espanderlo a qualsiasi numero se necessario. Ma non posso dire molto sulla parte di codifica per ora.

Vi prego di fornirmi il codice di RDF dove siete bloccati in modo che io possa capire meglio.

O facendo riferimento al mio codice puoi spiegare cos'altro stai cercando, perché nella mia comprensione ho convertito la formula GMDH in codice. Quindi, se è necessario, allora possiamo portare la casualità o semplicemente espandere i componenti della funzione di base a qualsiasi numero e scegliere in modo casuale.

Per trovare i coefficienti lineari dobbiamo usare la regressione lineare, ma possiamo anche farlo direttamente con RF. Sto leggendo ora un libro interessante su questo argomento

Questo libro sviluppa diversi polinomi sotto forma di reti strutturate ad albero, inclusi polinomi di rete algebrici, polinomi di rete kernel, polinomi di rete ortogonali, polinomi di rete trigonometrici, polinomi di rete razionali e polinomi di rete dinamici.
 
Maxim Dmitrievsky:

Per trovare i coefficienti lineari dobbiamo usare la regressione lineare, ma possiamo anche farlo direttamente con RF. Sto leggendo ora un libro interessante al riguardo.

Ok, se volete l'implementazione esatta di GMDH e abbiamo bisogno di espandere ulteriormente il mio codice con un valore più alto di m, allora posso farlo. Ma quello che voglio che tu faccia è prima implementarlo con il valore m di 3 e testarlo nel timeframe M1, perché i prezzi di chiusura delle candele nel timeframe M1 sono molto piccoli e quindi, romperlo in 3 parti è sufficiente per raggiungere il nostro obiettivo.

Quindi in questo modo, se potete implementare GMDH e funziona in qualche modo nel timeframe M1, allora per timeframe più alti possiamo espandere il ciclo for a valori più grandi di m come 10 o 15 ecc.

A proposito, nella tua attuale implementazione del codice hai usato il trucco del kernel quando hai usato il seguente codice?

#define _kernel(ker,grado) (cos(MathPow(ker,grado))

Ho fatto una ricerca completa, ma non sono riuscito a trovare quale funzione kernel hai usato nel tuo codice perché volevo testare diversi kernel prima di implementare il mio algo:

http://crsouza.com/2010/03/17/kernel-functions-for-machine-learning-applications/

Puoi fornirmi qualche riferimento su quale funzione kernel è questa o è solo la tua formula?

Inoltre, ho implementato con successo l'algoritmo di simulazione delle candele nel vostro codice attuale. Ma può funzionare solo dopo una settimana di simulazioni. Quindi volevo solo confermare alcune cose prima di iniziare le simulazioni.

1.C'è un limite a quanti modelli uso. Posso usare 1 milione di modelli?

2. C'è un limite al numero di agenti che utilizzo. Posso usare 1000 agenti?

3. Se i dati addestrati sono troppo grandi, allora rallenteranno le decisioni di trading? Voglio dire che se il file ".rl" sarà troppo grande, allora approssimativamente quanto ritardo nell'esecuzione del trade possiamo aspettarci? Hai fatto qualche calcolo su questo in termini di numero di iterazioni al secondo o di ciclo for ecc.

4.Fondamentalmente, sto usando i vostri modelli e agenti per creare candele casuali durante la formazione che saranno memorizzati in file ".rl" per il trading LIVE. I file ".rl" in questa versione sono simili ai file "Mtrees" della vostra versione precedente.

Ho intenzione di eseguire una simulazione di circa 10-100 milioni di candele in totale, il che equivale a circa 280 anni a 2800 anni di ottimizzazione. Ma prima di eseguire l'allenamento volevo controllare più cose sul codice e sulla rapidità di esecuzione, ecc.

Quando avete tempo libero, vi prego di esaminare le mie domande di cui sopra e di fornirmi alcune risposte che possano aiutarmi a calcolare ulteriormente....