首页 > 解决方案 > 如何优化下面的代码,召回太多类似的功能?

问题描述

我这里有一个用 pinescript 编写的代码。我在控制台中收到关于请求太多证券的错误。否则代码工作。我的代码没有优化。知道怎么做吗?否则,另一种解决方案是将代码分成两个脚本。目标是获取每个货币对在指定分辨率下的当前汇率,然后除以该货币对周一开盘价的汇率,得到一个相对货币强弱指数。任何建议和意见将不胜感激。谢谢你。

//=========== 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

标签: pine-scriptalgorithmic-tradingmt4

解决方案


您没有在代码中使用版本编译器指令。
尝试//@version=4在脚本的开头添加。
它对我来说完美无缺。

//@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)

推荐阅读