如何在R语言中获取印度BSE SENSEX股指数据?
获取BSE SENSEX指数数据的可行方法
你尝试用quantmod包的getSymbols函数获取SENSEX数据时,以下调用均未成功:
quantmod::getSymbols("SENSEX", src="yahoo") quantmod::getSymbols("SENSEX.BO", src="yahoo") quantmod::getSymbols("BSE SENSEX", src="yahoo") quantmod::getSymbols("BSE SENSEX.BO", src="yahoo")
这是因为雅虎财经的数据源对部分印度指数的支持已发生变化,早期的代码不再适用。以下是两种可行的替代方案:
方案一:使用tidyquant包获取
tidyquant包兼容雅虎财经的最新接口,可通过正确的指数代码^BSESN获取数据:
# 安装并加载包 install.packages("tidyquant") library(tidyquant) # 指定时间范围获取数据 sensex_data <- tq_get("^BSESN", get = "stock.prices", from = "2020-01-01", to = Sys.Date()) # 查看前几行数据 head(sensex_data)
方案二:调用BSE官方API
如果需要更权威的实时或历史数据,可直接调用BSE的公开API,配合httr和jsonlite包处理:
# 安装依赖包 install.packages(c("httr", "jsonlite")) library(httr) library(jsonlite) # 获取最近30天的SENSEX趋势数据(indexcode=16对应SENSEX) response <- GET("https://api.bseindia.com/BseIndiaAPI/api/IndexTrend/w?indexcode=16&period=30") data <- fromJSON(content(response, "text")) # 将返回的JSON数据转为数据框 sensex_df <- as.data.frame(data$Data)
SENSEX指数说明

内容的提问来源于stack exchange,提问作者ViSa
相关产品推荐
相关产品推荐

