From ae4c79c133b57b58a34436677af85da3ae3992e0 Mon Sep 17 00:00:00 2001 From: jackyu66git Date: Tue, 26 May 2026 13:35:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20BSP=E6=A3=80=E6=B5=8B=E7=94=A8last=5Fbi?= =?UTF-8?q?=5Fid=E7=B2=BE=E7=A1=AE=E5=AE=9A=E4=BD=8D=E6=97=A7=E7=AC=94?= =?UTF-8?q?=EF=BC=8C=E6=9B=BF=E4=BB=A3confirmed[-2]=E7=B4=A2=E5=BC=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 管线重算后笔列表可能变化,confirmed[-2]不一定是刚结束的笔。 改为用上一轮的last_bi_id在当前bi_list中精确查找, 找到后再检查其end_klc是否为BSP。 Co-Authored-By: Claude Opus 4.7 --- bsp_monitor/main.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) 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)