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

 
Sto iniziando un argomento sull'uso di Python nella formazione nel forum dove vivo. Descriverà tutto ciò di cui un trader potrebbe aver bisogno per sviluppare un MTS. Non ci saranno strategie preconfezionate. Il compito è quello di trovare un "algoritmo" per creare MTS redditizio. E non importa quali metodi saranno usati. La cosa principale è che devono essere utili. Il link sarà nel mio newsfeed.
 
Grigoriy Chaunin:
Tutto è semplice con le reti neurali in MT. C'è una libreria di Microsoft CNTK. È implementato per Python, C# e C++. Tutta l'analisi e l'addestramento della rete è fatta in Python, mentre il C++ è usato per scrivere una DLL che carica la rete addestrata ed esegue i calcoli usando la rete. Secondo me questa è l'opzione migliore. La seconda opzione, il collegamento di Python a MT. Ho scritto una semplice libreria per questo. Biblioteca. Lo colleghiamo e possiamo usare tutto ciò che è disponibile in Python. E c'è un sacco di roba disponibile. Mi sto chiedendo se dovrei iniziare a scrivere di apprendimento automatico nel mio blog.
Potresti spiegare una cosa, dopo l'inizializzazione di uno script si blocca in memoria? Cioè, i moduli caricati dallo script python dovrebbero anche stare in memoria, giusto?
 
Sì. Il codice MQL dovrebbe chiamare le funzioni dello script Python ad ogni tick.
 
Maxim Dmitrievsky:

sarebbe interessante leggere delle strategie e dei pensieri/esperienze personali... per me personalmente

perché la maggior parte delle cose che scrivono qui sono solo stronzate sull'attraversare un mucchio di biblioteche e su cosa sia meglio scrivere... è un'epidemia, e tutto va sprecato.

Anche se l'idea di base è stata espressa da fxsaber molto tempo fa - con lo stesso approccio l'argomento potrebbe anche essere chiuso, perché è sbagliato fin dall'inizio

Sono d'accordo.

L'argomento si è trasformato in una completa spazzatura senza esempi concreti o teoria.

Cerchiamo di rimediare alla situazione.

Per cominciare - consiglio a tutti di leggere come definire una dimensione del campione per la previsione (vedi file allegato).

 
Alexander_K2:

Sono d'accordo.

L'argomento si è trasformato in una completa spazzatura senza esempi concreti o teoria.

Sistemiamo la situazione.

Per cominciare - consiglio a tutti di leggere come determinare la dimensione del campione per le previsioni (vedi file allegato).

Grazie Alexander, forse ne ricaverai qualcosa di utile, lo leggerò

 
Alexander_K2:

Sono d'accordo.

L'argomento si è trasformato in una completa spazzatura senza esempi concreti o teoria.

Sistemiamo la situazione.

Per cominciare - suggerisco a tutti di leggere come determinare la dimensione del campione per le previsioni (vedi file allegato).

Un articolo meraviglioso nella sua essenza. I risultati delineati nell'articolo sono molto carenti. È la mancanza di tale lavoro che dà una base per prosperare sul ramo "spazzatura dentro, spazzatura fuori".


Ma l'articolo è presentato nella tradizione condizionale a la soveticus - bella teoria senza uso pratico: non c'è codice.

 

Al momento, c'è un modello stabile. Ha ancora bisogno di lavorare, ma è occupato con altri compiti.

Input = prezzo + 13, 26 yema;

Preprocessing, output = sigmoide (max, min, close), delta (open-close), derivata (max, min, close), logaritmo della derivata (max, min, close), detrend (close-eme13, close-eme26), yema(13, 26), derivata yema(13, 26); Convertire dataset in dataset timeseries (1 candela + 5 ultime). Totale 16 x 6 = 96 parametri.

Architettura:
BatchNormalization(96);
GRU(96, L2, Dropout=0.5, 'elu');
GRU(64, L2, Dropout=0.5, 'elu');
BatchNormalization(64, Dropout=0.3);
Dense(32, Dropout=0.3, 'elu');
Dense(16, 'elu');
Dense(8, 'elu');
Dense(3, 'softmax');
Ottimizzatore=Nadam;
Perdita=Crossentropia categoriale;

BouncedMA segnala l'uscita da una candela in avanti (sopra nel ramo);

Stime: perdita ~0,7-0,8; precisione ~0,55;
Ma queste stime non parlano della qualità dei segnali del modello. Sono più bassi, a causa del fatto che i segnali sono formazione = 1.0, 0.95, 0.0, -0.95, -1.0, E la previsione della classe buy/sell oscilla ~abs(0.45, 0.7).
Inoltre, su un set di dati di 5000 linee, l'addestramento funziona su 0,8 parti, il che significa che il modello non vede nemmeno i dati dell'ultima quotazione (~1000 linee). La previsione viene fatta sulle ultime 100 candele.

Pronosis

modello

perditaacc

Come potete vedere, l'allenamento può essere fermato a ~45 epoche.

prevedere

Codice, Indicatore.

 
Vizard_:

)))

Apprendimento con rinforzo = apprendimento senza insegnante. Un algoritmo molto avido.

Una Maximka strafatta entra in un casinò. Davanti a lui c'è un mucchio di macchine del "bandito con un braccio solo". Comincia a giocare con ognuno e registra i risultati.

Si scopre che una delle macchine è migliore e gioioso Maxim inizia a giocare solo con esso. Ma la sua felicità non durò a lungo...

http://www.machinelearning.ru/wiki/index.php?title=Reinforcement_learning


sì, i banditi che ho già superato :) possono fare epsilon avido e periodicamente correre da uno all'altro

 
 

Questo è un ottimo post. Grazie, non ci avevo mai pensato.

Va così -

I ) Prendiamo un neurone, lo facciamo commerciare in diretta, e allo stesso tempo prendiamo la sua configurazione. Il commerciante impazzisce con i suoi profitti, il commerciante comincia a muovere il prezzo contro di lui, ma è in qualche modo pronto per questo e continua a commerciare con profitto, il commerciante copia i commerci all'interbancario e questo fa impazzire i robot di scambio, cominciano ad andare lenti e il mercato globale va in rovina. L'agente interagisce con l'ambiente. È il commercio con rinforzo. Penso che in un recente lunedì qualche google stava testando i loro nuovi robot di trading con i rinforzi, questo si adatta perfettamente.

II ) Prendiamo un neurone, lo facciamo commerciare sulla storia. Trova i pesi ideali e la configurazione del neurone che gli permette di commerciare perfettamente sulla storia. Il rinforzo non funziona, è un apprendimento senza insegnante. E molto probabilmente sarà sovralimentato e fallirà.


In breve, il piano è di avere un centinaio di conti live, ognuno con un neuronc per un paio di giorni. La genetica raccoglie i risultati dei neuroni e raccoglie la loro nuova configurazione, generando nuovi robot ogni paio di giorni e poi aspettando i risultati per crearne di nuovi.