Add OKX trading-account USDC auto-swap and lock exit target while in position.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import time
|
||||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
@@ -21,6 +22,8 @@ from .pricing import (
|
||||
resolve_option_close_bid,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# 禁止新开仓的本地仓位状态(实盘防卡)
|
||||
BLOCKING_STATUSES = frozenset(
|
||||
{"open", "half_open", "option_closed_perp_pending", "opening"}
|
||||
@@ -332,6 +335,15 @@ class Matcher:
|
||||
)
|
||||
self.db._conn.commit()
|
||||
|
||||
try:
|
||||
from ..strategy.exits import lock_trade_exit_target
|
||||
|
||||
lock_trade_exit_target(
|
||||
self.db, group_id=group_id, initial_premium=initial_premium
|
||||
)
|
||||
except Exception:
|
||||
logger.exception("lock exit target failed group=%s", group_id)
|
||||
|
||||
return OpenResult(
|
||||
ok=True,
|
||||
group_id=group_id,
|
||||
@@ -585,7 +597,8 @@ class Matcher:
|
||||
"""UPDATE positions SET
|
||||
group_id=NULL, perp_side=NULL, perp_qty_eth=0, perp_entry_px=NULL,
|
||||
option_inst_id=NULL, option_side=NULL, option_qty_eth=0, option_qty_contracts=0,
|
||||
option_entry_px=NULL, entry_index_px=NULL, initial_premium=0, status='flat'
|
||||
option_entry_px=NULL, entry_index_px=NULL, initial_premium=0,
|
||||
exit_target_usdt=NULL, status='flat'
|
||||
WHERE id=1"""
|
||||
)
|
||||
self.db._conn.commit()
|
||||
@@ -756,7 +769,8 @@ class Matcher:
|
||||
"""UPDATE positions SET
|
||||
group_id=NULL, perp_side=NULL, perp_qty_eth=0, perp_entry_px=NULL,
|
||||
option_inst_id=NULL, option_side=NULL, option_qty_eth=0, option_qty_contracts=0,
|
||||
option_entry_px=NULL, entry_index_px=NULL, initial_premium=0, status='flat'
|
||||
option_entry_px=NULL, entry_index_px=NULL, initial_premium=0,
|
||||
exit_target_usdt=NULL, status='flat'
|
||||
WHERE id=1"""
|
||||
)
|
||||
self.db._conn.commit()
|
||||
@@ -1098,6 +1112,11 @@ class Matcher:
|
||||
"move_points": move,
|
||||
"move_pct": move_pct,
|
||||
"initial_premium": initial_premium,
|
||||
"exit_target_usdt": (
|
||||
float(pos["exit_target_usdt"])
|
||||
if pos.get("exit_target_usdt") is not None
|
||||
else None
|
||||
),
|
||||
"premium_gap": premium_gap,
|
||||
"status": pos.get("status"),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user