feat期权盈亏按交易账户快照结算:一次一仓、持仓禁划转、卖回后冻结。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1026,6 +1026,21 @@ def register_options_routes(app: Flask, cfg: dict[str, Any]) -> None:
|
||||
conn_c.close()
|
||||
except Exception:
|
||||
pass
|
||||
transfer_blocked = False
|
||||
transfer_block_msg = ""
|
||||
try:
|
||||
from lib.options.options_account_pnl_lib import transfer_blocked_by_position_msg
|
||||
|
||||
conn_tb = cfg["get_db"]()
|
||||
try:
|
||||
tmsg = transfer_blocked_by_position_msg(conn_tb, ex)
|
||||
if tmsg:
|
||||
transfer_blocked = True
|
||||
transfer_block_msg = tmsg
|
||||
finally:
|
||||
conn_tb.close()
|
||||
except Exception:
|
||||
pass
|
||||
return jsonify(
|
||||
{
|
||||
"ok": True,
|
||||
@@ -1034,6 +1049,8 @@ def register_options_routes(app: Flask, cfg: dict[str, Any]) -> None:
|
||||
"cond_order_locked": cond_locked,
|
||||
"cond_order_msg": cond_msg,
|
||||
"cond_order": cond_order,
|
||||
"transfer_blocked": transfer_blocked,
|
||||
"transfer_block_msg": transfer_block_msg,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1196,6 +1213,18 @@ def register_options_routes(app: Flask, cfg: dict[str, Any]) -> None:
|
||||
inst_id=inst_id,
|
||||
)
|
||||
if out.get("ok"):
|
||||
try:
|
||||
from lib.options.options_account_pnl_lib import try_settle_after_sellback
|
||||
|
||||
bid = out.get("bridge_id")
|
||||
try_settle_after_sellback(
|
||||
cfg["get_db"],
|
||||
ex,
|
||||
bridge_id=int(bid) if bid is not None else None,
|
||||
cfg=cfg,
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
_mark_balances_stale(cfg)
|
||||
return jsonify(out)
|
||||
|
||||
@@ -1215,6 +1244,16 @@ def register_options_routes(app: Flask, cfg: dict[str, Any]) -> None:
|
||||
ex, err = _require_options_ex(cfg)
|
||||
if ex is None:
|
||||
return jsonify({"ok": False, "msg": err})
|
||||
# 持仓/待卖回禁止划转(规格)
|
||||
conn_blk = cfg["get_db"]()
|
||||
try:
|
||||
from lib.options.options_account_pnl_lib import transfer_blocked_by_position_msg
|
||||
|
||||
block = transfer_blocked_by_position_msg(conn_blk, ex)
|
||||
if block:
|
||||
return jsonify({"ok": False, "msg": block, "transfer_blocked": True})
|
||||
finally:
|
||||
conn_blk.close()
|
||||
data = request.get_json(silent=True) or {}
|
||||
ccy = (data.get("ccy") or "USDC").upper()
|
||||
from_acct = (data.get("from") or "funding").strip()
|
||||
|
||||
Reference in New Issue
Block a user