【问题标题】:getSymbols with csv in Quantmod R在 Quantmod R 中使用 csv 获取符号
【发布时间】:2015-06-11 11:11:04
【问题描述】:

我正在尝试使用 quantmod::getSymbols 将一组符号上传到包 quantstrat。

我加载的符号在 Yahoo 上不可用(它们是南非股票),所以我需要从本地目录和 .csv 文件加载它们。

我的符号文件如下所示:

head(symbols)

[1] "SHFJ" "FSRJ" "RDFJ" "GRTJ" "MTNJ" "SLMJ"....

我的交易品种价格历史记录在单独的 csv 文件中,每个文件都包含一个日期列和 OHLC 列,标题仅用于 OHLC 价格。

我使用函数getSymbols.csv函数如下:

getSymbols.csv(symbols, env, dir="E:/data/CData_Files_NB/", return.class = "xts", extension="csv")

但我收到以下错误消息

loading  SHFJ .....done.
Error in `colnames<-`(`*tmp*`, value = c("SHFJ.Open", "SHFJ.High","SHFJ.Low",  : length of 'dimnames' [2] not equal to array extent

如果有人能告诉我我做错了什么,我将不胜感激。我不确定是否有其他方法可以将股票价格加载到 quantstrat 包中。

【问题讨论】:

  • 您能否提供 SHFJ 文件的前 10 行左右?
  • 嗨@JoshuaUlrich,谢谢。这似乎是由于我只有 OHLC 数据而没有 Vol 或 Adjusted Columns 的事实造成的??

标签: r csv quantmod quantstrat


【解决方案1】:

getsymbols.csv 需要六列:Open、High、Low、Close、Volume、Adjusted

您的数据没有“调整后”列;它有 5 个列名而不是 6 个,这会导致您看到的 dimnames 错误。

如果您可以修改本地数据文件,请尝试添加一个空的“已调整”列(可以通过在 LibreOffice 或 Excel 中打开 CSV 轻松完成)

或尝试复制 getsymbols.csv() 函数并进行更改:

colnames(fr) <- paste(toupper(gsub("\\^", "", Symbols[[i]])), 
            c("Open", "High", "Low", "Close", "Volume", "Adjusted"), 
            sep = ".")

colnames(fr) <- paste(toupper(gsub("\\^", "", Symbols[[i]])), 
            c("Open", "High", "Low", "Close", "Volume"), 
            sep = ".")

为了支持您的数据。

【讨论】:

  • 感谢@Vincent。你是对的。我添加了两列 Volume 和 Adjusted price,它现在似乎可以工作了。再次感谢。
  • @NMRQL:如果这回答了您的问题,请考虑单击投票按钮旁边的复选标记。
  • 谢谢乔希。道歉。
【解决方案2】:

试试下面的代码:

library("quantmod")
Stocks<-c("JSE:APN","JSE:BAT","JSE:CPI","JSE:DSY","JSE:NPN","JSE:DST")
getSymbols(Stocks,src="google",auto.assign=TRUE)
get("JSE:NPN")

JSE:NPN - “约翰内斯堡证券交易所:股票代码”(Naspers - NPN)

(数据可在谷歌财经上找到)

【讨论】:

    猜你喜欢
    • 2021-05-03
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多