From 07f079067f87b8740523f632a3d44232cfd61625 Mon Sep 17 00:00:00 2001 From: jackyu66git Date: Tue, 26 May 2026 13:55:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=B7=9F=E8=B8=AAconfirmed[-1]=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E7=AC=94=E7=A1=AE=E8=AE=A4=E6=97=B6=E6=9F=A5=E4=B8=8A?= =?UTF-8?q?=E4=B8=80=E8=BD=AEconfirmed[-1]=E7=9A=84BSP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 以前跟踪bi_list[-1](含未确认)导致时序不对。 现在跟踪confirmed[-1]的稳定ID,变化时在bi_list中精确定位 上一轮的那笔,查其end_klc是否为BSP。 Co-Authored-By: Claude Opus 4.7 --- bsp_monitor/main.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/bsp_monitor/main.py b/bsp_monitor/main.py index 875e673..f2b5746 100644 --- a/bsp_monitor/main.py +++ b/bsp_monitor/main.py @@ -107,8 +107,8 @@ class BSPMonitor: if len(confirmed) < 2: return - last_bi = confirmed[-1] - current_bi_id = _bi_id(last_bi) + last_confirmed = confirmed[-1] + current_bi_id = _bi_id(last_confirmed) if current_bi_id is None: return @@ -116,26 +116,25 @@ class BSPMonitor: if st.first_run: st.first_run = False st.last_bi_id = current_bi_id - st.pivot_monitor.update(engine.bi_zs_list) # 初始化中枢状态 + st.pivot_monitor.update(engine.bi_zs_list) logger.info( f"[{name}] 首次完成 — {len(confirmed)} 笔, " f"{len(engine.bsp_list)} BSP (不推送)" ) return - # 6. 检测新笔 + # 6. 检测新笔确认 if current_bi_id == st.last_bi_id: - return # 无新笔,跳过 + 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 "⬇️" + bi_dir = "⬆️" if last_confirmed.dir == Chan_BI_DIR.UP else "⬇️" logger.info(f"[{name}] 新笔确认 — #{len(confirmed)} " - f"{bi_dir} 高度: ${last_bi.height:.2f}") + f"{bi_dir} 高度: ${last_confirmed.height:.2f}") - # 7. 用旧笔 ID 精确定位刚结束的笔,检查其终点是否为 BSP + # 7. 找到刚被终结的那笔(上一轮的 confirmed[-1]),检查其终点是否为 BSP prev_bi = None for b in engine.bi_list: if b.is_sure and _bi_id(b) == prev_bi_id: @@ -148,11 +147,11 @@ class BSPMonitor: bsp = None 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}") + 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}") # 8. 中枢特征更新 pivot_state = st.pivot_monitor.update(engine.bi_zs_list)