Vai al contenuto

Ottimizzare un cBot in cTrader

Questo articolo spiega come ottimizzare i robot di trading in cTrader Windows e Mac.

Suggerimento

Puoi imparare come effettuare il backtesting e ottimizzare i cBot guardando i video nelle guide passo-passo.

Può essere difficile specificare un set ottimale di parametri iniziali per un cBot. Fortunatamente, cTrader offre una funzionalità integrata di ottimizzazione dei cBot. L'ottimizzazione prende il tuo codice e lo esegue più volte, con ogni passaggio basato su vari valori dei parametri. Quindi ti presenta una serie di risultati personalizzabili che puoi utilizzare per definire la configurazione ottimale dei parametri.

Per utilizzare questa funzionalità, seleziona un'istanza di cBot e passa alla scheda Ottimizzazione.

Image title

Successivamente, definisci il periodo di backtesting per l'ottimizzazione utilizzando i calendari a discesa o trascinando il dispositivo di scorrimento.

Image title

Impostazioni di ottimizzazione

Poiché l'ottimizzazione è essenzialmente solo una serie di backtest, puoi specificare le impostazioni di backtesting in modo simile a come viene fatto nella scheda Backtesting.

Parametri di ottimizzazione

Fai clic sul pulsante Parameters a sinistra del dispositivo di scorrimento del calendario. Dovresti vedere la seguente finestra.

Image title

In essa, seleziona i flag accanto ai parametri del cBot che desideri ottimizzare. Il parametro Timeframe è disponibile per tutti i cBot.

Criteri di ottimizzazione

Premi il pulsante Criteria situato a destra del pulsante Optimisation parameters. cTrader aprirà la seguente scheda.

Image title

I criteri di ottimizzazione definiscono come l'algoritmo di ottimizzazione classifica il tuo risultato dopo il backtesting. Puoi scegliere tra le seguenti opzioni:

  • Standard - una serie di criteri predefiniti che puoi mirare a minimizzare o massimizzare. Per farlo, scegli un criterio da un menu a discesa a destra e seleziona la direzione di ottimizzazione nel relativo menu a sinistra. Per aggiungere un nuovo criterio, fai clic su Aggiungi criterio.
  • Personalizzato - un criterio personalizzato definito all'interno del codice del tuo cBot utilizzando il metodo GetFitness() come mostrato negli esempi seguenti.
1
2
3
4
5
protected override double GetFitness(GetFitnessArgs args)
{
    // Maximise the winning trades/losing trades ratio.
    return args.WinningTrades / args.LosingTrades;
}
1
2
3
4
5
6
protected override double GetFitness(GetFitnessArgs args)
{
    /* Maximise the winning trades/losing trades ratio
    while giving winning trades more weight. */
    return Math.Pow(args.WinningTrades, 2) / args.LosingTrades;
}

Calcoli multi-criterio

Se vengono utilizzati più criteri per calcolare l'efficacia dei parametri, cTrader li utilizzerà tutti in modo uguale per calcolare il valore di fitness per un passaggio di ottimizzazione.

In particolare, la piattaforma moltiplica i valori di tutti i criteri di massimizzazione e separatamente moltiplica i valori di tutti i criteri di minimizzazione. Successivamente, divide il valore di moltiplicazione assoluto per i criteri di massimizzazione per lo stesso valore per i criteri di minimizzazione.

Il seguente pseudocodice mostra esattamente come vengono calcolati i valori di fitness multi-criterio.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
numerator = 1.0
if (valuesToMaximize.Length > 0)
    numerator = Abs(Multiply(criteriaValuesToMaximize))

denominator = 1.0
if (valuesToMinimize.Length > 0)
    denominator += Abs(Multiply(criteriaValuesToMinimize))

/* The 'sign' variable can be either +` or -1 depending on whether
there are criteria for which their values are less than 0. */
sign = criteriaValuesToMinimize.Concat(criteriaValuesToMaximize).Any(v => v < 0) ? -1 : 1

fitness =  sign * numerator / denominator

Metodo

