在Quantmod R中使用csv的getSymbols

时间:2015-06-11 11:11:05

标签: r csv quantmod quantstrat

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

我加载的符号在雅虎(它们是南非股票)上不可用,因此我需要从本地目录和.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包中。

2 个答案:

答案 0 :(得分:2)

getsymbols.csv需要六列:开放,高,低,关闭,交易量,调整

您的数据没有&#34;已调整&#34;柱;它有5个列名而不是6个,这导致你看到的dimnames错误。

如果您可以修改本地数据文件,请尝试添加一个空的&#34;调整后的&#34;列(通过在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 = ".")

为了支持您的数据。

答案 1 :(得分:0)

请尝试以下代码:

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 - &#34;约翰内斯堡证券交易所:分享代码&#34; (Naspers - NPN)

(这些数据可在Google财经部门获得)