fix: BSP检测用last_bi_id精确定位旧笔,替代confirmed[-2]索引
管线重算后笔列表可能变化,confirmed[-2]不一定是刚结束的笔。 改为用上一轮的last_bi_id在当前bi_list中精确查找, 找到后再检查其end_klc是否为BSP。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
743c5d342e
commit
ae4c79c133
+15
-3
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user