修复期权分批平仓只记最后一笔收回导致盈亏漏算。

每次部分成交累加权利金与张数,全平后再合计 realized_pnl,并优先匹配交易所全平历史。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-09-24 21:13:05 +08:00
parent f5104fe68b
commit a7015ec5c8
4 changed files with 325 additions and 11 deletions
+4 -1
View File
@@ -1595,6 +1595,9 @@ def resolve_option_close_from_history(
u_i, row = item
c_ms = _safe_float(row.get("cTime"))
parts: list[float] = []
# 全平/强平/ADL 优先于部分平仓(同合约多条时避免只吃到 type=1)
close_type = str(row.get("type") or "").strip()
parts.append(0.0 if close_type in ("2", "3", "6") else 1.0)
# 张数优先:同合约多笔时最稳,且不受本地/交易所时区偏差影响
if want_sheets is not None:
hist_sheets = _safe_float(row.get("closeTotalPos"))
@@ -1609,7 +1612,7 @@ def resolve_option_close_from_history(
parts.append(float(abs(int(c_ms) - int(open_ms))))
if close_ms is not None:
parts.append(float(abs(u_i - int(close_ms))))
if not parts:
if len(parts) <= 1:
parts.append(float(-u_i))
# 同距时偏向更晚平仓
parts.append(float(-u_i))