如何仅当勾选复选框时调用plotcandle(),避免本地作用域报错
错误原因
Pine Script 中所有绘图类函数(包括plot、plotcandle、plotshape等)仅允许在全局作用域调用,不能放在if、for等局部作用域内执行,这是触发报错的核心原因。
解决方法
方案1(推荐,适配Pine Script v4及以上版本)
直接使用plotcandle内置的visible参数,该参数接受布尔值,参数值为true时显示绘图,为false时隐藏绘图,直接绑定你定义的复选框变量即可,无需额外写if判断。
正确代码如下:
// 原复选框参数定义不变 candleplot = input(defval=false , title='Plot Candle') // 绘图语句新增visible参数绑定复选框变量 plotcandle(0,var7, 0, var7, color=var7>xrf(var7,1)?#FFF700:#3FFF00 ,editable=false, visible = candleplot)
方案2(兼容旧版Pine Script)
如果使用的是不支持visible参数的旧版本,可以通过条件赋值为na的方式实现隐藏:当复选框未勾选时,将K线的开高低收值全部设为na,plotcandle碰到na值会自动跳过绘制。
代码示例:
candleplot = input(defval=false , title='Plot Candle') p_open = candleplot ? 0 : na p_high = candleplot ? var7 : na p_low = candleplot ? 0 : na p_close = candleplot ? var7 : na plotcandle(p_open, p_high, p_low, p_close, color=var7>xrf(var7,1)?#FFF700:#3FFF00 ,editable=false)
两种方案都可以实现勾选复选框才显示蜡烛图的需求,且不会触发作用域报错。
内容的提问来源于stack exchange,提问作者Chandan Nick
相关产品推荐
相关产品推荐

