feat: S6叙事一致性检查+统一入口+容量60硬顶+提拔先入观察
- candidate_filter S6: 消息(个股+行业)x资金x技术叙事矩阵 利好出货/三重打击=硬否决(dropped=1,不可被高分抵消) 共振做多+3/利空出尽+1/资金驱动+1/阴跌-1/行业利空-1 - promote: 信号一律先入'关注'(12维确认才升,消灭出生即买入); 容量60硬顶,RR<2的末位淘汰 - alphasift收编: 只写candidates不再直写自选(统一入口)
This commit is contained in:
@@ -84,9 +84,9 @@ def main():
|
||||
print(f" ⏭ {code} {name} RR={_rr:.2f}<2.0,不入自选")
|
||||
continue
|
||||
|
||||
# 构建策略
|
||||
# 构建策略(2026-07-24 老爸:提拔不直接给"买入"——先入观察,12维确认后再升)
|
||||
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
timing_signal = "买入" if score >= 7 else "关注"
|
||||
timing_signal = "关注"
|
||||
price_est = (el + eh) / 2 if el > 0 and eh > 0 else 0
|
||||
reason_text = []
|
||||
if el > 0: reason_text.append(f"买{el}~{eh}")
|
||||
@@ -98,6 +98,28 @@ def main():
|
||||
reason_text.append(f"评分{score}")
|
||||
action = " | ".join(reason_text) if reason_text else f"市场扫描发现(评分{score})"
|
||||
|
||||
# ── 容量闸:自选上限60只,超出时删综合分最弱的(RR低优先)──
|
||||
MAX_WATCH = 60
|
||||
wl_count = conn.execute(
|
||||
"SELECT COUNT(*) FROM holding_strategies WHERE status='active' AND decision_type='自选策略'").fetchone()[0]
|
||||
if wl_count >= MAX_WATCH:
|
||||
weakest = conn.execute("""
|
||||
SELECT code, name, COALESCE(rr_ratio,0) as rr FROM holding_strategies
|
||||
WHERE status='active' AND decision_type='自选策略'
|
||||
ORDER BY COALESCE(rr_ratio,0) ASC, updated_at ASC LIMIT 1""").fetchone()
|
||||
if weakest and (weakest[2] or 0) < 2.0:
|
||||
conn.execute(
|
||||
"INSERT INTO watchlist_log (code, name, event, reason, old_signal, new_signal, price) "
|
||||
"VALUES (?,?,?,?,?,?,?)",
|
||||
(weakest[0], weakest[1] or "", "exit", f"容量{MAX_WATCH}淘汰为新标的{code}腾位", "", "已删除", 0))
|
||||
conn.execute(
|
||||
"DELETE FROM holding_strategies WHERE code=? AND status='active' AND decision_type='自选策略'",
|
||||
(weakest[0],))
|
||||
print(f" 🔴 容量淘汰: {weakest[0]} {weakest[1]} (RR={weakest[2]})", flush=True)
|
||||
else:
|
||||
print(f" ⏭ 自选已满{MAX_WATCH}且现有标的均RR>=2.0,{code}暂缓提拔", flush=True)
|
||||
continue
|
||||
|
||||
cur = conn.execute("""
|
||||
INSERT OR IGNORE INTO holding_strategies
|
||||
(code, name, price, entry_low, entry_high, stop_loss, take_profit,
|
||||
|
||||
Reference in New Issue
Block a user