信义光能问题修复:两层级过滤+趋势检查

Bug 1 — strategy_lifecycle.py: enrich_timing_signal 用 factors[-1] 当信号
  信义光能: base_signal=neutral, factors=[大盘中性,行业偏弱,高估值]
  旧逻辑: factors[-1]='行业偏弱'→成为timing_signal→无效信号
  新逻辑: 先找有效操作方向(买入/加仓/观望/持有/关注/信号不充分),
          找不到→信号不充分。不再从上下文因子里拼凑信号。

Bug 2 — stale_push_wlin.py: 信号过滤太松
  旧逻辑: 只跳过特定关键词(等企稳/关注/信号不充分/持有)
  新逻辑: 信号必须含"买入"或"加仓"才进推荐,其他一律跳过

Check 3 — 趋势检查(新增)
  fetch_trend_data(): 取实时行情+30日K线计算MA排列
  空头排列/弱势震荡→不推荐
  药明康德通过(多头排列+买入信号)  信义光能不通过(空头+行业偏弱)
This commit is contained in:
知微
2026-06-24 14:39:50 +08:00
parent e83dfc415d
commit 8f830b8de2
6 changed files with 351 additions and 106 deletions
+14 -4
View File
@@ -1141,10 +1141,20 @@ def enrich_timing_signal(base_signal, macro_desc="", sector_note="",
if not factors:
return "信号不充分", []
# 修改:信号保持干净(只取base_signal),不把全部因子拼进去
# enriched 仍作为完整的可读描述保留在 factors_list 中
# 调用方决定是否展示 factors
clean_signal = base_signal if base_signal and base_signal != "neutral" else factors[-1]
# 信号只应包含明确的买卖方向,不能从行业/大盘等上下文因子拼
# base_signal 存在且非 neutral → 用 base_signal
# 否则 → 信号不充分(不拿 factors[-1] 当信号)
if base_signal and base_signal != "neutral":
clean_signal = base_signal
else:
# 从 factors 中找第一个有效的操作方向信号
valid_direction = {"买入", "加仓", "观望", "持有", "关注", "信号不充分"}
signal_found = ""
for f in reversed(factors):
if f in valid_direction:
signal_found = f
break
clean_signal = signal_found if signal_found else "信号不充分"
return clean_signal, factors