怎么优化下面的代码,召回太多类似的功能?

问题描述

我这里有一个用 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)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...