Vai al contenuto

Operazioni con i cBot

Questo articolo descrive il ciclo di vita dei cBot in cTrader CLI. Scopri come eseguire un cBot da un terminale, elencare e arrestare le istanze in esecuzione, ospitare un cBot su un VPS o un server cloud con Docker ed eseguire backtesting su dati storici.

Prerequisiti

  • cTrader CLI è stato installato.
  • Hai preparato il tuo cTrader ID, un file delle credenziali e il numero di conto.
  • Il cBot è stato esportato come file .algo compilato per .NET 8.

Leggere i metadati di un cBot

Prima di eseguire un cBot, usa metadata per elencare i parametri accettati. L’output mostra il nome e il tipo di ogni proprietà del cBot.

ctrader-cli metadata <path-to-algo-file>

Usa i nomi dei parametri mostrati nell’output dei metadati quando li specifichi tramite la riga di comando o un file .cbotset.

Eseguire un cBot

Avvia un cBot con run. Il percorso del file .algo è il primo argomento. --account, --symbol e --period sono obbligatori.

ctrader-cli run <path-to-algo-file> --account=<account-id> --symbol=<symbol> --period=<period>

Tre modi per passare i parametri.

Origine Quando usarlo Esempio
Valori predefiniti I parametri predefiniti del cBot funzionano già correttamente. ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1
Dalla riga di comando Modificare uno o due valori senza creare un file. ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1 --Periods=15 --ConsolidationPeriods=3
File .cbotset Riutilizzare una serie di valori in più esecuzioni; esporta il file dall’applicazione desktop cTrader. ctrader-cli run /opt/mycbot.algo /opt/mysettings.cbotset --account=1234567 --symbol=EURUSD --period=h1

Due opzioni facoltative sono importanti per le esecuzioni senza supervisione.

Opzione Funzione
--full-access Esegue il cBot senza restrizioni dei diritti di accesso, quando deve leggere o scrivere file locali oppure accedere alla rete.
--exit-on-stop Termina il processo cTrader CLI quando il cBot si arresta autonomamente; utile negli script e nei container.

Eseguire un cBot su un VPS o un server cloud

Uno strumento utilizzabile solo da terminale funziona bene anche su una piccola istanza Linux. In questo modo un cBot può essere eseguito ininterrottamente a un costo inferiore rispetto a un computer desktop. L’immagine Docker di cTrader CLI è il modo più portabile per farlo.

Scarica l’immagine più recente:

docker pull ghcr.io/spotware/ctrader-console:latest

Esegui un cBot in un container. L’opzione --mount associa una cartella dell’host a una posizione nel container; le opzioni -e passano la configurazione tramite variabili d’ambiente:

docker run -d -it \
  --name ctrader.console.run.mybot \
  --mount type=bind,src=/cAlgo/Robots,dst=/mnt/Robots \
  -e CTID='mycid' \
  -e PWD-FILE='/mnt/Robots/ctrader-cli.pwd' \
  -e ACCOUNT='9102302' \
  -e SYMBOL='EURUSD' \
  -e PERIOD='H1' \
  ghcr.io/spotware/ctrader-console:latest run "/mnt/Robots/My bot.algo" --environment-variables
Elemento Significato
--name ctrader.console.run.mybot Assegna un nome al container.
--mount type=bind,src=...,dst=... Associa una cartella dell’host al percorso /mnt/Robots nel container.
-e CTID='mycid' Imposta il cTrader ID come variabile d’ambiente.
-e PWD-FILE='/mnt/Robots/ctrader-cli.pwd' Imposta il percorso del file della password all’interno del container.
-e ACCOUNT='9102302' Imposta il numero del conto di trading.
-e SYMBOL='EURUSD' Imposta il simbolo.
-e PERIOD='H1' Imposta il periodo di tempo.
"<path>" Percorso del file cBot all’interno del container.
--environment-variables Indica a cTrader CLI di leggere la configurazione dalle variabili d’ambiente.

Nota

Tutte le funzionalità di cTrader CLI sono disponibili nell’immagine Docker, inclusi backtesting e ottimizzazione.

Avviare dall’applicazione desktop cTrader

