Vai al contenuto

Come creare un cBot per cTrader in 5 minuti

In questo articolo e nel video corrispondente, descriveremo un modo rapido per creare un cBot in cTrader Algo. Il cBot che creeremo implementerà una semplice strategia di trading chiamata Three white soldiers e three black crows. Puoi saperne di più su questa strategia nella nostra knowledge base.

Prima di seguire le nostre istruzioni, assicurati di aver scaricato e installato l'applicazione cTrader Windows o Mac dal sito web ufficiale. Avviala e vai alla sezione cTrader Algo. Puoi trovarla nel pannello di sinistra. Clicca sulla scheda Algo e dovrebbe apparire la sezione cTrader Algo.

Aggiungere un nuovo cBot

Clicca sul pulsante Nuovo in cTrader Algo per iniziare a creare un nuovo cBot. Inserisci un nome, scegli un linguaggio di programmazione tra C# e Python e continua finché non si apre l'editor di codice.

Aggiungere le impostazioni del cBot

Prima di iniziare a implementare una strategia di trading, daremo un'occhiata ai parametri e ai metodi di base dei cBot. Puoi anche consultare la nostra documentazione per familiarizzare con ciò che fanno i diversi parametri e metodi.

  • Parametri cBot – ti consentono di definire attributi configurabili come il volume negoziato o le distanze di stop loss/take profit.

  • Metodi cBot – definiscono come si comporta il tuo cBot quando si verificano eventi specifici. Ci sono quattro eventi principali che devi gestire quando sviluppi un cBot cTrader, e ognuno è gestito da un metodo corrispondente fornito da cTrader. Questi metodi sono OnStart(), OnTick(), OnBar(), OnStop() di C# e on_start(), on_tick(), on_bar_closed(), on_stop() di Python. Nota che il metodo OnBar() di C# e on_bar_closed() di Python non è incluso nel modello di codice predefinito.

La seguente tabella definisce questi quattro metodi in dettaglio.

C# Python Scopo
OnStart() on_start() Attivato quando un'istanza di cBot inizia a funzionare. Viene utilizzato per inizializzare qualsiasi variabile che prevedi di utilizzare nel tuo cBot come indicatori, contatori, gestori di eventi o timer.
OnTick() on_tick() Attivato ad ogni tick (aggiornamento del prezzo) sul grafico di trading su cui è in esecuzione un'istanza di cBot. Comunemente utilizzato per la logica di entrata o uscita rapida basata su dati in tempo reale. All'interno di questo metodo, puoi programmare condizioni di entrata e uscita personalizzate così come qualsiasi altra funzione ausiliaria che devi eseguire quando arriva un nuovo tick.
OnBar() on_bar_closed() Attivato alla chiusura di ogni barra. All'interno di questo metodo, puoi programmare condizioni di entrata e uscita personalizzate o qualsiasi altra funzione che deve essere eseguita alla formazione di ogni nuova barra.
OnStop() on_stop() Chiamato quando il cBot si arresta. Utilizzato per eseguire operazioni finali come chiudere posizioni, salvare lo stato e altro

Aggiungere la logica di trading

Ora aggiungeremo il codice per la nostra strategia di trading. Il nostro cBot dovrebbe aprire una posizione long quando si formano tre barre verdi sul grafico e una posizione short quando ci sono tre barre rosse consecutive.

Innanzitutto, dobbiamo definire i parametri del nostro cBot. Questi parametri saranno completamente personalizzabili dall'interfaccia utente di cTrader. Definiremo tre parametri nel nostro cBot.

  1. Il volume di ogni operazione.
  2. Lo stop loss in pip.
  3. Il take profit in pip.

Incolla il seguente codice nel tuo editor di codice appena sotto le parentesi graffe dopo la dichiarazione della classe (public class NewcBot : Robot)

1
2
3
4
5
6
7
8
[Parameter(DefaultValue = 1000)]
public double Volume { get; set; }
        
[Parameter(DefaultValue = 10)]
public double TakeProfit { get; set; }
        
[Parameter(DefaultValue = 10)]
public double StopLoss { get; set; }

Nota

I cBot Python utilizzano parametri personalizzabili dichiarati nei loro file .cs.

1
2
3
4
5
6
7
8
[Parameter(DefaultValue = 1000)]
public double Volume { get; set; }
        
[Parameter(DefaultValue = 10)]
public double TakeProfit { get; set; }
        
[Parameter(DefaultValue = 10)]
public double StopLoss { get; set; }

Ora dobbiamo implementare la logica alla base della nostra strategia di trading. Incolla il seguente codice nel tuo metodo OnBar() o on_bar_closed(). Ricorda che questo metodo viene chiamato ogni volta che si forma una nuova barra.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
//Three White Soldiers
if(Bars.ClosePrices.Last(1) > Bars.OpenPrices.Last(1) 
&& Bars.ClosePrices.Last(2) > Bars.OpenPrices.Last(2)  
&& Bars.ClosePrices.Last(3) > Bars.OpenPrices.Last(3))
{
    ExecuteMarketOrder(TradeType.Buy, SymbolName, Volume, "", StopLoss, TakeProfit);
}
            
