如何用Hummingbot对贵州茅台进行TP/SL策略回测?7笔交易止盈止损精确到分

一、问题引入:Hummingbot 做股票回测?不是只做加密的吗

提到 Hummingbot,大多数人的第一反应是"加密货币做市机器人"。但它的回测引擎其实是一个策略无关、资产无关的事件驱动框架——支持自定义 Executor、支持止盈止损(TP/SL)指令、支持多 Executor 并行执行。用在A股回测上同样可行。问题是 Hummingbot 的配置门槛不低:策略逻辑要写 Python、Executor 参数要配 YAML、回测结果要手动调 get_results_summary 和 get_backtesting_figure 两个函数才能输出完整报告。

能不能把 Hummingbot 封装为一个 Skill——输入股票代码,自动完成策略配置、Executor 参数设置、回测执行和三面板图表输出?本文以贵州茅台(600519)的真实回测结果演示完整流程。

二、成果展示:贵州茅台 Hummingbot 回测的真实输出

2.1 回测概览

项目
标的 600519(贵州茅台)
回测区间 2022-01-01 → 2023-12-31
初始资金 ¥1,000,000

2.2 核心绩效(get_results_summary)

类别指标
收益 Net PNL $110,923.73(+11.09%)
成本 Total Fees $4,431.66
风险 Max Drawdown $198,784.44(15.18%)
风险调整 Sharpe Ratio 0.50
盈利质量 Profit Factor 1.69
交易统计 Total Executors 7
方向胜率 Accuracy Long 0.43(43%)
成交量 Total Volume $14,772,205.49

2.3 平仓方式分布

平仓类型次数说明
TP(止盈) 3 价格触及止盈目标后自动平仓
SL(止损) 4 价格触及止损线后自动平仓
TL(超时) 0 持仓超过最大时间限制
Trailing 0 移动止损触发
Early Stop 0 提前停止
Position Hold 0 期末仍持仓

Hummingbot 的特色:每笔交易的平仓方式都被精确记录。7笔交易中3次止盈、4次止损——没有一笔是超时或被动持有的。策略的执行纪律体现在数据里:每次出场都有明确的触发条件,不存在"不知道该不该卖"的模糊状态

2.4 逐笔交易明细(executors_df)

#入场日方向入场价出场价数量净盈亏平仓方式
1 2022-04-13 BUY ¥1,528.92 ¥1,522.00 600 -¥4,149.76 SL
2 2022-06-07 BUY ¥1,571.18 ¥1,700.92 600 +¥77,820.71 TP
3 2022-11-23 BUY ¥1,353.22 ¥1,631.27 700 +¥194,575.62 TP
4 2023-04-04 BUY ¥1,605.44 ¥1,515.93 700 -¥62,675.12 SL
5 2023-06-16 BUY ¥1,590.49 ¥1,593.62 700 +¥2,194.45 TP
6 2023-09-07 BUY ¥1,651.11 ¥1,600.80 700 -¥35,230.94 SL
7 2023-11-09 BUY ¥1,611.69 ¥1,529.84 700 -¥57,309.18 SL

2.5 三面板图表

image

 

面板内容展示元素
面板一:K线+进出标记 贵州茅台日K线 + Executor 入场出场标注 绿色TP▲标记止盈点、红色SL▼标记止损点
面板二:累计PnL 账户累计盈亏曲线 金黄色填充区域,直观看赚钱还是亏钱
面板三:持仓序列 持仓状态随时间的变化 持仓/空仓时间段的视觉对比

三、Step 1:环境准备

EasyClaw 官网下载并安装最新版。本文所有操作均通过自然语言对话完成,不需要手动安装 Hummingbot、配置 Docker 或编写策略代码。

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

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

四、Step 2:项目架构分析

在 Skill Creator 中输入:

