做量化交易、财经数据分析、投资复盘的开发者和投资者,经常会遇到核心痛点:付费金融数据接口成本高、免费 API 注册流程繁琐、多市场数据分散难以整合。告别 QMT 回测烦恼!手把手教你搭建 MiniQMT+Backtrader 量化回测框架
本文就给大家详细讲解 Python 量化圈的开源神器AKshare,从安装到核心功能实战全覆盖,代码可直接复制运行,零基础也能一键获取全市场金融行情数据。
一、AKshare 是什么?
AKshare 是一款基于 Python 开发的开源金融数据接口库,专为个人投资者、量化爱好者、财经数据分析人员打造,是目前国内生态最完善、维护最活跃的免费金融数据工具之一。
它支持股票、期货、基金、外汇、债券、指数、加密货币等多种主流金融市场的数据获取,核心优势如下:
- 免费开源:完全开源免费,无隐藏收费,个人非商用零成本使用,无需开通付费会员
- 数据覆盖全面:A 股、美股、港股、期货、基金、外汇、宏观经济、行业数据等全覆盖
- 简单易用:无需复杂的 API 注册、无需申请接口密钥,安装后导入即可调用,一行代码完成数据获取
- 持续更新迭代:开发团队维护活跃,数据源持续优化拓展,适配国内主流财经平台的接口更新
二、AKshare 环境安装与配置
2.1 环境要求
- Python 版本:3.8 及以上版本
- 依赖库:自动安装 pandas 等核心依赖库,无需手动配置
2.2 一键安装命令
为解决国内用户 pip 安装网络超时、下载速度慢的问题,推荐使用清华镜像源安装,复制以下命令到终端 / CMD/PyCharm 终端即可一键安装:
pip install akshare -i https://pypi.tuna.tsinghua.edu.cn/simple
2.3 安装验证
安装完成后,在 Python 环境中执行以下代码,无报错且输出版本号,即代表安装成功:
import akshare as ak
# 打印AKshare版本号
print("AKshare安装成功,当前版本:", ak.__version__)
三、AKshare 核心功能实战(4 大高频使用场景)
以下为日常投资分析、量化研究中最高频的 4 个使用场景,所有代码均修复了笔误,可直接复制运行。
3.1 A 股全市场实时行情数据获取
3.1.1 功能说明
通过 stock_zh_a_spot() 接口,可一次性获取 A 股全市场所有标的的实时行情数据,无需循环调用,返回结构化的 DataFrame 数据集,适配每日复盘、标的批量筛选等场景。
3.1.2 完整代码示例
# 导入AKshare库
import akshare as ak
# 获取A股全市场实时行情数据
stock_zh_a_spot_df = ak.stock_zh_a_spot()
# 打印输出数据
print(stock_zh_a_spot_df)
3.1.3 结果说明
接口返回数据包含股票代码、股票名称、最新价、涨跌额、涨跌幅、买入价、卖出价、昨收价、今开价、最高 / 最低价、成交量、成交额等全维度实时行情指标。
3.2 单只股票历史 K 线数据获取
3.2.1 功能说明
通过 stock_zh_a_hist() 接口,可获取指定股票的历史 K 线数据,支持多周期、多复权方式,是量化策略回测、技术分析的核心基础功能。
3.2.2 完整代码示例
# 导入AKshare库
import akshare as ak
# 获取单只股票历史K线数据
stock_zh_a_hist_df = ak.stock_zh_a_hist(
symbol="000001", # 目标股票代码,示例为平安银行
period="daily", # 数据周期,支持daily(日线)/weekly(周线)/monthly(月线)
start_date="20230101", # 数据起始日期,固定8位年月日格式
end_date="20240301", # 数据结束日期,固定8位年月日格式
adjust="qfq" # 复权方式:qfq=前复权、hfq=后复权,不填默认不复权
)
# 打印输出数据
print(stock_zh_a_hist_df)
3.2.3 核心参数详解
| 参数名 | 作用 | 可选值 |
|---|---|---|
| symbol | 目标股票代码 | A 股 6 位数字股票代码 |
| period | 数据周期 | daily/weekly/monthly |
| start_date | 数据起始时间 | 8 位数字,格式:YYYYMMDD |
| end_date | 数据结束时间 | 8 位数字,格式:YYYYMMDD |
| adjust | 复权方式 | qfq (前复权)、hfq (后复权) |
3.2.4 结果说明
接口返回数据包含交易日期、股票代码、开盘价、收盘价、最高价、最低价、成交量、成交额、振幅、涨跌幅、涨跌额、换手率等核心 K 线指标,可直接用于量化回测、技术指标计算、数据可视化。
3.3 全市场开放式基金最新净值数据获取
3.3.1 功能说明
通过 fund_open_fund_daily_em() 接口,可一键获取当前交易日全市场所有开放式基金的最新净值数据,数据源对接天天基金网,实时同步官方数据。
3.3.2 完整代码示例
# 导入AKshare库
import akshare as ak
# 获取全市场开放式基金当日净值数据
fund_open_fund_daily_df = ak.fund_open_fund_daily_em()
# 打印输出数据
print(fund_open_fund_daily_df)
3.3.3 结果说明
接口返回数据包含基金代码、基金简称、单位净值、累计净值、日涨跌幅、净值更新日期等核心信息,适配基金筛选、持仓净值跟踪、全市场基金业绩对比等场景。
3.4 单只基金净值历史走势数据获取
3.4.1 功能说明
通过 fund_open_fund_info_em() 接口,可获取指定基金的历史净值走势数据,支持单位净值、累计净值、累计收益率多维度查询,适配基金业绩深度分析、风险指标计算等场景。
3.4.2 完整代码示例
# 导入AKshare库
import akshare as ak
# 获取指定基金的净值历史走势数据
fund_open_fund_info_df = ak.fund_open_fund_info_em(
symbol="015566", # 目标基金代码,示例为万家精选混合C
indicator="单位净值走势" # 数据类型,可选单位净值走势/累计净值走势/累计收益率走势
)
# 打印输出数据
print(fund_open_fund_info_df)
3.4.3 核心参数详解
symbol:目标基金 6 位数字代码indicator:数据查询类型,可选值:单位净值走势、累计净值走势、累计收益率走势- 补充说明:当
indicator设置为累计收益率走势时,可新增period参数指定时间周期,可选值:"1月", "3月", "6月", "1年", "3年", "5年", "今年来", "成立来"
四、新手常见问题 FAQ
Q1:安装 AKshare 失败,提示网络超时 / 找不到对应库怎么办?
A:优先使用本文提供的清华镜像源安装命令;若仍失败,先执行 python -m pip install --upgrade pip 升级 pip 工具,再重新执行安装命令;同时检查 Python 版本是否为 3.8 及以上。
Q2:接口返回的行情数据有延迟吗?可以用于实盘交易吗?
A:AKshare 的数据源均来自公开财经平台,免费行情源存在一定的延迟(通常几秒到几十秒不等),仅适合学习研究、复盘分析、策略回测使用,不建议直接用于高频实盘交易。
Q3:接口有调用频率限制吗?
A:官方无强制的调用频次限制,但建议控制请求频率,避免短时间内高频并发请求给数据源服务器造成压力,否则可能被临时限制 IP 访问。
Q4:除了股票和基金,AKshare 还支持哪些数据获取?
A:AKshare 提供数百个数据接口,除本文讲解的基础功能外,还支持期货、期权、债券、外汇、美股、港股、宏观经济数据、行业数据、上市公司财务报表、龙虎榜、融资融券等多维度数据,可参考 AKshare 官方文档查看完整接口列表。
五、总结
AKshare 作为开源免费的金融数据工具,完美解决了个人投资者、量化新手的金融数据获取痛点,零成本即可覆盖日常投资复盘、数据分析、策略回测的绝大多数需求。
本文为 AKshare 的入门保姆级教程,后续会持续更新 AKshare 的高阶用法、量化策略实战、Python 财经数据分析等相关内容,欢迎大家点赞 + 收藏 + 关注,避免后续找不到。
免责声明:本文仅为技术工具分享,所有代码均为学习示例,不构成任何投资建议。金融市场有风险,投资需谨慎。