diff --git a/trading_system/config.py b/trading_system/config.py index f55e62c..b92b69e 100644 --- a/trading_system/config.py +++ b/trading_system/config.py @@ -223,7 +223,7 @@ DEFAULT_TRADING_CONFIG = { 'SCAN_PREWARM_CONCURRENT': 5, # 预热阶段同时预取多少个交易对的 K 线(避免并发过高) # 多账号/低配服务器(如 2 CPU 4G):降低并发与错峰扫描,避免 CPU 打满 'SCAN_CONCURRENT_SYMBOLS': 2, # 扫描时同时分析多少个交易对(2 CPU 4G 多账号建议 2,单账号可 3~5) - '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, # 随机延迟上限(秒) diff --git a/trading_system/strategy.py b/trading_system/strategy.py index 4fc4800..1a1dd85 100644 --- a/trading_system/strategy.py +++ b/trading_system/strategy.py @@ -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: