fix: negation scan covers position-advice line + exec requires explicit position pct

This commit is contained in:
hmo
2026-07-24 13:51:58 +08:00
parent 185f8f3b58
commit a6ad0f6f9e
2 changed files with 16 additions and 7 deletions
+12 -7
View File
@@ -1135,16 +1135,21 @@ def reconcile_signal_from_analysis(conn, code: str) -> str:
if verdict:
new_sig = verdict
# ── 矛盾降级(2026-07-24 老爸:688660综合结论=买入但操作建议说"继续空仓观望暂不执行")──
# 【综合结论】给方向,【操作建议】给执行。操作建议明确否定买入时,
# 以操作建议为准——信号降级为关注,tag/exec 一律不许升。
# 【综合结论】给方向,【操作建议】/【建议仓位】给执行。执行层明确否定买入时,
# 以执行为准——信号降级为关注,tag/exec 一律不许升。
if new_sig in ("买入", "可买入", "可加仓"):
_NEG_ADVICE = ("继续空仓", "暂不执行", "不宜买入", "不买入", "不建仓", "不新建仓",
"等待企稳", "暂缓买入", "保持空仓", "维持空仓", "不建议买入", "空仓观望")
"等待企稳", "暂缓买入", "保持空仓", "维持空仓", "不建议买入", "空仓观望",
"不建议操作", "等待价格回落", "等待回调", "高于买入区上沿")
for line in fa.split("\n"):
if "操作建议】" in line or line.strip().startswith("【操作建议】"):
if any(k in line for k in _NEG_ADVICE):
new_sig = "关注"
print(f" [RECONCILE] {code} 操作建议否定买入('{line.strip()[:40]}'),信号降级为关注", flush=True)
if "【建议仓位" in line and ("不新建仓" in line or "不建仓" in line):
new_sig = "关注"
print(f" [RECONCILE] {code} 建议仓位=不建仓('{line.strip()[:40]}'),信号降级为关注", flush=True)
break
if ("【操作建议】" in line or line.strip().startswith("【操作建议】")) \
and any(k in line for k in _NEG_ADVICE):
new_sig = "关注"
print(f" [RECONCILE] {code} 操作建议否定买入('{line.strip()[:40]}'),信号降级为关注", flush=True)
break
elif old_sig in ("买入", "可买入", "可加仓"):
new_sig = "" # 无裁决且陈旧动作信号 → 清除
+4
View File
@@ -248,8 +248,12 @@ def get_watch():
d['suggested_position_pct'] = pct
rr = d.get('rr_ratio') or 0
sig_now = d.get('timing_signal') or ''
# 仓位必须明确%("减仓或观望/中等仓位"不算可执行的仓位——2026-07-24 老爸)
_has_pos = bool(_re.search(r'(\d+(?:\.\d+)?)\s*%', d.get('position_advice') or ''))
if sig_now in _WEAK_SIGNALS:
d['rec_exec'] = False # 弱信号永远排队
elif not _has_pos:
d['rec_exec'] = False # 无明确仓位,排队
elif rr >= 2.0 and _cum + pct <= _budget_pct + 1e-9:
d['rec_exec'] = True # 可执行(2026-07-24 老爸:门槛1.5→2.0,边缘推荐不算优)
_cum += pct