diff --git a/bsp_monitor/main.py b/bsp_monitor/main.py index f2b5746..74e159b 100644 --- a/bsp_monitor/main.py +++ b/bsp_monitor/main.py @@ -112,40 +112,38 @@ class BSPMonitor: if current_bi_id is None: return - # 5. 首轮:记录状态,不推送 + # 5. 首轮:记录状态,检查最后一笔的 BSP(可能刚被分型确认) if st.first_run: st.first_run = False st.last_bi_id = current_bi_id st.pivot_monitor.update(engine.bi_zs_list) + + bsp = engine.get_bsp_for_bi(last_confirmed) + if bsp: + key = f"{symbol}_{bsp.type}_{bsp.klc.end_time}" + msg = engine.format_bsp_detail(bsp, symbol) + msg = _escape_html(msg) + if send_bsp_alert(msg, bsp_key=key): + logger.info(f"[{name}] ✅ BSP: {key}") + logger.info( f"[{name}] 首次完成 — {len(confirmed)} 笔, " - f"{len(engine.bsp_list)} BSP (不推送)" + f"{len(engine.bsp_list)} BSP" ) return - # 6. 检测新笔确认 + # 6. 检测新笔确认(反向二类分型触发 is_sure=True) if current_bi_id == st.last_bi_id: return - prev_bi_id = st.last_bi_id st.last_bi_id = current_bi_id bi_dir = "⬆️" if last_confirmed.dir == Chan_BI_DIR.UP else "⬇️" logger.info(f"[{name}] 新笔确认 — #{len(confirmed)} " f"{bi_dir} 高度: ${last_confirmed.height:.2f}") - # 7. 找到刚被终结的那笔(上一轮的 confirmed[-1]),检查其终点是否为 BSP - prev_bi = None - for b in engine.bi_list: - if b.is_sure and _bi_id(b) == prev_bi_id: - prev_bi = b - break - - if prev_bi: - bsp = engine.get_bsp_for_bi(prev_bi) - else: - bsp = None - + # 7. 检查刚被分型确认这笔的终点是否为 BSP + bsp = engine.get_bsp_for_bi(last_confirmed) if bsp: key = f"{symbol}_{bsp.type}_{bsp.klc.end_time}" msg = engine.format_bsp_detail(bsp, symbol)