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:
|
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
|
st.last_bi_id = current_bi_id
|
||||||
|
|
||||||
bi_dir = "⬆️" if last_bi.dir == Chan_BI_DIR.UP else "⬇️"
|
bi_dir = "⬆️" if last_bi.dir == Chan_BI_DIR.UP else "⬇️"
|
||||||
logger.info(f"[{name}] 新笔确认 — #{len(confirmed)} "
|
logger.info(f"[{name}] 新笔确认 — #{len(confirmed)} "
|
||||||
f"{bi_dir} 高度: ${last_bi.height:.2f}")
|
f"{bi_dir} 高度: ${last_bi.height:.2f}")
|
||||||
|
|
||||||
# 7. 检查上一笔终点是否为 BSP
|
# 7. 用旧笔 ID 精确定位刚结束的笔,检查其终点是否为 BSP
|
||||||
prev_bi = confirmed[-2]
|
prev_bi = None
|
||||||
bsp = engine.get_bsp_for_bi(prev_bi)
|
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:
|
if bsp:
|
||||||
key = f"{symbol}_{bsp.type}_{bsp.klc.end_time}"
|
key = f"{symbol}_{bsp.type}_{bsp.klc.end_time}"
|
||||||
msg = engine.format_bsp_detail(bsp, symbol)
|
msg = engine.format_bsp_detail(bsp, symbol)
|
||||||
|
|||||||
Reference in New Issue
Block a user