From 63787b173a5b7e81a32a9d153530a15eed6482a6 Mon Sep 17 00:00:00 2001 From: jackyu66git Date: Tue, 26 May 2026 13:59:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=96=B0=E7=AC=94=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E5=8D=B3=E6=9F=A5BSP=EF=BC=88=E5=8F=8D=E5=90=91=E4=BA=8C?= =?UTF-8?q?=E7=B1=BB=E5=88=86=E5=9E=8B=E8=A7=A6=E5=8F=91=EF=BC=89=EF=BC=8C?= =?UTF-8?q?=E9=A6=96=E8=BD=AE=E4=B9=9F=E6=9F=A5confirmed[-1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 笔被反向二类分型确认时is_sure=True,不需要等下一笔。 - 跟踪confirmed[-1]变化→查新确认那笔自身的BSP - 首轮也查confirmed[-1],避免漏掉监控启动前刚确认的BSP Co-Authored-By: Claude Opus 4.7 --- bsp_monitor/main.py | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) 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)