PyCryptoBot实战:四个信号同时确认才出手,两年只产生一笔交易
一个要求四个信号同时确认才出手的交易机器人
PyCryptoBot 是一个加密货币交易机器人框架,但它的策略引擎并不限于加密——用在股票上同样适用。它和之前写过的所有策略框架最大的区别在于信号确认的严格程度:不是只看一个指标,而是要求 Golden Cross、EMA 趋势、MACD 金叉、布林带上轨突破四个信号全部确认后才出手。
结果就是——两年只产生了一笔交易。这和上一篇 Blankly 的 Golden Cross 策略在同一个区间、同一只股票上触发了一模一样的买入日期(2025 年 9 月 22 日),但 PyCryptoBot 多了一层逻辑:不仅要 SMA50 上穿 SMA200,还要 EMA12 在 EMA26 之上、MACD 在 Signal 之上、价格突破布林带上轨——四个条件同时满足才算有效信号。最终收益 +31.30%,夏普 1.17,回撤 -13.82%。
起步
从 EasyClaw 官网下载安装。不需要手动装 PyCryptoBot、不需要配交易所接口。
打开后左侧找「Skill」→「Skill Creator」。灰显的话去「设置 → 通用」打开「开发者模式」重启。
创建 Skill
在 Skill Creator 里告诉 EasyClaw:
帮我把 GitHub 上的 PyCryptoBot(https://github.com/whittlem/pycryptobot)做成一个回测 Skill。我希望输入股票代码和起止日期,自动拉数据,用 Golden Cross + EMA 趋势 + MACD + 布林带四个条件复合确认的信号逻辑跑回测,输出 TradingGraphs 六面板图表和完整交易统计。
Skill 创建好后:
用 PyCryptoBot 回测 AAPL,从 2024 年中到现在,Bull Only 模式,四信号复合确认策略



回测结果:四个条件筛到最后只剩一笔交易
| 指标 | 值 | vs Blankly(单一 Golden Cross) |
|---|---|---|
| 总收益率 | +31.30% | +31.56%(几乎一样) |
| CAGR | 14.49% | 14.61% |
| 夏普比率 | 1.172 | 0.968 |
| 索提诺 | 1.673 | 1.381 |
| 最大回撤 | -13.82% | -13.82%(完全一致) |
| 交易次数 | 1 | 2(一买一卖) |
| 胜率 | 100% | 100% |
| 数据量 | 469 条日线 | ~500 条 |
的交易
| # | 买入日 | 买入价 | 卖出日 | 卖出价 | 收益 |
|---|---|---|---|---|---|
| 1 | 2025-09-22 | $256.08 | 2026-07-27 | $336.91 | +31.56% |
和 Blankly 的 Golden Cross 在同一个日期触发买入——2025 年 9 月 22 日,SMA50 从下方穿过 SMA200。区别在于,PyCryptoBot 还额外检查了三个条件:EMA12 必须高于 EMA26(短期趋势确认)、MACD 必须高于 Signal(动量确认)、价格必须突破布林带上轨(波动率确认)。四个条件在这一天同时满足——在两年 469 个交易日中,这种情况只出现了一次。
多条件复合确认的代价和收益
PyCryptoBot 和 Blankly 在同一个股票、同一个区间、同一笔交易上拿到了几乎一样的收益(31.30% vs 31.56%)。但 PyCryptoBot 的夏普比率更高(1.17 vs 0.97),索提诺比率也更高(1.67 vs 1.38)。
差异的来源不是交易执行,而是空仓期更多。Blankly 虽然也只有一买一卖,但它的信号逻辑更简单——Golden Cross 触发了就买入,回测结束时卖出。PyCryptoBot 在买入之前还有 14 个月的空仓等待——这段空仓期的日收益率为零,不贡献波动,所以拉高了夏普和索提诺。
多条件复合确认的本质是用交易频率换信号质量。每多一个确认条件,就多一层过滤——假信号被滤掉了,但真信号也可能被滤掉。在 2024-2026 的苹果上,额外的三个条件既没有错过真信号(因为的 Golden Cross 恰好在同一天也满足了其他三个条件),也没有产生新的假信号(因为根本没再出现四个条件同时满足的其他日子)。
但换个区间换个标的,结论可能完全不同。如果苹果在 2026 年出现了另一个 Golden Cross 但 MACD 没有金叉——Blankly 会买入而 PyCryptoBot 会空仓。多一层过滤就是多一层踏空的风险。
六面板 TradingGraphs——一张图看懂策略全貌
PyCryptoBot 的原生可视化模块叫 TradingGraphs,一张图上六个面板:
| 面板 | 内容 | 作用 |
|---|---|---|
| ① | 价格 + EMA12/EMA26 + 买卖信号标注 | 最核心——价格走势和信号触发点 |
| ② | 布林带(20,2)灰色通道 | 波动率区间——买入时价格是否突破上轨 |
| ③ | SMA20/50/200 + MACD 子图 | 均线排列 + MACD 交叉确认 |
| ④ | RSI(14) + OBV 能量潮 | 超买超卖 + 资金流向 |
| ⑤ | Elder Ray 多空柱 | 多空力量对比 |
| ⑥ | 组合净值 vs 标的走势 | 策略是否跑赢买入持有 |
六个面板从上到下排列,买入点在每个面板上都可以交叉验证——在面板①看到价格上穿 EMA,在面板②看到布林带上轨突破,在面板③看到 MACD 金叉——一眼确认四个条件是否同时成立。
常见报错
| 错误 | 原因 | 解决方法 |
|---|---|---|
| 回测无任何交易 | 四个条件从未同时满足 | 减少确认条件数量,或放宽参数 |
| TradingGraphs 中某面板空白 | 该指标数据量不足 | 延长回测区间 |
下一步
- 去掉布林带条件,保留其他三个,看是否产生新的交易信号
- 把策略移植到加密市场——PyCryptoBot 的原生战场——看多条件确认在 BTC 上的效果
资源链接:
- EasyClaw 下载:https://easyclaw.cn/?f=744
- PyCryptoBot GitHub:https://github.com/whittlem/pycryptobot
你做策略的时候习惯用几个条件做信号确认?有没有因为多加了一个条件而错过一波大行情的经历?欢迎聊聊。

浙公网安备 33010602011771号