Discussione sull’articolo "Creazione di criteri personalizzati di ottimizzazione degli Expert Advisor" - pagina 2
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
Stai dicendo che il codice è del tipo
if (balance < 3000) ExpertRemove();
non funziona?
Funziona. L'ho già capito. interrompe l'ottimizzazione ma visualizza comunque i risultati, per questo pensavo che non funzionasse.
Karlson:
Ma non è quello che ho detto. Che un'interruzione di questo tipo (che almeno prima funzionava) ha portato alla fine all'abbandono della genetica.
Karlson: È così.
Ma se si azzerano i risultati di OnTester() o si fa come sopra (assegnando il valore meno -777), allora la genetica può davvero comportarsi in modo imprevedibile, perché la selezione viene effettuata sui risultati proprio dal valore di ritorno di OnTester().
Nella MT4 esisteva una cosa del genere:
Sicuramente si può fare con l'aiuto degli strumenti MQL5, dato che gli sviluppatori hanno eliminato del tutto tali funzioni.
Naturalmente, tutto può essere copiato in Excel, ma vorrei approfittare della nuova piattaforma.
Abbiamo risolto le limitazioni: possiamo farlo con ExpertRemove().
Che ne dite di saltare i risultati inutili nel report?
Che ne dite di saltare i risultati inutili nel report?
Non è possibile farlo nel report standard e non è necessario (io sono contrario). Create il vostro report.
Ora è possibile generare un report in fase di ottimizzazione(https://www.mql5.com/it/docs/optimization_frames) nel formato desiderato.
E presto (hoo-hoo) sarà possibile gestire la genetica da soli.
Eccellente.
Grazie al mio precedente lavoro nel campo delle reti neurali e degli algoritmi genetici per la previsione dei futures, mi sono reso conto dell'importanza di una curva azionaria ragionevolmente rettilinea.
e ho scritto alcune routine per tenerne conto. È davvero una misura della "robustezza" di un sistema predittivo.
Realizzazioni di lavori pratici.
Il modulo sulla rettilineità è un buon inizio, ma incompleto. È possibile ottenere un'ottima valutazione con un profitto pari a zero. Quindi il profitto deve entrare nell'equazione. Aggiungere semplicemente una qualche misura al profitto totale non funziona.
non funziona. Si potrebbe ottenere una linea retta con un buon valore avendo alcune vittorie all'inizio, alcuni drawdown nel mezzo e alcune vincite migliori alla fine. In questo modo si otterrebbe una linea retta uniforme con un buon valore e si otterrebbe un certo profitto. Ma non è questo che stiamo cercando.
Vogliamo una linea di regressione che salga verso l'alto con un buon adattamento. Quindi, per rendere l'idea dell'utilizzo di una linea di regressione con la minor deviazione possibile, il coefficiente per la pendenza verso l'alto deve essere incorporato nell'equazione. Questo è ciò che
vogliamo vedere. Una retta di regressione con pendenza verso l'alto e un buon adattamento. Farò un tentativo per incorporarla. Suggerimenti e assistenza sono benvenuti :-)
Sto provando il codice CSTS.
Trovo questo risultato un po' strano:
Risultato Profitto #Tradizioni Fattore di Frofit DrawDown Payoff atteso Fattore di recupero
0.58 1237 84 1.26 12.70 14.74 0.93
0.57 1598 90 1.38 8.69 17.36 1.76
Ecco un altro esempio
0.61 3175 123 1.33 21.04 25.82 1.48
0.60 4460 145 1.49 11.32 30.77 2.56
Da tutti i punti di vista i valori della seconda linea sono migliori!!! Ma il punteggio è inferiore.
L'unica cosa che posso dedurre è che c'è una penalizzazione su molte operazioni. Io avrei voluto il contrario
E come ultimo punto. Sembra che ci sia esattamente una persona interessata a questo argomento: io.
Per approfondire la questione. Ho commesso un errore nel mio codice che ha fatto sì che gli ordini pendenti non venissero cancellati. Inoltre, ho avuto come risultato solo 5 ordini piazzati per un periodo di test di oltre 12 mesi. Con un buon profitto.
Questo ha fatto salire il risultato dell'ottimizzazione a oltre 100. Chiaramente il valore della "vincita media" era estremamente alto e ha portato a questo punteggio estremo. Tecnicamente è corretto, ma non ha alcun significato
nel contesto del backtesting. Quanto è probabile che trend così lunghi siano rappresentativi? Ho quindi pensato che il numero di operazioni dovesse essere incorporato nell'equazione in qualche modo.
Con alcune prove ed errori di modifica del codice sono arrivato a un metodo che produce risultati che ritengo utili.
modifiche:
// CSTS:
double tssf=real/teor;
if(tssf <= 0) return 0;
work = TesterStatistics( STAT_TRADES );
if( work <= 0) work = 1;
work = MathSqrt(work/4);
tssf = tssf * work;
se( tssf < 1 ) tssf = 0;
se(TesterStatistics(STAT_PROFIT) <= 0) tssf = 0;
return(tssf);
Il metodo originale è probabilmente buono per giudicare un sistema in esecuzione, ma fondamentalmente inutile per basare i parametri su un'esecuzione di backtest.
Eccomi di nuovo qui, il lupo solitario di questo universo :-)
Ho provato i Criteri personalizzati di rettilineità cercando di inserire nell'equazione la pendenza della linea retta calcolata. Così com'è può dare una valutazione molto alta su un profitto molto debole. La semplice aggiunta del profitto finale
nel calcolo non migliora la situazione. Nel tentativo di aggiungere la pendenza effettiva nell'equazione, ho modificato il codice come illustrato di seguito.
Non è una soluzione perfetta, ma si avvicina a ciò che voglio vedere. L'utilizzo del risultato insieme al saldo o al profitto funziona bene con questo codice
Eccomi di nuovo qui, il lupo solitario di questo universo :-)
Ho provato i Criteri personalizzati di rettilineità cercando di inserire nell'equazione la pendenza della linea retta calcolata. Così com'è può dare una valutazione molto alta su un profitto molto debole. La semplice aggiunta del profitto finale
nel calcolo non migliora la situazione. Nel tentativo di aggiungere la pendenza effettiva nell'equazione, ho modificato il codice come illustrato di seguito.
Non è una soluzione perfetta, ma si avvicina a ciò che voglio vedere. L'utilizzo del risultato insieme al saldo o al profitto funziona bene con questo codice
Per esempio, per gli algoritmi genetici, è necessario avere un buon algoritmo di fitness, e sicuramente creare un criterio personalizzato allineato a questo fitness.
Non sono sicuro che calcolare la pendenza della curva di equilibrio sia il modo migliore, dal momento che abbiamo diversi altri modi, comunque conta su di me per esplorare e discutere queste idee.