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

 
Roman #:

Spiegare come lavorare con la funzione di perdita
Come utilizzare la funzione obiettivo per la minimizzazione?

E la seconda domanda.
In Matlab la funzione fminsearch() utilizza l'algoritmo di Nelder-Mead.
Questo algoritmo non è presente in ENUM_LOSS_FUNCTION.
Possiamo contare di aggiungere questo algoritmo?

Il compito dell'addestramento di una rete neurale è quello di trovare un algoritmo che minimizzi l'errore sul campione di addestramento; a questo scopo si utilizza una funzione di perdita. Per calcolare la deviazione si utilizza il metodoLoss, che consente di specificare 1 dei 14 tipi di enumerazione diENUM_LOSS_FUNCTION.

I valori di deviazione ottenuti vengono poi utilizzati per affinare i parametri della rete neurale, utilizzando il metodoDerivative, che calcola i valori della derivata della funzione di attivazione e li scrive nel vettore/matrice passato.

Grazie alla possibilità di estendere le enumerazioni, è possibile aggiungere nuovi algoritmi in base alle necessità.

 
Renat Fatkhullin #:

Il compito dell'addestramento di una rete neurale è trovare un algoritmo che minimizzi l'errore sul campione di addestramento; a tale scopo si utilizza una funzione di perdita. Per calcolare la deviazione, si utilizza il metodoLoss, che consente di specificare 1 dei 14 tipi di enumerazioneENUM_LOSS_FUNCTION.

I valori di deviazione ottenuti vengono poi utilizzati per affinare i parametri della rete neurale, utilizzando il metodoDerivative, che calcola i valori della derivata della funzione di attivazione e li scrive nel vettore/matrice passato.

Grazie alla possibilità di estendere le enumerazioni, è possibile aggiungere nuovi algoritmi in base alle necessità.


L'ho capito con l'esempio del MAPE.

Pensavo che fosse una funzione di perdita che minimizza la funzione obiettivo.
E questo è solo un calcolo metrico.

vector Forecast = {28.252177870295327, 1.386017247821653, 1.321279511381957};
vector Fact     = {45.979999999999997, 1.710000000000000, 1.340000000000000};

double MAPE = Forecast.Loss(Fact,LOSS_MAPE);

Print(DoubleToString(MAPE,2) + " %");
19.63 %


Che è la stessa cosa nel codice

vector Forecast = {28.252177870295327, 1.386017247821653, 1.321279511381957};
vector Fact     = {45.979999999999997, 1.710000000000000, 1.340000000000000};

vector loss = {0.,0.,0.};

for(int i=0; i<3; i++)
   loss[i] = fabs(Forecast[i] - Fact[i]) / Fact[i];

double MAPE = loss.Mean()*100;

Print(DoubleToString(MAPE,2) + " %");
19.63 %



C'è poi una domanda sulla descrizione della documentazione.

C'è un errore nella descrizione?

ll

Forse sarebbe più corretto:
Calcola il valore delle perdite come metrica MSE, MAE, ecc...?
Dopo tutto, la funzione di minimizzazione delle perdite dovrebbe essere scritta da voi stessi.


E qui c'è una strana descrizione.

i

Документация по MQL5: Методы матриц и векторов / Машинное обучение / Loss
Документация по MQL5: Методы матриц и векторов / Машинное обучение / Loss
  • www.mql5.com
Loss - Машинное обучение - Методы матриц и векторов - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksey Vyazmikin #:

In cerca di compagni per un viaggio interessante ed emozionante lungo sentieri sconosciuti alla ricerca di misteriosi predittori/caratteri/segni.

Ho una mappa da usare per trovarli, ho bisogno di mani per tendere trappole e riflettere sulle abitudini e sull'alone di questi fenomeni sorprendenti.

Il viaggio che ci aspetta non è facile, lungo ma entusiasmante e sono sicuro che non mancheranno i trofei!

Se siete interessati, fate domande!

Tutto è già stato inventato prima di noi, quindi vorrei saltare sul treno.

Ora ci occuperemo delle reti neurali in metatrader e poi potremo rilassarci.

In generale, possiamo semplicemente acquistare futures sul gas e poi venderli.
 
Maxim Dmitrievsky #:
Tutto è già stato inventato prima di noi, quindi vorrei saltare sul treno.

Forse inventato, ma chiaramente non in superficie nelle fonti aperte.

