Ottimizzazione nel tester di strategia - pagina 8

 

Ora l'esecuzione del test sull'esempio precedente ha un overhead di sistema di circa 1,5 secondi all'avvio per preparare tutti i dati (autorizzazione e sincronizzazione dei dati di calcolo). Il punto è che gli agenti di prova sono completamente indipendenti e disaccoppiati dal terminale, il che porta alla necessità di trasferire e sincronizzare completamente tutti i dati utilizzati.

Non possiamo dire che l'ottimizzatore genetico o il tester sia lento nei calcoli superveloci in alcuni secondi, poiché l'overhead del sistema ha una seria influenza sul tempo di calcolo finale. In calcoli lunghi di 20 secondi o più per esecuzione, l'impatto dell'overhead del sistema è ridotto a valori trascurabili.

Con ogni compilazione riduciamo questo tempo memorizzando la maggior parte dei dati direttamente negli agenti. Penso che risolveremo presto questo problema.

 
Urain:
GA di joo è già più veloce di quello standard, e quando si trasferisce il codice in CPP da Studio 10 (adattato alle CPU multi-core) l'accelerazione è altre 6 volte più veloce.

È senza ambiente di mercato che si può organizzare un calcolatore di velocità personalizzato per un compito specifico.

Ma quando si cerca di fare un motore di trading universale con la fornitura on-demand di qualsiasi poti di dati multi-valuta con calcolo automatico dei profitti/limiti e rapporti, la velocità cadrà immediatamente di 2-3-4 ordini di grandezza.

 
Renat:

Ora l'esecuzione di test sull'esempio precedente ha un overhead di sistema di circa 1,5 secondi all'inizio per preparare tutti i dati (autorizzazione e sincronizzazione dei dati di calcolo). Il punto è che gli agenti di prova sono completamente indipendenti e disaccoppiati dal terminale, il che porta alla necessità di trasferire e sincronizzare completamente tutti i dati utilizzati.

Non possiamo dire che l'ottimizzatore genetico o il tester sia lento nei calcoli superveloci in alcuni secondi, poiché l'overhead del sistema ha una seria influenza sul tempo di calcolo finale. In calcoli lunghi di 20 secondi o più per esecuzione, l'impatto dell'overhead del sistema è ridotto a valori trascurabili.

Con ogni build riduciamo questo tempo memorizzando la maggior parte dei dati direttamente negli agenti. Penso che risolveremo presto questo problema.

Renat:

Senza un ambiente di mercato, è possibile impostare un contatore rapido personalizzato per un compito specifico.

Ma quando si cerca di fare un motore di trading universale con fornitura su richiesta di qualsiasi dato multivaluta con calcolo automatico di profitto/limite e reporting, la velocità cala immediatamente di 2-3-4 ordini di grandezza.

Renat, non voglio dire che ci vuole tempo per preparare l'ambiente di mercato e altri "freni" inevitabili, ho scritto nella pagina precedente:

Molto probabilmente, una differenza così mostruosa è dovuta al fatto che il tester, oltre ai calcoli diretti FF, bisogno di scrivere registri, visualizzare informazioni, ecc, che è presente "frenata forzata"

