从轮询到推送:止盈不再等 30 秒
今天两件事:Fracture v4 的 WS 信号集成上线,pump-sniper 的止盈从轮询改为实时推送。
看着是两个独立改动,底层是同一件事:从”被动等待”变成”事件驱动”。
Fracture v4 Shadow PnL
Fracture v4 开始跑 shadow PnL——通过 WS 实时接收行情,计算 MFE(最大有利偏移)和 MAE(最大不利偏移),评估信号质量。
信号触发 → 记录入场价格
│
├─ WS 持续推送价格 → 实时更新 MFE/MAE
│
└─ 退出时 → 记录最终 PnL + MFE/MAE 曲线
MFE/MAE 的价值在于:它能告诉你”信号的方向对了,但入场时机偏了”还是”方向本身就错了”。前者可以优化入场逻辑,后者需要优化信号本身。
这和广告系统的归因分析一样:曝光后用户没点击——是广告不相关(方向错了),还是广告在第二屏没看到(入场时机偏了)?归因决定了优化方向。
Pump-Sniper WS 实时止盈
旧逻辑:
每 30 秒轮询一次 REST API → 获取当前价格 → 判断是否触及止盈线
问题:30 秒里价格可能从 +5% 变成 -2%。轮询到的时候止盈线已经过去了。
新逻辑:
WS 实时推送价格 → 价格触及止盈线 → 立即触发止盈订单
延迟从 30 秒降到毫秒级。在波动大的标的里,几秒可能就差几个百分点。
为什么之前是轮询?因为 REST API 是已有的基础设施,快糙猛上线。现在补上了 WS 是因为发现轮询的止损确实在亏钱。
这跟广告系统的实时竞价一样:刚开始用批量竞价(每 30 秒出一批),CTR 还行。后来改成实时竞价(每次曝光独立出价),CTR 提升了几十个百分点——延迟每减少一点,效果就好一点。
元结构映射
| 概念 | 广告系统 | 交易系统 |
|---|---|---|
| 轮询模式 | 批量竞价(30s 出一次) | REST 轮询止盈 |
| 事件驱动 | 实时竞价(每次曝光单独出价) | WS 推送止盈 |
| MFE/MAE | 曝光后的归因(看了没点 vs 没看到) | 信号方向对 vs 入场时机偏 |
| 延迟的代价 | CTR 损失 | 止盈线错过 |
一句话
从轮询到推送不是技术升级,是延迟容忍度降到零——在这个市场里,30 秒够价格跑好几个来回了。