在R中下载雅虎股票价格--日期设置

问题描述 投票:0回答:1

我从yahoo finance下载股票数据,使用tseries包。下面是我的代码,你能告诉我应该怎么做才能得到所有可用的价格吗?

`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()

`

r yahoo-finance stock
1个回答
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() - 1quantmod使用的是Sys.Date()。tseries使用 "1991-01-02 "作为起始日期,而quantmod使用 "2007-01-01"。

© www.soinside.com 2019 - 2024. All rights reserved.