Fix LIVE open/close double-book and security audit findings.
Prevent expiry dual-close from re-booking option cash, abandon ledger rejection, margin-mode mismatch, and manual close races; harden fill wait and refuse default AUTH_SECRET on LIVE. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -114,6 +114,12 @@ class BinanceLiveExecutor(Matcher):
|
||||
)
|
||||
except Exception as e:
|
||||
logger.exception("binance live open option failed")
|
||||
msg = str(e)
|
||||
if "orderId=" in msg or "orderId" in msg.lower():
|
||||
return OpenResult(
|
||||
ok=False,
|
||||
detail=f"币安开期权未确认成交(保留 opening 防重复开,请核对交易所): {e}",
|
||||
)
|
||||
release_open_slot_if_opening(self.db)
|
||||
return OpenResult(ok=False, detail=f"币安开期权失败: {e}")
|
||||
|
||||
@@ -634,6 +640,8 @@ class BinanceLiveExecutor(Matcher):
|
||||
detail=f"期权已平,永续待平(option_closed_perp_pending): {e}",
|
||||
)
|
||||
|
||||
# 期权已在 _mark_option_closed_perp_pending 入账/写 fill(含到期本地结算),
|
||||
# 此处 pending_perp_only 必为 True;勿再按 is_expiry 二次入账。
|
||||
return self._finalize_dual_close(
|
||||
pos=pos,
|
||||
group_id=group_id,
|
||||
@@ -647,14 +655,8 @@ class BinanceLiveExecutor(Matcher):
|
||||
pf_px=pf_px,
|
||||
pf_fee=pf_fee,
|
||||
reason=reason,
|
||||
option_fill_already_written=(
|
||||
st == "option_closed_perp_pending"
|
||||
or (pending_perp_only and not is_expiry)
|
||||
),
|
||||
skip_option_cash=(
|
||||
st == "option_closed_perp_pending"
|
||||
or (pending_perp_only and not is_expiry)
|
||||
),
|
||||
option_fill_already_written=bool(pending_perp_only),
|
||||
skip_option_cash=bool(pending_perp_only),
|
||||
)
|
||||
|
||||
def _mark_option_closed_perp_pending(
|
||||
@@ -950,6 +952,7 @@ class BinanceLiveExecutor(Matcher):
|
||||
kind="close_perp",
|
||||
group_id=group_id,
|
||||
note=f"LIVE-BN close perp abandon option {reason}",
|
||||
allow_negative=True,
|
||||
)
|
||||
|
||||
strike = self._group_strike(group_id, option_inst_id)
|
||||
|
||||
Reference in New Issue
Block a user