从硬止损到自适应恢复:Recovery Mode 的进化
交易策略总会遇到”事故”:持仓被交易所强平、被外部系统关闭、或者策略自己判断失误止损出场。
旧的处理方式很简单:等 N 小时,然后重新开仓。问题在于——N 是固定的,但事故的原因不是固定的。
- 如果是因为极端行情被强平 → 市场可能还在极端状态 → 立即重开 = 送死
- 如果是因为网络抖动导致外部关闭 → 行情没变 → 等 N 小时 = 白白错过机会
Recovery Mode v2 把固定冷却改成了状态机驱动的自适应恢复。
状态机
IDLE(等待事故)
│
├─ 事故触发
▼
COOLING(冷却中)
│
├─ 冷却到期 + 信号重新出现 → ENTRY_SCORING
│
▼
ENTRY_SCORING(入场评分)
│
├─ 评分 > 阈值 → ACTIVE(正常交易)
├─ 评分不足 → COOLING(延长冷却)
│
▼
ACTIVE(正常交易)
│
└─ 再次事故 → COOLING(冷却时间加倍)
关键创新在 ENTRY_SCORING 阶段:不是冷却完就自动开仓,而是重新打分。 分数不够就继续冷却。
三层评分
入场评分由三个维度组成:
- 趋势确认(TREND_CONFIRMED):微趋势方向是否与事故前的持仓方向一致?一致加分,反转减分。
- 信号质量:事故前的信号是否仍然有效?信号质量是衰减的——时间越久,分数越低。
- 资金费率:当前资金费率是否支持这个方向?
三层都通过才开仓。而且冷却时间不是线性的——连续事故会指数级延长冷却时间。 第一次事故冷却 30 分钟,第二次 60 分钟,第三次 120 分钟。避免在错误的方向上反复被揍。
Per-Group Baseline
一个重要的并行改动:按标的分组统计 PnL。
为什么?因为 Recovery Mode 需要知道”这个标的之前是赚是亏”。全局 PnL 把赚钱的标的和亏钱的混在一起——某个标的明明一直在亏,但全局看起来还行,就会继续开仓。
按标的独立统计 → 亏钱的标的冷却更久 → 赚钱的标的更快恢复。
这和广告系统按广告主独立核算预算一样——不会因为全局预算还有余量就让某个 ROI 为负的广告主继续投放。
一句话
固定冷却 = 闭着眼睛等。自适应恢复 = 根据恢复质量动态调整——事故原因不同,恢复策略应该不同。