[R] get.hist.quote problem yahoo
Kurt Hornik
Kurt.Hornik at wu-wien.ac.at
Tue Feb 13 23:19:04 CET 2007
>>>>> Rene Braeckman writes:
> I had the same problem some time ago. Below is a function that I
> picked up on the web somewhere (can't remember where; may have been a
> newsletter). It's based on the tseries function but the difference is
> that this function produces a data frame with a column containing the
> dates of the quotes, instead of a time series object. I had to replace
> "%d-%b-%y" by "%Y-%m-%d" to make it work, probably as you stated
> because the format was changed by Yahoo.
This issue should be taken care of now by a new release of tseries I put
out two days ago.
-k
> Hope this helps.
> Rene
> # ----------------------------------------------------------------------
> # "df.get.hist.quote()" function
> #
> # Based on code by A. Trapletti (package tseries)
> #
> # The main difference is that this function produces a data frame with
> # a column containing the dates of the quotes, instead of a time series
> # object.
> df.get.hist.quote <- function (instrument = "ibm",
> start, end,
> quote = c("Open","High", "Low",
> "Close","Volume"),
> provider = "yahoo", method = "auto")
> {
> if (missing(start))
> start <- "1970-01-02"
> if (missing(end))
> end <- format(Sys.time() - 86400, "%Y-%m-%d")
> provider <- match.arg(provider)
> start <- as.POSIXct(start, tz = "GMT")
> end <- as.POSIXct(end, tz = "GMT")
> if (provider == "yahoo") {
> url <- paste("http://chart.yahoo.com/table.csv?s=", instrument,
> format(start, "&a=%m&b=%d&c=%Y"), format(end,
> "&d=%m&e=%d&f=%Y"),
> "&g=d&q=q&y=0&z=", instrument, "&x=.csv", sep = "")
> destfile <- tempfile()
> status <- download.file(url, destfile, method = method)
> if (status != 0) {
> unlink(destfile)
> stop(paste("download error, status", status))
> }
> status <- scan(destfile, "", n = 1, sep = "\n", quiet = TRUE)
> if (substring(status, 1, 2) == "No") {
> unlink(destfile)
> stop(paste("No data available for", instrument))
> }
> x <- read.table(destfile, header = TRUE, sep = ",")
> unlink(destfile)
> nser <- pmatch(quote, names(x))
> if (any(is.na(nser)))
> stop("This quote is not available")
> n <- nrow(x)
> lct <- Sys.getlocale("LC_TIME")
> Sys.setlocale("LC_TIME", "C")
> on.exit(Sys.setlocale("LC_TIME", lct))
> dat <- gsub(" ", "0", as.character(x[, 1]))
> dat <- as.POSIXct(strptime(dat, "%Y-%m-%d"), tz = "GMT")
> if (dat[n] != start)
> cat(format(dat[n], "time series starts %Y-%m-%d\n"))
> if (dat[1] != end)
> cat(format(dat[1], "time series ends %Y-%m-%d\n"))
> return(data.frame(cbind(Date=I(format(dat[n:1],"%Y-%m-%d")),x[n:1,nser]),row
> .names=1:n))
> }
> else stop("Provider not implemented")
> }
> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Daniele Amberti
> Sent: Friday, February 09, 2007 5:22 AM
> To: r-help
> Subject: [R] get.hist.quote problem yahoo
> I have functions using get.hist.quote() from library tseries.
> It seems that something changed (yahoo) and function get broken.
> try with a simple
> get.hist.quote('IBM')
> and let me kow if for someone it is still working.
> I get this error:
> Error in if (!quiet && dat[n] != start) cat(format(dat[n], "time series
> starts %Y-%m-%d\n")) :
> missing value where TRUE/FALSE needed
> Looking at the code it seems that before the format of dates in yahoo's cv
> file was not iso.
> Now it is iso standard year-month-day
> Anyone get the same problem?
> ------------------------------------------------------
> Passa a Infostrada. ADSL e Telefono senza limiti e senza canone Telecom
> http://click.libero.it/infostrada9feb07
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list