【问题标题】:Download all available data with getSymbols使用 getSymbols 下载所有可用数据
【发布时间】:2015-09-13 09:09:33
【问题描述】:

我想从雅虎财经下载几只股票的完整历史数据,但我总是只获得 2007 年 1 月 3 日开始的数据。例如:

> library(quantmod)
> e <- new.env() 
> getSymbols( "MSFT", src="yahoo", env=e)
[1] "MSFT"
Warning message:
In download.file(paste(yahoo.URL, "s=", Symbols.name, "&a=", from.m,  :
  downloaded length 137552 != reported length 200
> e$MSFT[1,]
#            MSFT.Open MSFT.High MSFT.Low MSFT.Close MSFT.Volume MSFT.Adjusted
# 2007-01-03     29.91     30.25     29.4      29.86    76935100      24.28526

我搜索了有关“已下载长度!= 报告长度”警告的 stackoverflow 问题,并找到了this question,但那里的解决方案并不能解决问题。

【问题讨论】:

  • 这些是警告,而不是错误。有什么问题?
  • 问题是我没有得到完整的下载文件。我的日期不会比 2007 年更早,但实际上应该如此。 “quantmod”网站中给出的示例显示日期应该更早,我知道 MSFT 的数据应该。
  • from 的默认值为 "2007-01-01"。如果您需要更多数据,请更改 from 的值。
  • 哦!我不知道默认设置在 2007 年。现在,每个公司都有不同的“开始”日期,有没有办法将“开始”设置为尽可能早?还是我应该只做一个 for 循环?
  • 把它弄得有点傻,比如"1900-01-01"

标签: r warnings quantmod


【解决方案1】:

问题是from 的默认值是"2007-01-01" 用于getSymbols.yahoo(以及许多其他getSymbols 函数)。如果您想要所有可用的历史记录,请设置from = "1900-01-01"

R> getSymbols("MSFT", from="1900-01-01")
# [1] "MSFT"
R> MSFT[1,]
#            MSFT.Open MSFT.High MSFT.Low MSFT.Close MSFT.Volume MSFT.Adjusted
# 1986-03-13  25.49952  29.24928 25.49952   27.99936  1031788800      0.068281

【讨论】:

  • 可以用这个功能提取金银价格吗?
  • @user2733617:是的,见?getMetals
  • getMetals( "XAU", from="1980-01-01") [1] "XAUUSD" 警告信息:在 getSymbols.oanda(Symbols = metal, from = from, to = to, auto.assign = auto.assign, : Oanda 将数据限制为 5 年。符号:XAU/USD
  • 为什么我被限制为 5 年?
  • 因为这就是 Oanda(数据提供者)所做的。
猜你喜欢
  • 2011-10-07
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
相关资源
最近更新 更多