如何用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 三面板图表

| 面板 | 内容 | 展示元素 |
|---|---|---|
| 面板一: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 一个引擎覆盖两个市场
资源链接:
- EasyClaw 下载:https://easyclaw.cn/?f=706
- Hummingbot GitHub:https://github.com/hummingbot/hummingbot
你觉得止盈止损用固定比例好还是动态跟踪好?你在实盘中更偏向TP/SL纪律执行还是主观判断出场?欢迎在评论区分享你的交易纪律和经验。

浙公网安备 33010602011771号