Tradingview Pine Script - 数组中的变量以绘制当前代码

Tradingview Pine Script - variable in array to plot current ticker

我是 pine 脚本的新手,只是想更改一个绘制货币强度的脚本,我希望它只绘制当前图表中货币对的 2 条线。

这是我目前尝试的方法

.........................
avgUSD = (USDEUR + USDGBP + USDJPY + USDNZD + USDCAD + USDCHF + USDAUD) / 7
avgEUR = (EURNZD + EURGBP + EURJPY + EURUSD + EURCAD + EURCHF + EURAUD) / 7
avgJPY = (JPYEUR + JPYGBP + JPYNZD + JPYUSD + JPYCAD + JPYCHF + JPYAUD) / 7
avgCAD = (CADEUR + CADGBP + CADJPY + CADUSD + CADNZD + CADCHF + CADAUD) / 7
avgCHF = (CHFEUR + CHFGBP + CHFJPY + CHFUSD + CHFCAD + CHFNZD + CHFAUD) / 7
avgAUD = (AUDEUR + AUDGBP + AUDJPY + AUDUSD + AUDCAD + AUDCHF + AUDNZD) / 7
avgNZD = (NZDEUR + NZDGBP + NZDJPY + NZDUSD + NZDCAD + NZDCHF + NZDAUD) / 7
avgGBP = (GBPEUR + GBPJPY + GBPUSD + GBPCAD + GBPCHF + GBPAUD + GBPNZD) / 7

cName = (syminfo.root)
avgLeft = 0.0
avgRight = 0.0
cLeft = ""
cRight = ""

if cName == "CADCHF"
    avgLeft = avgCAD
    cLeft = "color=colCAD"
    avgRight = avgCHF
    cRight = "color=colCHF"
else
    avgLeft = avgAUD
    cLeft = "color=colAUD"
    avgRight = avgJPY
    cRight = "color=colJPY"
    


plot(avgLeft, title="NZD % Change", color=colNZD)
plot(avgRight, title="EUR % Change", color=colEUR)

其中 cName 是代码,我只是用 if 子句检查它是哪个代码,因此为变量分配正确的值(字符串操作代码会少得多,但也无法让它工作)

avgLeft 和 avgRight 是我随后要绘制的变量,但它不起作用,如果我在开始时没有将 avgRight avgLeft 设置为 0.0,我会得到扁平线或“未声明的标识符”错误

它应该只是将正确的平均值分配给我的 avgLeft avgRight 变量,但我的 if 子句似乎什么也没做

PS: 标题和颜色只是为了测试,我知道它们不匹配

谢谢

在您的代码中,这些变量赋值仅在 if 语句的局部范围内。因为它们只用 = 编写,所以这些变量被创建并分配这些值作为它们的初始值,并且仅在 if 语句的范围内。您需要使用 reassign := 而不是将这些值分配给全局变量。

if cName == "CADCHF"
    avgLeft := avgCAD
    cLeft := "color=colCAD"
    avgRight := avgCHF
    cRight := "color=colCHF"