Expose sim/live matching mode in env config UI.

Saving SIM_DEFAULT_MODE also switches runtime trading.mode immediately.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-08-14 18:14:17 +08:00
parent 56618a6655
commit 919ac70bc2
5 changed files with 67 additions and 4 deletions
+5
View File
@@ -99,6 +99,7 @@ HOT_RELOAD_EXACT = frozenset({
"OKX_OPTIONS_TRADE_BUDGET_USDC",
"OKX_OPTIONS_BUDGET_BUFFER",
"OKX_TRADE_MODE",
"SIM_DEFAULT_MODE",
"MAX_ACTIVE_HEDGE_PLANS",
"HEDGE_PLAN_LIVE_ORDER",
"HEDGE_PLAN_OPTION_PRIMARY",
@@ -159,6 +160,10 @@ SELECT_OPTIONS: dict[str, tuple[tuple[str, str], ...]] = {
("perp_options", "永期对冲"),
("options_options", "期期对冲"),
),
"SIM_DEFAULT_MODE": (
("sim", "模拟(sim)"),
("live", "实盘(live)"),
),
"HEDGE_PLAN_OPTION_PRIMARY": (
("true", "以期权为主"),
("false", "保险模式"),
+17 -1
View File
@@ -19,7 +19,12 @@ from lib.env.env_schema import (
# 各所「交易所与实盘」字段(顺序即页面顺序)
_EXCHANGE_LIVE_FIELDS: dict[str, list[tuple[str, str, str]]] = {
"okx": [
("LIVE_TRADING_ENABLED", "开启实盘下单", "关闭时仅走本地流程,不向交易所发单"),
(
"SIM_DEFAULT_MODE",
"撮合模式",
"sim=本地模拟资金(公开行情撮合,不下真实单); live=实盘账户.保存后立即切换",
),
("LIVE_TRADING_ENABLED", "开启实盘下单", "仅 live 模式下生效;关闭时即使 live 也不向交易所发单"),
("OKX_API_KEY", "API Key", "账户 API(永续+期权共用)"),
("OKX_API_SECRET", "API Secret", "账户 API(永续+期权共用)"),
("OKX_API_PASSPHRASE", "API Passphrase", "OKX 必填"),
@@ -291,6 +296,7 @@ _RUNTIME_ENV_DEFAULTS: dict[str, str] = {
"OKX_OPTIONS_MAX_DTE_DAYS": "2",
"OKX_OPTIONS_MAX_ACTIVE_POSITIONS": "0",
"OKX_TRADE_MODE": "options",
"SIM_DEFAULT_MODE": "sim",
"MAX_ACTIVE_HEDGE_PLANS": "1",
"HEDGE_PLAN_OO_CLOSE_MODE_ENABLED": "true",
"HEDGE_PLAN_OO_BIAS_SPLIT_BY": "budget",
@@ -303,6 +309,16 @@ _RUNTIME_ENV_DEFAULTS: dict[str, str] = {
def _effective_env_value(key: str, file_values: dict[str, str], schema_default: str = "") -> str:
if key == "SIM_DEFAULT_MODE":
# 展示当前生效撮合模式(运行时 trading.mode 优先)
try:
from lib.sim.mode_lib import peek_persisted_trading_mode
cur = peek_persisted_trading_mode()
if cur:
return cur
except Exception:
pass
if key == "OKX_TRADE_MODE":
# 展示值必须与运行时 get_okx_trade_mode() 一致,避免未写入时默认 options 静默改模式
file_val = str(file_values.get(key) or "").strip() if key in file_values else ""