【问题标题】:Quantstrat applystrategy incorrect dimensions trying to work with manual mktdata OHCLV data vs getSymbolsQuantstrat applystrategy 尺寸不正确,尝试使用手动 mktdata OHCLV 数据与 getSymbols
【发布时间】:2020-07-10 10:35:54
【问题描述】:

对于没有工作示例 atm 深表歉意

我真正需要的是如何从 csv 加载多个符号的示例格式

函数调用说

https://www.rdocumentation.org/packages/quantstrat/versions/0.16.7/topics/applyStrategy

mktdata "一个包含市场数据的 xts 对象。根据指标,可能需要 OHLCV 或 BBO 格式,默认为 NULL"

我不想使用 getSymbols 的原因是我做了一些预处理并从 csv 加载数据,因为我的互联网质量很差。我确实下载数据,但大约每周一次。我的预处理根据我扫描的时间段从 400 个符号的子集中生成不同的符号。我正在尝试预先加载所有下载处理,无论我尝试什么,我都无法从数据框或 xts 对象加载它。现在我正在从 csv 转换为 dataframe 到 xts 并尝试加载。

我注意到我的 xts 对象与 getSymbols 不同(尺寸不正确的错误)。特别是如果我打电话给 colnames。我的会说没有,因为 getSymbols 子元素列出了 6 列。

无论如何。我想做的是看一个将自定义 OHCLV 数据从 csv 加载到 xts 中的最小示例,该 xts 可以作为对象提供给 applyStrategy 调用中的 mktdata =。这样我就可以格式化我的代码以匹配

我有从数据框加载和创建 xts 对象的代码。

#loads from a dataframe which includes Symbol, Date, Open, High, Low, Close, Volume, Adjusted

tempData <- symbol_data_set[symbol_data_set$Symbol %in% symbolstring & symbol_data_set$Date >= startDate & symbol_data_set$Date<=endDate,]

#creates a list of xts    
vectorXTS <- mclapply(symbolstring,function(x)
{
  df <- symbol_data_set[symbol_data_set$Symbol==x & symbol_data_set$Date >= startDate & symbol_data_set$Date<=endDate,]
  #temp <- as.xts(
    temp <- cbind(as.data.frame(df[,2]),as.data.frame(df[,-1:-2]))
    rownames(df) <- df$Date
    #,order.by=as.POSIXct(df$Date),)
  z <- read.zoo(temp, index = 1, col.names=TRUE, header = TRUE)

  #sets names to Symbol.Open ...
  colnames(z) <- c(paste0(symbolstring[x],".Open"),paste0(symbolstring[x],".High"),paste0(symbolstring[x],".Low"),paste0(symbolstring[x],".Close"),paste0(symbolstring[x],".Volume"),paste0(symbolstring[x],".Adjusted"))

  return(as.xts(z, match.to=AAPL))
  #colnames(as.xts(z))
})

names(symbolstring) <- symbolstring
names(vectorXTS) <- symbolstring

for(i in symbolstring) assign(symbolstring[i],vectorXTS[i])

colnames(tempData) <- c(paste0(x,".Symbol"),paste0(x,".Date"),paste0(x,".Open"),paste0(x,".High"),paste0(x,".Low"),paste0(x,".Close"),paste0(x,".Volume"),paste0(x,".Adjusted"))
head(tempData)

rownames(tempData) <- tempData$Date

#attempts to use this xts object I created

results <- applyStrategy(strategy= strategyName, portfolios = portfolioName,symbols=symbolstring,mktdata)

错误

Error in mktdata[, keep] : incorrect number of dimensions

【问题讨论】:

  • 我想我可能有一个解决方案 getSymbols("AAPL",from=startDate,to=endDate,adjust=TRUE,src='yahoo',auto.assign = TRUE); saveRDS(AAPL,文件='stuff.Rdata'); AAPL

标签: xts dimensions quantstrat


【解决方案1】:

这是您将 xts getSymbols 对象存储在文件中并重新加载它以用于 quantStrat 的 applyStrategy 的方式(显示了两种方法,read.xts 方法是理想的,因为您可以看到 csv 的存储方式)

getSymbols("AAPL",from=startDate,to=endDate,adjust=TRUE,src='yahoo',auto.assign = TRUE)
saveRDS(AAPL, file= 'stuff.Rdata')
AAPL <- readRDS(file= 'stuff.Rdata')
 write.zoo(AAPL,file="zoo.csv", index.name = "Date", row.names=FALSE)
rm(AAPL)
AAPL <- as.xts(read.zoo(file="zoo.csv",header = TRUE))

如果你想使用多个符号,我有这个工作。

请注意,最初我引用了第一个元素,即 vectorXTS[[1]],它起作用了

注意:至少像这样设置它可以运行...

vectorXTS <- mclapply(symbolstring,function(x)
{
  df <- symbol_data_set[symbol_data_set$Symbol==x & symbol_data_set$Date >= startDate & symbol_data_set$Date<=endDate,]
    temp <- cbind(as.data.frame(df[,2]),as.data.frame(df[,-1:-2]))
    rownames(df) <- df$Date
  z <- read.zoo(temp, index = 1, col.names=TRUE, header = TRUE)
  colnames(z) <- c(paste0(x,".Open"),paste0(x,".High"),paste0(x,".Low"),paste0(x,".Close"),paste0(x,".Volume"),paste0(x,".Adjusted"))
  write.zoo(z,file=paste0(x,"zoo.csv"), index.name = "Date", row.names=FALSE)
  return(as.xts(read.zoo(file=paste0(x,"zoo.csv"),header = TRUE)))
})

names(vectorXTS) <- symbolstring

#this will assign to memory vs vectorXTS if one wishes to avoid using mktdata = vectorXTS[[]]
for(i in symbolstring) assign(i,vectorXTS[[i]])

results <- applyStrategy(strategy= strategyName, portfolios = portfolioName,symbols=symbolstring, mktdata = vectorXTS[[]])

#alternatively
#results <- applyStrategy(strategy= strategyName, portfolios = portfolioName,symbols=symbolstring)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多