【Python量化实战 #02】Python拉取股票历史K线做回测:stock_history与pandas数据处理 系列Python 行情数据接入笔记持续更新本文#02 历史 K 线与回测灌数前置先完成 #01 的安装与鉴权回测要复现数据口径就得稳定。本篇围绕stock_history按区间或按条数拉历史行情转成pandas.DataFrame再用线程池批量拉多只股票。方法说明与字段含义以源码仓库为准https://github.com/MaiRuiApi/mairuipipinstallmairui pandas方法形态stock_history(code, period, dividend, st..., et..., lt...)period如d日线分钟/周/月等以文档支持的级别为准dividend除权相关参数全样本请统一口径st/et时间区间lt只要尾部最新 N 根历史接口代码格式多为000001.SZ、600519.SH。最小示例importosfrommairuiimportClientwithClient(licenceos.environ[MAIRUI_LICENCE])asapi:barsapi.stock_history(000001.SZ,d,n,st20240101,et20241231,)print(len(bars)ifbarsisnotNoneelseNone)ifbars:print(bars[0])只要最近 200 根日线importosfrommairuiimportClientwithClient(licenceos.environ[MAIRUI_LICENCE])asapi:barsapi.stock_history(600519.SH,d,n,lt200)print(len(bars))转成 DataFrame列名以实际返回为准不要假设固定为open/high/low/closeimportosimportpandasaspdfrommairuiimportClientwithClient(licenceos.environ[MAIRUI_LICENCE])asapi:rawapi.stock_history(000001.SZ,d,n,st20230101,et20251231,)dfpd.DataFrame(raw)print(df.columns.tolist())print(df.head())print(df.tail())落盘时建议在文件名里带上period、dividend、st、et方便以后复现实验。df.to_parquet(000001.SZ_d_n_20230101_20251231.parquet,indexFalse)# 或# df.to_csv(000001.SZ_d_n_20230101_20251231.csv, indexFalse)多标的批量importosfrommairuiimportClient codes[000001.SZ,600519.SH,000002.SZ,300750.SZ]withClient(licenceos.environ[MAIRUI_LICENCE])asapi:batchapi.map(api.stock_history,codes,periodd,dividendn,st20240101,et20241231,max_workers8,)forcode,barsinzip(codes,batch):nlen(bars)ifbarsisnotNoneelseNoneprint(code,n)并发与日调用上限需要自己估算灌全市场前先小样本验证。实务注意按交易日对齐停牌日不要当成连续自然日硬连。复权口径研究/回测/实盘必须一致。批量前先打印bars[0]确认字段再写解析。api.map、超时与重试行为详见https://github.com/MaiRuiApi/mairui下一篇#03实时行情——单票、多码以及一个可控频率的轮询草稿。