L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 680
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Sul tema di come trasferire i neuroni da R a mql:
L'ho fatto con il pacchetto nnet. Vedihttps://cran.r-project.org/web/packages/nnet/index.html(sorgente del pacchetto: nnet_7.3-12.tar.gz). C'è la cartella src / nnet.c nell'archivio.
Abbiamo bisogno della funzione fpass, le prime linee prima di thisError = 0.0 (questo è l'inizio del calcolo dell'errore per il backprop, non c'è bisogno della semplice predizione)
Questo è il codice che possiamo usare nel nostro EA -
questo codice funzionerà solo con il parametro del modello skip = FALSE
Se non è così, o viene usato un softmax - cercate le differenze nella funzione fpass()
i pesi (array nnet_weights) dovrebbero essere copiati da R stesso dopo l'allenamento
Un altro piccolo articolo introduttivo sul rinforzo, mentre il punto è
Sarebbe interessante organizzare una piccola sessione di lavoro di gruppo e di brainstorming su mql e condividere l'esperienza.
https://proglib.io/p/trade-learning/
A mio parere, l'apprendimento per rinforzo di solito dà un modello con una sporgenza molto grande, e la convalida incrociata non è la risposta in questo caso. Ci deve essere qualche meccanismo speciale all'interno del modello stesso contro l'overfitting.
Per coloro che non hanno familiarità con questo argomento, brevemente: invece della solita valutazione del modello (accuratezza, r2, logloss, ecc.), viene creata una speciale funzione di fitness con una propria logica di valutazione del modello. Tale funzione di fitness può per esempio calcolare il profitto di un modello durante il trading, o la sharperatio. E i parametri del modello sono selezionati da un algoritmo genetico.
È interessante che l'ottimizzatore in MT4 e MT5 funziona anche sul principio dell'apprendimento con rinforzo - ad ogni barra (o anche tick) l'Expert Advisor riceve i valori attuali del prezzo e degli indicatori, prende alcune decisioni, e la stima finale dell'EA viene calcolata come risultato del trade. I parametri dell'Expert Advisor sono selezionati dalla genetica per aumentare la stima.
A giudicare dagli Expert Advisors disponibili gratuitamente per MT5, possiamo vedere chiaramente che questo metodo di apprendimento causa molte "perdite". Ma a volte anche i buoni EA sono buoni.
A mio parere, l'apprendimento per rinforzo di solito dà un modello con una sporgenza molto grande, e la convalida incrociata non salverà in questo caso. Ci deve essere qualche meccanismo speciale all'interno del modello stesso contro l'overfitting.
Per coloro che non hanno familiarità con questo argomento, brevemente: invece della solita valutazione del modello (accuratezza, r2, logloss, ecc.), viene creata una speciale funzione di fitness con una propria logica di valutazione del modello. Tale funzione di fitness può per esempio calcolare il profitto di un modello durante il trading, o la sharperatio. E i parametri del modello sono selezionati da un algoritmo genetico.
La cosa interessante è che l'ottimizzatore in MT4 e MT5 funziona anche sul principio di apprendimento con rinforzo - ad ogni barra (o anche tick) l'Expert Advisor riceve i valori attuali dei prezzi e degli indicatori, prende alcune decisioni, e la stima finale dell'Expert Advisor è il risultato del trading. I parametri dell'Expert Advisor sono selezionati dalla genetica per aumentare la stima.
A giudicare dagli Expert Advisors disponibili gratuitamente per MT5, possiamo vedere chiaramente che questo metodo di apprendimento causa molte "perdite". Ma a volte i buoni EA sono anche buoni.
È una buona analogia con l'ottimizzatore, il mio precedente bot era su questo ma è troppo semplice
Ma in generale non lo è, RL se non si oppone alla genetica, ne sottolinea i vantaggi, per esempio la possibilità di lavorare su processi non stazionari. In particolare è possibile utilizzare funzioni di fitness non grezze, grazie alle quali il modello impara costantemente mentre corre e fa passi casuali. E come ottimizzatore usiamo il ripieno NS (non la genetica).
Lì è un po' più complicato, ma non ho ancora finito di leggere il libro.
Quindi la tua affermazione su genetica, ottimizzatore e RL non è corretta.
*un momento di emozione e filosofia e tutta quella roba*
Immaginate una giornata limpida e soleggiata. Sei seduto sull'erba accanto a uno stagno, una calda brezza primaverile soffia, lasciando increspature nell'acqua, il suono delle anatre si sente da qualche parte nelle vicinanze. I pesci nuotavano sott'acqua, a volte toccando la superficie con le pinne e facendo dei cerchi nell'acqua. Il suo vicino stava raccogliendo l'acqua e suo nipote lanciava pietre nell'acqua, inseguendo le rane da una parte all'altra. Dall'altra parte dello stagno, un uomo lava la sua auto.
Il prezzo è come le onde sull'acqua per tutto il trambusto ma anche durante una tempesta. Possiamo seguire le onde e cercare di indovinare quando l'acqua salirà o scenderà in un determinato punto, ma se non seguiamo l'ambiente, ci sbaglieremo la maggior parte delle volte.
Il valore del prezzo futuro non dipende dai movimenti di prezzo passati, ma dai processi globali che hanno causato i movimenti di prezzo passati e ne causeranno di nuovi.
È necessario monitorare non solo le onde sull'acqua, ma anche il vento, la traiettoria dei pesci, il secchio del vicino, ecc.
Di conseguenza, se si hanno informazioni su tutti i processi globali che influenzano il prezzo, si può imparare a prevedere e qualsiasi modello semplice del secolo precedente andrà bene.
Il problema è che di solito c'è solo un grafico dei prezzi e non è sufficiente.
Qui come collegare RL e NN
e un vid, c'è una parte 2 in più.
Questo è tutto, non sto più spammando, chi è interessato può leggerlo.
Tutto è semplice con le reti neurali in MT. C'è una libreria CNTK di Microsoft. È 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 sul mio blog.
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é è originariamente sbagliato