新手求助:解决R语言quantmod包getQuote的HTTP 401错误
解决Yahoo Finance HTTP 401错误的替代方案
Yahoo Finance调整了API访问规则,旧版quantmod的getQuote已经无法正常调用,导致你遇到的401未授权错误。下面是可以直接整合进现有代码的替代方案,用适配新版API的yahoofinancer包实现:
# 保留你原有的CRAN镜像设置 local({r <- getOption("repos") r["CRAN"] <- "https://cran.microsoft.com/snapshot/2022-05-05/" options(repos=r) }) # 首次运行需要执行安装(后续可注释) # install.packages("yahoofinancer") # 加载所需包 library(yahoofinancer) library(jsonlite) ticker <- "COKE" # 获取股票实时报价与基本面数据 stock <- Ticker$new(ticker) quote_data <- stock$get_quote() fundamental_data <- stock$get_summary() # 整理匹配原需求的指标 quot <- data.frame( "Trade Time" = quote_data$regular_market_time, "Last Trade (Price Only)" = quote_data$regular_market_price, "Change in Percent" = quote_data$regular_market_change_percent, "Days High" = quote_data$regular_market_day_high, "Days Low" = quote_data$regular_market_day_low, "Dividend/Share" = fundamental_data$trailing_annual_dividend_rate, "Dividend Yield" = fundamental_data$trailing_annual_dividend_yield * 100, # 转为百分比格式 "Ex-Dividend Date" = fundamental_data$ex_dividend_date, "Dividend Pay Date" = fundamental_data$dividend_date, "Earnings/Share" = fundamental_data$trailing_eps, "EPS Forward" = fundamental_data$forward_eps, "P/E Ratio (RT)" = quote_data$regular_market_pe, "Previous Close" = quote_data$regular_market_previous_close, "Open" = quote_data$regular_market_open, "50-day Moving Average" = fundamental_data$fifty_day_average, "200-day Moving Average" = fundamental_data$two_hundred_day_average ) # 输出结果(可对接VBA调用) print(quot)
关键说明:
- 首次运行需取消注释安装包代码,后续使用可跳过安装步骤
yahoofinancer通过Yahoo官方支持的接口获取数据,不会触发401错误- 整理后的
quot数据框格式与原代码输出结构一致,可直接对接Bert的VBA调用 - 部分指标做了格式适配(比如股息收益率转为百分比),确保和原需求匹配
内容的提问来源于stack exchange,提问作者Marvin
相关产品推荐
相关产品推荐

