技术问询:yahooquery是否提供类似yfinance的移动平均线数据?
YahooQuery 获取简单移动平均线(SMA)的实现方案
YahooQuery本身并未提供直接获取SMA的内置接口,但可以通过以下两种高效方式实现需求:
1. 历史数据+Pandas计算(推荐批量场景)
YahooQuery拉取历史数据的速度优势明显,结合Pandas的滚动窗口计算可以快速得到SMA,批量处理多只股票也很高效:
from yahooquery import Ticker import pandas as pd # 批量指定股票代码 tickers = Ticker(["AAPL", "MSFT", "GOOGL"]) # 拉取1年日线数据(可按需调整period和interval参数) hist_data = tickers.history(period="1y", interval="1d") # 重置索引,便于按股票分组计算 df = hist_data.reset_index() # 计算20日、50日SMA df["SMA_20"] = df.groupby("symbol")["close"].rolling(20).mean().droplevel(0) df["SMA_50"] = df.groupby("symbol")["close"].rolling(50).mean().droplevel(0) # 输出结果示例 print(df[["symbol", "date", "close", "SMA_20", "SMA_50"]].tail(10))
2. 调用Chart API(进阶,不推荐批量)
Yahoo Finance前端通过Chart接口返回包含SMA的技术指标数据,YahooQuery可以间接调用该接口,但返回数据结构复杂,且批量处理时不如第一种方案直观,适合单只股票的特定场景。
补充提示
- 若需要更多技术指标(如EMA、RSI),可以结合TA-Lib库,基于YahooQuery拉取的原始数据进行计算,同样高效。
- 这种计算方式的性能远优于yfinance,完全可以匹配你批量拉取数据的需求。
内容的提问来源于stack exchange,提问作者JRece
相关产品推荐
相关产品推荐

