修复期权分批平仓只记最后一笔收回导致盈亏漏算。
每次部分成交累加权利金与张数,全平后再合计 realized_pnl,并优先匹配交易所全平历史。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user