【Python量化实战 #02】Python获取股票历史K线做回测:mairui stock_history实战
量化回测的第一步,往往不是策略,而是稳定、可复现的历史 K 线。本文是「Python量化实战」第 2 篇(#02),聚焦 stock_history:用 Python 拉取 A 股历史行情,并为回测灌数做好准备。
如果你还没安装 SDK,请先阅读「Python量化实战」#01,或直接访问 SDK 说明与下载页。
接口在做什么?
stock_history(code, period, dividend, st=..., et=..., lt=...) 对应官网「历史行情」类接口,可按周期取开高低收量额等字段。周期常见取值:
d日线 ·w周线 ·m月线- 分钟线依文档支持的级别(如
5/15/30/60等,以 API 文档 为准)
dividend(除权)常用 n(不复权)等,具体枚举请对照文档,回测前务必统一口径。
最小可运行示例
from mairui import Client
with Client(licence="你的证书UUID") as api:
bars = api.stock_history(
"000001.SZ",
"d",
"n",
st="20240101",
et="20241231",
)
print(len(bars), bars[0] if bars else None)
只要最新 200 根日线时,用 lt 更省流量:
bars = api.stock_history("600519.SH", "d", "n", lt=200)
灌进 pandas,方便回测
import pandas as pd
from mairui import Client
with Client(licence="你的证书UUID") as api:
raw = api.stock_history("000001.SZ", "d", "n", st="20230101", et="20251231")
df = pd.DataFrame(raw)
# 字段名以接口实际返回为准,常见含 t/o/h/l/c/v 等
print(df.head())
print(df.tail())
建议在本地落盘(parquet/csv)并记录 st/et/period/dividend,保证实验结果可复现。
多标的批量拉取
SDK 提供 api.map,适合回测前批量灌数:
codes = ["000001.SZ", "600519.SH", "000002.SZ", "300750.SZ"]
with Client(licence="你的证书UUID") as api:
batch = api.map(
api.stock_history,
codes,
period="d",
dividend="n",
st="20240101",
et="20241231",
max_workers=8,
)
for code, bars in zip(codes, batch):
print(code, len(bars) if bars is not None else None)
实战注意点
- 证书日限:免费证有每日调用上限,灌全市场请评估额度或升级证书。
- 代码格式:多数历史接口使用
000001.SZ/600000.SH形式,与实时短码可能不同。 - 停牌与空段:回测对齐时注意交易日历,不要把日历日当交易日硬连。
- 先试调再写库:可用 API Playground 确认字段后再批量下载。
和「最新行情切片」的区别
若你只要「最近一段」而不是任意历史区间,也可关注 stock_latest;完整长历史优先 stock_history。字段差异以文档为准。
下一篇预告
第 3 篇(#03)讲实时行情:stock_real_time、stock_ssjy、多代码批量,以及如何做简易监控脚本。
关键词:Python 获取股票历史数据、K线 API、量化回测数据、stock_history、A股日线接口、麦蕊 mairui。
麦蕊智数 MyData 团队 · Python量化实战 #02



