跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于 AKShare 的 Python 批量下载 A 股历史行情数据实践

利用 AKShare 库与 Python 脚本批量获取全量 A 股历史行情数据,涵盖股票列表获取、日线数据下载、断点续传及合并输出。方案支持前复权处理,兼容量化分析框架,提供代码示例与性能优化建议,适用于量化交易初学者及金融数据分析场景。

猫巷少女发布于 2026/3/15更新于 2026/6/2034 浏览

为什么需要本地化 A 股历史数据?

在量化投资、策略回测、因子挖掘等场景中,高质量、完整、本地存储的历史行情数据是不可或缺的基础。然而:

  • 商业数据接口(如 Wind、Tushare Pro)往往收费或有调用限制;
  • 免费接口(如早期 Tushare)可能不稳定或字段不全;
  • 网页爬虫易被反爬,维护成本高。

幸运的是,开源项目 AKShare 提供了免费、稳定、覆盖全面的中国金融市场数据接口,包括:

  • A 股日线、分钟线
  • 指数、基金、期货、期权
  • 宏观经济、新闻舆情等

本文将带你用不到 70 行代码,实现: ✅ 自动获取全部 A 股列表 ✅ 批量下载 2018 年至今的日线数据(前复权) ✅ 支持断点续传,避免重复下载 ✅ 合并为统一 CSV 文件,便于后续分析


技术栈与依赖

库作用
akshare核心数据源,提供 A 股行情接口
pandas数据处理与合并
tqdm进度条,提升体验
os, time文件操作与请求节流
安装命令
pip install akshare pandas tqdm

建议使用国内镜像加速安装。


核心代码解析

1. 获取 A 股股票列表
def get_stock_list():
    df = ak.stock_info_a_code_name()
    df.columns = ["symbol", "name"]
    df.to_csv("all_a_stocks.csv", index=False)
    return df
  • ak.stock_info_a_code_name() 返回所有 A 股代码与名称(不含交易所后缀,如 600519)
  • 保存为 CSV,便于后续审计或手动筛选
2. 下载单只股票日线数据
def download_stock(symbol):
    df = ak.stock_zh_a_hist(
        symbol=symbol, period="daily", start_date="20180101", end_date="20251231", adjust="qfq"
    )
    if not df.empty:
        df["symbol"] = symbol
        return df[["日期", "symbol", "开盘", "最高", "最低", "收盘", "成交量"]]
    return None
  • 前复权(qfq) 是量化回测的标准选择,确保价格连续性
  • 字段精简,仅保留 OHLCV(开盘、最高、最低、收盘、成交量)
3. 批量下载 + 断点续传
def download_all(stock_df):
    all_data = []
    for _, row in tqdm(stock_df.iterrows(), total=len(stock_df)):
        symbol = row["symbol"]
        file_path = f"stock_history_ak/{symbol}.csv"
        # 断点续传:若已存在则跳过
        if os.path.exists(file_path):
            all_data.append(pd.read_csv(file_path))
            continue
        df_hist = download_stock(symbol)
        if df_hist is not None:
            df_hist.to_csv(file_path, index=False)
            all_data.append(df_hist)
        time.sleep(0.3)  # 礼貌请求,避免触发限流
  • 断点续传:程序中断后可继续运行,不重复下载已完成的股票
  • 进度条:tqdm 实时显示下载进度(共约 5000+ 只股票)
  • 请求节流:time.sleep(0.3) 避免高频请求被临时封禁
4. 合并与标准化输出
final = pd.concat(all_data, ignore_index=True)
final.rename(columns={"日期": "Date", "开盘": "Open", "最高": "High", "最低": "Low", "收盘": "Close", "成交量": "Volume"}, inplace=True)
final.to_csv("all_stock_history_ak.csv", index=False)
  • 输出为标准英文列名,兼容主流量化框架(如 backtrader, zipline)
  • 单文件包含所有股票、所有日期,便于 Pandas 分组分析

数据规模预估

