首页 > 解决方案 > Cran-R BatchGetSymbols:什么是获取限制,如何保持安静,我可以传递日期向量吗?

问题描述

我正在使用 Cran-R 的 BatchGetSymbols 函数从 Yahoo 下载数据。当前的下载限制是什么?Stack Overflow 上有与 Yahoo 相关的文档(不是 BatchGetSymbols),但它们看起来很旧。还有没有办法阻止函数每次运行时输出这么多文本?即让它安静?是否可以传递日期向量?我需要大约 3000 个符号,每个符号都有不同的日期范围。目前,我为每个符号单独调用它,因为日期不同,所以每次调用该函数时,它都会打印消息,这很烦人。如果我可以使用 2 个日期向量(一个用于开始,一个用于结束)和一个符号向量调用该函数,效率会高得多。

标签: ryahoo-api

解决方案


这个怎么样?

library(dplyr)
library("rvest")
url <- "https://www.bseindia.com/markets/equity/EQReports/MarketWatch.aspx"
data <- url %>%
  read_html() %>%
  html_table(fill = TRUE)

df <- data[[9]]

df <- df[, -c(11:21)]

或者,您可以更进一步,并获得回报(除此之外,您还可以做各种其他事情)。

library(timeSeries)
library(fPortfolio)
library(quantmod)
library(caTools)
library(dplyr)
library(PerformanceAnalytics)
library(ggplot2)
library(BatchGetSymbols)
library(tidyr)
library(quantmod)

# set dates
first.date <- Sys.Date() - 360
last.date <- Sys.Date()

# set tickers
tickers <- c('MMM','ABT','ABBV','ABMD',
             'ACN','ATVI','AYI','ADBE','AMD','AAP')

out <- BatchGetSymbols(tickers = tickers, 
                       first.date = first.date,
                       last.date = last.date, 
                       cache.folder = file.path(tempdir(), 
                                                'BGS_Cache') ) 
out<-out$df.tickers
out<-out[,c("ref.date","ticker", "price.adjusted")]
q <- spread(out, ticker, price.adjusted)
portfolioPrices <- xts(q[,-1], order.by=q[,1])


out<-out$df.tickers
out<-out[,c("ref.date","ticker", "price.adjusted")]


# Eliminate Dupes
deduped_data <- unique( out[ , 1:3 ] )


q <- spread(deduped_data, ticker, price.adjusted)
portfolioPrices <- xts(q[,-1], order.by=q[,1])


#Rename Columns
colnames(portfolioPrices) <- tickers

#Calculate Returns: Daily RoC
portfolioReturns <- na.omit(ROC(portfolioPrices, type="discrete"))
portfolioReturns <- as.timeSeries(portfolioReturns)

我相信雅虎 API 大约在 2 年前关闭。


推荐阅读