运行 cTrader CLI 命令¶
本文介绍 cTrader CLI 命令的结构、身份验证方式, 以及如何查看账户数据、价格和历史记录。
命令结构 ¶
所有 cTrader CLI 命令都遵循相同的结构:
ctrader-cli <command> [arguments] [options]
- 选项以特定前缀开头。
--表示长格式,-表示短格式 (--symbol与-s等效)。 - 选项与其值之间使用空格或等号分隔。
--symbol EURUSD和--symbol=EURUSD两种写法都有效。 - 参数是没有前缀、按位置指定的值。
.algo文件路径就是一个参数。 - 包含空格的值必须用单引号或双引号括起来, 例如
'/opt/my cbots/trend cbot.algo'。在同一命令中, 请统一使用一种引号样式。
身份验证 ¶
cTrader CLI 支持两种身份验证方式。两种方式都使用你在设置时准备的凭据文件。
| 方式 | 必需选项 | 典型命令 |
|---|---|---|
| 批处理 | --ctid 和 --pwd-file | periods、accounts、symbols、metadata、run、backtest |
| 交互式 | --ctid、--password 或 --pwd-file, 以及 -q | account、orders、price、candles、positions、exposure、alerts 和指标命令 |
注意
批处理命令不接受 --password。交互式命令可以使用 --password 或 --pwd-file。
accounts、symbols、metadata、run 和 backtest 这几个命令同时支持两种方式。它们会根据你提供的选项进入批处理或交互式模式:
- 批处理模式 – 从
--pwd-file(或--broker) 读取凭据, 无需交互即可执行。 - 交互式模式 – 使用
--password和-q(或任何命令专用选项), 以交互式调用方式执行。
时间周期标识符 ¶
许多命令可以接受 --period 的值。运行 ctrader-cli periods 可列出所有受支持的标识符。标识符涵盖分钟、小时、天、周和月, 以及 tick、Renko、区间柱和 Heikin Ashi 的不同变体。解析标识符时不区分大小写。
交易量单位 ¶
--volume 可以接受以基础货币单位或手数表示的交易量。使用 --volume-type=units (默认) 或 --volume-type=lots 来选择交易量的计算单位。对于大多数外汇交易品种, 100,000 个单位等于 1 标准手。
使用 --volume-type=lots 时 | 基础资产单位数 |
|---|---|
--volume=1 | 100,000 |
--volume=0.1 | 10,000 |
--volume=0.01 | 1,000 |
警告
对于金属、指数和加密资产, 每手对应的数量因交易品种而异。因此, 相同的 --volume=1 可能开出比预期更大的头寸。交易前请检查交易品种的 lotSize:
ctrader-cli symbol --ctid=letstrade --pwd-file=C:/test/password.pwd --account=1234567 -q --symbol=XAUUSD
例如, 如果 XAUUSD 的 lotSize: 100, 则 --volume=1 --volume-type=lots 会开立 100 个单位的头寸。
日期和时间 ¶
cTrader CLI 中的所有日期和时间均采用 UTC。 CLI 不会使用你设备的本地时区或经纪商服务器时间。
UTC 在命令输出和日期输入中的使用规则如下:
- 输出: JSON 输出中的所有时间戳均采用 UTC, 使用带
Z的 ISO 8601 格式, 例如2026-10-08T14:05:00.000Z。 - 交互式命令 (
candles、deals、orders-history和使用-q运行的backtest):--from和--to只能接受日期, 格式为yyyy-MM-dd、dd/MM/yyyy、dd-MM-yyyy或yyyy/MM/dd。该日期表示 UTC 时区中的一个日历日。- 对于
deals和orders-history,--to包含指定日期的整天, 直至 UTC 23:59:59。 - 对于
candles,--to表示指定日期的开始时刻 (UTC 00:00)。如果要包含整天的数据, 请将--to设置为次日。 - 如果不提供
--from/--to, 交互式backtest默认覆盖最近 7 天。
- 对于
- 批处理命令 (
backtest等): 日期使用dd/MM/yyyy格式, 也可附加采用 24 小时制的dd/MM/yyyy HH:mm时间, 例如31/12/2026 18:00, 同样以 UTC 为准。
唯一的例外是正在运行的 cBot (run、backtest)。其时间遵循 cBot 内设置的 TimeZone, 与 cTrader Algo 中的行为一致。
读取账户和市场数据 ¶
ctrader-cli periods 不需要账户或登录凭据, 很适合用于首次测试。
ctrader-cli periods
列出与你的 cTrader ID 关联的交易账户:
ctrader-cli accounts --ctid=letstrade --pwd-file=C:/test/password.pwd
获取账户号码后, 列出该账户可用的交易品种:
ctrader-cli symbols --ctid=letstrade --pwd-file=C:/test/password.pwd --account=1234567
通过脚本查看某交易品种的当前价格并获取历史 K 线数据:
ctrader-cli price --ctid=letstrade --password=secret --account=1234567 -q --symbol=EURUSD
ctrader-cli candles --ctid=letstrade --password=secret --account=1234567 -q --symbol=EURUSD --period=h1 --count=200 > eurUSD_h1.json
历史记录限制 ¶
deals 和 orders-history 的历史数据查询存在以下限制:
- CLI 会加载
--from/--to指定的完整时间范围, 不限制时间跨度。 - 但一次调用仅返回该范围内最近的 200 笔成交 (
deals) 或最近的 500 笔订单 (orders-history)。 - 不提供
--from/--to时, 两个命令都只返回最近 30 天的数据。 -
--count用于设置返回的记录数量:deals默认返回 50 条, 最多返回 200 条。orders-history默认返回 100 条, 最多返回 500 条。
指定 --from 或 --to 后, --count 会被忽略, 单次调用最多返回允许的最大记录数。
如果时间范围内的记录数超过单次调用的返回上限, 请将其拆分为更短的时间范围, 分别执行命令。
要判断结果是否被截断, 请检查命令输出:
orders-history: 输出中包含available和returned字段。如果available大于returned, 说明该范围内还有其他订单。deals: 如果count恰好为200, 则该范围内可能还有其他成交记录。
交互式 Shell 中的批量操作 ¶
在交互式 Shell 中, 部分命令支持在末尾添加 all 和 yes, 以批量执行操作并跳过确认提示。
| 命令 | 末尾附加 all 和 yes 的格式 |
|---|---|
order cancel | order cancel all yes |
position close | position close all yes |
stop | stop all yes |
alert delete | alert delete all yes |
以交互方式运行命令 ¶
不指定任何命令, 直接运行 ctrader-cli 即可打开交互式 Shell。按提示使用 cTID 和密码登录后, 便可以连续输入多个命令, 无需反复提供凭据。当你需要连续运行多个命令时, 这种方式很方便。
要仅运行一个命令并立即退出, 请添加 -q。这适用于脚本, 因为命令执行完毕后进程应立即结束。
以下两个选项可以帮助你了解 CLI 支持哪些功能。
| 选项 | 用途 |
|---|---|
--help | 列出全局选项和启动方式。 |
--commands | 列出所有交互式命令及其位置参数格式, 无需身份验证。 |
如果你的 cTrader ID 关联了多家经纪商的账户, 且这些账户的号码相同, 请添加 --broker=<broker-name> 以消除歧义。
常见错误 ¶
| 现象 | 可能原因 | 下一步 |
|---|---|---|
ctrader-cli: command not found | CLI 所在路径未添加到 PATH。 | 重新打开终端, 或按照设置指南中的手动安装步骤操作。 |
Parameter password is not allowed | 你在批处理命令中使用了 --password。 | 请改用 --pwd-file; 完整规则请参阅设置指南。 |
Account cannot be found | 多个经纪商的账户号码相同, 无法唯一确定账户。 | 添加 --broker=<broker-name>。 |
Unknown symbol name | 交易品种名称错误或不受支持。 | 运行 symbols, 然后使用输出中显示的准确名称。 |
Unknown period | 时间周期标识符不正确。 | 运行 periods 以列出所有受支持的标识符。 |
注意
有关所有选项、默认值及完整说明, 请参阅CLI 参考文档。