yfinance 教程:5 分钟用 Python 批量获取金融数据与实时行情

发布时间:2026/9/5 20:48:11
yfinance 教程:5 分钟用 Python 批量获取金融数据与实时行情 yfinance 教程5 分钟用 Python 批量获取金融数据与实时行情【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinanceyfinance 是一个 Python 金融数据工具直接从雅虎财经的公开接口取行情历史 K 线、财报、实时报价返回的都是 pandas DataFrame拿到即可算指标。值得装的道理很简单——它把清洗、复权、缺行这些脏活内置了你只管写分析。一、不装它你多干多少活自己抓行情意味着自己拼 HTTP 请求、解析页面、把分红和拆股算回价格、补上市休市造成的空行——这一套做下来比写分析本身还久。yfinance 把这段路铺平了一个函数调用剩下的是分析而不是爬虫。二、5 分钟跑通第一条数据pip install yfinance # 终端执行import yfinance as yf hist yf.Ticker(TSLA).history(period6mo) print(hist.tail())跑完你会看到一张标准 DataFrame日期做索引Open / High / Low / Close / Volume 做列一行一个交易日价格默认已按分红拆股复权不用自己算。三、三个真实场景场景 1批量拉取 20 只股票的历史数据做选股或组合回测时一个人盯一只股票不现实往往要一次拉几十只代码的日线。data yf.download( [TSLA, NVDA, QQQ], start2023-01-01, auto_adjustTrue, )一次调用带回三只代码多年的日线默认多线程请求。返回的列是 (代码, 字段) 双层索引直接.pct_change()算收益、按代码分组做因子都行要存 CSV 前记得先按 ticker 拆开。场景 2用财报数据做基本面体检判断一只股票贵不贵先看它怎么赚钱。Ticker上三个属性直接给报表t yf.Ticker(NVDA) t.income_stmt # 利润表 t.balance_sheet # 资产负债表 t.cash_flow # 现金流量表三个属性各返回一张 DataFrame行是科目、列是年度。坑这些是年度口径行名跟着上游接口走别把索引名写死在代码里。场景 3盯实时行情免写轮询盯盘靠定时轮询太糙。yfinance 自带 WebSocket一种服务端主动推送的连接协议行情来了直接推给你ws yf.WebSocket([TSLA, NVDA]) ws.subscribe([TSLA, NVDA]) def on_msg(m): print(m[symbol], m[price]) ws.listen(on_msg)listen会一直挂着回调收到的是最新价、涨跌等字段组成的字典。免费流只在交易时段推送盘后没消息它是行情提醒级别的别拿它当券商级低延迟交易接口。四、小实战给 TSLA 做一次技术面体检思路均线判方向RSI 判情绪布林带判波动——三个信号同向再动手。先拉两年日线算 20 日和 50 日均线t yf.Ticker(TSLA) df t.history(period2y, interval1d) ma20, ma50 df[Close].rolling(20).mean(), df[Close].rolling(50).mean()RSI 是相对强弱指标0–100越接近 100 买盘越强先算 14 日涨跌正负分开求滚动均值再合成chg df[Close].diff() rsi 100 - 100 / (1 chg.clip(lower0).rolling(14).mean() / chg.clip(upper0).abs().rolling(14).mean())布林带就是 20 日均线加减两倍标准差两行代码。最后只留三行结论RSI 在 80 上方大概率超买价格跌回 20 日线下方趋势转弱收在上轨附近波动放大——三者一致时结论才值得信。五、踩坑笔记⚠️限频要主动管。雅虎接口没有公开配额批量下载最容易撞墙请求间隔拉开一点、threads调小、失败的代码单独重试而不是死磕。数据源本身有瑕疵。免费数据源偶发分红复权缺失、成交量单位错乱拉完历史数据先抽查几个除权日确认收盘价和成交量没有断层。️用足本地缓存。库会把 cookie 与时区信息存进本地 SQLite连续分析同一批代码时能少发很多登录请求想换缓存目录看 yfinance/cache.py 里的设置函数即可。读一遍条款。雅虎 API 明确仅限个人使用自己研究没问题要做收费工具或对外数据服务请先对照其条款别把转售数据写进产品。六、搭配什么更好用pandas返回物本来就是 DataFrame向量化算收益、分组滚动窗口直接接无缝。回测框架日线 DataFrame 可以直接喂给 backtrader 或 vectorbt 这类回测引擎当数据源用。本地数据库要长期留存时每天把收盘价写进 DuckDB / SQLite比反复请求接口省钱也稳。七、适合谁用适合刚接触数据分析的人拿它取第一批金融数据也适合量化研究做日线、分钟线的量化数据源个人投资辅助判断也够用。它不适合券商级低延迟实时行情和带 SLA 的生产系统——那类场景请买商业数据源。【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考