Add Binance live trading, anti-stuck open/close recovery, and configurable rate limits.
OKX/Binance LIVE share half_open and option_closed_perp_pending repair paths; private REST throttles default to 1s and are tunable in settings. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -30,9 +30,15 @@ _session: StrategySession | None = None
|
||||
def _has_open_position() -> bool:
|
||||
try:
|
||||
from ..models.db import get_db
|
||||
from ..sim.matcher import BLOCKING_STATUSES
|
||||
|
||||
row = get_db().fetchone("SELECT status FROM positions WHERE id=1")
|
||||
return bool(row and row["status"] == "open")
|
||||
row = get_db().fetchone("SELECT status, group_id, option_inst_id FROM positions WHERE id=1")
|
||||
if not row:
|
||||
return False
|
||||
st = str(row["status"] or "")
|
||||
if st not in BLOCKING_STATUSES:
|
||||
return False
|
||||
return bool(row["group_id"] or row["option_inst_id"])
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
@@ -45,7 +51,10 @@ def _held_option_inst_id() -> str | None:
|
||||
row = get_db().fetchone(
|
||||
"SELECT status, option_inst_id FROM positions WHERE id=1"
|
||||
)
|
||||
if not row or row["status"] != "open":
|
||||
if not row or row["status"] not in ("open", "half_open", "option_closed_perp_pending"):
|
||||
return None
|
||||
# 期权已平待平永续:不再钉期权盘口
|
||||
if row["status"] == "option_closed_perp_pending":
|
||||
return None
|
||||
inst = str(row["option_inst_id"] or "").strip()
|
||||
return inst or None
|
||||
|
||||
Reference in New Issue
Block a user