目标平仓门控改为 USDT 口径:env 可配权利金倍数与净盈亏阈值,币本位默认×1.05
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -106,7 +106,7 @@ def close_option_by_bid1(
|
||||
- 限价 = 校验通过时锁定的买一价
|
||||
- 永不市价
|
||||
- 始终校验有效流动性(残档买一禁止)
|
||||
- require_recycle_gate=True 时:首次还需可回收≥2×权利金并持续 hold 秒;
|
||||
- require_recycle_gate=True 时:首次还需目标门控(权利金×倍数或净盈亏,U 口径)并持续 hold 秒;
|
||||
一旦通过后对同仓续批只验流动性
|
||||
"""
|
||||
from lib.exchange.okx_options_lib import (
|
||||
@@ -145,6 +145,8 @@ def close_option_by_bid1(
|
||||
premium_paid = _open_premium_paid(cfg, inst_id)
|
||||
if premium_paid is None:
|
||||
premium_paid = _safe_float(pos.get("premium_paid"))
|
||||
premium_ccy = str(q.get("premium_ccy") or pos.get("premium_ccy") or "USDC").strip().upper() or "USDC"
|
||||
index_px = _safe_float(pos.get("idxPx")) or _safe_float(q.get("index_px"))
|
||||
|
||||
# 已有未成交卖平单:等成交,不撤不重挂
|
||||
try:
|
||||
@@ -194,7 +196,13 @@ def close_option_by_bid1(
|
||||
)
|
||||
if preview.get("bid_invalid") or preview.get("auto_close_blocked"):
|
||||
# 不撤他人挂单:仅拒绝本轮下单
|
||||
update_close_gate(inst_id, recycle_usdc=None, premium_paid=premium_paid)
|
||||
update_close_gate(
|
||||
inst_id,
|
||||
recycle_usdc=None,
|
||||
premium_paid=premium_paid,
|
||||
premium_ccy=premium_ccy,
|
||||
index_px=index_px,
|
||||
)
|
||||
return {
|
||||
"ok": False,
|
||||
"msg": preview.get("bid_invalid_reason") or "暂无有效买盘,禁止平仓",
|
||||
@@ -208,7 +216,13 @@ def close_option_by_bid1(
|
||||
bid_px = _safe_float(q.get("bid"))
|
||||
stub, stub_reason = is_stub_bid_px(bid_px, mark_px=mark_px, intrinsic_px=intrinsic_px)
|
||||
if stub or bid_px is None or bid_px <= 0:
|
||||
update_close_gate(inst_id, recycle_usdc=None, premium_paid=premium_paid)
|
||||
update_close_gate(
|
||||
inst_id,
|
||||
recycle_usdc=None,
|
||||
premium_paid=premium_paid,
|
||||
premium_ccy=premium_ccy,
|
||||
index_px=index_px,
|
||||
)
|
||||
return {
|
||||
"ok": False,
|
||||
"msg": stub_reason or "暂无买一,无法限价平仓",
|
||||
@@ -231,7 +245,13 @@ def close_option_by_bid1(
|
||||
|
||||
stub_lv, stub_lv_reason = is_stub_bid_px(level_px, mark_px=mark_px, intrinsic_px=intrinsic_px)
|
||||
if stub_lv:
|
||||
update_close_gate(inst_id, recycle_usdc=None, premium_paid=premium_paid)
|
||||
update_close_gate(
|
||||
inst_id,
|
||||
recycle_usdc=None,
|
||||
premium_paid=premium_paid,
|
||||
premium_ccy=premium_ccy,
|
||||
index_px=index_px,
|
||||
)
|
||||
return {
|
||||
"ok": False,
|
||||
"msg": stub_lv_reason or "暂无有效买盘,禁止平仓",
|
||||
@@ -245,6 +265,8 @@ def close_option_by_bid1(
|
||||
inst_id,
|
||||
recycle_usdc=_safe_float(preview.get("total_received")),
|
||||
premium_paid=premium_paid,
|
||||
premium_ccy=premium_ccy,
|
||||
index_px=index_px,
|
||||
)
|
||||
if require_recycle_gate and not is_close_gate_passed(inst_id) and not gate.get("ready"):
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user