【2025最新】Python量化数据接口指南:baostock 免费获取分钟级K线教程

baostock 是一个对Python量化爱好者非常友好的免费开源证券数据平台,尤其适合获取A股历史行情数据。我为你准备了这份2025年更新的baostock使用指南,希望能帮助你高效地获取数据。

1. 认识baostock

Baostock(证券宝)是一个免费、开源的证券数据平台。它通过Python API提供大量准确、完整的证券历史行情数据、上市公司财务数据等,能满足量化交易投资者、数量金融爱好者、计量经济从业者的数据需求。

它的数据返回格式为pandas DataFrame类型,这对于使用pandas/NumPy/Matplotlib进行数据分析和可视化非常友好。

2. 数据范围与时间

baostock的数据覆盖范围主要包括:

数据类型

包含内容

时间范围

备注                

股票数据

日、周、月K线数据

1990-12-19至今

5、15、30、60分钟K线数据

1999-07-26至今

指数数据

综合指数,规模指数,一级行业指数,二级行业指数,策略指数,成长指数,价值指数,主题指数,基金指数,债券指数

2006-01-01至今

指数没有分钟线数据

财务数据

部分上市公司资产负债信息、上市公司现金流量信息、上市公司利润信息、上市公司杜邦指标信息

2007年至今

季频

公司报告

上市公司业绩预告信息

2003年至今

季频

上市公司业绩快报信息

2006年至今

季频

每日最新数据更新时间需要注意:

  1. 日K线数据:当前交易日17:30完成入库。
  2. 分钟K线数据:当前交易日20:30完成入库。
  3. 其它财务报告数据:第二自然日1:30完成前交易日数据入库。

3. 安装与环境配置

安装baostock非常简单,只需在命令行中执行:

pip install baostock -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn

注意:程序运行时,文件名、文件夹名不能是baostock。

4. 核心API使用详解

4.1 登录与登出

在开始任何数据查询前,都需要先登录系统。建立与服务器的连接无需注册即可登录。需要注意的是,登录后超过一段时间没有操作再调用API请求时会超时,需要重新登录才能继续下载数据。

import baostock as bs #登录系统 lg = bs.login() #显示登录返回信息 print('login respond error_code:' + lg.error_code) print('login respond  error_msg:' + lg.error_msg) #你的数据查询代码将在这里 #登出系统 bs.logout()

4.2 获取历史A股K线数据

`query_history_k_data_plus()` 是获取历史A股K线数据的重要接口。

方法说明:通过API接口获取A股历史交易数据,可以通过参数设置获取日k线、周k线、月k线,以及5分钟、15分钟、30分钟和60分钟k线数据,适合搭配均线数据进行选股和分析。

返回类型:pandas的DataFrame类型。

能获取1990-12-19至当前时间的数据;可查询不复权、前复权、后复权数据。

主要参数:

参数名

描述

是否必须

默认值

code

股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。

fields

指示简称,支持多指标输入,以半角逗号分隔,填写内容作为返回类型的列。

start_date

开始日期(包含),格式“YYYY-MM-DD”

2015-01-01

end_date

结束日期(包含),格式“YYYY-MM-DD”

最近一个交易日

frequency

数据类型,默认为d,日k线;d=日k线、w=周、m=月、5=5分钟、15=15分钟、30=30分钟、60=60分钟k线数据,不区分大小写;指数没有分钟线数据;周线每周最后一个交易日才可以获取,月线每月最后一个交易日才可以获取。

d

adjustflag

复权类型,默认不复权:3;1:后复权;2:前复权。已支持分钟线、日线、周线、月线前后复权。

4.3 获取指定日期所有股票列表

`query_all_stock()` 函数可以获取指定交易日期所有股票列表。可以通过参数day获取某一天的数据,参数为空表示默认获取当天的数据。返回类型为baostock自定义的数据类型,通过get_data()函数可以获取Pandas DataFrame类型的数据。

date = "2025-08-01"  #假设的日期,请替换为实际日期 stock_df = bs.query_all_stock(date).get_data()

