跳转至

全天候运行 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 是一款交易和自动化工具。它不提供财务、投资、法律或税务建议。下单或修改订单的命令可能触发真实交易并造成损失。运行每条命令前请先核对, 先在模拟账户中测试, 并妥善保护登录凭据。