[英]How to optimize the following code, recalling too many similar functions?
I have a code here written in pinescript.我这里有一个用 pinescript 编写的代码。 I got an error in the console about requesting too many securities.
我在控制台中收到关于请求太多证券的错误。 The code works otherwise.
否则代码工作。 My code is not optimized.
我的代码没有优化。 Any idea how?
知道怎么做吗? Otherwise the other solution is to separate the code into two scripts.
否则,另一种解决方案是将代码分成两个脚本。 The goal is to obtain each currency pair's current exchange at the specified resolution, then divide by the currency pair's exchange price on Monday's opening price to obtain a relative currency strength index.
目标是获取每个货币对在指定分辨率下的当前汇率,然后除以该货币对在周一开盘价的汇率,得到一个相对货币强弱指数。 Any suggestion and advice would be greatly appreciated.
任何建议和意见将不胜感激。 Thank you.
谢谢你。
//=========== Currency Exchange Rates ===========
eurUSDrate = security("EURUSD", "60", open)
eurJPYrate = security("EURJPY", "60", open)
eurGBPrate = security("EURGBP", "60", open)
eurCADrate = security("EURCAD", "60", open)
eurAUDrate = security("EURAUD", "60", open)
eurCHFrate = security("EURCHF", "60", open)
eurNZDrate = security("EURNZD", "60", open)
usdCADrate = security("USDCAD", "60", open)
usdJPYrate = security("USDJPY", "60", open)
usdCHFrate = security("USDCHF", "60", open)
usdEURrate = 1/(security("EURUSD", "60", open))
usdGBPrate = 1/(security("GBPUSD", "60", open))
usdNZDrate = 1/(security("NZDUSD", "60", open))
usdAUDrate = 1/(security("AUDUSD", "60", open))
gbpUSDrate = security("GBPUSD", "60", open)
gbpJPYrate = security("GBPJPY", "60", open)
gbpCADrate = security("GBPCAD", "60", open)
gbpNZDrate = security("GBPNZD", "60", open)
gbpCHFrate = security("GBPCHF", "60", open)
gbpEURrate = 1/(security("EURGBP", "60", open))
gbpAUDrate = security("GBPAUD", "60", open)
audUSDrate = security("AUDUSD", "60", open)
audCHFrate = security("AUDCHF", "60", open)
audNZDrate = security("AUDNZD", "60", open)
audCADrate = security("AUDCAD", "60", open)
audJPYrate = security("AUDJPY", "60", open)
audEURrate = 1/(security("EURAUD", "60", open))
audGBPrate = 1/(security("GBPAUD", "60", open))
nzdUSDrate = security("NZDUSD", "60", open)
nzdCADrate = security("NZDCAD", "60", open)
nzdCHFrate = security("NZDCHF", "60", open)
nzdJPYrate = security("NZDJPY", "60", open)
nzdEURrate = 1/(security("EURNZD", "60", open))
nzdAUDrate = 1/(security("AUDNZD", "60", open))
nzdGBPrate = 1/(security("GBPNZD", "60", open))
jpyEURrate = 1/(security("EURJPY", "60", open))
jpyUSDrate = 1/(security("USDJPY", "60", open))
jpyGBPrate = 1/(security("GBPJPY", "60", open))
jpyAUDrate = 1/(security("AUDJPY", "60", open))
jpyNZDrate = 1/(security("NZDJPY", "60", open))
jpyCADrate = 1/(security("CADJPY", "60", open))
jpyCHFrate = 1/(security("CHFJPY", "60", open))
cadEURrate = 1/(security("EURCAD", "60", open))
cadUSDrate = 1/(security("USDCAD", "60", open))
cadGBPrate = 1/(security("GBPCAD", "60", open))
cadAUDrate = 1/(security("AUDCAD", "60", open))
cadNZDrate = 1/(security("NZDCAD", "60", open))
cadJPYrate = security("CADJPY", "60", open)
cadCHFrate = security("CADCHF", "60", open)
chfEURrate = 1/(security("EURCHF", "60", open))
chfUSDrate = 1/(security("USDCHF", "60", open))
chfGBPrate = 1/(security("GBPCHF", "60", open))
chfAUDrate = 1/(security("AUDCHF", "60", open))
chfNZDrate = 1/(security("NZDCHF", "60", open))
chfCADrate = 1/(security("CADCHF", "60", open))
chfJPYrate = security("CHFJPY", "60", 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", "D", open), 0)
eurgbp = valuewhen(dayofweek==1, security("EURGBP", "D", open), 0)
eurcad = valuewhen(dayofweek==1, security("EURCAD", "D", open), 0)
euraud = valuewhen(dayofweek==1, security("EURAUD", "D", open), 0)
eurchf = valuewhen(dayofweek==1, security("EURCHF", "D", open), 0)
eurnzd = valuewhen(dayofweek==1, security("EURNZD", "D", open), 0)
EUR = eurUSDrate/eurusd + eurJPYrate/eurjpy + eurGBPrate/eurgbp + eurCADrate/eurcad + eurAUDrate/euraud + eurCHFrate/eurchf + eurNZDrate/eurnzd
usdcad = valuewhen(dayofweek==1, security("USDCAD", "D", open), 0)
usdjpy = valuewhen(dayofweek==1, security("USDJPY", "D", open), 0)
usdchf = valuewhen(dayofweek==1, security("USDCHF", "D", open), 0)
usdeur = 1/(valuewhen(dayofweek==1, security("EURUSD", "D", open), 0))
usdgbp = 1/(valuewhen(dayofweek==1, security("GBPUSD", "D", open), 0))
usdnzd = 1/(valuewhen(dayofweek==1, security("NZDUSD", "D", open), 0))
usdaud = 1/(valuewhen(dayofweek==1, security("AUDUSD", "D", open), 0))
USD = usdCADrate/usdcad + usdJPYrate/usdjpy + usdCHFrate/usdchf + usdEURrate/usdeur + usdgbp/usdGBPrate + usdNZDrate/usdnzd + usdAUDrate/usdaud
gbpusd = valuewhen(dayofweek==1, security("GBPUSD", "D", open), 0)
gbpjpy = valuewhen(dayofweek==1, security("GBPJPY", "D", open), 0)
gbpcad = valuewhen(dayofweek==1, security("GBPCAD", "D", open), 0)
gbpnzd = valuewhen(dayofweek==1, security("GBPNZD", "D", open), 0)
gbpchf = valuewhen(dayofweek==1, security("GBPCHF", "D", open), 0)
gbpeur = 1/valuewhen(dayofweek==1, security("EURGBP", "D", open), 0)
gbpaud = valuewhen(dayofweek==1, security("GBPAUD", "D", open), 0)
GBP = gbpUSDrate/gbpusd + gbpJPYrate/gbpjpy + gbpCADrate/gbpcad + gbpNZDrate/gbpnzd + gbpCHFrate/gbpchf + gbpEURrate/gbpeur + gbpAUDrate/gbpaud
audusd = valuewhen(dayofweek==1, security("AUDUSD", "D", open), 0)
audchf = valuewhen(dayofweek==1, security("AUDCHF", "D", open), 0)
audnzd = valuewhen(dayofweek==1, security("AUDNZD", "D", open), 0)
audcad = valuewhen(dayofweek==1, security("AUDCAD", "D", open), 0)
audjpy = valuewhen(dayofweek==1, security("AUDJPY", "D", open), 0)
audeur = 1/(valuewhen(dayofweek==1, security("EURAUD", "D", open), 0))
audgbp = 1/(valuewhen(dayofweek==1, security("GBPAUD", "D", open), 0))
AUD = audUSDrate/audusd + audCHFrate/audchf + audNZDrate/audnzd + audCADrate/audcad + audJPYrate/audjpy + audEURrate/audeur + audGBPrate/audgbp
nzdusd = valuewhen(dayofweek==1, security("NZDUSD", "D", open), 0)
nzdcad = valuewhen(dayofweek==1, security("NZDCAD", "D", open), 0)
nzdchf = valuewhen(dayofweek==1, security("NZDCHF", "D", open), 0)
nzdjpy = valuewhen(dayofweek==1, security("NZDJPY", "D", open), 0)
nzdeur = 1/(valuewhen(dayofweek==1, security("EURNZD", "D", open), 0))
nzdaud = 1/(valuewhen(dayofweek==1, security("AUDNZD", "D", open), 0))
nzdgbp = 1/(valuewhen(dayofweek==1, security("GBPNZD", "D", open), 0))
NZD = nzdUSDrate/nzdusd + nzdCADrate/nzdcad + nzdCHFrate/nzdchf + nzdJPYrate/nzdjpy + nzdEURrate/nzdeur + nzdAUDrate/nzdaud + nzdGBPrate/nzdgbp
jpyeur = 1/(valuewhen(dayofweek==1, security("EURJPY", "D", open), 0))
jpyusd = 1/(valuewhen(dayofweek==1, security("USDJPY", "D", open), 0))
jpygbp = 1/(valuewhen(dayofweek==1, security("GBPJPY", "D", open), 0))
jpyaud = 1/(valuewhen(dayofweek==1, security("AUDJPY", "D", open), 0))
jpynzd = 1/(valuewhen(dayofweek==1, security("NZDJPY", "D", open), 0))
jpycad = 1/(valuewhen(dayofweek==1, security("CADJPY", "D", open), 0))
jpychf = 1/(valuewhen(dayofweek==1, security("CHFJPY", "D", open), 0))
JPY = jpyEURrate/jpyeur + jpyUSDrate/jpyusd + jpyGBPrate/jpygbp + jpyAUDrate/jpyaud + jpyNZDrate/jpynzd + jpyCADrate/jpycad + jpyCHFrate/jpychf
cadeur = 1/(valuewhen(dayofweek==1, security("EURCAD", "D", open), 0))
cadusd = 1/(valuewhen(dayofweek==1, security("USDCAD", "D", open), 0))
cadgbp = 1/(valuewhen(dayofweek==1, security("GBPCAD", "D", open), 0))
cadaud = 1/(valuewhen(dayofweek==1, security("AUDCAD", "D", open), 0))
cadnzd = 1/(valuewhen(dayofweek==1, security("NZDCAD", "D", open), 0))
cadjpy = valuewhen(dayofweek==1, security("CADJPY", "D", open), 0)
cadchf = valuewhen(dayofweek==1, security("CADCHF", "D", open), 0)
CAD = cadEURrate/cadeur + cadUSDrate/cadusd + cadGBPrate/cadgbp + cadAUDrate/cadaud + cadNZDrate/cadnzd + cadJPYrate/cadjpy + cadCHFrate/cadchf
chfeur = 1/(valuewhen(dayofweek==1, security("EURCHF", "D", open), 0))
chfusd = 1/(valuewhen(dayofweek==1, security("USDCHF", "D", open), 0))
chfgbp = 1/(valuewhen(dayofweek==1, security("GBPCHF", "D", open), 0))
chfaud = 1/(valuewhen(dayofweek==1, security("AUDCHF", "D", open), 0))
chfnzd = 1/(valuewhen(dayofweek==1, security("NZDCHF", "D", open), 0))
chfcad = 1/(valuewhen(dayofweek==1, security("CADCHF", "D", open), 0))
chfjpy = valuewhen(dayofweek==1, security("CHFJPY", "D", open), 0)
CHF = chfEURrate/chfeur + chfUSDrate/chfusd + chfGBPrate/chfgbp + chfAUDrate/chfaud + chfNZDrate/chfnzd + chfCADrate/chfcad + chfJPYrate/chfjpy
To begin, eliminate multiple security calls to the same security.首先,消除对同一安全性的多个安全性调用。 You have
eurUSDrate = security("EURUSD", "60", open)
then later, usdEURrate = 1/(security("EURUSD", "60", open))
.你有
eurUSDrate = security("EURUSD", "60", open)
然后是usdEURrate = 1/(security("EURUSD", "60", open))
。
Change it to将其更改为
eurUSDrate = security("EURUSD", "60", open)
usdEURrate = 1 / eurUSDrate
You're not using a version compiler directive in your code.您没有在代码中使用版本编译器指令。
Try adding //@version=4
in the beginning of your script.尝试在脚本的开头添加
//@version=4
。
It works perfectly on my end.它对我来说完美无缺。
//@version=4
study("My Script")
//=========== Currency Exchange Rates ===========
eurUSDrate = security("EURUSD", "60", open)
eurJPYrate = security("EURJPY", "60", open)
eurGBPrate = security("EURGBP", "60", open)
eurCADrate = security("EURCAD", "60", open)
eurAUDrate = security("EURAUD", "60", open)
eurCHFrate = security("EURCHF", "60", open)
eurNZDrate = security("EURNZD", "60", open)
usdCADrate = security("USDCAD", "60", open)
usdJPYrate = security("USDJPY", "60", open)
usdCHFrate = security("USDCHF", "60", open)
usdEURrate = 1/(security("EURUSD", "60", open))
usdGBPrate = 1/(security("GBPUSD", "60", open))
usdNZDrate = 1/(security("NZDUSD", "60", open))
usdAUDrate = 1/(security("AUDUSD", "60", open))
gbpUSDrate = security("GBPUSD", "60", open)
gbpJPYrate = security("GBPJPY", "60", open)
gbpCADrate = security("GBPCAD", "60", open)
gbpNZDrate = security("GBPNZD", "60", open)
gbpCHFrate = security("GBPCHF", "60", open)
gbpEURrate = 1/(security("EURGBP", "60", open))
gbpAUDrate = security("GBPAUD", "60", open)
audUSDrate = security("AUDUSD", "60", open)
audCHFrate = security("AUDCHF", "60", open)
audNZDrate = security("AUDNZD", "60", open)
audCADrate = security("AUDCAD", "60", open)
audJPYrate = security("AUDJPY", "60", open)
audEURrate = 1/(security("EURAUD", "60", open))
audGBPrate = 1/(security("GBPAUD", "60", open))
nzdUSDrate = security("NZDUSD", "60", open)
nzdCADrate = security("NZDCAD", "60", open)
nzdCHFrate = security("NZDCHF", "60", open)
nzdJPYrate = security("NZDJPY", "60", open)
nzdEURrate = 1/(security("EURNZD", "60", open))
nzdAUDrate = 1/(security("AUDNZD", "60", open))
nzdGBPrate = 1/(security("GBPNZD", "60", open))
jpyEURrate = 1/(security("EURJPY", "60", open))
jpyUSDrate = 1/(security("USDJPY", "60", open))
jpyGBPrate = 1/(security("GBPJPY", "60", open))
jpyAUDrate = 1/(security("AUDJPY", "60", open))
jpyNZDrate = 1/(security("NZDJPY", "60", open))
jpyCADrate = 1/(security("CADJPY", "60", open))
jpyCHFrate = 1/(security("CHFJPY", "60", open))
cadEURrate = 1/(security("EURCAD", "60", open))
cadUSDrate = 1/(security("USDCAD", "60", open))
cadGBPrate = 1/(security("GBPCAD", "60", open))
cadAUDrate = 1/(security("AUDCAD", "60", open))
cadNZDrate = 1/(security("NZDCAD", "60", open))
cadJPYrate = security("CADJPY", "60", open)
cadCHFrate = security("CADCHF", "60", open)
chfEURrate = 1/(security("EURCHF", "60", open))
chfUSDrate = 1/(security("USDCHF", "60", open))
chfGBPrate = 1/(security("GBPCHF", "60", open))
chfAUDrate = 1/(security("AUDCHF", "60", open))
chfNZDrate = 1/(security("NZDCHF", "60", open))
chfCADrate = 1/(security("CADCHF", "60", open))
chfJPYrate = security("CHFJPY", "60", 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", "D", open), 0)
eurgbp = valuewhen(dayofweek==1, security("EURGBP", "D", open), 0)
eurcad = valuewhen(dayofweek==1, security("EURCAD", "D", open), 0)
euraud = valuewhen(dayofweek==1, security("EURAUD", "D", open), 0)
eurchf = valuewhen(dayofweek==1, security("EURCHF", "D", open), 0)
eurnzd = valuewhen(dayofweek==1, security("EURNZD", "D", open), 0)
EUR = eurUSDrate/eurusd + eurJPYrate/eurjpy + eurGBPrate/eurgbp + eurCADrate/eurcad + eurAUDrate/euraud + eurCHFrate/eurchf + eurNZDrate/eurnzd
usdcad = valuewhen(dayofweek==1, security("USDCAD", "D", open), 0)
usdjpy = valuewhen(dayofweek==1, security("USDJPY", "D", open), 0)
usdchf = valuewhen(dayofweek==1, security("USDCHF", "D", open), 0)
usdeur = 1/(valuewhen(dayofweek==1, security("EURUSD", "D", open), 0))
usdgbp = 1/(valuewhen(dayofweek==1, security("GBPUSD", "D", open), 0))
usdnzd = 1/(valuewhen(dayofweek==1, security("NZDUSD", "D", open), 0))
usdaud = 1/(valuewhen(dayofweek==1, security("AUDUSD", "D", open), 0))
USD = usdCADrate/usdcad + usdJPYrate/usdjpy + usdCHFrate/usdchf + usdEURrate/usdeur + usdgbp/usdGBPrate + usdNZDrate/usdnzd + usdAUDrate/usdaud
gbpusd = valuewhen(dayofweek==1, security("GBPUSD", "D", open), 0)
gbpjpy = valuewhen(dayofweek==1, security("GBPJPY", "D", open), 0)
gbpcad = valuewhen(dayofweek==1, security("GBPCAD", "D", open), 0)
gbpnzd = valuewhen(dayofweek==1, security("GBPNZD", "D", open), 0)
gbpchf = valuewhen(dayofweek==1, security("GBPCHF", "D", open), 0)
gbpeur = 1/valuewhen(dayofweek==1, security("EURGBP", "D", open), 0)
gbpaud = valuewhen(dayofweek==1, security("GBPAUD", "D", open), 0)
GBP = gbpUSDrate/gbpusd + gbpJPYrate/gbpjpy + gbpCADrate/gbpcad + gbpNZDrate/gbpnzd + gbpCHFrate/gbpchf + gbpEURrate/gbpeur + gbpAUDrate/gbpaud
audusd = valuewhen(dayofweek==1, security("AUDUSD", "D", open), 0)
audchf = valuewhen(dayofweek==1, security("AUDCHF", "D", open), 0)
audnzd = valuewhen(dayofweek==1, security("AUDNZD", "D", open), 0)
audcad = valuewhen(dayofweek==1, security("AUDCAD", "D", open), 0)
audjpy = valuewhen(dayofweek==1, security("AUDJPY", "D", open), 0)
audeur = 1/(valuewhen(dayofweek==1, security("EURAUD", "D", open), 0))
audgbp = 1/(valuewhen(dayofweek==1, security("GBPAUD", "D", open), 0))
AUD = audUSDrate/audusd + audCHFrate/audchf + audNZDrate/audnzd + audCADrate/audcad + audJPYrate/audjpy + audEURrate/audeur + audGBPrate/audgbp
nzdusd = valuewhen(dayofweek==1, security("NZDUSD", "D", open), 0)
nzdcad = valuewhen(dayofweek==1, security("NZDCAD", "D", open), 0)
nzdchf = valuewhen(dayofweek==1, security("NZDCHF", "D", open), 0)
nzdjpy = valuewhen(dayofweek==1, security("NZDJPY", "D", open), 0)
nzdeur = 1/(valuewhen(dayofweek==1, security("EURNZD", "D", open), 0))
nzdaud = 1/(valuewhen(dayofweek==1, security("AUDNZD", "D", open), 0))
nzdgbp = 1/(valuewhen(dayofweek==1, security("GBPNZD", "D", open), 0))
NZD = nzdUSDrate/nzdusd + nzdCADrate/nzdcad + nzdCHFrate/nzdchf + nzdJPYrate/nzdjpy + nzdEURrate/nzdeur + nzdAUDrate/nzdaud + nzdGBPrate/nzdgbp
jpyeur = 1/(valuewhen(dayofweek==1, security("EURJPY", "D", open), 0))
jpyusd = 1/(valuewhen(dayofweek==1, security("USDJPY", "D", open), 0))
jpygbp = 1/(valuewhen(dayofweek==1, security("GBPJPY", "D", open), 0))
jpyaud = 1/(valuewhen(dayofweek==1, security("AUDJPY", "D", open), 0))
jpynzd = 1/(valuewhen(dayofweek==1, security("NZDJPY", "D", open), 0))
jpycad = 1/(valuewhen(dayofweek==1, security("CADJPY", "D", open), 0))
jpychf = 1/(valuewhen(dayofweek==1, security("CHFJPY", "D", open), 0))
JPY = jpyEURrate/jpyeur + jpyUSDrate/jpyusd + jpyGBPrate/jpygbp + jpyAUDrate/jpyaud + jpyNZDrate/jpynzd + jpyCADrate/jpycad + jpyCHFrate/jpychf
cadeur = 1/(valuewhen(dayofweek==1, security("EURCAD", "D", open), 0))
cadusd = 1/(valuewhen(dayofweek==1, security("USDCAD", "D", open), 0))
cadgbp = 1/(valuewhen(dayofweek==1, security("GBPCAD", "D", open), 0))
cadaud = 1/(valuewhen(dayofweek==1, security("AUDCAD", "D", open), 0))
cadnzd = 1/(valuewhen(dayofweek==1, security("NZDCAD", "D", open), 0))
cadjpy = valuewhen(dayofweek==1, security("CADJPY", "D", open), 0)
cadchf = valuewhen(dayofweek==1, security("CADCHF", "D", open), 0)
CAD = cadEURrate/cadeur + cadUSDrate/cadusd + cadGBPrate/cadgbp + cadAUDrate/cadaud + cadNZDrate/cadnzd + cadJPYrate/cadjpy + cadCHFrate/cadchf
chfeur = 1/(valuewhen(dayofweek==1, security("EURCHF", "D", open), 0))
chfusd = 1/(valuewhen(dayofweek==1, security("USDCHF", "D", open), 0))
chfgbp = 1/(valuewhen(dayofweek==1, security("GBPCHF", "D", open), 0))
chfaud = 1/(valuewhen(dayofweek==1, security("AUDCHF", "D", open), 0))
chfnzd = 1/(valuewhen(dayofweek==1, security("NZDCHF", "D", open), 0))
chfcad = 1/(valuewhen(dayofweek==1, security("CADCHF", "D", open), 0))
chfjpy = valuewhen(dayofweek==1, security("CHFJPY", "D", open), 0)
CHF = chfEURrate/chfeur + chfUSDrate/chfusd + chfGBPrate/chfgbp + chfAUDrate/chfaud + chfNZDrate/chfnzd + chfCADrate/chfcad + chfJPYrate/chfjpy
plot(CHF)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.