fix: hot-reload trade direction/whitelist on env save without forced restart.

EOF

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-17 19:24:10 +08:00
parent b7966fd935
commit 4d381e9104
12 changed files with 111 additions and 15 deletions
+2 -2
View File
@@ -52,11 +52,11 @@ UPLOAD_DIR=static/images
# BINANCE_FUNDING_INCLUDE_SPOT=false
# 计仓:risk=以损定仓(默认);full_margin=合约可用×FULL_MARGIN_BUFFER_RATIO 全仓杠杆(须无仓后重启)
POSITION_SIZING_MODE=risk
# 方向限制(默认 false=双向均可;true 时按 TRADE_DIRECTION 限制,修改后须重启)
# 方向限制(默认 false=双向均可;true 时按 TRADE_DIRECTION 限制;保存后热生效)
# TRADE_DIRECTION=long_only | short_only | both(或 多/空/双向)
TRADE_DIRECTION_RESTRICT_ENABLED=false
TRADE_DIRECTION=both
# 币种白名单(默认 false=全币种可手输;true 时关键位/下单/策略仅下拉选择)
# 币种白名单(默认 false=全币种可手输;true 时关键位/下单/策略仅下拉;保存后热生效)
TRADE_SYMBOL_RESTRICT_ENABLED=false
TRADE_SYMBOL_WHITELIST=BTC,ETH
# 每天起始基数(U)
+12
View File
@@ -408,6 +408,17 @@ AUTO_TRANSFER_BJ_HOUR = int(os.getenv("AUTO_TRANSFER_BJ_HOUR", "8"))
POSITION_SIZING_MODE = load_position_sizing_mode()
KEY_AUTO_ORDER_ENABLED = load_key_auto_order_enabled()
TRADE_POLICY = load_trade_policy()
def _reload_trade_policy_from_env(changed_keys=None):
"""env 保存后热更新方向/白名单策略(无需重启)."""
global TRADE_POLICY
keys = set(changed_keys or [])
from lib.env.env_schema import TRADE_POLICY_ENV_KEYS
if keys and not keys.intersection(TRADE_POLICY_ENV_KEYS):
return
TRADE_POLICY = load_trade_policy()
WECHAT_TIMEOUT_SECONDS = int(os.getenv("WECHAT_TIMEOUT_SECONDS", "10"))
AI_TIMEOUT_SECONDS = int(os.getenv("AI_TIMEOUT_SECONDS", "120"))
MONITOR_POLL_SECONDS = int(os.getenv("MONITOR_POLL_SECONDS", "3"))
@@ -10052,6 +10063,7 @@ try:
exchange_key="binance",
username=USERNAME,
password=PASSWORD,
on_env_changed=lambda keys: _reload_trade_policy_from_env(keys),
)
except Exception as _settings_err:
print(f"[instance_settings] binance: {_settings_err}")