首先,我要感谢社区的大力支持和反应。
我在多仪器上应用简单的 MA 交叉策略时遇到问题。
基本上,我维护一个 csv 价格文件的数据库。我使用此代码检索这些文件
getdata <- function(ticker){
d <- read.csv(ticker, header=TRUE, sep = ",")
d[,1] <- as.Date(as.character(d[,1]), tz ="GMT", format="%m/%d/%Y")
ticker <- as.xts(d[,-1], order.by =d[,1] )
}
然后我导入数据,这些数据创建了具有正确索引的有效 xts 对象
GBPUSD <- getdata("GBPUSD.csv")
AUDUSD <- getdata("AUDUSD.csv")
EURUSD <- getdata("EURUSD.csv")
然后我运行通常的初始化过程
### Initialisation
currency(c("USD","EUR","AUD","GBP"))
exchange_rate(c("EURUSD","GBPUSD","AUDUSD"),"USD")
symbols <- c("EURUSD","GBPUSD","AUDUSD")
init.date <- "2001-09-04" #date d'initialisation de l'environement
start.date <- "2001-09-05" #1ere date du jeu de donnée
end.date <- "2017-01-04" #dernière date du jeu de donnée
initial.capital <- 1000000 #Capital de départ
model <- strategy("model")
portfolio.st <- account.st <- strat.st <- "model"
if (!exists('.blotter')) .blotter <- new.env()
if (!exists('.strategy')) .strategy <- new.env()
然后(我怀疑问题就在这里),我启动了投资组合。如果我启动投资组合,我直接输入工具的名称,这样它就可以正常工作。
initPortf(portfolio.st, #nom du book
symbols = "EURUSD", #list des instruments
initDate=init.date, #date de départ du book
currency='USD') #devise de référence du book
但我想将策略应用于“符号”,而不是逐个运行它。我知道我应该写以下内容,但不幸的是,它不起作用。
initPortf(portfolio.st, #nom du book
symbols = symbols, #list des instruments
initDate=init.date, #date de départ du book
currency='USD') #devise de référence du book
最后,这是我找不到任何逻辑的地方,如果我像这样启动投资组合,它适用于 2 个工具,而不是 3 个
initPortf(portfolio.st, #nom du book
symbols = c("EURUSD","GBPUSD"), #list des instruments
initDate=init.date, #date de départ du book
currency='USD') #devise de référence du book
我得到的错误信息是
applyStrategy("model", portfolios = portfolio.st, symbols = symbols)
Error in sum(x[beg:(n + beg - 1)]) :
invalid 'type' (character) of argument
再次,提前感谢您的支持。
尼古拉斯