Pine Script 能否通过条件语句动态切换plot函数的绘图样式?
Pine Script 动态设置plot绘图样式的解决方案
结论:你预期的写法不可行
Pine Script 中plot()函数的style参数要求必须是编译期确定的常量,不支持传入运行时动态计算的变量,因此你尝试用三元表达式给B_Style赋值再传入plot的写法会触发编译错误,无法正常运行。
可行实现方案
你可以为每种需要的绘图样式单独声明一个plot语句,每个plot仅在对应条件满足时返回有效值,不满足时返回na(空值)不渲染,最终效果和动态修改style完全一致,这也是Pine Script官方推荐的实现方式。
示例代码如下:
//STACKED EMAs MA1 = ta.ema(close, 5) MA2 = ta.ema(close, 8) MA3 = ta.ema(close, 13) MA4 = ta.ema(close, 21) MA5 = ta.ema(close, 34) MA_Stack_Up = (MA1 > MA2) and (MA2 > MA3) and (MA3 > MA4) and (MA4 > MA5) //CONDITIONS Uptrend = MA_Stack_Up Reversal = ((MA1 < MA2) and (MA2 > MA3)) or ((MA1 > MA2) and (MA2 < MA3)) // 可根据你的实际需求修改三个条件的定义 Cond1 = Uptrend Cond2 = Reversal Cond3 = not Cond1 and not Cond2 //COLOR CODING Bar_Color = Uptrend ? color.new(color.green, 25) : Reversal ? color.new(color.yellow, 25) : color.new(color.red, 25) // 分三个plot分别对应不同样式,不满足条件时返回na不显示 plot(Cond1 ? 1 : na, color=Bar_Color, style=plot.style_line, linewidth=3) plot(Cond2 ? 1 : na, color=Bar_Color, style=plot.style_cross, linewidth=3) plot(Cond3 ? 1 : na, color=Bar_Color, style=plot.style_circles, linewidth=3)
内容的提问来源于stack exchange,提问作者MRYR
相关产品推荐
相关产品推荐

