Yahoo Finance API获取USDCHF=X历史数据缺失4月2日数据求助
解决yahoo_fin获取USDCHF=X历史数据缺失的问题
先确认数据源本身是否存在数据
绕过yahoo_fin库,直接调用Yahoo Finance的下载接口验证数据。构造请求URL时,把日期转换成Unix时间戳(2024-04-02的时间戳是1712035200,2024-04-03是1712208000),用Python的requests发送请求:import requests url = "https://query1.finance.yahoo.com/v7/finance/download/USDCHF=X" params = { "period1": 1712035200, "period2": 1712208000, "interval": "1d", "events": "history", "includeAdjustedClose": "true" } response = requests.get(url, params=params) print(response.text)如果返回的CSV里没有4月2日的数据,说明是Yahoo Finance的数据源问题,只能等待平台修复或更换其他数据源(比如Alpha Vantage)。
检查yahoo_fin的日期时区处理
yahoo_fin内部可能将本地日期转换为UTC时区,导致日期范围偏移。可以手动传入Unix时间戳替代字符串日期,避免时区转换问题:from yahoo_fin.stock_info import get_historical_data import time # 转换日期为Unix时间戳(本地时间转时间戳) start_ts = time.mktime(time.strptime("2024-04-02", "%Y-%m-%d")) end_ts = time.mktime(time.strptime("2024-04-03", "%Y-%m-%d")) # 获取数据时关闭日期作为索引,方便查看原始日期字段 df = get_historical_data("USDCHF=X", start=start_ts, end=end_ts, index_as_date=False) print(df[["date", "open", "close"]])更新yahoo_fin库到最新版本
旧版本的库可能存在请求逻辑缺陷,执行以下命令更新:pip install --upgrade yahoo-fin验证市场是否开市
虽然2024年4月2日是周二,但部分地区可能有特殊节假日导致外汇市场闭市?可以查全球主要外汇市场(纽约、伦敦、苏黎世)的节假日表,确认当天是否正常交易。
内容的提问来源于stack exchange,提问作者KMittal
相关产品推荐
相关产品推荐

