我正在使用tseries软件包从Yahoo Finance下载股票数据。问题是我没有得到最近的日期-最近的价格始终是2天前。 以下是我的代码,能否请您告知我应该如何纠正以获取所有可用价格?
谢谢!
`dir <- "D:/Yahoo stock prices" #location
setwd(dir)
# Packages needed
require(tseries)
require(zoo)
YH <- read.csv2(file="SBI.csv",header=T, sep=";", dec=".")
date <- "2012-09-20"
penny_stocks <- c("SMDS.L", "MNDI.L", "SKG.L")
prices <- NULL
for(i in 1:length(YH[,1])){
prices <- try(get.hist.quote(as.character(YH[i,1]),
start=date,
quote='Open'
)
,silent=TRUE
)
if(!is.character(prices)){
if(as.character(YH[i,1]) %in% penny_stocks) prices <- prices / 100
prices <- as.data.frame(prices)
prices <- cbind(rownames(prices),prices)
colnames(prices) <- c("date",as.character(YH[i,1]))
if(length(prices) > 1){
if(i == 1){
allprices <- prices
names <- c("date",as.character(YH[i,1]))
} else {
names <- append(colnames(allprices),as.character(YH[i,1]))
allprices <- merge(allprices,prices,by ="date", all.x = TRUE)
colnames(allprices) <- names
}
}
}
}
write.csv2(allprices,"Prices 200511.csv")
warnings()
`
答案 0 :(得分:0)
在撰写本文时,雅虎网站上的可用数据要到2020-05-12为止。您需要在tseries中默认指定结束日期,结束日期定义为Sys.Date() - 1
。因此,使用tseries::get.hist.quote("SMDS.L", end = Sys.Date(), quote = "Open")
将返回直到2020-05-12的数据。现在,您希望默认值足够好,但是yahoo数据存在很多问题,如果数据不在美国,则会获取正确的最后记录。在关闭后的第二天,可能有一个加载数据的过程。
请注意,tseries::get.hist.quote
的默认设置与对quantmod::getSymbols
的基础函数调用的默认设置略有不同。 tseries使用默认的Sys.Date() - 1
,quantmod使用Sys.Date()。开始日期也不同。 tseries使用“ 1991-01-02”作为开始日期,quantmod使用“ 2007-01-01”。