//Three Black Crows
if(Bars.ClosePrices.Last(1) < Bars.OpenPrices.Last(1) 
&& Bars.ClosePrices.Last(2) < Bars.OpenPrices.Last(2)  
&& Bars.ClosePrices.Last(3) < Bars.OpenPrices.Last(3))
{
    ExecuteMarketOrder(TradeType.Sell, SymbolName, Volume, "", StopLoss, TakeProfit);
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Three White Soldiers
if (close.Last(1) > open_.Last(1) and
    close.Last(2) > open_.Last(2) and
    close.Last(3) > open_.Last(3)):
    api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, api.Volume, "", api.StopLoss, api.TakeProfit)

# Three Black Crows
elif (close.Last(1) < open_.Last(1) and
      close.Last(2) < open_.Last(2) and
      close.Last(3) < open_.Last(3)):
    api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, api.Volume, "", api.StopLoss, api.TakeProfit)

Ora esamineremo il codice più da vicino. cTrader fornisce accesso alle barre storiche del grafico, permettendoci di verificare se le ultime tre barre sono tutte verdi o tutte rosse, rispettivamente. Nel metodo OnBar() di C# e on_bar_closed() di Python sopra, controlliamo prima se le ultime tre barre erano tutte verdi. Quindi valutiamo se queste barre erano tutte rosse.

Se una delle due condizioni è vera, piazziamo un ordine di mercato utilizzando il metodo ExecuteMarketOrder(). Richiede diversi input (argomenti), i più importanti dei quali sono la direzione dell'operazione, il simbolo, il volume negoziato, lo stop loss e il take profit.

Nel nostro caso, la direzione dell'ordine (TradeType.Buy, TradeType.Sell) è determinata dalle condizioni della strategia di trading. Il nome del simbolo viene preso direttamente dal grafico su cui è in esecuzione il nostro cBot SymbolName. Il volume di trading, lo stop loss e il take profit (Volume, StopLoss, TakeProfit di C# e VolumeInLots, StopLossInPips, TakeProfitInPips di Python) vengono tutti recuperati dai parametri del cBot che abbiamo definito.

Compilare ed eseguire il cBot

Ora dobbiamo verificare se il nostro cBot viene compilato correttamente. Per impostazione predefinita, la finestra dei risultati di compilazione si trova direttamente sotto l'editor di codice. Se non la vedi, clicca sul pulsante Layout nella barra superiore dell'interfaccia utente di cTrader e seleziona Risultato compilazione. La scorciatoia da tastiera per questa azione è Ctrl + W

Successivamente, clicca sul pulsante Compila situato nella barra superiore dell'interfaccia utente di cTrader. In alternativa, fai clic destro sul tuo cBot e clicca su Compila nel menu appena apparso, o semplicemente premi Ctrl + B.

Image title

Se la compilazione ha successo, vedrai un messaggio verde nell'area Risultato compilazione nella parte inferiore dell'editor di codice.

Image title

In alternativa, se ci sono problemi con il tuo codice, vedrai un messaggio rosso e un riepilogo dettagliato di tutti gli errori di compilazione.

Image title

Dopo che il tuo cBot è stato compilato correttamente, puoi iniziare a utilizzarlo. Tutto ciò che devi fare è aggiungere un'istanza su un grafico di trading. Per farlo, clicca semplicemente sull'icona + a destra del nome del tuo cBot. Vedrai un elenco di tutti i simboli su cui puoi eseguire il tuo cBot.

Image title

Selezioneremo EURUSD. Dopo aver scelto un simbolo, verrà aggiunta una nuova istanza di cBot. Vedrai un nuovo elemento nell'elenco dei cBot con il nome del simbolo e il periodo di tempo che desideri negoziare.

Dovresti anche vedere i parametri che hai codificato nella scheda Parametri direttamente sotto il grafico di trading.

Image title

Puoi modificare questi parametri come preferisci o semplicemente lasciarli ai loro valori predefiniti.

Inoltre, vedrai un pulsante Play nella parte superiore del grafico EURUSD.

Image title

Per avviare la tua istanza, premi questo pulsante. In alternativa, una copia di questo pulsante si trova anche a destra dell'istanza nell'elenco dei cBot a sinistra. Entrambi i pulsanti avvieranno il cBot.

Dopo aver fatto clic su uno dei due pulsanti dovresti vederlo diventare arancione, il che significa che un'istanza del nostro cBot è ora attiva e in esecuzione. Nella scheda Log dovresti anche vedere una nuova riga che indica che il cBot è stato avviato.

Esegui il backtesting del cBot

Il nostro cBot potrebbe impiegare molto tempo per aprire una posizione su un grafico di trading reale. Eseguiremo un rapido backtest per vederlo in azione sui dati storici. Per farlo, apri la scheda Backtest.

Image title

Utilizza il cursore del calendario nella parte superiore dello schermo per selezionare l'intervallo di date che desideri utilizzare per il backtesting. Abilita il flag Modalità visiva per monitorare i risultati del backtesting man mano che si verificano.

Sposteremo il cursore indietro di un mese. Fai clic sul pulsante Play per avviare il cBot sui dati storici scelti.

Successivamente, potrai vedere le nuove posizioni che vengono aperte e/o chiuse nella scheda immediatamente sotto il grafico di trading e a destra della sezione Parametri. Nello specifico, dopo aver rilevato uno dei due pattern che abbiamo codificato, il cBot piazzerà un ordine di acquisto o di vendita.

Eseguire un backtest è un modo utile per analizzare se il tuo cBot funziona correttamente.

Ci auguriamo che questo articolo sia stato utile per dimostrare come puoi creare un robot di trading automatizzato utilizzando cTrader.

Image title