gpt4 book ai didi

r - 尝试复制答案时出现 Quantmod、getSymbols 错误

转载 作者:行者123 更新时间:2023-12-04 11:56:25 26 4
gpt4 key购买 nike

我刚刚下载了包Quantmod并且一直在玩getSymbols .我希望能够像这个问题一样获取多只股票的数据:getSymbols and using lapply, Cl, and merge to extract close prices .

不幸的是,当我尝试复制答案时:

tickers <- c("SPY","DIA","IWM","SMH","OIH","XLY",
"XLP","XLE","XLI","XLB","XLK","XLU")
getSymbols(tickers, from="2001-03-01", to="2011-03-11")

我收到以下错误消息:
Error in download.file(paste(yahoo.URL, "s=", Symbols.name, "&a=", from.m,  :
cannot open URL
'http://chart.yahoo.com/table.csv?s=SPY&a=2&b=01&c=2001&d=2&e=11&f=2011&g=d&q=q&y=0&z=SPY&x=.csv'
In addition: Warning message:
In download.file(paste(yahoo.URL, "s=", Symbols.name, "&a=", from.m,
: cannot open: HTTP status was '0 (null)'

这是我的 sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] quantmod_0.4-0 TTR_0.22-0 xts_0.9-7 zoo_1.7-10 Defaults_1.1-1

loaded via a namespace (and not attached):
[1] grid_3.0.2 lattice_0.20-23 tools_3.0.2

最佳答案

编辑:回应 OP 的评论:

因此,至少可以说,底线似乎是提供免费下载历史数据的网站很古怪。它们不一定适用于所有有效符号,有时它们会无缘无故变得不可用。 ichart.yahoo.com/table.csv 24 小时前为我工作,但目前(对我而言)不起作用。这可能是因为雅虎对我的 IP 进行了 24 小时锁定,如果他们检测到可解释为 DDOS 攻击的事件,他们就会这样做。或者可能是其他原因......

下面更新的代码用于查询 Google,对于除 DJIA 之外的所有内容都有效(再次,目前)。请注意,如果您指定交易所和交易品种 ( EXCHANGE:SYMBOL ),则成功率更高。没有交换,我无法下载 SMH。最后,如果您遇到问题,请尝试取消对打印语句的注释并将 URL 粘贴到浏览器中以查看会发生什么。

tickers <- c("SPY","DJIA","IWM","NYSEARCA:SMH","OIH","XLY",
"XLP","XLE","XLI","XLB","XLK","XLU")

g <- function(x,from,to,output="csv") {
uri <- "http://www.google.com/finance/historical"
q.symbol <- paste("q",x,sep="=")
q.from <- paste("startdate",from,sep="=")
q.to <- paste("enddate",to,sep="=")
q.output <- paste("output",output,sep="=")
query <- paste(q.symbol,q.output,q.from,q.to,sep="&")
url <- paste(uri,query,sep="?")
# print(url)
try(assign(x,read.csv(url),envir=.GlobalEnv))
}
lapply(tickers,g,from="2001-03-01",to="2011-03-11",output="csv")

你可以从圣路易斯联邦储备银行下载大疆,非常可靠。不幸的是,你得到了所有这些(从 1896 年开始),而且它是一个时间序列。
getSymbols("DJIA",src="FRED")

原回复:

这对我有用,除了 SMH 和 OIH。
tickers <- c("SPY","DJIA","IWM","SMH","OIH","XLY",
"XLP","XLE","XLI","XLB","XLK","XLU")

f <- function(x) {
uri <- "http://ichart.yahoo.com/table.csv"
symbol <- paste("s",x,sep="=")
from <- "a=2&b=1&c=2001"
to <- "d=2&e=11&f=2011"
period <- "g=d"
ignore <- "ignore=.csv"
query <- paste(symbol,from,to,period,ignore,sep="&")
url <- paste(uri,query,sep="?")
try(assign(x,read.csv(url),envir=.GlobalEnv))
}
lapply(tickers,f)

这与 getSymbols(...)的主要区别是这样使用 ichart.yahoo.com (如文档所述 here ),而 getSymbols(...)用途 chart.yahoo.com .前者似乎更可靠。根据我的经验,使用 getSymbols(...)与雅虎合作是一个巨大的头痛。

如果@user2492310 的建议,使用 src="google"对你有用,那么显然这是要走的路。它对我不起作用。

另一个注意事项:SMH 和 OIH 在 2001 年不存在。其他都至少可以追溯到 2000 年。因此,如果您提供日期范围,则 ichart.yahoo.com(和 chart.yahoo.com)可能会抛出错误符号的操作范围之外。

关于r - 尝试复制答案时出现 Quantmod、getSymbols 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20850143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com