PineScript v5布林带开发:fill函数参数类型不匹配报错求助
Pine Script fill()函数报错解决方案
问题原因
你遇到的报错是因为fill()函数的前两个参数要求传入hline对象或plot()函数返回的对象,但你直接传入了计算得到的series float类型变量(比如upperInner、lowerInner这类价格序列),类型不匹配导致报错。
修正后的代码
//@version=5 indicator("自定义布林带", overlay=true) // 基础参数与布林带计算(可根据需求调整) length = input.int(20, title="周期") src = input(close, title="数据源") multInner = input.float(1.0, title="内带标准差倍数") multMid = input.float(2.0, title="中带标准差倍数") multOuter = input.float(3.0, title="外带标准差倍数") basis = ta.sma(src, length) devInner = multInner * ta.stdev(src, length) devMid = multMid * ta.stdev(src, length) devOuter = multOuter * ta.stdev(src, length) // 绘制各条布林带,获取plot对象 upperInner_plot = plot(basis + devInner, color=color.silver, display=display.data_window) upperMid_plot = plot(basis + devMid, color=color.red, display=display.data_window) upperOuter_plot = plot(basis + devOuter, color=color.red, display=display.data_window) lowerInner_plot = plot(basis - devInner, color=color.silver, display=display.data_window) lowerMid_plot = plot(basis - devMid, color=color.green, display=display.data_window) lowerOuter_plot = plot(basis - devOuter, color=color.green, display=display.data_window) // 填充各区域 fill(upperInner_plot, lowerInner_plot, color=color.new(color.silver, 100), title="中心通道填充") fill(upperInner_plot, upperMid_plot, color=color.new(color.red, 90), title="上带-内部填充") fill(upperMid_plot, upperOuter_plot, color=color.new(color.red, 80), title="上带-外部填充") fill(lowerInner_plot, lowerMid_plot, color=color.new(color.green, 90), title="下带-内部填充") fill(lowerMid_plot, lowerOuter_plot, color=color.new(color.green, 80), title="下带-外部填充")
关键说明
- 先通过
plot()函数绘制每条布林带,将函数返回的plot对象赋值给变量(比如upperInner_plot) - 把这些plot对象传入fill()函数,即可正确填充两条动态线条之间的区域
- 代码开头指定了
//@version=5,确保使用Pine Script v5的语法规范,不同版本的函数参数要求存在差异
内容的提问来源于stack exchange,提问作者nwzskm
相关产品推荐
相关产品推荐