Non è necessario conoscere i comandi del terminale per sfruttare cTrader CLI.

  1. Nell’applicazione desktop cTrader, prepara un cBot con i parametri desiderati.
  2. Fai clic con il pulsante destro su un’istanza locale del cBot e seleziona Avvia in un processo esterno. cTrader CLI si avvia automaticamente ed esegue l’istanza in modo indipendente.
  3. Chiudi l’applicazione desktop per risparmiare risorse di CPU e RAM. Il cBot continua a funzionare nel processo cTrader CLI.

Elencare e arrestare i cBot

Elenca le istanze di cBot attualmente in esecuzione sul conto:

ctrader-cli cbots --ctid=letstrade --password=secret --account=1234567 -q

Arresta un’istanza in esecuzione usando il suo identificativo, riportato nell’output di run:

ctrader-cli stop --ctid=letstrade --password=secret --account=1234567 -q --instance=<instance-id>

Per arrestare tutti i cBot in esecuzione contemporaneamente, apri la shell interattiva ed esegui stop all yes. Il processo cTrader CLI termina quando si arresta l’ultima istanza.

Eseguire il backtesting di un cBot

Esegui un cBot su dati storici con backtest. Il percorso del file .algo è il primo argomento, seguito eventualmente da un file .cbotset. Il test richiede un simbolo, un periodo di tempo e un intervallo di date:

ctrader-cli backtest <path-to-algo-file> [<path-to-cbotset-file>] --account=<account-id> --symbol=<symbol> --period=<period> --start=<start-date> --end=<end-date> --data-mode=<data-mode>

Opzioni del contesto di test

Le opzioni del contesto di test sono descritte nella voce backtest della documentazione di riferimento della CLI. Gli unici parametri obbligatori sono --start, --end e --data-mode. Le opzioni facoltative riguardano saldo iniziale, commissioni, spread, fonti dei dati e file dei report.

Modalità dei dati

Valore Descrizione
open Utilizza i prezzi di apertura del periodo di base; è veloce, ma meno preciso all’interno di ogni barra.
m1 Utilizza i dati a un minuto scaricati dal server.
m1-csv Utilizza i dati a un minuto forniti tramite --data-file.
tick-csv Utilizza i dati tick forniti tramite --data-file.
ticks Utilizza i dati tick scaricati dal server; è la modalità più accurata, ma anche la più lenta. È obbligatoria per i periodi tick, range e Renko.

Suggerimento

Imposta --data-dir su una cartella mantenuta tra le esecuzioni, in modo che cTrader CLI riutilizzi i dati dei prezzi scaricati anziché scaricarli nuovamente a ogni backtest. In Docker, associa questa cartella a una directory dell’host per conservare i dati dopo l’arresto del container.

Esempio pratico

Esegui un backtest su un cBot di esempio utilizzando un singolo file di parametri .cbotset:

ctrader-cli backtest "C:/test/sample martingale.algo" C:/test/special-parameters.cbotset \
  --ctid=letstrade --pwd-file=C:/test/password.pwd --account=1234567 --symbol=EURUSD --period=h1 \
  --start="01/01/2025 12:34" --end="31/01/2025 20:56" \
  --balance=10000 --commission=30 --commission-type=UsdPerMillionUsdVolume --spread=1 --data-mode=m1

Output del backtest

cTrader CLI mostra l’avanzamento in tempo reale nel terminale, quindi stampa un riepilogo al termine. Il risultato completo si trova in una cartella Backtesting accanto al file .algo, con una sottocartella per ogni esecuzione:

…/data/{cBotName}/{BacktestingInstanceID}/Backtesting
File Contenuto
Eventi (JSON) Ogni evento di trading importante, come l’apertura e la chiusura delle posizioni.
Log (TXT) Avvio e arresto del cBot, azioni di trading ed esiti.
Parametri (.cbotset) Parametri e valori utilizzati nel backtest.
Report (HTML) Un report visivo con statistiche di trading e cronologia degli ordini, visualizzabile nel browser.

--report e --report-json salvano i report anche in un percorso specificato, oltre che nella cartella indicata sopra.

Comportamento dell’API Algo in cTrader CLI

Alcuni membri dell’API cTrader Algo si comportano in modo diverso quando un cBot viene eseguito in cTrader CLI, perché non è disponibile un’interfaccia grafica.

Membro API Comportamento in cTrader CLI
MessageBox Restituisce MessageBoxResult.None.
Window Tutti i metodi vengono ignorati e non viene mostrata alcuna finestra.
Notifications.PlaySound Ignored.
Chart.TakeChartshot Restituisce null.