【问题标题】:If statement and value of an input variable - Pine Script - TradingviewIf 语句和输入变量的值 - Pine 脚本 - Tradingview
【发布时间】:2020-11-08 13:43:50
【问题描述】:

我在 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' 处的语法错误”。

我找不到原因...

感谢您的帮助

【问题讨论】:

    标签: if-statement pine-script


    【解决方案1】:
    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)
    

    【讨论】: