feat: live_executor从DB读配置,前端改完60秒内生效
- reload_live_config()每60秒从live_config表读取 - RISK_PER_TRADE_USD和MAX_POSITIONS实时更新 - 范总在前端改1R金额→保存→下次开仓自动用新值 - 不需要重启进程
This commit is contained in:
parent
b0a463a22c
commit
3b6e7d8af3
@ -52,10 +52,30 @@ DB_CONFIG = {
|
|||||||
# 策略
|
# 策略
|
||||||
ENABLED_STRATEGIES = json.loads(os.getenv("LIVE_STRATEGIES", '["v52_8signals"]'))
|
ENABLED_STRATEGIES = json.loads(os.getenv("LIVE_STRATEGIES", '["v52_8signals"]'))
|
||||||
|
|
||||||
# 风险参数
|
# 风险参数(默认值,会被DB live_config覆盖)
|
||||||
RISK_PER_TRADE_USD = float(os.getenv("RISK_PER_TRADE_USD", "2")) # 测试网$2=1R
|
RISK_PER_TRADE_USD = float(os.getenv("RISK_PER_TRADE_USD", "2"))
|
||||||
MAX_POSITIONS = int(os.getenv("MAX_POSITIONS", "4"))
|
MAX_POSITIONS = int(os.getenv("MAX_POSITIONS", "4"))
|
||||||
FEE_RATE = 0.0005 # Taker 0.05%
|
FEE_RATE = 0.0005 # Taker 0.05%
|
||||||
|
_config_cache = {}
|
||||||
|
_config_cache_ts = 0
|
||||||
|
|
||||||
|
def reload_live_config(conn):
|
||||||
|
"""从live_config表读取配置,每60秒刷新一次"""
|
||||||
|
global RISK_PER_TRADE_USD, MAX_POSITIONS, _config_cache, _config_cache_ts
|
||||||
|
now = time.time()
|
||||||
|
if now - _config_cache_ts < 60:
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
cur = conn.cursor()
|
||||||
|
cur.execute("SELECT key, value FROM live_config")
|
||||||
|
for row in cur.fetchall():
|
||||||
|
_config_cache[row[0]] = row[1]
|
||||||
|
RISK_PER_TRADE_USD = float(_config_cache.get("risk_per_trade_usd", "2"))
|
||||||
|
MAX_POSITIONS = int(_config_cache.get("max_positions", "4"))
|
||||||
|
_config_cache_ts = now
|
||||||
|
logger.info(f"📋 配置刷新: 1R=${RISK_PER_TRADE_USD} | 最大持仓={MAX_POSITIONS}")
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"读取live_config失败: {e}")
|
||||||
|
|
||||||
# 币种精度(币安要求)
|
# 币种精度(币安要求)
|
||||||
SYMBOL_PRECISION = {
|
SYMBOL_PRECISION = {
|
||||||
@ -282,6 +302,9 @@ async def execute_entry(session: aiohttp.ClientSession, signal: dict, db_conn):
|
|||||||
|
|
||||||
t_signal = signal_ts # 信号时间戳(ms)
|
t_signal = signal_ts # 信号时间戳(ms)
|
||||||
|
|
||||||
|
# 刷新配置(每60秒从DB读一次)
|
||||||
|
reload_live_config(db_conn)
|
||||||
|
|
||||||
# 0. 信号新鲜度检查(超过2秒弃仓)
|
# 0. 信号新鲜度检查(超过2秒弃仓)
|
||||||
SIGNAL_MAX_AGE_MS = 2000
|
SIGNAL_MAX_AGE_MS = 2000
|
||||||
signal_age_ms = time.time() * 1000 - t_signal
|
signal_age_ms = time.time() * 1000 - t_signal
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user