我尝试在我的tradingview pine脚本中加入一个简化的switch-statement:
//@version=3
study("my_test",shorttitle="bands",overlay=true)
string VOLA_INDEX = ""
if (ticker == "USOIL")
VOLA_INDEX := "OVX"
if (ticker == "GOLD")
VOLA_INDEX := "GVZ"
if (ticker == "GER30")
VOLA_INDEX := "DV1X"
src = security(ticker,"D",close[1])
vola = security(VOLA_INDEX,"D",close[1])
bands1 = src * vola/100 * sqrt(0.00273972602)
bands3 = src * vola/100 * sqrt(0.00821917808)
upper1 = src + bands1
lower1 = src - bands1
plot( src, title="mean", color=black, style=linebr, linewidth=2, transp=100, trackprice = true,offset=-9999)
plot( upper1, title="upper", color=blue, style=linebr, linewidth=2, transp=40, trackprice = true,offset=-9999)
plot( lower1, title="lower", color=blue, style=linebr, linewidth=2, transp=40, trackprice = true,offset=-9999)不知何故,这可能会失败。
有人知道语法有什么问题吗?
谢谢
发布于 2019-12-02 18:59:23
您需要先初始化VOLA_INDEX,然后再为其赋值。
string VOLA_INDEX = "“
发布于 2019-12-02 23:48:09
这不会像您希望的那样工作,因为security不能接受可变参数(即VOLA_INDEX字符串)。我通过?-operator修复了您的代码,因此代码显示了如何实现您的想法。顺便说一句,我已经将代码翻译成了pine v.4,这里我的建议是使用v.4,因为以前的版本不支持,所以可能会有一些问题。
//@version=4
study("my_test",shorttitle="bands",overlay=true)
vola = syminfo.ticker == "USOIL" ? security("OVX", "D", close[1]) :
syminfo.ticker == "GOLD" ? security("GVZ", "D", close[1]) :
syminfo.ticker == "GER30" ? security("DV1X", "D", close[1]) :
na // I'm not sure about this. What should be here if none of the symbols matches
src = security(syminfo.ticker, "D", close[1])
bands1 = src * vola/100 * sqrt(0.00273972602)
bands3 = src * vola/100 * sqrt(0.00821917808)
upper1 = src + bands1
lower1 = src - bands1
plot(src, title="mean", color=color.black, style=plot.style_linebr, linewidth=2, transp=100, trackprice = true,offset=-9999)
plot(upper1, title="upper", color=color.blue, style=plot.style_linebr, linewidth=2, transp=40, trackprice = true,offset=-9999)
plot(lower1, title="lower", color=color.blue, style=plot.style_linebr, linewidth=2, transp=40, trackprice = true,offset=-9999)https://stackoverflow.com/questions/59135220
复制相似问题