cBot-Vorgänge¶
Dieser Artikel behandelt den Lebenszyklus eines cBots in cTrader CLI. Sie erfahren, wie Sie einen cBot im Terminal starten, laufende Instanzen auflisten und stoppen, einen cBot auf einem VPS oder Cloud-Server mit Docker hosten und ihn anhand historischer Daten einem Backtest unterziehen.
Voraussetzungen ¶
- cTrader CLI ist installiert.
- Ihre cTrader ID, eine Datei mit Anmeldedaten und Ihre Kontonummer liegen bereit.
- Der cBot wurde als
.algo-Datei exportiert und für .NET 8 erstellt.
cBot-Metadaten abrufen ¶
Listen Sie vor dem Start eines cBots mit metadata seine verfügbaren Parameter auf. Die Ausgabe enthält den Namen und Typ jeder cBot-Eigenschaft.
ctrader-cli metadata <path-to-algo-file>
Verwenden Sie beim Übergeben von Parametern über die Befehlszeile oder eine .cbotset-Datei die Parameternamen aus der Metadatenausgabe.
Einen cBot starten ¶
Starten Sie einen cBot mit run. Der Pfad zur .algo-Datei ist das erste Argument. --account, --symbol und --period sind erforderlich.
ctrader-cli run <path-to-algo-file> --account=<account-id> --symbol=<symbol> --period=<period>
Drei Möglichkeiten, Parameter zu übergeben.
| Quelle | Wann verwenden? | Beispiel |
|---|---|---|
| Standardwerte | Die voreingestellten Parameter des cBots funktionieren bereits wie gewünscht. | ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1 |
| Über die Befehlszeile | Ein oder zwei Werte überschreiben, ohne eine Datei zu erstellen. | ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1 --Periods=15 --ConsolidationPeriods=3 |
.cbotset-Datei | Dieselben Werte für mehrere Ausführungen wiederverwenden; exportieren Sie die Datei aus der cTrader-Desktop-Anwendung. | ctrader-cli run /opt/mycbot.algo /opt/mysettings.cbotset --account=1234567 --symbol=EURUSD --period=h1 |
Zwei optionale Flags sind für unbeaufsichtigte Ausführungen wichtig.
| Option | Zweck |
|---|---|
--full-access | Führt den cBot ohne Einschränkungen der Zugriffsrechte aus, wenn er lokale Dateien lesen oder schreiben oder auf das Netzwerk zugreifen muss. |
--exit-on-stop | Beendet den cTrader CLI-Prozess, wenn der cBot sich selbst stoppt; nützlich in Skripten und Containern. |
Einen cBot auf einem VPS oder Cloud-Server ausführen ¶
Ein reines Kommandozeilentool läuft auch auf einer kleinen Linux-Instanz problemlos. So kann ein cBot dauerhaft und kostengünstiger als auf einem Desktop-Computer betrieben werden. Das Docker-Image von cTrader CLI ist die portabelste Lösung dafür.
Laden Sie das neueste Image herunter:
docker pull ghcr.io/spotware/ctrader-console:latest
Führen Sie einen cBot in einem Container aus. Die Option --mount bindet einen Ordner des Hostsystems in den Container ein; mit den -e-Optionen übergeben Sie die Konfiguration als Umgebungsvariablen:
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
| Bestandteil | Bedeutung |
|---|---|
--name ctrader.console.run.mybot | Legt den Namen des Containers fest. |
--mount type=bind,src=...,dst=... | Bindet einen Ordner des Hostsystems im Container unter /mnt/Robots ein. |
-e CTID='mycid' | Legt die cTrader ID als Umgebungsvariable fest. |
-e PWD-FILE='/mnt/Robots/ctrader-cli.pwd' | Legt den Pfad zur Passwortdatei im Container fest. |
-e ACCOUNT='9102302' | Legt die Handelskontonummer fest. |
-e SYMBOL='EURUSD' | Legt das Symbol fest. |
-e PERIOD='H1' | Legt den Zeitrahmen fest. |
"<path>" | Pfad zur cBot-Datei im Container. |
--environment-variables | Weist cTrader CLI an, die Konfiguration aus Umgebungsvariablen zu lesen. |
Hinweis
Sämtliche Funktionen von cTrader CLI sind im Docker-Image verfügbar, einschließlich Backtesting und Optimierung.
Über die cTrader-Desktop-Anwendung starten ¶
Sie müssen die Befehlszeile nicht beherrschen, um cTrader CLI zu nutzen.
- Bereiten Sie in der cTrader-Desktop-Anwendung einen cBot mit Ihren bevorzugten Parametern vor.
- Klicken Sie mit der rechten Maustaste auf eine lokale cBot-Instanz und wählen Sie In externem Prozess starten. cTrader CLI startet automatisch und führt die Instanz unabhängig aus.
- Schließen Sie die Desktop-Anwendung, um CPU-Leistung und Arbeitsspeicher zu sparen. Der cBot läuft im cTrader CLI-Prozess weiter.
cBots auflisten und stoppen ¶
Listen Sie die aktuell auf dem Konto laufenden cBot-Instanzen auf:
ctrader-cli cbots --ctid=letstrade --password=secret --account=1234567 -q
Stoppen Sie eine laufende Instanz anhand ihrer Kennung, die run in der Ausgabe anzeigt:
ctrader-cli stop --ctid=letstrade --password=secret --account=1234567 -q --instance=<instance-id>
Um alle laufenden cBots gleichzeitig zu stoppen, öffnen Sie die interaktive Shell und führen Sie stop all yes aus. Der cTrader CLI-Prozess wird beendet, sobald die letzte Instanz stoppt.
Einen cBot einem Backtest unterziehen ¶
Testen Sie einen cBot anhand historischer Daten mit backtest. Der Pfad zur .algo-Datei ist das erste Argument; optional kann eine .cbotset-Datei folgen. Für den Test sind außerdem ein Symbol, ein Zeitrahmen und ein Datumsbereich erforderlich:
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>
Optionen für die Testumgebung ¶
Die Flags für die Testumgebung finden Sie beim Eintrag backtest in der CLI-Referenz. Nur --start, --end und --data-mode sind erforderlich. Weitere optionale Flags betreffen Startguthaben, Kommissionen, Spread, Datenquellen und Berichtsausgaben.
Datenmodi ¶
| Wert | Beschreibung |
|---|---|
open | Verwendet die Eröffnungskurse des Basiszeitrahmens; schnell, aber innerhalb jeder Kerze weniger genau. |
m1 | Verwendet vom Server heruntergeladene Minutendaten. |
m1-csv | Verwendet über --data-file bereitgestellte Minutendaten. |
tick-csv | Verwendet über --data-file bereitgestellte Tickdaten. |
ticks | Verwendet vom Server heruntergeladene Tickdaten; der genaueste, aber langsamste Modus. Für Tick-, Range- und Renko-Zeitrahmen erforderlich. |
Tipp
Legen Sie --data-dir auf einen Ordner fest, dessen Inhalt zwischen den Ausführungen erhalten bleibt. So verwendet cTrader CLI die heruntergeladenen Kursdaten erneut, statt sie für jeden Backtest neu herunterzuladen. Binden Sie diesen Ordner in Docker an ein Hostverzeichnis, damit die Daten nach dem Beenden des Containers erhalten bleiben.
Praxisbeispiel ¶
Führen Sie einen Backtest mit einem Beispiel-cBot und einer einzelnen .cbotset-Parameterdatei aus:
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
Backtest-Ausgabe ¶
cTrader CLI zeigt den Fortschritt laufend im Terminal an und gibt nach Abschluss eine Zusammenfassung aus. Das vollständige Ergebnis befindet sich im Ordner Backtesting neben der .algo-Datei, mit einem eigenen Unterordner pro Ausführung:
…/data/{cBotName}/{BacktestingInstanceID}/Backtesting
| Datei | Inhalt |
|---|---|
| Ereignisse (JSON) | Alle wichtigen Handelsereignisse, beispielsweise das Öffnen und Schließen von Positionen. |
| Protokoll (TXT) | Start und Stopp des cBots, Handelsaktionen und deren Ergebnisse. |
Parameter (.cbotset) | Die beim Backtest verwendeten Parameter und Werte. |
| Bericht (HTML) | Ein visueller Bericht mit Handelsstatistiken und Orderhistorie, der im Webbrowser geöffnet wird. |
--report und --report-json speichern Berichte zusätzlich zum oben genannten Ordner unter einem angegebenen Pfad.
Verhalten der Algo API in cTrader CLI ¶
Einige Mitglieder der cTrader Algo API verhalten sich bei der Ausführung eines cBots in cTrader CLI anders, da keine grafische Benutzeroberfläche vorhanden ist.
| API-Mitglied | Verhalten in cTrader CLI |
|---|---|
MessageBox | Gibt MessageBoxResult.None zurück. |
Window | Alle Methoden werden ignoriert und es wird kein Fenster angezeigt. |
Notifications.PlaySound | Ignored. |
Chart.TakeChartshot | Gibt null zurück. |