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

 
Aleksey Terentev:
Le mie soluzioni erano inizialmente basate su OpenNN (C++).
Ora ho imparato molte cose e sono passato a Keras (Python).

Principalmente mi occupo dell'apprendimento profondo della previsione dei problemi di classificazione.

Quindi abbiamo a che fare con la stessa area di MO. Keras è un buon pacchetto, specialmente da quando è stato portato in R.

Solo che non capisco la domanda di cosa?

Buona fortuna

 
Vladimir Perervenko:

Quindi abbiamo a che fare con la stessa area di MO. Keras è un buon pacchetto, specialmente da quando è stato portato in R.

Solo che non capisco la domanda di cosa?

Buona fortuna

Ho appena deciso di unirmi alla discussione. =)
 
Maxim Dmitrievsky:


Ora questo è interessante... significa che dovranno essere fatti ulteriori test, forse questa rn non è così significativa come si pensava prima

L'unico vantaggio è la selezione dei pesi nell'ottimizzatore allo stesso tempo degli altri parametri del sistema

Attualmente sto cercando di scoprire quanto bene calcola in una gamma di dati conosciuti. Tavola della moltiplicazione per esempio.

Aggiornamento.

Ulteriori esperimenti dopo aver cambiato l'Expert Advisor hanno mostrato i seguenti risultati rispetto al normale MLP 3-5-1.

Sono state usate diverse formule per i test:

//double func(double d1,double d2,double d3 ){return d1*d2;} //l'errore è 0-2%, perché la moltiplicazione è inerente alle formule. 2% è ottenuto perché l'ottimizzatore genetico non si ferma sempre ad una soluzione ideale. Ma esiste anche una soluzione assolutamente esatta con errore = 0.
//double func(double d1,double d2,double d3 ){return d1*d2*d3;}// errore 0-2% moltiplicazione è nelle formule, su MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1);}// errore 2-6%, su MLP 0,1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSin(d3);}// errore 2%, su MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSqrt(d3);}// 3-4% errore, su MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathPow(d2,.33)*MathSqrt(d3);}// errore 8-4%, a MLP 1.5%
//double func(double d1,double d2,double d3 ){return MathPow(d1,2)*MathPow(d2,.33)*MathSqrt(d3);}// errore 8-4%, a MLP 1.5%

La conclusione è che l'MLP regolare ha 2-3 volte meno errori del RNP di Reshetov. Forse parte di questo errore è dovuto al fatto che l'ottimizzatore genetico del terminale MT5 non si ferma ad una soluzione ideale.
 
elibrario:

Attualmente sto cercando di scoprire quanto bene conta all'interno di una gamma di dati conosciuti. Una tabella di moltiplicazione, per esempio.

Aggiornamento.

Ulteriori esperimenti dopo aver cambiato l'EA hanno mostrato i seguenti risultati, rispetto al normale MLP 3-5-1.

Sono state usate diverse formule per i test:

//double func(double d1,double d2,double d3 ){return d1*d2;} //l'errore è 0-2%, perché la moltiplicazione è inerente alle formule. 2% è ottenuto perché l'ottimizzatore genetico non si ferma sempre ad una soluzione ideale. Ma esiste anche una soluzione assolutamente esatta con errore = 0.
//double func(double d1,double d2,double d3 ){return d1*d2*d3;}// errore 0-2% la moltiplicazione è inerente alle formule, a MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1);}// errore 2-6%, a MLP 0,1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSin(d3);}// errore 2%, a MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSqrt(d3);}// 3-4% errore, a MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathPow(d2,.33)*MathSqrt(d3);}// errore 8-4%, a MLP 1.5%
//double func(double d1,double d2,double d3 ){return MathPow(d1,2)*MathPow(d2,.33)*MathSqrt(d3);}// errore 8-4%, a MLP 1.5%

In sintesi, possiamo concludere che la MLP regolare ha 2-3 volte meno errori della RNN di Reshetov. Forse parte di questo errore è dovuto al fatto che l'ottimizzatore genetico del terminale MT5 non si ferma ad una soluzione ideale.

Sì, risultati interessanti, forse un'enumerazione completa sarebbe più accurata
 
Maxim Dmitrievsky:

