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
.algocompilé 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.
- Dans l’application de bureau cTrader, préparez un cBot avec les paramètres de votre choix.
- 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.
- 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. |