问题描述
我这里有一个用 pinescript 编写的代码。我在控制台中收到关于请求过多证券的错误。代码以其他方式工作。我的代码没有优化。知道怎么做吗?否则,另一种解决方案是将代码分成两个脚本。目标是获取每个货币对在指定分辨率下的当前汇率,然后除以货币对周一开盘价的汇率,得到一个相对货币强弱指数。任何建议和建议将不胜感激。谢谢。
//=========== Currency Exchange Rates ===========
eurUSDrate = security("EURUSD","60",open)
eurJPYrate = security("EURJPY",open)
eurGBPrate = security("EURGBP",open)
eurCADrate = security("EURCAD",open)
eurAUDrate = security("EURAUD",open)
eurCHFrate = security("EURCHF",open)
eurNZDrate = security("EURNZD",open)
usdCADrate = security("USDCAD",open)
usdJPYrate = security("USDJPY",open)
usdCHFrate = security("USDCHF",open)
usdEURrate = 1/(security("EURUSD",open))
usdGBPrate = 1/(security("GBPUSD",open))
usdNZDrate = 1/(security("NZDUSD",open))
usdAUDrate = 1/(security("AUDUSD",open))
gbpUSDrate = security("GBPUSD",open)
gbpJPYrate = security("GBPJPY",open)
gbpCADrate = security("GBPCAD",open)
gbpNZDrate = security("GBPNZD",open)
gbpCHFrate = security("GBPCHF",open)
gbpEURrate = 1/(security("EURGBP",open))
gbpAUDrate = security("GBPAUD",open)
audUSDrate = security("AUDUSD",open)
audCHFrate = security("AUDCHF",open)
audNZDrate = security("AUDNZD",open)
audCADrate = security("AUDCAD",open)
audJPYrate = security("AUDJPY",open)
audEURrate = 1/(security("EURAUD",open))
audGBPrate = 1/(security("GBPAUD",open))
nzdUSDrate = security("NZDUSD",open)
nzdCADrate = security("NZDCAD",open)
nzdCHFrate = security("NZDCHF",open)
nzdJPYrate = security("NZDJPY",open)
nzdEURrate = 1/(security("EURNZD",open))
nzdAUDrate = 1/(security("AUDNZD",open))
nzdGBPrate = 1/(security("GBPNZD",open))
jpyEURrate = 1/(security("EURJPY",open))
jpyUSDrate = 1/(security("USDJPY",open))
jpyGBPrate = 1/(security("GBPJPY",open))
jpyAUDrate = 1/(security("AUDJPY",open))
jpyNZDrate = 1/(security("NZDJPY",open))
jpyCADrate = 1/(security("CADJPY",open))
jpyCHFrate = 1/(security("CHFJPY",open))
cadEURrate = 1/(security("EURCAD",open))
cadUSDrate = 1/(security("USDCAD",open))
cadGBPrate = 1/(security("GBPCAD",open))
cadAUDrate = 1/(security("AUDCAD",open))
cadNZDrate = 1/(security("NZDCAD",open))
cadJPYrate = security("CADJPY",open)
cadCHFrate = security("CADCHF",open)
chfEURrate = 1/(security("EURCHF",open))
chfUSDrate = 1/(security("USDCHF",open))
chfGBPrate = 1/(security("GBPCHF",open))
chfAUDrate = 1/(security("AUDCHF",open))
chfNZDrate = 1/(security("NZDCHF",open))
chfCADrate = 1/(security("CADCHF",open))
chfJPYrate = security("CHFJPY",open)
//=========== Currency Index ===========
//Formula = Sum(all major pairs divide by currency exchange rate on Monday's opening)
//update currency exchange rate at opening of Monday's price for each currency pair
eurusd = valuewhen(dayofweek==1,security("EURUSD","D",open),0)
eurjpy = valuewhen(dayofweek==1,security("EURJPY",0)
eurgbp = valuewhen(dayofweek==1,security("EURGBP",0)
eurcad = valuewhen(dayofweek==1,security("EURCAD",0)
euraud = valuewhen(dayofweek==1,security("EURAUD",0)
eurchf = valuewhen(dayofweek==1,security("EURCHF",0)
eurnzd = valuewhen(dayofweek==1,security("EURNZD",0)
EUR = eurUSDrate/eurusd + eurJPYrate/eurjpy + eurGBPrate/eurgbp + eurCADrate/eurcad + eurAUDrate/euraud + eurCHFrate/eurchf + eurNZDrate/eurnzd
usdcad = valuewhen(dayofweek==1,security("USDCAD",0)
usdjpy = valuewhen(dayofweek==1,security("USDJPY",0)
usdchf = valuewhen(dayofweek==1,security("USDCHF",0)
usdeur = 1/(valuewhen(dayofweek==1,0))
usdgbp = 1/(valuewhen(dayofweek==1,security("GBPUSD",0))
usdnzd = 1/(valuewhen(dayofweek==1,security("NZDUSD",0))
usdaud = 1/(valuewhen(dayofweek==1,security("AUDUSD",0))
USD = usdCADrate/usdcad + usdJPYrate/usdjpy + usdCHFrate/usdchf + usdEURrate/usdeur + usdgbp/usdGBPrate + usdNZDrate/usdnzd + usdAUDrate/usdaud
gbpusd = valuewhen(dayofweek==1,0)
gbpjpy = valuewhen(dayofweek==1,security("GBPJPY",0)
gbpcad = valuewhen(dayofweek==1,security("GBPCAD",0)
gbpnzd = valuewhen(dayofweek==1,security("GBPNZD",0)
gbpchf = valuewhen(dayofweek==1,security("GBPCHF",0)
gbpeur = 1/valuewhen(dayofweek==1,0)
gbpaud = valuewhen(dayofweek==1,security("GBPAUD",0)
GBP = gbpUSDrate/gbpusd + gbpJPYrate/gbpjpy + gbpCADrate/gbpcad + gbpNZDrate/gbpnzd + gbpCHFrate/gbpchf + gbpEURrate/gbpeur + gbpAUDrate/gbpaud
audusd = valuewhen(dayofweek==1,0)
audchf = valuewhen(dayofweek==1,security("AUDCHF",0)
audnzd = valuewhen(dayofweek==1,security("AUDNZD",0)
audcad = valuewhen(dayofweek==1,security("AUDCAD",0)
audjpy = valuewhen(dayofweek==1,security("AUDJPY",0)
audeur = 1/(valuewhen(dayofweek==1,0))
audgbp = 1/(valuewhen(dayofweek==1,0))
AUD = audUSDrate/audusd + audCHFrate/audchf + audNZDrate/audnzd + audCADrate/audcad + audJPYrate/audjpy + audEURrate/audeur + audGBPrate/audgbp
nzdusd = valuewhen(dayofweek==1,0)
nzdcad = valuewhen(dayofweek==1,security("NZDCAD",0)
nzdchf = valuewhen(dayofweek==1,security("NZDCHF",0)
nzdjpy = valuewhen(dayofweek==1,security("NZDJPY",0)
nzdeur = 1/(valuewhen(dayofweek==1,0))
nzdaud = 1/(valuewhen(dayofweek==1,0))
nzdgbp = 1/(valuewhen(dayofweek==1,0))
NZD = nzdUSDrate/nzdusd + nzdCADrate/nzdcad + nzdCHFrate/nzdchf + nzdJPYrate/nzdjpy + nzdEURrate/nzdeur + nzdAUDrate/nzdaud + nzdGBPrate/nzdgbp
jpyeur = 1/(valuewhen(dayofweek==1,0))
jpyusd = 1/(valuewhen(dayofweek==1,0))
jpygbp = 1/(valuewhen(dayofweek==1,0))
jpyaud = 1/(valuewhen(dayofweek==1,0))
jpynzd = 1/(valuewhen(dayofweek==1,0))
jpycad = 1/(valuewhen(dayofweek==1,security("CADJPY",0))
jpychf = 1/(valuewhen(dayofweek==1,security("CHFJPY",0))
JPY = jpyEURrate/jpyeur + jpyUSDrate/jpyusd + jpyGBPrate/jpygbp + jpyAUDrate/jpyaud + jpyNZDrate/jpynzd + jpyCADrate/jpycad + jpyCHFrate/jpychf
cadeur = 1/(valuewhen(dayofweek==1,0))
cadusd = 1/(valuewhen(dayofweek==1,0))
cadgbp = 1/(valuewhen(dayofweek==1,0))
cadaud = 1/(valuewhen(dayofweek==1,0))
cadnzd = 1/(valuewhen(dayofweek==1,0))
cadjpy = valuewhen(dayofweek==1,0)
cadchf = valuewhen(dayofweek==1,security("CADCHF",0)
CAD = cadEURrate/cadeur + cadUSDrate/cadusd + cadGBPrate/cadgbp + cadAUDrate/cadaud + cadNZDrate/cadnzd + cadJPYrate/cadjpy + cadCHFrate/cadchf
chfeur = 1/(valuewhen(dayofweek==1,0))
chfusd = 1/(valuewhen(dayofweek==1,0))
chfgbp = 1/(valuewhen(dayofweek==1,0))
chfaud = 1/(valuewhen(dayofweek==1,0))
chfnzd = 1/(valuewhen(dayofweek==1,0))
chfcad = 1/(valuewhen(dayofweek==1,0))
chfjpy = valuewhen(dayofweek==1,0)
CHF = chfEURrate/chfeur + chfUSDrate/chfusd + chfGBPrate/chfgbp + chfAUDrate/chfaud + chfNZDrate/chfnzd + chfCADrate/chfcad + chfJPYrate/chfjpy
解决方法
首先,消除对同一安全性的多个安全性调用。
你有
eurUSDrate = security("EURUSD","60",open)
后来,
usdEURrate = 1/(security("EURUSD",open))
。
改成
eurUSDrate = security("EURUSD",open)
usdEURrate = 1 / eurUSDrate
,
您没有在代码中使用版本编译器指令。
尝试在脚本的开头添加 //@version=4
。
它对我来说完美无缺。
//@version=4
study("My Script")
//=========== Currency Exchange Rates ===========
eurUSDrate = security("EURUSD",open)
eurJPYrate = security("EURJPY",open)
eurGBPrate = security("EURGBP",open)
eurCADrate = security("EURCAD",open)
eurAUDrate = security("EURAUD",open)
eurCHFrate = security("EURCHF",open)
eurNZDrate = security("EURNZD",open)
usdCADrate = security("USDCAD",open)
usdJPYrate = security("USDJPY",open)
usdCHFrate = security("USDCHF",open)
usdEURrate = 1/(security("EURUSD",open))
usdGBPrate = 1/(security("GBPUSD",open))
usdNZDrate = 1/(security("NZDUSD",open))
usdAUDrate = 1/(security("AUDUSD",open))
gbpUSDrate = security("GBPUSD",open)
gbpJPYrate = security("GBPJPY",open)
gbpCADrate = security("GBPCAD",open)
gbpNZDrate = security("GBPNZD",open)
gbpCHFrate = security("GBPCHF",open)
gbpEURrate = 1/(security("EURGBP",open))
gbpAUDrate = security("GBPAUD",open)
audUSDrate = security("AUDUSD",open)
audCHFrate = security("AUDCHF",open)
audNZDrate = security("AUDNZD",open)
audCADrate = security("AUDCAD",open)
audJPYrate = security("AUDJPY",open)
audEURrate = 1/(security("EURAUD",open))
audGBPrate = 1/(security("GBPAUD",open))
nzdUSDrate = security("NZDUSD",open)
nzdCADrate = security("NZDCAD",open)
nzdCHFrate = security("NZDCHF",open)
nzdJPYrate = security("NZDJPY",open)
nzdEURrate = 1/(security("EURNZD",open))
nzdAUDrate = 1/(security("AUDNZD",open))
nzdGBPrate = 1/(security("GBPNZD",open))
jpyEURrate = 1/(security("EURJPY",open))
jpyUSDrate = 1/(security("USDJPY",open))
jpyGBPrate = 1/(security("GBPJPY",open))
jpyAUDrate = 1/(security("AUDJPY",open))
jpyNZDrate = 1/(security("NZDJPY",open))
jpyCADrate = 1/(security("CADJPY",open))
jpyCHFrate = 1/(security("CHFJPY",open))
cadEURrate = 1/(security("EURCAD",open))
cadUSDrate = 1/(security("USDCAD",open))
cadGBPrate = 1/(security("GBPCAD",open))
cadAUDrate = 1/(security("AUDCAD",open))
cadNZDrate = 1/(security("NZDCAD",open))
cadJPYrate = security("CADJPY",open)
cadCHFrate = security("CADCHF",open)
chfEURrate = 1/(security("EURCHF",open))
chfUSDrate = 1/(security("USDCHF",open))
chfGBPrate = 1/(security("GBPCHF",open))
chfAUDrate = 1/(security("AUDCHF",open))
chfNZDrate = 1/(security("NZDCHF",open))
chfCADrate = 1/(security("CADCHF",open))
chfJPYrate = security("CHFJPY",open)
//=========== Currency Index ===========
//Formula = Sum(all major pairs divide by currency exchange rate on Monday's opening)
//update currency exchange rate at opening of Monday's price for each currency pair
eurusd = valuewhen(dayofweek==1,security("EURUSD","D",open),0)
eurjpy = valuewhen(dayofweek==1,security("EURJPY",0)
eurgbp = valuewhen(dayofweek==1,security("EURGBP",0)
eurcad = valuewhen(dayofweek==1,security("EURCAD",0)
euraud = valuewhen(dayofweek==1,security("EURAUD",0)
eurchf = valuewhen(dayofweek==1,security("EURCHF",0)
eurnzd = valuewhen(dayofweek==1,security("EURNZD",0)
EUR = eurUSDrate/eurusd + eurJPYrate/eurjpy + eurGBPrate/eurgbp + eurCADrate/eurcad + eurAUDrate/euraud + eurCHFrate/eurchf + eurNZDrate/eurnzd
usdcad = valuewhen(dayofweek==1,security("USDCAD",0)
usdjpy = valuewhen(dayofweek==1,security("USDJPY",0)
usdchf = valuewhen(dayofweek==1,security("USDCHF",0)
usdeur = 1/(valuewhen(dayofweek==1,0))
usdgbp = 1/(valuewhen(dayofweek==1,security("GBPUSD",0))
usdnzd = 1/(valuewhen(dayofweek==1,security("NZDUSD",0))
usdaud = 1/(valuewhen(dayofweek==1,security("AUDUSD",0))
USD = usdCADrate/usdcad + usdJPYrate/usdjpy + usdCHFrate/usdchf + usdEURrate/usdeur + usdgbp/usdGBPrate + usdNZDrate/usdnzd + usdAUDrate/usdaud
gbpusd = valuewhen(dayofweek==1,0)
gbpjpy = valuewhen(dayofweek==1,security("GBPJPY",0)
gbpcad = valuewhen(dayofweek==1,security("GBPCAD",0)
gbpnzd = valuewhen(dayofweek==1,security("GBPNZD",0)
gbpchf = valuewhen(dayofweek==1,security("GBPCHF",0)
gbpeur = 1/valuewhen(dayofweek==1,0)
gbpaud = valuewhen(dayofweek==1,security("GBPAUD",0)
GBP = gbpUSDrate/gbpusd + gbpJPYrate/gbpjpy + gbpCADrate/gbpcad + gbpNZDrate/gbpnzd + gbpCHFrate/gbpchf + gbpEURrate/gbpeur + gbpAUDrate/gbpaud
audusd = valuewhen(dayofweek==1,0)
audchf = valuewhen(dayofweek==1,security("AUDCHF",0)
audnzd = valuewhen(dayofweek==1,security("AUDNZD",0)
audcad = valuewhen(dayofweek==1,security("AUDCAD",0)
audjpy = valuewhen(dayofweek==1,security("AUDJPY",0)
audeur = 1/(valuewhen(dayofweek==1,0))
audgbp = 1/(valuewhen(dayofweek==1,0))
AUD = audUSDrate/audusd + audCHFrate/audchf + audNZDrate/audnzd + audCADrate/audcad + audJPYrate/audjpy + audEURrate/audeur + audGBPrate/audgbp
nzdusd = valuewhen(dayofweek==1,0)
nzdcad = valuewhen(dayofweek==1,security("NZDCAD",0)
nzdchf = valuewhen(dayofweek==1,security("NZDCHF",0)
nzdjpy = valuewhen(dayofweek==1,security("NZDJPY",0)
nzdeur = 1/(valuewhen(dayofweek==1,0))
nzdaud = 1/(valuewhen(dayofweek==1,0))
nzdgbp = 1/(valuewhen(dayofweek==1,0))
NZD = nzdUSDrate/nzdusd + nzdCADrate/nzdcad + nzdCHFrate/nzdchf + nzdJPYrate/nzdjpy + nzdEURrate/nzdeur + nzdAUDrate/nzdaud + nzdGBPrate/nzdgbp
jpyeur = 1/(valuewhen(dayofweek==1,0))
jpyusd = 1/(valuewhen(dayofweek==1,0))
jpygbp = 1/(valuewhen(dayofweek==1,0))
jpyaud = 1/(valuewhen(dayofweek==1,0))
jpynzd = 1/(valuewhen(dayofweek==1,0))
jpycad = 1/(valuewhen(dayofweek==1,security("CADJPY",0))
jpychf = 1/(valuewhen(dayofweek==1,security("CHFJPY",0))
JPY = jpyEURrate/jpyeur + jpyUSDrate/jpyusd + jpyGBPrate/jpygbp + jpyAUDrate/jpyaud + jpyNZDrate/jpynzd + jpyCADrate/jpycad + jpyCHFrate/jpychf
cadeur = 1/(valuewhen(dayofweek==1,0))
cadusd = 1/(valuewhen(dayofweek==1,0))
cadgbp = 1/(valuewhen(dayofweek==1,0))
cadaud = 1/(valuewhen(dayofweek==1,0))
cadnzd = 1/(valuewhen(dayofweek==1,0))
cadjpy = valuewhen(dayofweek==1,0)
cadchf = valuewhen(dayofweek==1,security("CADCHF",0)
CAD = cadEURrate/cadeur + cadUSDrate/cadusd + cadGBPrate/cadgbp + cadAUDrate/cadaud + cadNZDrate/cadnzd + cadJPYrate/cadjpy + cadCHFrate/cadchf
chfeur = 1/(valuewhen(dayofweek==1,0))
chfusd = 1/(valuewhen(dayofweek==1,0))
chfgbp = 1/(valuewhen(dayofweek==1,0))
chfaud = 1/(valuewhen(dayofweek==1,0))
chfnzd = 1/(valuewhen(dayofweek==1,0))
chfcad = 1/(valuewhen(dayofweek==1,0))
chfjpy = valuewhen(dayofweek==1,0)
CHF = chfEURrate/chfeur + chfUSDrate/chfusd + chfGBPrate/chfgbp + chfAUDrate/chfaud + chfNZDrate/chfnzd + chfCADrate/chfcad + chfJPYrate/chfjpy
plot(CHF)