Sì, risultati interessanti, forse un superamento completo sarebbe più accurato
sarebbe più preciso, ma dopo qualche settimana o mese... 8 coefficienti di adattamento con 1% passo 1008= 100000000000000 iterazioni, e il terminale stesso passa alla genetica, con questo numero.
 
elibrario:
Lo sarebbe, ma dopo qualche settimana o mese... 8 coefficienti selezionabili con passo 1% 1008= 10000000000000000 iterazioni, e il terminale stesso passa alla genetica, con quel numero.

Potete dirmi, classificando MLP da alglib capisco che richiede almeno 2 uscite, come lavorare con questo? nessun aiuto o descrizione da nessuna parte... tinny )
 
Maxim Dmitrievsky:

Posso chiedere, classificare MLP da alglib capisco, richiede almeno 2 uscite, come lavorare con esso?)

Sì 2, dall'aiuto http://alglib.sources.ru/dataanalysis/neuralnetwo rks.php

Un caso speciale sono le reti neurali con strato di uscita lineare e normalizzazione SOFTMAX delle uscite. Sono utilizzati per i problemi di classificazione, in cui le uscite della rete devono essere non negative e la loro somma deve essere strettamente uguale a uno, il che permette di utilizzarle come probabilità di assegnare il vettore di input a una delle classi (nel caso limite le uscite della rete addestrata convergono a queste probabilità). Il numero di uscite di una tale rete dovrebbe essere sempre non inferiore a due (limitazione imposta dalla logica elementare).

Non l'ho ancora affrontato, sto ancora sperimentando con il lineare.
 
elibrario:

Sì, da http://alglib.sources.ru/dataanalysis/neuralnetworks.php riferimento

Un caso speciale sono le reti neurali con strato di uscita lineare e normalizzazione SOFTMAX delle uscite. Sono utilizzati per i problemi di classificazione, in cui le uscite della rete devono essere non negative e la loro somma deve essere strettamente uguale a uno, il che permette di utilizzarle come probabilità di assegnare il vettore di input a una delle classi (nel caso limite le uscite della rete addestrata convergono a queste probabilità). Il numero di uscite di una tale rete è sempre almeno due (limitazione dettata dalla logica elementare).


Ah, bene, cioè, alimentiamo la probabilità di uno o un altro risultato, per esempio probabilità di comprare 0,9, poi probabilità di vendere 0,1, un array servirà come buffer per le probabilità di comprare, un altro per vendere, li riempiamo con questi valori e dopo l'allenamento saranno usati per scaricare separatamente le probabilità di comprare e vendere, capisco, giusto?
 
Maxim Dmitrievsky:

Bene, in altre parole alimentiamo la probabilità di uno o un altro risultato, per esempio la probabilità di acquisto è 0.9, e per la vendita - 0.1. Una matrice servirà come buffer per le probabilità di acquisto, e l'altra per le probabilità di vendita e dopo la formazione in loro scarterà le probabilità separatamente, presumo corretto?

E da quello che ho letto - ho la stessa opinione.

Anche se non so quale sia il suo vantaggio... avendo 1 uscita, otteniamo anche delle probabilità - circa 0 (o -1) Buy, e circa 1 Sell. (o viceversa, a seconda di come ci si allena).

Può essere utile se ci sono 3 o più uscite? Dopo tutto, 1 uscita sarebbe difficile da usare.... per 3 o 4 compiti (sebbene si possano usare anche 0, 0,5 e 1 come classi Comprare, Aspettare, Vendere)

 
elibrario:

E da quello che ho letto - ho la stessa opinione.

Anche se non so quale sia il suo vantaggio... avendo 1 uscita, otteniamo anche delle probabilità - circa 0 (o -1) Buy, e circa 1 Sell. (O viceversa, a seconda di come ci si allena).

Potrebbe essere utile se ci sono 3 o più uscite? Allora 1 uscita sarebbe difficile da usare.... per 3 o 4 compiti (sebbene si possano usare anche 0, 0,5 e 1 come classi Comprare, Aspettare, Vendere)


Sì, probabilmente l'hanno fatto in modo che sia possibile avere più di 2 classi... allora probabilmente ci sarà più clustering e si potranno usare altri metodi come k-means :)
Motivazione: