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"
我是 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"