From d8e3cdd9e978e1b8a1dc147df50e846d72890222 Mon Sep 17 00:00:00 2001 From: jackyu66git Date: Thu, 16 Apr 2026 23:53:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B0=8F=E5=91=A8=E6=9C=9F?= =?UTF-8?q?=E7=AC=94=E6=97=A0=E6=B3=95=E6=98=BE=E7=A4=BAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/templates/index.html | 44 ++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/web/templates/index.html b/web/templates/index.html index 9728699..3e8ae21 100644 --- a/web/templates/index.html +++ b/web/templates/index.html @@ -3891,19 +3891,37 @@ } // 添加所有笔到图表 - biLines.forEach(line => { - const lineSeries = mainChart.addLineSeries({ - color: line.color, - lineWidth: line.lineWidth, - lineStyle: line.lineStyle || 0, // 支持虚线样式 - lastValueVisible: false, - priceLineVisible: false, - }); - - lineSeries.setData([ - { time: line.startTime, value: line.startPrice }, - { time: line.endTime, value: line.endPrice } - ]); + // 1m 等小周期叠加到大周期时,笔数量会非常大;每条笔创建一个 series 会导致主图渲染退化 + // 这里限制绘制数量,优先保留最新笔,避免把主K线和其他元素“挤没” + const MAX_BI_LINE_SERIES = 800; + if (biLines.length > MAX_BI_LINE_SERIES) { + console.warn(`BI线条过多(${biLines.length}),仅绘制最新 ${MAX_BI_LINE_SERIES} 条以保障主图稳定`); + } + const linesToDraw = biLines.length > MAX_BI_LINE_SERIES + ? biLines.slice(-MAX_BI_LINE_SERIES) + : biLines; + + linesToDraw.forEach(line => { + try { + if (!Number.isFinite(line.startTime) || !Number.isFinite(line.endTime)) return; + if (!Number.isFinite(line.startPrice) || !Number.isFinite(line.endPrice)) return; + if (line.endTime <= line.startTime) return; + + const lineSeries = mainChart.addLineSeries({ + color: line.color, + lineWidth: line.lineWidth, + lineStyle: line.lineStyle || 0, // 支持虚线样式 + lastValueVisible: false, + priceLineVisible: false, + }); + + lineSeries.setData([ + { time: line.startTime, value: line.startPrice }, + { time: line.endTime, value: line.endPrice } + ]); + } catch (e) { + console.warn('绘制BI线段失败,已跳过单条异常数据:', e); + } }); } else { console.log('绘制笔 - 已禁用');