输入变量的 If 语句和值 - Pine 脚本 - Tradingview

If statement and value of an input variable - Pine Script - Tradingview

我在 if 语句中使用用作输入值的变量值时遇到问题这是我的一段代码:

//@version=3
study(title="v5.0", shorttitle="v5.0", overlay=true)
PP_display = input(1, minval=0, maxval=1)
if (PP_display = 1)
    xHigh  = security(ticker,"D", high[0])
    xLow   = security(ticker,"D", low[0])
    xClose = security(ticker,"D", close[0])
    vPP = (xHigh+xLow+xClose) / 3
    vR1 = vPP+(vPP-xLow)
    vS1 = vPP-(xHigh - vPP)
    vR2 = vPP + (xHigh - xLow)
    vS2 = vPP - (xHigh - xLow)
    vR3 = xHigh + 2 * (vPP - xLow) 
    vS3 = xLow - 2 * (xHigh - vPP)
    plot(vPP, color=change(vPP) ? na : black, title="vPP", style = linebr, linewidth = width, transp=0)
end if

因此,我收到此错误:“输入语法错误 'PP_display'”。

我找不到原因...

感谢您的帮助

  1. 如果您想将 PP_display 变量与整数进行比较,您应该使用 == (等于) 运算符。单=用于声明变量。
  2. pinescript语法中没有end if
  3. 您不能在局部范围内使用 plot 函数,只能在全局范围内使用。
  4. 在局部范围内使用 security() 函数声明变量将产生编译错误 - Can't call 'security' inside: 'if', 'for'

解决方案是将所有计算、安全调用和绘图函数移动到全局范围。

如果您打算使用 PP_display 输入隐藏绘图,您可以直接在 plot 函数的系列参数中使用三元条件运算符 ? :

//@version=3
study(title="v5.0", shorttitle="v5.0", overlay=true)
PP_display = input(1, minval=0, maxval=1)

xHigh  = security(ticker,"D", high[0])
xLow   = security(ticker,"D", low[0])
xClose = security(ticker,"D", close[0])
vPP = (xHigh+xLow+xClose) / 3
vR1 = vPP+(vPP-xLow)
vS1 = vPP-(xHigh - vPP)
vR2 = vPP + (xHigh - xLow)
vS2 = vPP - (xHigh - xLow)
vR3 = xHigh + 2 * (vPP - xLow) 
vS3 = xLow - 2 * (xHigh - vPP)
    
plot(PP_display == 1 ? vPP : na, color=change(vPP) ? na : black, title="vPP", style = linebr, linewidth = 2, transp=0)