【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

2026 年 windows Python 最新下载安装教程,附详细图文,亲测可用

📖 前言 想学编程?Python 是个好选择。语法简单、上手快,数据分析和 AI 都能干。 但很多人第一步就卡住了——装软件。我当年第一次装 Python 也在这个坑里折腾了半天,后来才发现其实挺简单的,只是没人告诉我哪些选项该勾、哪些不该勾。 今天就把这个过程写清楚,每一步都有图,跟着做就行。 📝 开始装 第一步:下载安装包 1.1 去官网下 打开浏览器,网盘链接:https://pan.quark.cn/s/7186f4aa4c10 进去后能看到一个黄色大按钮,上面写着最新的版本号(目前是 3.13.x)。点它就开始下载。 1.2 选对版本 官网一般会自动识别你的系统,推荐对应的版本。你也可以手动选: * Windows installer (64-bit)

By Ne0inhk

Python+Flask+Echarts打造全国气象数据可视化分析大屏

1. 为什么需要气象数据可视化大屏? 最近帮朋友公司搭建气象数据展示系统时,发现很多决策者面对密密麻麻的Excel表格总是一头雾水。其实人类大脑处理图像信息的速度比处理文字快6万倍,这就是为什么我们需要把枯燥的气象数据变成直观的可视化图表。 气象数据可视化大屏的核心价值在于: * 实时监控:像股票大盘一样展示全国气象变化 * 趋势分析:通过历史数据预测未来天气走向 * 快速决策:农业、物流等行业可以据此调整工作计划 * 异常预警:直观发现极端天气征兆 我在实际项目中验证过,同样的气象数据,用表格呈现时决策需要3分钟,而通过可视化大屏只需10秒就能get关键信息。 2. 技术选型:为什么是Python+Flask+Echarts? 2.1 Python生态的优势 刚开始做气象项目时,我对比过Java和Node.js方案,最终选择Python是因为: * 数据处理能力强:Pandas处理千万级气象数据比Java快40% * 开发效率高:同样功能Python代码量只有Java的1/3 * 丰富的库支持:从爬虫到可视化都有成熟解决方案 实测用Python的re

By Ne0inhk
Python RPA+爬虫:模拟人工操作采集ERP系统数据(金蝶/用友无接口场景)

Python RPA+爬虫:模拟人工操作采集ERP系统数据(金蝶/用友无接口场景)

一、背景:无接口ERP数据采集的痛点 企业数字化转型中,ERP系统(金蝶K/3、用友U8/NC)是核心数据载体,但多数中小企业面临一个共性问题:ERP系统无开放API接口,或接口权限申请流程繁琐、成本高,无法通过常规接口调用获取数据。 传统的解决方案(人工手动导出Excel)存在效率低、易出错、无法实时采集的问题;而单纯的爬虫技术又无法应对ERP系统的“桌面客户端操作”“多层菜单导航”“动态加载表格”等场景。此时,Python RPA(机器人流程自动化)+ 爬虫的组合方案成为最优解——用RPA模拟人工操作ERP界面(点击、输入、翻页),用爬虫/数据提取技术抓取界面数据,既符合ERP系统的操作逻辑,又能实现数据的自动化采集,实测可将人工采集效率提升10倍以上。 本文针对金蝶K/3(Windows客户端)和用友U8(网页版)两种典型无接口场景,实现一套通用的Python RPA采集方案,覆盖登录、导航、查询、

By Ne0inhk
西工大noj(C/C++)100题参考题解及注意事项(2024)

西工大noj(C/C++)100题参考题解及注意事项(2024)

西工大noj100题 说在前面:所有程序设计题目的题解都是在自己思考过以后看才能有所收获,题解只是一个参考,看懂思路后最好自己从0开始敲一遍!!! 如果对某一题有更好的思路 欢迎评论区交流或者私信我 持续更新~ 更新时间:2024.12.29 (目录自动生成在文章右边哦~) 本文优势: 1.以《算法笔记》(胡凡 曾磊)为蓝本,内容充实有依据 2.通俗易懂,初学者也可无障碍阅读 3.精心挑选全站最优博文,为读者提供拓展阅读链接 4.一题多解,拓宽读者题解思路 5.解题过程中带领读者回顾基础知识点 6.对素数等热门题总结出模板,方便读者积累 7.题目完整清晰,题解注释清楚 8.对于较难的题目,给出清晰的解题思路和调试过程 9.题目后用括号标注注意事项或主要解题算法和步骤 10.提供应试技巧和常见错误,助力考生金榜题名 …… 考前提醒 1.重视模板:文件这类题是有固定的模板的,

By Ne0inhk