从 GitHub 拉取 Hummingbot 项目(https://github.com/hummingbot/hummingbot),先展示目录结构,标注出回测引擎、Executor 框架和报告生成模块的位置和职责。

EasyClaw 自动扫描后输出关键模块:

hummingbot/
├── hummingbot/
│   ├── strategy/              ← ★ 策略基类+Executor框架
│   ├── backtesting/           ← ★ 回测引擎
│   │   ├── backtesting_engine.py    ← 事件驱动回测核心
│   │   └── report_generator.py      ← 报告生成(summary+figure+executors_df)
│   ├── connector/             ← 交易所/数据源接口
│   └── core/                  ← 事件循环+时钟
└── scripts/                   ← 配置文件
模块职责Skill 中的角色
backtesting/ 事件驱动回测引擎 + 报告生成(summary+figure+明细) Skill 核心引擎
strategy/ Executor 框架:定义入场/出场/止盈/止损逻辑 Skill 根据参数自动生成 Executor 配置
connector/ 数据源接口,支持多交易所和自定义数据 Skill 自动拉取A股数据

这是 EasyClaw 自动识别出的结果,不需要你手动翻目录、读源码。

五、Step 3:核心参数配置与 Skill 创建

3.1 参数一览

参数名所属模块含义默认值推荐值说明
symbol 回测引擎 交易标的代码 必填,如 600519
start_date 回测引擎 回测起始日期 格式 YYYY-MM-DD
end_date 回测引擎 回测结束日期 格式 YYYY-MM-DD
initial_capital 回测引擎 初始资金 100000 100000-1000000 根据实际资金设置
strategy Executor 策略类型 ma_crossover 可选:ma_crossover/macd/rsi
take_profit_pct Executor 止盈比例 0.08 0.05-0.15 盈利超过此比例触发TP
stop_loss_pct Executor 止损比例 0.05 0.03-0.08 亏损超过此比例触发SL

3.2 用自然语言创建 Skill

在 Skill Creator 中粘贴以下内容。EasyClaw 自动完成代码拉取、架构分析、依赖安装和 Skill 封装。

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

重点关注:
- backtesting/:回测引擎 + get_results_summary + get_backtesting_figure + executors_df 报告生成
- strategy/:Executor 框架,包括入场信号、止盈(TP)、止损(SL)逻辑

额外加入能力:
- 自动从外部数据源拉取A股历史K线,适配 Hummingbot 的 data feed 格式
- 回测完成后自动调用 get_results_summary 输出绩效摘要
- 自动调用 get_backtesting_figure 生成三面板图表(K线+进出标记 / 累计PnL / 持仓序列)
- 自动导出 executors_df 交易明细

封装为 EasyClaw Skill:
- 名称:Hummingbot回测
- 输入:symbol、start_date、end_date、initial_capital(默认100000)、strategy(默认ma_crossover)、take_profit_pct(默认0.08)、stop_loss_pct(默认0.05)
- 输出:backtest_summary.txt + executors.csv + hummingbot_backtest_figure.html(三面板交互图表)

点击「创建 Skill」,等待完成。

六、Step 4:运行回测与结果解读

4.1 启动回测

@Hummingbot回测 symbol=600519 start_date=2022-01-01 end_date=2023-12-31 initial_capital=1000000

4.2 真实结果关键发现

贵州茅台双均线+TP/SL策略在2022-2023年的Hummingbot回测揭示了几个关键特征:

  • TP/SL 纪律严明:7笔交易中3次止盈、4次止损,没有一笔超时(TL=0)或被动持有(Position Hold=0)。每次出场都有明确的触发条件——策略的执行纪律体现在数据里
  • Profit Factor 1.69:总盈利 / 总亏损 = 1.69,每亏1元钱能赚回1.69元。这是衡量策略质量的核心指标之一
  • 长期胜率43%:7笔交易中3胜4负,但盈利交易的平均收益远超亏损交易——靠赔率而非胜率盈利
  • 最大回撤15.18%:发生在100万初始资金的账户上就是近20万的浮动亏损。这个数字在心理上能否承受,决定了策略能否在实盘中坚持执行

4.3 效率对比

环节手动搭建 Hummingbot + 手动回测EasyClaw Skill
环境搭建 Docker 或源码安装 + 依赖配置,约1-2小时 0 分钟(EasyClaw 内置环境)
策略+Executor配置 手写策略类 + 配置 YAML 参数,约30-60分钟 Skill 自动生成,0 分钟
数据适配 手动将A股数据转为 Hummingbot 格式,约20分钟 Skill 自动拉取+适配,0 分钟
报告生成 手动调用 get_results_summary + get_backtesting_figure,约10分钟 自动输出,0 分钟
总计 约2-3.5小时

[注:本文方式的具体耗时取决于网络环境和硬件配置,实际测试后填写]

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

5.1 调整止盈止损参数

@Hummingbot回测 symbol=600519 take_profit_pct=0.10 stop_loss_pct=0.03  ← 放宽止盈、收紧止损
@Hummingbot回测 symbol=600519 take_profit_pct=0.05 stop_loss_pct=0.08  ← 收紧止盈、放宽止损

5.2 切换策略类型

@Hummingbot回测 symbol=000858 strategy=macd    ← MACD策略
@Hummingbot回测 symbol=000858 strategy=rsi      ← RSI超买超卖

5.3 常见问题排查

错误信息原因解决方法
回测无交易记录 TP/SL 参数过于极端,信号从未触发 调整 take_profit_pct/stop_loss_pct 参数,或换用更敏感的策略类型
"data feed format error" A股数据未正确适配 Hummingbot 格式 Skill 已内置自动适配,如仍报错在设置中检查数据源
图表中文显示为方框 Matplotlib 中文字体缺失 EasyClaw 已内置中文字体处理,如仍有问题指定字体路径

八、总结

Hummingbot 虽然以加密做市闻名,但它的回测引擎——Executor框架+TP/SL机制+完整的报告输出——用在A股回测上同样顺手。本文用贵州茅台的真实回测展示了完整的 Hummingbot 工作流:7笔交易、净收益$110,923(+11.09%)、Profit Factor 1.69、TP:SL=3:4。Hummingbot 最大的特色在于每笔交易的平仓方式都被精确记录——你不需要事后回忆"当时是什么原因卖的",TP还是SL,数据里一清二楚。

下一步可以尝试:

  • TP/SL 参数网格扫描:对止盈止损比例做参数网格搜索,找到收益回撤比最优的组合
  • 多 Executor 并行:Hummingbot 支持多个 Executor 同时运行不同策略,可以测试策略组合效果
  • 加密+股票混合回测:如果你同时交易加密和股票,Hummingbot 一个引擎覆盖两个市场

资源链接:

你觉得止盈止损用固定比例好还是动态跟踪好?你在实盘中更偏向TP/SL纪律执行还是主观判断出场?欢迎在评论区分享你的交易纪律和经验。

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