0acba5e351
交易模式锁定 options;okx_trade_mode / 到期盈亏迁入 options;保留期权/桥/关键位/企微与中控预留快照口径。恢复点:backup/before-remove-hedge 与 tag backup-before-remove-hedge-20260930。 Co-authored-by: Cursor <cursoragent@cursor.com>
75 lines
1.6 KiB
Python
75 lines
1.6 KiB
Python
"""OKX 交易模式(币本位期权专用机:仅单独期权).
|
|
|
|
历史 .env 若仍为 perp_options / options_options,读取时归一为 options,
|
|
对冲模块已移除,不可再启用.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
from typing import Optional
|
|
|
|
MODE_OPTIONS = "options"
|
|
# 兼容旧配置名,不再作为可选模式
|
|
MODE_PERP = "perp_options"
|
|
MODE_OO = "options_options"
|
|
VALID_MODES = frozenset({MODE_OPTIONS})
|
|
UI_MODES = frozenset({MODE_OPTIONS})
|
|
|
|
_ALIASES = {
|
|
"option": MODE_OPTIONS,
|
|
"standalone": MODE_OPTIONS,
|
|
"期权": MODE_OPTIONS,
|
|
"单独期权": MODE_OPTIONS,
|
|
"po": MODE_OPTIONS,
|
|
"perp": MODE_OPTIONS,
|
|
"perp_options": MODE_OPTIONS,
|
|
"永期": MODE_OPTIONS,
|
|
"永期对冲": MODE_OPTIONS,
|
|
"oo": MODE_OPTIONS,
|
|
"options_options": MODE_OPTIONS,
|
|
"期期": MODE_OPTIONS,
|
|
"期期对冲": MODE_OPTIONS,
|
|
}
|
|
|
|
|
|
def normalize_okx_trade_mode(raw: Optional[str] = None) -> str:
|
|
s = str(raw or "").strip().lower()
|
|
if s in VALID_MODES:
|
|
return s
|
|
if s in _ALIASES:
|
|
return _ALIASES[s]
|
|
# 未知或空 → 单独期权
|
|
return MODE_OPTIONS
|
|
|
|
|
|
def legacy_infer_okx_trade_mode() -> str:
|
|
return MODE_OPTIONS
|
|
|
|
|
|
def get_okx_trade_mode() -> str:
|
|
return normalize_okx_trade_mode(os.getenv("OKX_TRADE_MODE"))
|
|
|
|
|
|
def hedge_module_enabled() -> bool:
|
|
return False
|
|
|
|
|
|
def show_perp_options() -> bool:
|
|
return False
|
|
|
|
|
|
def show_options_options() -> bool:
|
|
return False
|
|
|
|
|
|
def standalone_options_open_allowed() -> bool:
|
|
return True
|
|
|
|
|
|
def mode_label(mode: Optional[str] = None) -> str:
|
|
return "单独期权"
|
|
|
|
|
|
def block_standalone_open_by_mode_msg() -> Optional[str]:
|
|
return None
|