如何在TradingView Charting Library中连接每日数据点为连续线条
问题:TradingView小时K线图中每日数据指标线条不连续的解决方法
我用TradingView Charting Library绘制了小时K线图,但自定义指标的数据源是每日数据点,当前显示效果如下:
可以看到每日起始位置有堆叠的短线,请问如何将这些数据点连接为连续线条?以下是设置绘图的代码:
plots: [ {id: 'channel1', type: 'line'}, {id: 'channel2', type: 'line'}, {id: 'channel3', type: 'line'}, {id: 'channel4', type: 'line'}, {id: 'channel5', type: 'line'} ], defaults: { styles: { channel1: { linestyle: 0, visible: true, linewidth: 2, plottype: 2, trackPrice: false, transparency: 40, color: '#FF00FF' }, channel2: { linestyle: 0, visible: true, linewidth: 2, plottype: 2, trackPrice: false, transparency: 40, color: '#0f37ff' }, channel3: { linestyle: 0, visible: true, linewidth: 2, plottype: 2, trackPrice: false, transparency: 40, color: '#ff0000' }, channel4: { linestyle: 0, visible: true, linewidth: 2, plottype: 2, trackPrice: false, transparency: 40, color: '#2aab4e' }, channel5: { linestyle: 0, visible: true, linewidth: 2, plottype: 2, trackPrice: false, transparency: 40, color: '#2880c2' }, } }
解决方案
出现堆叠短线的核心原因是:你的指标仅在每日首根小时K线有数据,其余小时K线无对应值,TradingView的折线图会在空值处断开,只显示有数据的点。要实现连续线条,需将每日数据向前填充到当日所有小时K线,让每个小时K线都持有当日的指标值。
具体实现方式
1. 数据预处理阶段(Charting Library API场景)
如果是通过自定义指标API传入数据,需在数据源层面完成向前填充:
- 遍历小时K线数据,标记每个交易日的首根K线
- 对交易日内的非首根K线,复用当日首根K线的
channel1-channel5值,确保每个K线周期的指标数组无空值
2. Pine Script指标编写场景
若指标用Pine Script编写,可通过条件判断+变量缓存实现向前填充:
// 示例:为channel1实现每日数据向前填充 is_new_day = ta.change(time("D")) != 0 // 判断是否为交易日首根K线 var float channel1_cache = na // 缓存当日指标值 if is_new_day channel1_cache = 你的每日计算逻辑 // 替换为实际的channel1计算代码 channel1 = channel1_cache // 每个小时K线都使用缓存值 // 其余channel2-channel5同理实现
绘图配置检查
你的plottype: 2对应折线图类型,该类型仅在数据连续(无空值)时才会显示连贯线条。确保所有小时K线都有非空的指标值后,线条即可自动连接为连续状态。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

