diff --git a/bsp_monitor/main.py b/bsp_monitor/main.py index 0a6d449..875e673 100644 --- a/bsp_monitor/main.py +++ b/bsp_monitor/main.py @@ -127,14 +127,26 @@ class BSPMonitor: if current_bi_id == st.last_bi_id: return # 无新笔,跳过 + # 保存旧笔 ID,用它在当前笔列表中定位刚结束的那笔 + prev_bi_id = st.last_bi_id st.last_bi_id = current_bi_id + bi_dir = "⬆️" if last_bi.dir == Chan_BI_DIR.UP else "⬇️" logger.info(f"[{name}] 新笔确认 — #{len(confirmed)} " f"{bi_dir} 高度: ${last_bi.height:.2f}") - # 7. 检查上一笔终点是否为 BSP - prev_bi = confirmed[-2] - bsp = engine.get_bsp_for_bi(prev_bi) + # 7. 用旧笔 ID 精确定位刚结束的笔,检查其终点是否为 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 + if bsp: key = f"{symbol}_{bsp.type}_{bsp.klc.end_time}" msg = engine.format_bsp_detail(bsp, symbol)