Funzioni di fitness personalizzate per l'ottimizzazione
L'ottimizzazione del cBot è il processo di determinazione dei migliori valori possibili dei parametri per un cBot prima di distribuirlo per il trading dal vivo. In cTrader, puoi ottimizzare i cBot rispetto a un'ampia gamma di criteri integrati come massimizzare i profitti o minimizzare il drawdown del capitale netto. Tuttavia, puoi anche scrivere le tue funzioni di fitness per l'ottimizzazione, il che può essere utile se desideri applicare criteri di prestazione personalizzati a un cBot. In questo articolo e nel video corrispondente, discutiamo come funzionano le funzioni di fitness personalizzate.
Nota che questo articolo non copre il processo di ottimizzazione del cBot utilizzando criteri integrati.
Definire funzioni di fitness personalizzate
Una funzione di fitness personalizzata è semplicemente un override del metodo GetFitness().
1 2 3 4 | |
L'override deve accettare un singolo argomento del tipo GetFitness args per poter essere considerato una funzione di fitness personalizzata.
Scrivere una funzione di fitness personalizzata
Poiché il metodo GetFitness() deve restituire un double, il corpo del metodo deve contenere un calcolo che risulti in un valore di questo tipo.
Ad esempio, possiamo scrivere una semplice funzione di fitness personalizzata che eleva al quadrato il numero totale di operazioni in attivo effettuate da un cBot e poi divide questo valore per il valore totale delle operazioni in perdita. In questo modo, allochiamo più peso alle operazioni in attivo e, in un certo senso, permettiamo al cBot ottimizzato di effettuare alcune operazioni rischiose.
Ecco come si presenterebbe la nostra funzione di fitness.
1 2 3 4 | |
A questo punto, possiamo aggiungere l'override a qualsiasi cBot desideriamo, quindi salvarlo e compilarlo.
Utilizzare una funzione di fitness personalizzata nell'ottimizzazione
Dopo aver aggiunto la nostra funzione, dobbiamo aggiungere un'istanza del cBot scelto e poi passare alla scheda Backtesting. Per condurre l'ottimizzazione utilizzando la nostra funzione personalizzata, tutto ciò che dobbiamo fare è aprire la sezione Criteri di ottimizzazione e selezionare l'opzione Personalizzato. Successivamente, possiamo eseguire l'ottimizzazione come di consueto.
Durante l'ottimizzazione, punteggi di fitness più elevati verranno assegnati alle esecuzioni durante le quali il cBot ha massimizzato il rapporto tra il numero di operazioni in attivo al quadrato e il numero di operazioni in perdita.
Modificare la funzione di fitness personalizzata
Possiamo anche tornare alla nostra funzione personalizzata e modificarla come segue.
1 2 3 4 5 6 7 8 9 10 11 | |
Questa funzione segue ancora l'algoritmo precedente ma applica il calcolo personalizzato solo se sono state effettuate più di 20 operazioni da un cBot. In qualsiasi altro caso, la funzione restituisce il double più basso possibile. In teoria, questo dovrebbe migliorare i risultati riducendo la possibilità di distorsione statistica.
Se ricompiliamo il bot ed eseguiamo nuovamente l'ottimizzazione, dovremmo vedere diverse esecuzioni ottenere un punteggio di fitness molto basso a causa del basso numero di operazioni totali effettuate dal cBot.
Infine, vogliamo minimizzare la diminuzione del capitale netto pur continuando a incoraggiare il trading attivo.
1 2 3 4 5 6 7 8 | |
Se eseguiamo nuovamente l'ottimizzazione, dovremmo vedere le migliori esecuzioni possibili data la nostra strategia di trading.
Le funzioni di fitness personalizzate forniscono uno strumento eccellente per determinare i migliori valori dei parametri possibili adatti al tuo approccio unico al trading.