第 6 章 · 06 Edge 边缘分析(已移除) 本节摘要:本节讲清一个在 freqtrade 历史上存在过、但已在 2025.6 版本被移除的模块——Edge(边缘分析)。Edge 的设计初衷是「按交易对逐一估算期望收益,自动剔除表现劣质的币,只交易历史胜算高的币」。它在概念上很有吸引力,因此旧文档、旧博客、第三方教程里仍大量出现。但官方在 中明确: 本节讲清三件事:Edge 原本想解决什么问题、它为什么被废弃、以及现代 freqtrade 用户应该用什么替代方案来达到「按交易对筛选」的目标。 内容来源:原项目文档 (Removal of the edge module)、 (残留命令签名),汉化并套用体系化模板。
本节摘要:本节讲清一个在 freqtrade 历史上存在过、但已在 2025.6 版本被移除的模块——Edge(边缘分析)。Edge 的设计初衷是「按交易对逐一估算期望收益,自动剔除表现劣质的币,只交易历史胜算高的币」。它在概念上很有吸引力,因此旧文档、旧博客、第三方教程里仍大量出现。但官方在
docs/deprecated.md中明确:The edge module has been deprecated in 2023.9 and removed in 2025.6. All functionalities of edge have been removed, and having edge configured will result in an error.本节讲清三件事:Edge 原本想解决什么问题、它为什么被废弃、以及现代 freqtrade 用户应该用什么替代方案来达到「按交易对筛选」的目标。
内容来源:原项目文档
docs/deprecated.md(Removal of the edge module)、docs/commands/edge.md(残留命令签名),汉化并套用体系化模板。
⚠️ 重要提示:如果你从旧教程或旧配置里拷贝了 Edge 相关配置(如
"edge": {...}或process_only_new_candles之外的 edge 字段),新版本会直接报错。请按本节末尾的「迁移清单」清理。
阅读完本节,你应当能够:
在已被移除的旧设计里,Edge(「Edge Positioning」)是一个独立的模块,理念是:
不是所有币都值得交易。根据每个交易对的历史回测表现,估算它的「期望收益(expectancy)」,然后只交易期望为正的币,自动剔除那些历史上亏多赚少的劣质币。
它的工作流程大致是:
旧版 freqtrade edge 命令会输出一张表,列出每个交易对的预估胜率、期望收益、止损范围、是否被保留等信息。配置里曾有 "edge": {...} 段落控制它的参数(如 capital_available_percentage、allowed_risk、stop_range 等)。
这是本节最关键的事实。官方文档 docs/deprecated.md 明确写:
Removal of the edge module
The edge module has been deprecated in 2023.9 and removed in 2025.6.
All functionalities of edge have been removed, and having edge configured will result in an error.
时间线:
| 时间 | 状态 |
|---|---|
| 2023.9 之前 | Edge 可用,但有诸多已知问题 |
| 2023.9 | 标记为 deprecated(废弃,仍可用但有警告) |
| 2025.6 | 完全移除;配置里残留 edge 字段会直接报错 |
本教程所基于的 freqtrade 版本(2026.x)已经没有 Edge 模块——freqtrade/plugins/ 目录下已无 edge 相关代码,docs/ 下也只剩 commands/edge.md 这个命令签名的残留文件(实际执行会失败)。
⚠️ 配置报错:如果你的
config.json里有"edge": {...}段落,新版本启动会报错。必须删除整个 edge 配置段。
官方没有长篇说明,但从 Edge 的设计缺陷和社区反馈可以推断主要原因:
「按历史表现剔币」本质是用过去预测未来——这正是量化的核心陷阱:
freqtrade 后来发展出了成熟的 pairlist 插件体系(见第 2 章),能用更透明、更可控的方式动态调整交易对:按成交量、波动率、变化率等客观指标筛选。Edge 的「按回测表现筛选」既慢(要逐个回测)、又黑盒(参数多)、还容易过拟合,被 pairlist 体系全面超越。
Edge 是一个相对独立、复杂、与主回测引擎重复的子系统。维护它需要额外精力,而用户实际使用率低、且常因过拟合给出误导性建议。官方选择移除它,集中精力在更核心的功能(回测、Hyperopt、FreqAI)上。
如果你的目标是「只交易有赚钱潜力的币」,Edge 没了,但有几个更好的现代替代:
用 pairlist 插件按客观市场指标筛选,而不是按历史回测表现:
"pairlists": [ {"method": "StaticPairList"}, // 或 VolumePairList 等动态来源 { "method": "RangeStabilityFilter", "lookback_days": 10, "min_rate_of_change": 0.02, "refresh_period": 86400 }, { "method": "VolatilityStabilityFilter", "lookback_days": 10, "min_volatility": 0.02, "max_volatility": 0.75 } ]
这类过滤器剔除「死气沉沉」或「过激波动」的币,留下波动适中的——比「按历史盈亏剔」更稳健、不易过拟合。
跑完回测后,看汇总指标里的 Worst Pair 和按交易对的盈亏表(第 02 节):
│ Best Pair │ LTC/USDT:USDT 5.69% │ │ Worst Pair │ ADA/USDT:USDT -5.21% │
人工分析「为什么某个币总是亏」——是流动性差?滑点大?策略逻辑不适配它的波动特性?找到原因后,要么改策略,要么把它加入黑名单。这是离线分析,不是自动剔币,但更透明、更能积累认知。
第 7 章会讲 MaxDrawDownPerPairHyperOptLoss 这类损失函数——它强制优化器关注每个交易对,不让一两个好币掩盖其他币的亏损。这是「从参数层面解决 per-pair 不均衡」,比 Edge 的事后剔币更治本。
最朴素也最有效——把长期观察下来确实不适合你策略的币(流动性极差、经常插针、被监管等)放进 exchange.pair_blacklist:
"exchange": { "pair_blacklist": ["BTC/USDT", "DOGE/USDT"] // 例:策略不适配的 }
如果你接手了旧项目或从老教程拷了配置,按这个清单清理:
config.json,搜索 "edge",删除整个段落(含其下所有子键)。if self.config.get('edge', ...) 之类代码,删掉或改写。freqtrade edge ... 命令(会失败)。💡 验证:清理后用
freqtrade show-config -c config.json看生效配置,确认 edge 字段已消失,再启动机器人。
你可能会问:既然 Edge 没了,为什么还专门写一节?三个理由:
"edge" 段、删策略里的 edge 引用、别再用 freqtrade edge 命令、换用 pairlist 过滤器、show-config 验证。至此第 6 章结束。下一章(第 7 章)我们进入 Hyperopt——用 Optuna 的贝叶斯优化,自动在参数空间里搜索最优策略参数。