为什么需要本地化 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 df.empty:
df[] = symbol
df[[, , , , , , ]]

