跳转至

回顾上个月的交易

月度复盘主要回答三个问题: 有多少笔交易已平仓? 这些交易的结果如何? 当前还存在哪些风险? 本指南将平仓成交记录、已完成订单历史和当前风险敞口保存到带日期的文件夹中, 然后将各步骤组合成一个可在每月月底重复运行的脚本。

提示

先在 Shell 变量中设置一次登录凭据。以下交互式命令均复用这些变量, 因此步骤更简洁, 脚本也更容易在不同环境中使用。

export CTID=letstrade
export ACC=7654321
export PWD_FILE=$HOME/.ctrader/pwd

1. 获取当月平仓交易

deals 仅返回平仓交易: 每笔平仓成交对应一条记录, 包含已实现盈亏。这些数据与 cTrader 的历史记录选项卡中显示的数据相同。 --from 和 --to 按平仓时间筛选交易; --count 返回最近平仓的交易。开仓成交不包含在结果中, 因此只有在头寸全部或部分平仓后, 才会出现在 deals 中。

ctrader-cli deals --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q \
    --from=01/06/2025 --to=30/06/2025

每笔平仓交易的输出包含交易品种、买卖方向、交易量、成交价和已实现盈利。

2. 获取已完成订单的历史记录

orders-history 列出同一日期范围内已结束的订单及其最终状态(filled、expired、cancelled 或 error)。不包含仍在等待执行的挂单。

ctrader-cli orders-history --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q \
    --from=01/06/2025 --to=30/06/2025

对照成交记录和订单历史, 找出哪些建仓对应哪些平仓。

deals 和 orders-history 的历史数据查询有以下限制:

  • CLI 可以加载 --from / --to 指定的完整日期范围, 不限制时间跨度。
  • 但单次调用最多只返回该范围内最近的 200 笔成交(deals)或最近的 500 个订单(orders-history)。
  • 如果不指定 --from / --to, 两条命令均只返回最近 30 天的数据。

如果某个月交易频繁, 请将日期范围拆成多个较短的区间, 对每个区间分别运行两条命令。

3. 查看当前风险敞口

exposure 按交易品种汇总账户中未平仓头寸的风险敞口。这份数据快照反映了月度复盘后第二天仍需承担的风险。

ctrader-cli exposure --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q

4. 将各项结果保存到带日期的文件

每条命令都会输出 JSON, 因此只需重定向输出, 即可保存复盘结果。

MONTH=2025-06
ctrader-cli deals          --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q --from=01/06/2025 --to=30/06/2025 > ${MONTH}_deals.json
ctrader-cli orders-history --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q --from=01/06/2025 --to=30/06/2025 > ${MONTH}_orders.json
ctrader-cli exposure       --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q > ${MONTH}_exposure.json

你会得到三个带日期的文件, 分别对应三个问题, 便于与下个月的复盘结果进行比较。

5. 将各步骤组合成月度复盘脚本

将完整命令序列保存为 monthly-review.sh。脚本会自动计算上个月的第一天和最后一天, 因此无论何时运行都适用。

#!/usr/bin/env bash
set -euo pipefail

CTID=letstrade
ACC=7654321
PWD_FILE=$HOME/.ctrader/pwd

MONTH=$(date -d "last month" +%Y-%m)
FROM=$(date -d "last month" +01/%m/%Y)
TO=$(date -d "last month" +$(date -d "last day of last month" +%d)/%m/%Y)

mkdir -p ${MONTH}
cd ${MONTH}

ctrader-cli deals          --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q --from=$FROM --to=$TO > ${MONTH}_deals.json
ctrader-cli orders-history --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q --from=$FROM --to=$TO > ${MONTH}_orders.json
ctrader-cli exposure       --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q > ${MONTH}_exposure.json

echo "Review for ${MONTH} saved to $(pwd)/${MONTH}_*.json"

每月运行一次, 为对应的统计周期创建一个带时间戳的文件夹。在 Linux 上, date -d 可以直接识别 last month 和 last day of last month 表达式。在 macOS 上, 可使用 coreutils 中的 gdate, 或为 --from 和 --to 指定固定值。

6. 从数据中发现规律

JSON 文件采用结构化格式, 便于在 Notebook 环境或简单的 Shell 管道中分析。常见的检查项目包括:

  • 盈利交易占比: 比较盈利为正的成交笔数与亏损成交笔数。
  • 按交易品种统计: 按品种对成交记录分组, 汇总每组的盈利。
  • 最大单笔亏损: 按盈利金额对成交记录排序, 找出最低值。
  • 未平仓风险: 查看风险敞口文件, 了解哪些品种仍有未平仓头寸。

结合当天的 account-stats 数据快照, 可以更完整地了解账户在整个月的变化。

cTrader CLI 命令参考文档列出了此流程中所用命令的所有可用选项。

警告

cTrader CLI 是一款交易和自动化工具。它不提供财务、投资、法律或税务建议。过往表现不保证未来结果。运行每条命令前请先核对, 先在模拟账户中测试, 并妥善保护登录凭据。