指标数值
A 股数量~5200 只(含主板、创业板、科创板、北交所)
时间跨度2018–2025(约 7 年 × 250 交易日 ≈ 1750 行/股)
总行数≈ 5200 × 1750 ≈ 900 万行
文件大小CSV 约 800MB–1.2GB(取决于压缩与字段)

建议使用 SSD 存储,并确保内存 ≥ 8GB(pd.concat 会加载全量数据)。


注意事项与优化建议

1. AKShare 的稳定性
  • AKShare 依赖网页解析,接口可能随网站改版失效
  • 建议定期关注 AKShare 官方文档 更新
  • 如遇大规模失败,可尝试升级:pip install --upgrade akshare
2. 性能优化(进阶)
  • 多线程下载:使用 concurrent.futures.ThreadPoolExecutor 加速(注意 AKShare 非线程安全,需加锁)
  • 数据库存储:将 CSV 替换为 SQLite / MySQL,支持按股票/日期快速查询
  • 增量更新:仅下载最新 N 天数据,而非全量重拉
3. 合规提醒
  • AKShare 数据来源于公开网站,仅限个人学习研究使用
  • 商业用途请确认数据来源合法性,避免侵权风险

扩展应用场景

  1. 因子计算:基于 OHLCV 计算 MACD、RSI、布林带等技术指标
  2. 行业分析:按申万行业分类聚合,观察板块轮动
  3. 异常检测:识别涨停、跌停、巨量成交等事件
  4. 机器学习:构建时间序列预测模型(如 LSTM 预测股价)

总结

通过 akshare + pandas + tqdm,我们实现了:

  • 零成本获取全量 A 股历史行情
  • 自动化、可复现、可中断恢复 的下载流程
  • 标准化输出,无缝对接量化分析 pipeline

这不仅是数据采集脚本,更是量化研究基础设施的第一块基石。无论你是想回测一个简单均线策略,还是构建复杂的多因子模型,拥有一份干净、完整的本地数据集,都是成功的第一步。

目录

  1. 为什么需要本地化 A 股历史数据?
  2. 技术栈与依赖
  3. 安装命令
  4. 核心代码解析
  5. 1. 获取 A 股股票列表
  6. 2. 下载单只股票日线数据
  7. 3. 批量下载 + 断点续传
  8. 4. 合并与标准化输出
  9. 数据规模预估
  10. 注意事项与优化建议
  11. 1. AKShare 的稳定性
  12. 2. 性能优化(进阶)
  13. 3. 合规提醒
  14. 扩展应用场景
  15. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 大模型技术学习路线:理论、实践与应用指南
  • Qwen3-VL-WEBUI 视频理解能力实测:256K 上下文部署实战
  • Linux 文件系统核心:磁盘 CHS/LBA 寻址与 inode 基础
  • Microi 吾码低代码平台技术架构与集成实践
  • AI 编程工具深度对比:Cursor、Copilot、Trae 与 Claude Code
  • Spring Security 入门:概念、认证与授权配置
  • 普通程序员大模型(LLM)学习指南:构建全面知识体系路径
  • 前端响应式设计演进:从 vw/vh 到 clamp() 的实战思考
  • llama.cpp 加载多模态 GGUF 模型
  • Linux 匿名管道通信原理与代码实现
  • 基于 Dify 工作流的自动化内容生成与分发引擎架构
  • 大模型应用开发入门:GPT-4、LangChain 与微调技术详解
  • Go 语言字符串切片相等性判断指南
  • 基于 Rokid CXR-M SDK 从零开发 AR 演讲提词器
  • Git Worktree 命令介绍与使用
  • AIGC 背后的深度学习魔法:从原理到实践
  • 飞书 OpenClaw 机器人 HTTP 401 认证失败排查与解决方案
  • 4x Tesla P40 训练 Llama-3.3-70B 大模型技术方案
  • 基于大模型和 RAG 的智能 Text2SQL 问答系统:SQLBot
  • DOCX-MCP 开源项目:实现 AI 自动化操作 Word 文档

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online