From b277166cc0f04d1987d161d53991455681def1f4 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Thu, 19 Feb 2026 23:33:01 +0800 Subject: [PATCH] update --- .env.example | 4 ++-- backend/app/stock_agent/stock_agent.py | 22 +++++++++++++++------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index cf050af..e7a7145 100644 --- a/.env.example +++ b/.env.example @@ -151,8 +151,8 @@ STOCK_AGENT_MODEL=deepseek # 美股智能体配置 # ---------------------------------------------------------------------------- # 监控的股票代码(逗号分隔) -# 配置策略:科技龙头30% + AI/半导体成长30% + 生物医疗20% + 新能源10% + 金融10% -STOCK_SYMBOLS=AAPL,MSFT,GOOGL,META,AMZN,NVDA,AMD,AVGO,ARM,PLTR,SNOW,LLY,NVO,VRTX,TSLA,ENPH,V,MA,HD,COST +# 配置策略:科技龙头25% + AI/半导体25% + 生物医疗15% + 云计算/网络安全15% + 新能源10% + 金融5% + 其他5% +STOCK_SYMBOLS=AAPL,MSFT,GOOGL,META,AMZN,NVDA,AMD,AVGO,ARM,PLTR,SNOW,LLY,NVO,VRTX,TSLA,ENPH,V,MA,HD,COST,RKLB,HOOD,DXYZ,GLW,UNTY,CRM,ADBE,INTC,FSLR,CRWD,SHOP,NET,COIN,MSTR # 分析间隔(秒,美股交易时间内每小时分析一次=3600秒) STOCK_ANALYSIS_INTERVAL=3600 # 触发 LLM 分析的置信度阈值(0-1) diff --git a/backend/app/stock_agent/stock_agent.py b/backend/app/stock_agent/stock_agent.py index 9c97a63..8236cfd 100644 --- a/backend/app/stock_agent/stock_agent.py +++ b/backend/app/stock_agent/stock_agent.py @@ -69,25 +69,33 @@ class StockAgent: logger.info("美股智能体已停止") async def _analysis_loop(self): - """分析循环 - 只在美股交易时间内运行""" + """分析循环 - 只在美股交易时间内运行,整点执行""" while self.running: try: + # 计算距离下一个整点的时间 + now = datetime.now() + next_hour = now.replace(minute=0, second=0, microsecond=0) + timedelta(hours=1) + wait_seconds = (next_hour - now).total_seconds() + + logger.info(f"等待到下一个整点: {next_hour.strftime('%H:%M')} (等待 {int(wait_seconds)} 秒)") + + # 等待到整点 + await asyncio.sleep(wait_seconds) + # 检查是否在美股交易时间 if not self._is_market_hours(): - # 不在交易时间,等待 10 分钟后再次检查 - logger.debug("非美股交易时间,等待中...") - await asyncio.sleep(600) + logger.debug("非美股交易时间,跳过本次分析") + # 继续等待下一个整点 continue # 在交易时间内,分析所有股票 + logger.info(f"开始分析 {len(self.symbols)} 只股票") for symbol in self.symbols: if not self.running: break await self.analyze_symbol(symbol) - # 等待 1 小时后进行下次分析 - logger.info("本次分析完成,等待 1 小时后进行下次分析...") - await asyncio.sleep(3600) + logger.info("本次分析完成") except Exception as e: logger.error(f"分析循环出错: {e}")