Freqtrade实战:Enter/Exit Tag交叉统计分析贵州茅台四年35笔交易

一、问题引入:35笔交易、胜率31%、还能赚钱?

Freqtrade 是 GitHub 上 Star 数最多的开源加密货币交易机器人框架,但它本质上是一个策略无关、资产无关的事件驱动回测引擎——用在A股回测上同样顺手。Freqtrade 的特色在于其极端详尽的回测报告:不仅告诉你赚了多少,还把每笔交易的入场标签(Enter Tag)、出场原因(Exit Reason)交叉统计,让你精确知道策略的每一分钱是怎么赚的、怎么亏的

这次用 EMA5/13 短线交叉策略在贵州茅台上回测了整整四年(2020-2023),35笔交易、胜率仅31.4%——但最终盈利9.47%,最大回撤仅5.24%。本文完整展示 Freqtrade 对贵州茅台的真实回测输出。

二、成果展示:Freqtrade 四年回测的完整输出

image

freqtrade_equity_curve

2.1 BACKTESTING REPORT(回测总览)

指标
交易对 600519.SS(贵州茅台)
回测区间 2020-01-02 → 2023-12-29(4年)
策略 EMA5/13 短线交叉
总交易次数 35
胜率 31.4%(11胜 / 24负)
平均持仓时间 22天
总收益率 +9.47%
总盈利金额 ¥94,701

2.2 SUMMARY METRICS(绩效摘要)

类别指标
收益 初始资金 ¥1,000,000
最终余额 ¥1,094,701
年化 CAGR 2.33%
风险调整 Sharpe 0.80
Sortino 0.81
回撤 Max Drawdown 仅 5.24%
Underwater 金额 ¥52,446
盈利质量 Profit Factor 1.80
极端交易 最佳单笔 +12.02%
最差单笔 -3.06%
市场环境 同期茅台涨幅 +64.00%

这组数据最值得关注的地方:35笔交易、胜率31.4%、最大回撤仅5.24%。对比之前双均线10/30策略的7笔交易、胜率43%、回撤15%——短线参数(EMA5/13)用胜率换回了撤控制。交易频率从7笔跃升到35笔,但单笔风险更小、止损更快。

2.3 EXIT REASON STATS(出场原因统计——Freqtrade 特色)

Freqtrade 最独特的功能之一:按出场原因统计交易表现

出场原因次数平均收益总盈利胜率
exit_signal(策略信号) 34 +1.73% ¥96,433 32.4%
force_exit(强制平仓) 1 -0.03% -¥47 0%

34笔由策略信号正常出场、仅1笔因回测结束被强制平仓(亏损¥47,几乎可以忽略)。策略的执行完整性接近100%——没有中途止损、没有异常中断。

2.4 ENTER TAG + EXIT REASON 交叉统计

Freqtrade 支持将入场标签和出场原因交叉分析:

入场标签出场原因次数平均收益总盈利
ema5_13_cross exit_signal 34 +1.73% ¥96,433
ema5_13_cross force_exit 1 -0.03% -¥47

所有35笔交易来自同一个入场信号(EMA5/13交叉),34笔由策略正常退出,1笔被强制平仓——策略逻辑干净、执行路径清晰、无意外干扰

2.5 LEFT OPEN TRADES(未平仓交易)

标的持仓天数浮动盈亏状态
600519.SS 1天 -¥47(-0.00%) 回测结束时未平仓

2.6 输出文件

freqtrade_output/
├──  freqtrade_summary.json           ← 完整回测摘要
├──  freqtrade_trades.csv             ← 35笔交易明细
├──  freqtrade_equity_curve.csv       ← 逐日权益数据
├── ️ freqtrade_equity_curve.png       ← 权益曲线图
└──  freqtrade_full_report.py         ← 回测脚本(可复现)

[此处插入 freqtrade_equity_curve.png 截图]

三、Step 1:环境准备

EasyClaw 官网下载并安装最新版。本文所有操作均通过自然语言对话完成。

打开 EasyClaw → 左侧面板 →「Skill」→「Skill Creator」。如看不到该入口,在「设置 → 通用」中启用「开发者模式」后重启。

问题解决方法
Skill Creator 灰显 启用开发者模式后重启
网络连接失败 检查代理设置,确保能访问GitHub

四、Step 2:项目架构

