feat(config, strategy): 更新多账号错峰配置与日志记录逻辑

在配置文件中将多账号错峰开关 `SCAN_STAGGER_BY_ACCOUNT` 的默认值调整为 False,并在策略中增加了对该配置的注释说明。同时,优化了4H趋势中性信号的日志记录逻辑,确保在关闭中性信号时仅记录 DEBUG 信息,提升了日志的可读性与策略的灵活性。此改动旨在增强系统的可用性与用户友好性。
This commit is contained in:
薇薇安 2026-02-25 14:08:36 +08:00
parent 8bd7bae718
commit 6a9fcddfdc
2 changed files with 10 additions and 6 deletions

View File

@ -223,7 +223,7 @@ DEFAULT_TRADING_CONFIG = {
'SCAN_PREWARM_CONCURRENT': 5, # 预热阶段同时预取多少个交易对的 K 线(避免并发过高)
# 多账号/低配服务器(如 2 CPU 4G降低并发与错峰扫描避免 CPU 打满
'SCAN_CONCURRENT_SYMBOLS': 2, # 扫描时同时分析多少个交易对2 CPU 4G 多账号建议 2单账号可 35
'SCAN_STAGGER_BY_ACCOUNT': True, # 多账号时错峰首次扫描,避免多进程同时扫
'SCAN_STAGGER_BY_ACCOUNT': False, # 多账号错峰开关:单账号可关闭;多账号同时跑时改为 True 避免同时扫
'SCAN_STAGGER_RANDOM': True, # True=随机延迟(更分散)False=按 account_id 固定步长延迟
'SCAN_STAGGER_MIN_SEC': 10, # 随机延迟下限(秒)
'SCAN_STAGGER_MAX_SEC': 120, # 随机延迟上限(秒)

View File

@ -79,7 +79,7 @@ class TradingStrategy:
# 多账号错峰:避免多进程同时扫描导致 CPU 打满2 CPU 4G 等低配服务器)
import os
import random
stagger_enabled = config.TRADING_CONFIG.get('SCAN_STAGGER_BY_ACCOUNT', False)
stagger_enabled = config.TRADING_CONFIG.get('SCAN_STAGGER_BY_ACCOUNT', False) # 全局开关:单账号关、多账号开
stagger_random = config.TRADING_CONFIG.get('SCAN_STAGGER_RANDOM', True)
account_id = int(os.getenv('ATS_ACCOUNT_ID') or os.getenv('ACCOUNT_ID') or 1)
if stagger_enabled:
@ -583,8 +583,12 @@ class TradingStrategy:
# 4H趋势向下只允许做空信号
logger.debug(f"{symbol} 4H趋势向下只允许做空信号")
elif trend_4h == 'neutral':
# 4H趋势中性记录警告
logger.warning(f"{symbol} 4H趋势中性信号质量可能降低")
# 4H趋势中性若已关闭「允许4H中性」则仅 DEBUG避免刷屏若开启则 WARNING 提示信号质量可能降低
allow_neutral = bool(config.TRADING_CONFIG.get("AUTO_TRADE_ALLOW_4H_NEUTRAL", False))
if allow_neutral:
logger.warning(f"{symbol} 4H趋势中性信号质量可能降低")
else:
logger.debug(f"{symbol} 4H趋势中性已关闭4H中性开单仅记录")
# 简化策略:只做趋势跟踪,移除均值回归策略(避免信号冲突)
# 策略权重配置(根据文档建议)
@ -963,8 +967,8 @@ class TradingStrategy:
"""
定期同步币安持仓状态独立任务不依赖市场扫描
"""
sync_interval = config.TRADING_CONFIG.get('POSITION_SYNC_INTERVAL', 300) # 默认5分钟
logger.info(f"定期持仓同步任务启动,同步间隔: {sync_interval}")
sync_interval = int(config.TRADING_CONFIG.get('POSITION_SYNC_INTERVAL', 60) or 60)
logger.info(f"定期持仓同步任务启动,同步间隔: {sync_interval}(来自 POSITION_SYNC_INTERVAL")
while self.running:
try: