101cb3c045
Distinguish exchange query None from flat zero; keep opening when size unknown; idempotent half_open cash; scan options while opening; continue manage after recover. Co-authored-by: Cursor <cursoragent@cursor.com>
1.7 KiB
1.7 KiB
审计说明 — 开/平仓逻辑与实盘安全(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;开仓张数独立 |
开仓
claim→assert(永续+期权残留)→stamp→ 买期权 →stamp均价- 开永续用
perp_open_contracts_okx(不跟残留) - 永续失败:查仓
None/有仓 → 保留 opening;确认空 → 回滚期权 / half_open - tick/启动/紧急:
recover_opening(空清槽 / 仅期权 half_open / 双边 promote)
平仓
- 卖期权(已空则跳过)→ mark pending 仅一次
- 查永续:
None→ 失败返回;0→ finalize;>0→ 下单 - 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