从 GitHub 拉取 Freqtrade 项目(https://github.com/freqtrade/freqtrade),展示目录结构,标注回测引擎、策略框架和报告模块。
freqtrade/
├── freqtrade/
│   ├── data/              ← 数据源
│   ├── strategy/          ← ★ 策略基类(populate_indicators + populate_entry/exit_signals)
│   ├── optimize/          ← ★ 回测引擎(backtesting + hyperopt参数优化)
│   └── persistence/       ← 交易持久化(SQLite)
└── user_data/
    └── strategies/        ← 用户策略目录
模块职责
strategy/ 策略基类,通过 populate_entry/exit_signals 定义入场出场逻辑
optimize/ 回测引擎+超参优化,输出Backtesting Report+Enter/Exit Tag统计
persistence/ 交易记录持久化,支持LEFT OPEN TRADES查询

五、Step 3:参数与 Skill 创建

3.1 参数一览

参数含义默认值说明
symbol 交易标的 必填
start_date 起始日期 至少覆盖1年以上
end_date 结束日期 格式 YYYY-MM-DD
initial_capital 初始资金 1000000
ema_short 短周期EMA 5 越小越敏感
ema_long 长周期EMA 13 配合短周期使用
max_open_trades 最大同时持仓数 5 控制风险暴露

3.2 用自然语言创建 Skill

从 GitHub 拉取 Freqtrade 项目(https://github.com/freqtrade/freqtrade),自动分析项目架构。

重点关注:
- strategy/:策略基类,populate_indicators计算EMA指标,populate_entry/exit_signals定义进出场逻辑
- optimize/:回测引擎,输出Backtesting Report+Enter Tag Stats+Exit Reason Stats+Mixed Tag Stats
- persistence/:交易记录持久化,输出LEFT OPEN TRADES

额外加入能力:
- 回测报告包含Enter Tag和Exit Reason的交叉统计
- 输出LEFT OPEN TRADES(回测结束时未平仓的交易)
- Summary Metrics中包含Max % of account underwater

封装为 EasyClaw Skill:
- 名称:Freqtrade回测
- 输入:symbol、start_date、end_date、initial_capital(默认1000000)、ema_short(默认5)、ema_long(默认13)、max_open_trades(默认5)
- 输出:freqtrade_summary.json + freqtrade_trades.csv + freqtrade_equity_curve.csv + freqtrade_equity_curve.png + 回测脚本

六、Step 4:运行与结果

4.1 启动

@Freqtrade回测 symbol=600519 start_date=2020-01-01 end_date=2023-12-31

4.2 效率对比

环节手动操作EasyClaw Skill
环境+策略配置 约60分钟 0 分钟
回测+报告 约20分钟 一键输出
总计 约1.5小时

[注:具体耗时实际测试后填写]

七、Step 5:进阶与常见问题

5.1 调整EMA参数

@Freqtrade回测 symbol=600519 ema_short=10 ema_long=30  ← 切换为中长线参数

5.2 常见问题

错误原因解决方法
LEFT OPEN TRADES 数量多 回测结束时有多笔未平仓 延长回测区间使信号完整闭合,或在下一次回测中检查平仓条件
force_exit 占比高 回测区间太短导致强制平仓 延长 end_date 确保交易有足够时间走完

八、总结

Freqtrade 的回测报告在交易过程的可解释性上做到了极致。Enter Tag告诉你"为什么会入场"、Exit Reason告诉你"为什么会出场"、LEFT OPEN TRADES告诉你"还有哪些没走完"、MIXED TAG STATS把入场和出场交叉在一起让你看清策略的每一分钱是怎么流动的。四年35笔交易、胜率31.4%、回撤5.24%——用短线EMA参数换取了更低的风险暴露。同期茅台涨幅+64%,策略只赚了9.47%,但最大回撤仅5.24%——如果你更看重"睡得着觉"而不是"赚得最多",这套参数值得参考

下一步可以尝试:

  • Hyperopt 参数优化:Freqtrade 内置的超参优化可以自动搜索最优EMA参数组合
  • 多策略对比:同时回测EMA5/13、EMA10/30、EMA20/60,用Enter/Exit Tag对比三种参数的行为差异

资源链接:

你能接受31%胜率但回撤只有5%的策略吗?还是宁愿要50%胜率但回撤可能超过20%?欢迎分享你的风险偏好。

posted @ 2026-07-24 17:35  PC修复电脑医生  阅读(12)  评论(0)    收藏  举报