Yahoo Finance Python代码调用yfinance获取股票数据全返回0行的问题排查求助
Yahoo Finance Python代码调用yfinance获取股票数据全返回0行的问题排查求助
看起来你遇到的问题很典型,我帮你梳理几个最可能导致所有股票都返回0行数据的原因,按优先级从高到低来:
核心问题:你请求的是未来的股票数据
你的代码里设置的日期范围是2025-06-20到2025-08-18,这个时间区间在当前时刻还未到来。Yahoo Finance只提供已发生的历史交易数据,不会提前提供未来的K线数据,所以自然返回0行。这是最直接的原因,你可以先把日期改成过去的时间段测试,比如把start_date改成2024-06-20,end_date改成2024-08-18,应该就能拿到数据了。时区转换可能存在的潜在问题
代码里你把带UTC时区的时间戳转成了无时区的:start_ts.tz_convert(None),虽然yfinance通常能处理,但建议直接传递带时区的时间对象,或者用字符串格式的日期(比如"2024-06-20"),这样可以避免时区转换带来的意外问题。比如可以把start_date和end_date直接写成字符串,不用转成毫秒时间戳,简化代码同时减少出错概率。yfinance的间隔时间限制
即便你改成过去的日期,也要注意Yahoo Finance对不同间隔数据的保留时长限制:- 比如
30m间隔的K线数据,Yahoo Finance一般只保留最近1-2个月的历史数据,如果你的日期范围超过这个时长,也可能返回空数据。如果需要更久的历史数据,你得换成更大的间隔,比如1d。你可以先测试1d间隔的过去数据,确认能拿到结果后再切换回30m。
- 比如
yfinance版本兼容性问题
不同版本的yfinance API参数可能有变化,比如auto_adjust、group_by这些参数在新版本里是否还适用?建议你先升级到最新版本的yfinance:pip install --upgrade yfinance然后再测试代码,避免因为版本旧导致的接口调用失败。
内容来源于stack exchange