5. 实战示例:获取分钟级K线数据

以下是一个获取股票分钟级K线数据的完整示例。

5.1 获取5分钟K线数据

import baostock as bs import pandas as pd #登陆系统 lg = bs.login() #显示登陆返回信息 print('login respond error_code:'+lg.error_code) print('login respond  error_msg:'+lg.error_msg) #获取沪深A股历史K线数据 #详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。 #分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag rs = bs.query_history_k_data_plus("sh.600000",  #股票代码,例如:浦发银行     "date,time,code,open,high,low,close,volume,amount,adjustflag",  #指定需要的字段     start_date='2025-07-01',  #开始日期(请替换为实际需要的日期)     end_date='2025-07-31',    #结束日期(请替换为实际需要的日期)     frequency="5",            #频率:5表示5分钟线     adjustflag="3")           #复权类型:3不复权 print('query_history_k_data_plus respond error_code:'+rs.error_code) print('query_history_k_data_plus respond  error_msg:'+rs.error_msg) #打印结果集 data_list = [] while (rs.error_code == '0') & rs.next():     #获取一条记录,将记录合并在一起     data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) #结果集输出到csv文件   result.to_csv("history_A_stock_k_data.csv", index=False) print(result.head(10))  #打印前10行数据查看 #登出系统 bs.logout()

重要提示:指数没有分钟线数据。尝试获取指数的分钟线数据可能会出错或返回空结果。

5.2 复权类型的区别与选择

`adjustflag` 参数决定了数据的复权方式,这对分析至关重要:

*  1.后复权:复权后价格反映的是真实收益率,便于计算历史收益。

*  2.前复权:复权后价格贴近当前价格,便于技术分析。

*  3.不复权:原始价格数据,包含跳空缺口。

BaoStock使用“涨跌幅复权法”进行复权。这种方法可以计算出资金收益率,确保初始投入的资金运用率为100%,既不会因为分红而导致投资减少,也不会因为配股导致投资增加。需要注意的是,不同系统(如同花顺、通达信等)采用的复权方式可能不一致,会导致数据差异。

5.3 停牌数据处理

股票停牌时,对于日线,开、高、低、收价都相同,且都为前一交易日的收盘价,成交量、成交额为0,换手率为空。

在回测过程中,通常不希望停盘数据对回测造成干扰,可以将停盘数据删除:

if result.shape[0]:     result = result[(result['volume'] != '0') & (result['volume'] != '')]

6. 常见问题与技巧(FAQ)

1. 返回数据格式转换:从BaoStock下载的数据元素类型可能均为object(字符串)。在进行数值计算前,可能需要转换类型,例如换手率:

result["turn"] = [0 if x == "" else float(x) for x in result["turn"]]

2. 查询所有股票代码:可以使用 `query_all_stock()` 函数获取指定日期的所有股票列表,并转换为List:   

 stock_list = stock_df['code'].tolist()

3. 数据准确性交叉验证:对于关键决策,建议使用其他数据源(如券商API、Wind等)进行交叉验证,特别是在复权数据方面,因为不同平台的复权算法可能有差异。

4. 超时与重新登录:登录后如果长时间没有操作,连接可能会超时。如果后续请求失败,可以尝试重新调用 `bs.login()`。

baostock 作为一个免费且数据源稳定的平台,是个人量化爱好者入门和进行中低频策略研究的绝佳工具。希望这份指南能助你在量化交易的道路上顺利起步!

请注意,baostock目前的数据主要集中在A股,缺少港股、期货、外汇和基金等金融数据。对于更高频率(Tick级)的交易或更广泛的品种,你可能需要考虑其他数据源。

Read more

手把手教你 Openclaw 在 Mac 上本地化部署,保姆级教程!接入飞书打造私人 AI 助手

手把手教你 Openclaw 在 Mac 上本地化部署,保姆级教程!接入飞书打造私人 AI 助手

