4b4dca9e3c
Co-authored-by: Cursor <cursoragent@cursor.com>
3.5 KiB
3.5 KiB
策略与逻辑审计修复报告
- 日期: 2026-07-30
- 范围: OKX 三选一模式 / 永期·期期对冲监控与开平 / 单独期权开平 / 互斥与复盘钳制
- 准则: 以资金与仓位正确性为准(假平仓、未成交落库、跨模式拆组等)
- 复审: 共 3 轮深度复审;最终 剩余 P0 = 0
修复总览
| 轮次 | 结果 |
|---|---|
| 初审 | 约 10 项 P0 + 多项 P1(监控假平、落库≠成交、模式互斥缺口等) |
| 复审 1 | 18/20 已修;发现 SL 待平可误判 TP、监控可重复启动、单独开仓仍可缩量 |
| 复审 2 | 上述 3 项已修;剩余若干 P1 |
| 复审 3 | P1 再收口(互斥/目标监控 fail-closed、already_flat 二次验仓、监控启动锁);P0 清零 |
已修复关键项(原审计编号)
永期监控 / 对冲平仓
- H1
live is None不再当已平;仅live==0且过开仓宽限期后处理 - H2 止损强平失败不写
closed,写perp_sl_pending_opt并重试 - H3 TP/SL 分类:歧义偏 SL;未知跳过;
*_pending_opt粘滞不再被 mark 反弹改判 - H4
_sell_option改为close_option_by_bid1,要求fully_closed;already_flat二次验仓 - H7
partial计划纳入监控 - H5 IOC 部分成交后尝试立刻平掉孤儿仓
- H6
/start进程内锁 + 闸门重检 - H8 服务端校验 long↔Put / short↔Call 与 TP/SL 几何
- 卖一深度不足时拒绝缩量成交(对冲买入)
单独期权
- O1 开仓 IOC +
wait_option_order_full_fill,成交后再落open - O2 平仓后持仓
None不标fully_closed - O3 禁止期权页 close/target 拆对冲腿;目标监控跳过托管合约
- O4 模式/互斥校验异常 fail-closed
- 开仓拒绝卖一深度不足时的静默缩量
- stub 买一路径不再撤掉他人挂单;门控通过改在下单接受后标记
三选一模式 / UI
- M1 Jinja 去掉
| default(true),避免False显示成 Tab - M2 监控线程始终启动(单独期权也收口遗留计划)+ 单例锁
- M3 env 展示
OKX_TRADE_MODE与get_okx_trade_mode()一致 - 仪表盘始终展示进行中对冲;
complete-leg校验当前模式 - 复盘 API 按模式钳制
source_type
测试
python -m unittest tests.test_hedge_po_monitor_safety tests.test_hedge_plan_orders \
tests.test_okx_trade_mode tests.test_hedge_options_exclusive \
tests.test_hedge_plan_end tests.test_hedge_partial_manual -v
→ OK (35)
新增: tests/test_hedge_po_monitor_safety.py(含 None 跳过、分类、SL sticky)
残留非关键项(P1,可后续迭代)
- 连续两次持仓列表均为空时,仍可能把「短暂漏仓」当成已平(对冲路径已有二次验仓;目标/手动路径仍单次)
- 部分成交后若孤儿平仓也失败,需人工处理(已返回
orphan_close) - 期权页对托管腿仍可能显示按钮,但 API 已拒绝
主要改动文件
lib/hedge_plan/hedge_plan_monitor_lib.pylib/hedge_plan/hedge_plan_orders_lib.pylib/hedge_plan/hedge_plan_register.pylib/hedge_plan/hedge_plan_db.pylib/hedge_plan/hedge_options_exclusive_lib.pylib/hedge_plan/templates/hedge_plan_panel.htmllib/options/options_close_exec_lib.pylib/options/options_register.pylib/options/options_target_lib.pylib/options/options_review_register.pylib/env/env_ui_manifest.pylib/instance/instance_dashboard_lib.pytests/test_hedge_po_monitor_safety.py等
部署
见本轮 commit + zk.hyf2.cc deploy/pull_and_restart.sh 结果。