yfinance使用60d周期获取15分钟股票数据报错求助
解决yfinance无法获取60天15分钟级别股票数据的问题
问题背景
此前数月使用yfinance的download或Ticker.history函数,通过period="60d"和interval="15m"参数可正常获取股票数据,但近期调用时出现报错,提示Period '60d' is invalid,仅允许使用官方指定的固定周期值。
报错原因
yfinance的API规则近期更新:针对15分钟及更短的时间间隔数据,period参数不再支持自定义天数(如60d),仅允许使用官方列出的枚举值:['1d', '5d', '1mo', '3mo', '6mo', '1y', '2y', '5y', '10y', 'ytd', 'max']。但可通过start和end参数手动指定时间范围绕过该限制。
解决方案
放弃period参数,改用start和end参数精准定义60天的时间窗口:
- 计算当前日期往前推60天的起始日期
- 将起始日期与当前日期传入
history函数
修改后的代码
import yfinance as yf import pandas as pd import datetime def download_data(ticker): interval = "15m" # 计算60天时间窗口的起止日期 end_date = datetime.datetime.now() start_date = end_date - datetime.timedelta(days=60) # 用start/end替代period参数 data = yf.Ticker(ticker).history(interval=interval, start=start_date, end=end_date) data = calculate_technical_indicators(data) data = tomorrow(data, -5) data.dropna(inplace=True) return data
注意事项
- 确保yfinance为最新版本,可执行
pip install --upgrade yfinance更新 - Yahoo Finance对15分钟级别数据的历史可获取时长上限约为60天,该方法刚好适配此限制
内容的提问来源于stack exchange,提问作者Jeshuwa Bradley
相关产品推荐
相关产品推荐

