# 审计说明 — 开/平仓逻辑与实盘安全(2026-07-29) ## 结论(四轮后) 开平仓主路径已闭环:占槽 → 意图落库 → 期权 → 永续 → open;平仓先 mark pending 再平永续;崩溃可 `recover_opening`。第四轮修掉「查仓失败当空仓 finalize」等回归。 ## 四轮关键项 | 轮次 | 关键修复 | |------|----------| | 1 | 到期双入账;abandon `allow_negative`;保证金模式;引擎锁;AUTH;盈亏查询 | | 2 | abandon 假 residual;部分成交不当全成;residual LIVE 账本 | | 3 | stamp + recover_opening;期权对账;已空不重卖/不下单;币安 orderId= | | 4 | 查仓 `None`≠`0`;回滚仅确认空仓;half_open/promote 现金幂等;opening any-option;开仓张数独立 | ## 开仓 1. `claim` → `assert`(永续+期权残留)→ `stamp` → 买期权 → `stamp` 均价 2. 开永续用 `perp_open_contracts_okx`(不跟残留) 3. 永续失败:查仓 `None`/有仓 → 保留 opening;确认空 → 回滚期权 / half_open 4. tick/启动/紧急:`recover_opening`(空清槽 / 仅期权 half_open / 双边 promote) ## 平仓 1. 卖期权(已空则跳过)→ mark pending 仅一次 2. 查永续:`None` → 失败返回;`0` → finalize;`>0` → 下单 3. abandon:已 pending 只续平;禁止假 residual ## 已知极少人工场景 - opening 无 `option_inst_id` 且交易所有不明期权:禁止自动清槽 - promote 入场价可能用指数近似(本地镜像;实盘盈亏可走交易所对账) ## 涉及文件 `live/reconcile.py` · `executor.py` · `binance_executor.py` · `okx_trade.py` · `binance_trade.py` · `strategy/engine.py` · `sim/matcher.py`