2010.11.28 17:38:30 Core 1 genetic pass (424, 98130899813578) ha restituito il risultato 48.16 in 2059 ms
2010.11.28 17:38:30 Core 2 genetic pass (426, 990006720) avviato
2010.11.28 17:38:30 core 2 genetic pass (425, 56291461) ha restituito il risultato 26,67 in 2012 ms
2010.11.28 17:38:28 core 2 genetic pass (425, 56291461) avviato
2010.11.28 17:38:28 core 2 genetic pass (423, 1510001908) ha restituito il risultato 49.98 in 2028 ms
2010.11.28 17:38:28 core 1 passaggio genetico (424, 98130899813578) avviato
2010.11.28 17:38:28 core 1 genetic pass (422, 1668020166802) ha restituito il risultato 48.36 in 2013 ms
2010.11.28 17:38:26 core 2 genetic pass (423, 1510001908) avviato
2010.11.28 17:38:26 core 2 genetic pass (419, 99260769921339) ha restituito il risultato 49.22 in 1935 ms
2010.11.28 17:38:26 core 1 passaggio genetico (422, 1668020166802) avviato
2010.11.28 17:38:26 core 1 genetic pass (418, 32073563420604) ha restituito il risultato 26.13 in 1934 ms
2010.11.28 17:38:24 Tester genetico pass (421, 730000073) trovato nella cache con risultato 50.00
2010.11.28 17:38:24 Tester genetico pass (420, 2080000208) trovato nella cache con risultato 50.00
2010.11.28 17:38:24 Core 2 genetic pass (419, 99260769921339) avviato
2010.11.28 17:38:24 2010/11/28 17:38:24 Core 2 genetic pass (417, 99249619924961) ha restituito il risultato 49.26 in 2059 ms
2010.11.28 17:38:24 core 1 passaggio genetico (418, 32073563420604) avviato
2010.11.28 17:38:24 core 1 genetic pass (416, 2479846771) ha restituito il risultato 48.49 in 2309 ms
2010.11.28 17:38:22 core 2 genetic pass (417, 99249619924961) avviato

Cioè, ci vogliono più di 2 secondi per calcolare il FF nudo, e questo mentre non c'è nessun riferimento all'ambiente di mercato.

L'ottimizzatore risolve un compito semplice come f(x1,x2)=x1*x1+x2*x2 da qualche parte al 500° "passaggio" e continua a provare delle varianti poiché ha definito più di 1000 varianti da calcolare.

E non ci sono impostazioni per influenzare le capacità di ricerca dell'algoritmo, inoltre, il limite di 64 parametri ottimizzabili è frustrante.

 
Renat:

È possibile impostare un calcolatore di velocità personalizzato per un compito specifico senza un ambiente di mercato.

Ma quando si cerca di fare un motore di trading universale con la fornitura di qualsiasi dato multivalutario su richiesta con calcolo automatico dei profitti/limiti e rapporti, la velocità cadrà immediatamente di 2-3-4 ordini di grandezza.

Non ho intenzione di discutere, ma sarebbe bene espandere i parametri di controllo dell'algoritmo, le stesse impostazioni di uscita della ricerca e il numero di parametri di ricerca.

Noi qui a mql5 stiamo lavorando su algoritmi per cercare 3000 parametri, e non è il limite, naturalmente non nella codifica binaria ma nel piano continuo.

E hai ancora un SRR nelle tue mani.

Ho provato a farlo in codice binario, ma GA perde in tal caso su mql5. La ricerca continua è buona perché essa stessa riduce il passo alla convergenza. Inoltre non abbiamo bisogno di risorse per la codifica/decodifica. Beh, in generale abbiamo bisogno di test corretti, è troppo presto per dire qualcosa di sicuro.

 
L'ottimizzatore genetico può essere reso più personalizzabile + l'overhead del sistema può essere ridotto al minimo.
 
Renat:
L'ottimizzatore genetico diventerà probabilmente più personalizzabile + ridurremo al minimo l'overhead del sistema.

Grazie mille. Questo è in realtà molto importante, più importante di quanto molti possano pensare.

E speriamo che prima o poi ci dimenticheremo anche di "Threshold 64".

 

Nella nuova build 366 (in uscita lunedì) abbiamo ridotto l'overhead del sistema a valori minimi.

L'esperto di genetica di cui sopra trascorre ora tra 200 e 300 ms invece di 2 secondi per passaggio.

 
joo:

Grazie mille. È davvero molto importante, più importante di quanto molti possano pensare.

E speriamo che prima o poi ci dimenticheremo anche di Threshold 64.

Lascia perdere subito, a 4 parametri a 8 cifre il tester dà un avviso che il sovradimensionamento ha superato il lungo.

Quindi, per esigenze diverse dal testare gli EA, scrivete un ottimizzatore personalizzato.

E 64 parametri sono sufficienti per ottimizzare gli EA.

 

Sì, ho letto il thread, dove prendono i consiglieri con così tanti parametri:)

 
marker:

Sì, ho letto il thread, dove prendono i consiglieri con così tanti parametri:)

Alcuni EA MT standard non hanno nemmeno abbastanza overshoot.
Motivazione: