全天候运行 cBot¶
如果 cBot 只有在你的笔记本电脑开机时才能运行, 那么当交易时段在凌晨 3 点开始时, 它就难以发挥作用。本指南介绍如何读取 cBot 参数、在远程服务器上启动 cBot、确认运行状态, 并在交易时段结束时正常停止。
提示
先在 Shell 变量中设置一次登录凭据。以下交互式命令均复用这些变量, 因此步骤更简洁, 脚本也更容易在不同环境中使用。
export CTID=letstrade
export ACC=7654321
export PWD_FILE=$HOME/.ctrader/pwd
1. 读取 cBot 参数 ¶
metadata 列出 cBot 支持的参数名称及类型, 帮助你确认要传给 run 的选项, 或要写入 .cbotset 文件的键名。 metadata 是批处理模式命令, 可以直接接收 --ctid 和 --pwd-file。
ctrader-cli metadata --ctid=$CTID --pwd-file=$PWD_FILE $ALGO
2. 保存参数配置 ¶
.cbotset 是纯文本文件, 每行包含一组 key=value 键值对。相比冗长的命令行, 这种文件更容易编辑和复用。
cat > mycbot.cbotset <<'EOF'
SlowPeriods=20
StopLossPips=30
TakeProfitPips=60
EOF
使用第 1 步中 metadata 返回的参数名称。
3. 在 VPS 上启动 cBot ¶
run 命令既可以在批处理模式下运行, 也可以在交互模式下运行。在批处理模式下(不使用 -q), 可以直接传入 --ctid 和 --pwd-file, 无需指定 -q。CLI 会持续运行, 直到 cBot 停止。在 VPS 上运行时, 请通过进程管理方式(如 systemd、tmux、screen 或官方 Docker 镜像)进行监控, 并可配合使用 --exit-on-stop。
ctrader-cli run --ctid=$CTID --pwd-file=$PWD_FILE \
--account=$ACC $ALGO mycbot.cbotset --symbol=EURUSD --period=h1 --exit-on-stop
--exit-on-stop 会在 cBot 停止时结束 CLI 进程, 便于使用 systemd 或 Docker 管理其运行状态。
如果需要在服务器上长期运行 cBot, 可在 cTrader CLI 官方 Docker 镜像中执行相同的命令。该镜像支持相同的选项, 并会响应相同的终止信号。完整 Docker 操作说明请参阅cBots文章。
4. 确认 cBot 正在运行 ¶
打开第二个终端, 运行 cbots, 列出账户中当前运行的全部 cBot 实例。输出中包含下一步需要使用的实例 ID。
ctrader-cli cbots --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q
5. 在 cBot 运行期间查看实时价格 ¶
cBot 运行期间, 你可以在另一终端使用 price 查看市场价格, 不会影响正在运行的实例。
ctrader-cli price --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q --symbol=EURUSD
6. 交易时段结束后停止 cBot ¶
stop 根据实例 ID 停止指定实例。使用第 4 步中 cbots 输出的实例 ID。
ctrader-cli stop --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q \
--instance=13579246
如果你在交互式 Shell 中启动 CLI, 可添加 all 和 yes 一次停止所有正在运行的实例: stop all yes。
7. 将各步骤组合成受管理的运行脚本 ¶
将完整命令序列保存为 start-cbot.sh, 通过 systemd、cron 任务或部署流水线启动。脚本会写入参数配置, 在后台启动 cBot, 等待运行状态确认, 并输出实例 ID 供后续使用。
#!/usr/bin/env bash
set -euo pipefail
CTID=letstrade
ACC=7654321
PWD_FILE=$HOME/.ctrader/pwd
ALGO=/opt/mycbot.algo
SYMBOL=EURUSD
PERIOD=h1
cat > /opt/mycbot.cbotset <<'EOF'
SlowPeriods=20
StopLossPips=30
TakeProfitPips=60
EOF
nohup ctrader-cli run --ctid=$CTID --pwd-file=$PWD_FILE \
--account=$ACC $ALGO /opt/mycbot.cbotset --symbol=$SYMBOL --period=$PERIOD --exit-on-stop \
> /var/log/mycbot.log 2>&1 &
sleep 10
ctrader-cli cbots --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q
以后如需停止该实例, 请运行第 6 步中对应的 stop 调用。多次运行 cbots 查询时, 实例 ID 不会改变, 因此只需保存一次便可重复使用。
cTrader CLI 命令参考文档列出了此流程中所用命令的所有可用选项。
警告
cTrader CLI 是一款交易和自动化工具。它不提供财务、投资、法律或税务建议。下单或修改订单的命令可能触发真实交易并造成损失。运行每条命令前请先核对, 先在模拟账户中测试, 并妥善保护登录凭据。