Aller au contenu

Opérations sur les cBots

Cet article présente le cycle de vie d’un cBot dans cTrader CLI. Vous apprendrez à exécuter un cBot depuis un terminal, à afficher et arrêter les instances en cours d’exécution, à héberger un cBot sur un VPS ou un serveur cloud avec Docker et à effectuer un backtest sur des données historiques.

Prérequis

  • cTrader CLI est installé.
  • Votre cTrader ID, votre fichier d’identifiants et votre numéro de compte sont prêts.
  • Le cBot est exporté sous forme de fichier .algo compilé pour .NET 8.

Lire les métadonnées d’un cBot

Avant d’exécuter un cBot, utilisez metadata pour afficher les paramètres qu’il accepte. La sortie indique le nom et le type de chaque propriété du cBot.

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

Utilisez les noms des paramètres indiqués dans la sortie des métadonnées lorsque vous fournissez des paramètres en ligne de commande ou dans un fichier .cbotset.

Exécuter un cBot

Démarrez un cBot avec run. Le chemin du fichier .algo est le premier argument. --account, --symbol et --period sont obligatoires.

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

Trois façons de transmettre les paramètres.

Source Quand l’utiliser Exemple
Valeurs par défaut Les paramètres par défaut du cBot conviennent déjà. ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1
En ligne de commande Modifier une ou deux valeurs sans créer de fichier. ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1 --Periods=15 --ConsolidationPeriods=3
Fichier .cbotset Réutiliser un ensemble de valeurs lors de plusieurs exécutions ; exportez le fichier depuis l’application de bureau cTrader. ctrader-cli run /opt/mycbot.algo /opt/mysettings.cbotset --account=1234567 --symbol=EURUSD --period=h1

Deux options facultatives sont importantes pour les exécutions sans surveillance.

Option Fonction
--full-access Exécute le cBot sans restrictions de droits d’accès lorsqu’il doit lire ou écrire des fichiers locaux ou accéder au réseau.
--exit-on-stop Quitte le processus cTrader CLI lorsque le cBot s’arrête de lui-même ; utile dans les scripts et les conteneurs.

Exécuter un cBot sur un VPS ou un serveur cloud

Un outil utilisable uniquement dans un terminal fonctionne parfaitement sur une petite instance Linux. Un cBot peut ainsi s’exécuter en continu à moindre coût que sur un ordinateur de bureau. L’image Docker de cTrader CLI est la solution la plus portable pour cela.

Téléchargez la dernière image :

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

Exécutez un cBot dans un conteneur. L’option --mount associe un dossier de l’hôte à un emplacement dans le conteneur ; les options -e transmettent la configuration par des variables d’environnement :

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
Élément Signification
--name ctrader.console.run.mybot Attribue un nom au conteneur.
--mount type=bind,src=...,dst=... Associe un dossier de l’hôte au chemin /mnt/Robots du conteneur.
-e CTID='mycid' Définit le cTrader ID comme variable d’environnement.
-e PWD-FILE='/mnt/Robots/ctrader-cli.pwd' Définit le chemin du fichier de mot de passe à l’intérieur du conteneur.
-e ACCOUNT='9102302' Définit le numéro du compte de trading.
-e SYMBOL='EURUSD' Définit le symbole.
-e PERIOD='H1' Définit la période.
"<path>" Chemin du fichier cBot à l’intérieur du conteneur.
--environment-variables Demande à cTrader CLI de lire la configuration dans les variables d’environnement.

Remarque

Toutes les fonctionnalités de cTrader CLI sont disponibles dans l’image Docker, y compris le backtesting et l’optimisation.

Lancer depuis l’application de bureau cTrader

Vous n’avez pas besoin de maîtriser la ligne de commande pour profiter de cTrader CLI.

  1. Dans l’application de bureau cTrader, préparez un cBot avec les paramètres de votre choix.
  2. Faites un clic droit sur une instance locale du cBot et sélectionnez Démarrer dans un processus externe. cTrader CLI se lance automatiquement et exécute l’instance de manière indépendante.
  3. Fermez l’application de bureau pour économiser les ressources du processeur et la mémoire vive. Le cBot continue de fonctionner dans le processus cTrader CLI.

Afficher et arrêter les cBots

Affichez les instances de cBot actuellement en cours d’exécution sur le compte :

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

Arrêtez une instance en cours d’exécution à l’aide de son identifiant, indiqué dans la sortie de run :

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

Pour arrêter simultanément tous les cBots en cours d’exécution, ouvrez le shell interactif et exécutez stop all yes. Le processus cTrader CLI se termine lorsque la dernière instance s’arrête.

Effectuer un backtest d’un cBot

Exécutez un cBot sur des données historiques avec backtest. Le chemin du fichier .algo est le premier argument. Il peut être suivi d’un fichier .cbotset facultatif. Le test nécessite également un symbole, une période et une plage de dates :

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>

Options du contexte de test

Les options du contexte de test sont décrites dans l’entrée backtest de la documentation de référence CLI. Les seuls paramètres obligatoires sont --start, --end et --data-mode. Les options facultatives concernent le solde initial, les commissions, le spread, les sources de données et les fichiers de rapport.

Modes de données

Valeur Description
open Utilise les cours d’ouverture de la période de base ; rapide, mais moins précis à l’intérieur de chaque barre.
m1 Utilise les données à une minute téléchargées depuis le serveur.
m1-csv Utilise les données à une minute fournies avec --data-file.
tick-csv Utilise les données de ticks fournies avec --data-file.
ticks Utilise les données de ticks téléchargées depuis le serveur ; c’est le mode le plus précis, mais aussi le plus lent. Il est obligatoire pour les périodes en ticks, en barres de range et en Renko.

Astuce

Définissez --data-dir sur un dossier conservé entre les exécutions afin que cTrader CLI réutilise les données de prix téléchargées au lieu de les télécharger à nouveau pour chaque backtest. Dans Docker, associez ce dossier à un répertoire de l’hôte afin de conserver les données après l’arrêt du conteneur.

Exemple pratique

Effectuez un backtest sur un exemple de cBot avec un seul fichier de paramètres .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

Résultats du backtest

cTrader CLI affiche la progression en continu dans le terminal, puis un récapitulatif à la fin. Le résultat complet se trouve dans un dossier Backtesting à côté du fichier .algo, avec un sous-dossier pour chaque exécution :

…/data/{cBotName}/{BacktestingInstanceID}/Backtesting
Fichier Contenu
Événements (JSON) Chaque événement important lié au trading, notamment l’ouverture et la fermeture des positions.
Journal (TXT) Démarrage et arrêt du cBot, opérations de trading et résultats.
Paramètres (.cbotset) Les paramètres et les valeurs utilisés lors du backtest.
Rapport (HTML) Un rapport visuel présentant les statistiques de trading et l’historique des ordres, qui s’ouvre dans un navigateur Web.

--report et --report-json enregistrent également les rapports dans le chemin spécifié, en plus du dossier ci-dessus.

Comportement de l’API Algo dans cTrader CLI

Certains membres de l’API cTrader Algo se comportent différemment lorsqu’un cBot s’exécute dans cTrader CLI, car aucune interface graphique n’est disponible.

Membre de l’API Comportement dans cTrader CLI
MessageBox Renvoie MessageBoxResult.None.
Window Toutes les méthodes sont ignorées et aucune fenêtre ne s’affiche.
Notifications.PlaySound Ignored.
Chart.TakeChartshot Renvoie null.