AppOS:始于 Mac,却远不止于 Mac。跟随 AppOS一起探索更广阔的 AI 数字生活。 OpenClaw 是 Moltbot/Clawdbot 的最新正式名称。经过版本迭代与改名后,2026年统一以「OpenClaw」作为官方名称,核心定位是通过自然语言指令,替代人工完成流程化、重复性工作,无需用户掌握编程技能,适配多场景自动化需求。 该项目经历了多次更名,Clawdbot → Moltbot → OpenClaw(当前名称) # OpenClaw 是什么? OpenClaw 是一个开源的个人 AI 助手平台。 简单来说,它是一个可以将你自己的 AI 助手接入你已经在用的即时通讯工具(Telegram、WhatsApp、飞书等)的系统。你可以自己挑选 AI 模型进行连接,添加各种工具和技能(如飞书等),构建专属工作流。说白了如果应用的够好,它就是一个能帮你干活的“

By Ne0inhk
告别兼容性烦恼!在Mac Big Sur上使用OpenClaw+OpenCode+OpenSpec实现全自动化AI开发流程

告别兼容性烦恼!在Mac Big Sur上使用OpenClaw+OpenCode+OpenSpec实现全自动化AI开发流程

告别兼容性烦恼!在Mac Big Sur上使用OpenClaw+OpenCode+OpenSpec实现全自动化AI开发流程 🚀 引言:AI 自动化开发三件套 如果你关注 AI 辅助编程,最近一定听说过这三个工具: * OpenClaw:个人 AI 助手框架,擅长调度任务、管理记忆、调用工具,是整个流程的“指挥官”。 * OpenCode:AI 编程代理,能够深入理解代码库、自动修改代码、运行测试,是真正的“一线工程师”。 * OpenSpec:规范驱动框架,将模糊的需求转化为结构化的任务清单(tasks.md),是项目的“施工蓝图”。 三者结合,可以构建一个从需求分析到代码落地的全自动化开发流水线。你只需要提出想法,AI 就能自主完成代码编写、调试和提交。 然而,很多开发者(包括我)还在使用 macOS 11 Big

By Ne0inhk
全网都在刷的 AI Skills 怎么用?别死磕 Claude Code,OpenCode 才是国内首选!

全网都在刷的 AI Skills 怎么用?别死磕 Claude Code,OpenCode 才是国内首选!

最近,“Skills”在AI圈子里太火了! 大家都在用它给 AI 加各种“buff”,让它自动写代码、做表格等等 但很多小伙伴看着 GitHub 上那些 Skills 兴奋不已,真到了本地想玩一把时,使用Claude code有很多不便的地方 之前就有很多小伙伴问我OpenCode,整好借着Skills,来聊聊OpenCode的安装部署和使用 很简单,不管你是想用图形界面还是命令行,这篇保姆级教程都能让你轻松上手! 咱们这就开始,带你入门OpenCode玩转 Skills! 目录: 1. 1. ✅ 如何下载安装OpenCode 2. 2. ✅ 如何安装和配置Skills 3. 3. ✅ 环境变量的设置方法 4. 4. ✅ 常用指令和操作技巧 5. 5. ✅ 遇到问题如何解决 6. 6. ✅ 如何创建自己的Skills  一、下载安装,超级简单 下载地址: https:

By Ne0inhk
OpenClaw 实战部署:用一台旧 Surface Pro 打造 7×24 私人 AI 助手

OpenClaw 实战部署:用一台旧 Surface Pro 打造 7×24 私人 AI 助手

OpenClaw 实战部署:用一台旧 Surface Pro 打造 7×24 私人 AI 助手 OpenClaw 是 2026 年最火的开源 AI 助手平台之一——它不只是一个聊天机器人框架,而是一个完整的 AI Agent 操作系统:支持飞书 / Web / IM 多渠道接入,内置工具调用(function calling)、技能系统(Skills)、记忆管理、多 Agent 协作,还能接入任意 OpenAI 兼容的大模型。 我手上有一台 2017 年的 Surface Pro 5,Windows 已经卡得没法用。与其吃灰,不如装个 Ubuntu 把它变成一台低功耗的

By Ne0inhk