Per la ricerca e la selezione dei predittori, sto sviluppando un approccio sistematico, cioè ci sarà una tipizzazione dei predittori, che si basano, tra l'altro, sui dati degli indicatori. Vorrei setacciare il codice base alla ricerca di elementi interessanti. In generale, nel mio paradigma c'è un concetto di "evento", qualcosa che può influenzare il prezzo, ed è descritto da predittori. Ci saranno diversi tipi di eventi, ad esempio "il prezzo ha rotto il livello" (che è generato dall'indicatore), e la descrizione di questi eventi è affidata a predittori responsabili del tempo, della storia dell'evento, della relatività dell'evento (normalizzazione) - sarà selezionato anche il sistema di coordinate.

Il metodo in sé funziona, permette di selezionare varianti interessanti, ma dobbiamo generare queste varianti.

Sto cercando persone per accelerare il processo e migliorare il pensiero critico e creativo.

Sì, non ci saranno persone interessate, sceglierò da solo - lentamente e noiosamente.

 
Aleksey Vyazmikin #:

Potrebbe essere inventato, ma chiaramente non in superficie nelle fonti aperte.

Per la ricerca e la selezione dei predittori sto sviluppando un approccio sistematico, cioè ci sarà una tipizzazione dei predittori, che si basano, tra l'altro, sui dati degli indicatori. Vorrei setacciare il codice base alla ricerca di elementi interessanti. In generale, nel mio paradigma c'è un concetto di "evento", qualcosa che può influenzare il prezzo, ed è descritto da predittori. Ci saranno diversi tipi di eventi, ad esempio "il prezzo ha rotto il livello" (che è generato dall'indicatore), e la descrizione di questi eventi è affidata a predittori responsabili del tempo, della storia dell'evento, della relatività dell'evento (normalizzazione) - sarà selezionato anche il sistema di coordinate.

Il metodo in sé funziona, permette di selezionare varianti interessanti, ma è necessario generare queste varianti.

Sto cercando persone che possano accelerare il processo e migliorare il pensiero critico e creativo.

Sì, non ci saranno persone interessate, ne sceglierò una - lentamente e noiosamente.

Ho già creato tutto questo
 
Aleksey Vyazmikin #:

Potrebbe essere inventato, ma chiaramente non in superficie nelle fonti aperte.

Per la ricerca e la selezione dei predittori sto sviluppando un approccio sistematico, cioè ci sarà una tipizzazione dei predittori, che si basano, tra l'altro, sui dati degli indicatori. Vorrei setacciare il codice base alla ricerca di elementi interessanti. In generale, nel mio paradigma c'è un concetto di "evento", qualcosa che può influenzare il prezzo, ed è descritto da predittori. Ci saranno diversi tipi di eventi, ad esempio "il prezzo ha rotto il livello" (che è generato dall'indicatore), e la descrizione di questi eventi è affidata a predittori responsabili del tempo, della storia dell'evento, della relatività dell'evento (normalizzazione) - sarà selezionato anche il sistema di coordinate.

Il metodo in sé funziona, permette di selezionare varianti interessanti, ma è necessario generare queste varianti.

Sto cercando persone che possano accelerare il processo e migliorare il pensiero critico e creativo.

Sì, non ci saranno persone interessate, sceglierò da solo - lentamente e noiosamente.

non dimenticate di aggiungere il tempo reale... o finirete come tutti gli altri :-)

a la 2 pcs: y=abs(sin(x))*sin(x) ; con frequenza di 1 giorno e 1 settimana; lo sfasamento è meglio calcolarlo in anticipo

perché da esso dipendono le probabilità di indicatori e incroci di linee.

a proposito, si trattava di un dannoso, odiato qui Fourier :-)

 
mytarmailS #:
Ho già creato tutto.

Sei così bravo!

E hai trovato un sacco di interessante e sostenibile?

Il problema con la soluzione di lavoro nel terminale è risolto?

 
Maxim Kuznetsov #:

non dimenticare di aggiungere l'ora reale... o finirai come tutti gli altri :-)

a la 2 pcs: y=abs(sin(x))*sin(x) ; con una frequenza di 1 giorno e 1 settimana; lo sfasamento è meglio calcolato in anticipo

perché da esso dipendono le probabilità di indicatori e incroci di linee.

Si trattava, tra l'altro, di un'idea dannosa, odiata qui da Fourier :-)

Beh, non sono intelligente, nelle mie fantasie.... Cosa significa "tempo reale"?

 
Aleksey Vyazmikin #:

0)Che bravo ragazzo che sei!

1)E hai trovato molte cose interessanti e sostenibili?

2)Il problema del lavoro della soluzione nel terminale è stato risolto?

0) Sì, sono così...)

1) Non ho ancora distribuito il tutto,
1. Ci sono problemi con la maledizione della dimensionalità e l'esplosione combinatoria, ma è risolvibile in teoria, a favore dell'accuratezza....
2. C'è un problema legato al fatto che l'algoritmo di ricerca è lento, molte cose devono essere scritte in C o C++, e non so come farlo.
3. Anche un algoritmo ottimizzato non sarà in grado di cercare i pattern in una grande quantità di dati, è necessario cercare i pattern localmente....
Ma in generale, se non funziona, non funziona niente....

2) Sì.


A proposito, la parola "evento" può essere sostituita dalla parola "regola".


 
Aleksey Vyazmikin #:

Beh, non sono intelligente, nelle mie fantasie..... Cosa intendi per "tempo reale"?

La probabilità che il prezzo attraversi una linea (e che si attivino i segnali dell'indicatore) dipende dall'ora del giorno e dal giorno della settimana.

È necessario aggiungere il tempo ciclico a NN e DL. Il modo più semplice è un'onda sinusoidale. Le dipendenze non sono lineari, quindi viene semplicemente quadrato, tenendo conto del segno. Ci sono due ingressi aggiuntivi che sono responsabili dei riferimenti temporali. Mezzanotte/Mezzogiorno è diverso dappertutto, quindi è meglio calcolare e dare la fase in anticipo. Questo è il collegamento del modello al mondo reale e al suo tempo.

Se non vengono dati esplicitamente, IMHO si otterrà una zucca o l'intero sistema cercherà di ottenerli e produrli da solo.