Support LIVE exchange funds and perp margin mode.
Hide sim equity when LIVE is selected; OKX funds bar uses exchange balances; add cross/isolated for perp only (options stay cash). Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -37,6 +37,16 @@ class OkxLiveExecutor(Matcher):
|
||||
self._trade = OkxTradeClient()
|
||||
return self._trade
|
||||
|
||||
def _perp_margin_mode(self) -> str:
|
||||
"""永续全仓/逐仓;期权始终 cash,不受此设置影响。"""
|
||||
s = get_settings()
|
||||
raw = str(
|
||||
self.ledger.get_setting_str("perp_margin_mode", s.perp_margin_mode)
|
||||
or s.perp_margin_mode
|
||||
or "cross"
|
||||
).strip().lower()
|
||||
return "isolated" if raw == "isolated" else "cross"
|
||||
|
||||
def _guard_live(self) -> str | None:
|
||||
ok, reason = live_ready()
|
||||
if not ok:
|
||||
@@ -145,9 +155,10 @@ class OkxLiveExecutor(Matcher):
|
||||
else:
|
||||
side, pos_side = "sell", "short"
|
||||
leverage = self.ledger.get_setting_float("leverage", s.leverage)
|
||||
mgn = self._perp_margin_mode()
|
||||
try:
|
||||
client.set_leverage(
|
||||
perp_inst, leverage, mgn_mode="cross", pos_side=pos_side
|
||||
perp_inst, leverage, mgn_mode=mgn, pos_side=pos_side
|
||||
)
|
||||
except Exception as e_lev:
|
||||
logger.warning("okx set_leverage failed: %s", e_lev)
|
||||
@@ -155,7 +166,7 @@ class OkxLiveExecutor(Matcher):
|
||||
inst_id=perp_inst,
|
||||
side=side,
|
||||
sz=str(perp_sz),
|
||||
td_mode="cross",
|
||||
td_mode=mgn,
|
||||
pos_side=pos_side,
|
||||
)
|
||||
except Exception as e:
|
||||
@@ -642,7 +653,7 @@ class OkxLiveExecutor(Matcher):
|
||||
inst_id=perp_inst,
|
||||
side=side,
|
||||
sz=str(perp_sz),
|
||||
td_mode="cross",
|
||||
td_mode=self._perp_margin_mode(),
|
||||
pos_side=pos_side,
|
||||
reduce_only=True,
|
||||
)
|
||||
@@ -927,7 +938,7 @@ class OkxLiveExecutor(Matcher):
|
||||
inst_id=perp_inst,
|
||||
side=side,
|
||||
sz=str(perp_sz),
|
||||
td_mode="cross",
|
||||
td_mode=self._perp_margin_mode(),
|
||||
pos_side=pos_side,
|
||||
reduce_only=True,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user