Fai clic sul pulsante Method (rappresentato come GA o # a seconda dell'opzione scelta). Nel menu sottostante, scegli quale metodo di ottimizzazione viene utilizzato dalla piattaforma.

Image title

Sono disponibili le seguenti opzioni:

  • Genetic Algorithm - l'algoritmo emula il processo di evoluzione biologica. Si prega di consultare una sezione separata per la sua descrizione dettagliata.
  • Grid (#) - l'algoritmo esegue sequenzialmente il backtest di ogni possibile set di parametri.

Nota

Secondo le nostre stime, l'algoritmo genetico è significativamente più veloce per trovare i valori ottimali dei parametri.

Risorse

Fai clic sul pulsante Resources per selezionare quale percentuale del carico della CPU viene allocata per il backtesting. Sposta il dispositivo di scorrimento per impostare la percentuale di utilizzo della CPU.

Più risorse vi destinerai, più velocemente sarà completato il processo di ottimizzazione. Tuttavia, potresti notare un calo delle prestazioni quando utilizzi altre applicazioni.

Image title

Nota che le risorse della CPU possono essere regolate anche durante l'ottimizzazione stessa.

Avviare e gestire la procedura di ottimizzazione

Per procedere con l'ottimizzazione, fai clic sul pulsante Play a destra del dispositivo di scorrimento del calendario. A seconda delle risorse della tua macchina, delle impostazioni di ottimizzazione e della complessità del cBot, l'ottimizzazione potrebbe richiedere del tempo.

La barra dell'interfaccia utente immediatamente sotto il dispositivo di scorrimento del calendario fornirà informazioni sul numero di passaggi di backtesting completati, sul tempo trascorso e sulla stima del tempo rimanente.

Image title

La schermata centrale nella scheda Ottimizzazione, nel frattempo, fornirà una griglia in tempo reale contenente informazioni su tutti i passaggi di backtesting completati dall'algoritmo.

Image title

Per applicare un set di parametri testati durante un determinato passaggio, fai clic sul pulsante Applica. Diventa attivo solo se non sono in esecuzione procedure di ottimizzazione.

In alternativa, seleziona il flag Seleziona automaticamente il passaggio migliore nell'angolo in alto a sinistra affinché cTrader selezioni automaticamente il passaggio (e i parametri) che ha ottenuto il miglior risultato possibile in base ai criteri di ottimizzazione specificati.

Risultati di ottimizzazione

Al termine dell'ottimizzazione, la tabella centrale visualizzerà l'elenco finale di tutti i passaggi di backtesting e i relativi risultati.

Questa tabella presenta le seguenti colonne. Poiché la griglia è completamente configurabile, queste colonne possono essere trascinate e rilasciate o disabilitate del tutto facendo clic con il pulsante destro del mouse sulla tabella e deselezionandole dal menu contestuale.

Field Definizione
Passaggio Il numero del passaggio.
Idoneità Il valore che mostra quanto bene il passaggio si adatta ai criteri di ottimizzazione.
Capitale netto Capitale netto totale alla fine del passaggio.
Saldo Saldo totale alla fine del passaggio.
Profitto netto La differenza tra il saldo finale e il saldo iniziale.
Operazioni Il numero totale di posizioni chiuse.
Transazioni redditizie Il numero totale di transazioni redditizie ottenute durante il passaggio.
Transazioni in perdita Il numero totale di transazioni in perdita ottenute durante il passaggio.
Fattore di profitto Il rapporto profitto totale/perdita totale.
*Diminuzione massima del capitale netto (%) La percentuale massima di drawdown del capitale netto.
Diminuzione massima del saldo (%) La percentuale massima di drawdown del saldo.
Diminuzione massima del capitale netto Il drawdown massimo del capitale netto specificato nella valuta di deposito del conto.
Diminuzione massima del saldo Il drawdown massimo del saldo specificato nella valuta di deposito del conto.
Transazione media Il profitto medio per tutte le transazioni effettuate durante il passaggio.
Parametri passaggi Fai clic sul pulsante Applica in questa colonna per applicare i parametri di questo passaggio al tuo cBot.

Seleziona un passaggio per visualizzare le statistiche dettagliate nella visualizzazione sotto la griglia centrale.

Le prime sette schede in questa visualizzazione forniscono le stesse informazioni delle stesse schede nella finestra Backtesting. La scheda Parametri passaggi è esclusiva dell'ottimizzazione.

Parametri passaggi

La scheda Parametri passaggi fornisce le seguenti informazioni.

Image title

cTrader evidenzierà in verde tutti i parametri ottimizzati mentre tutti i parametri fissi (non abilitati nel menu Parametri) rimarranno non evidenziati.

Salvataggio e caricamento dei risultati di ottimizzazione

cTrader consente inoltre di salvare e caricare i risultati di ottimizzazione da e verso un file .optres archiviato localmente.

Nota

Un file .optres è semplicemente una raccolta di coppie chiave-valore con chiavi che rappresentano varie impostazioni e metriche di ottimizzazione.

Suggerimento

Puoi utilizzare i file .optres per continuare a perfezionare i tuoi cBot su più macchine locali senza perdere alcun progresso. Puoi anche fornire i dati di questo file agli strumenti di intelligenza artificiale generativa per cercare di rilevare eventuali pattern nei passaggi completati dal tuo cBot.

Per salvare i risultati di ottimizzazione, attendi fino al termine del processo e fai clic sull'icona Salva. Nella finestra di dialogo di esplorazione file, digita il nome del file e salvalo.

Per caricare i risultati di ottimizzazione, fai clic sull'icona Carica e seleziona il file richiesto nella finestra di esplorazione file.

Image title