如何在Highcharts Stock图表中仅展示最后100根K线或隐藏前50根K线
Highcharts Stock EMA展示范围锁定方案
以下两种实现均可满足你的需求,全程无需启用rangefinder功能,可固定展示范围:
方案1:固定展示最后100根K线(推荐)
你可以直接锁定X轴的显示范围,仅展示最后100根K线,多余的K线仅用于EMA计算,不会出现在可视区域。
示例代码:
// 假设你的K线数据存在klineData数组中,每一项结构为 [时间戳, 开盘价, 最高价, 最低价, 收盘价] Highcharts.stockChart('container', { // 关闭不需要的交互组件,避免用户调整展示范围 rangeSelector: { enabled: false }, navigator: { enabled: false }, scrollbar: { enabled: false }, xAxis: { // 取倒数第100根K线的时间作为X轴最小值 min: klineData[klineData.length - 100][0], // 取最后一根K线的时间作为X轴最大值 max: klineData[klineData.length - 1][0] }, series: [ { type: 'candlestick', data: klineData, id: 'kline' }, { type: 'ema', linkedTo: 'kline' // 保留你原有EMA的其他配置 } ] // 保留其他原有图表配置 })
如果有实时K线更新的场景,每次新增K线后调用以下代码即可重新锁定范围:
// chart为你的图表实例 chart.xAxis[0].setExtremes( klineData[klineData.length - 100][0], klineData[klineData.length - 1][0] )
方案2:隐藏前50根K线
仅需要调整X轴的min参数为第50根K线的时间戳即可:
xAxis: { // 数组下标从0开始,第50根K线的下标为49 min: klineData[49][0], max: klineData[klineData.length - 1][0] }
注意:要保证所有展示出来的K线都有正常的EMA数值,需要让API返回的K线总数 = 展示的K线数量 + EMA指标的周期长度,多返回的K线仅用于计算,不会显示在图表中。
内容的提问来源于stack exchange,提问作者B Seven
相关产品推荐
相关产品推荐

