如何在TradingView中绘制自定义数组存储的第三方数据
你提到的写法不符合Pine Script语法规范,但可以通过array.from()函数实现批量初始化数组,无需逐行调用array.set赋值,完全可以满足大批量第三方数据导入的需求。
正确实现方式
- 批量初始化数组
Pine Script中array.new_*系列函数仅支持传入「初始长度」和「统一初始填充值」,如果要直接填充多组不同的预设值,使用array.from()即可,支持自动推断数据类型,也可以显式转换类型匹配你的需求:
// 直接传入所有预设值完成初始化,示例为int类型数组 var mySeries = array.from(2,6,11,2,4,5,6) // 如果是资金费率这类浮点型数据,直接传浮点值即可 var fundingFees = array.from(0.0001, -0.0002, 0.0003, 0.0001)
- 数组数据绘图
注意plot()函数不能直接传入数组对象,需要取当前K线对应的数组元素,同时要增加边界判断避免数组越界报错:
// 取出当前K线对应的数据,超出数组长度的K线返回空值不显示 plotVal = bar_index < array.size(mySeries) ? array.get(mySeries, bar_index) : na plot(plotVal, title="自定义数据", color=color.green)
完整可运行示例(以资金费率绘图为例)
//@version=5 indicator("资金费率可视化", overlay=false, shorttitle="FundingFee") // 批量导入你的历史资金费率数据 var fundingRates = array.from(0.0001, -0.0003, 0.0002, 0.0005, -0.0001, 0.0003, 0.0004, -0.0002) // 取值+越界保护 currentFundingRate = bar_index < array.size(fundingRates) ? array.get(fundingRates, bar_index) : na // 柱形图展示 plot(currentFundingRate, title="资金费率", color=currentFundingRate > 0 ? color.red : color.green, style=plot.style_columns) hline(0, "零线", color=color.gray)
注意事项
- 如果你的数据量超过千条,建议把数据整理为csv后通过TradingView的「导入数据」功能直接导入为自定义数据集,调用更方便,无需在代码里硬编码大量数值
- 注意变量拼写规范,你示例中的
mySerise为拼写错误,正确拼写为mySeries,避免后续调用时报错
内容的提问来源于stack exchange,提问作者rainssong
相关产品推荐
相关产品推荐

