SPL 量化 获取数据
下载数据
我们将股票数据分享在百度网盘上供下载,每工作日更新。
目前可供下载的数据有 A 股的日 K 线数据、股票代码列表和上市公司的基本面数据
下载链接:
百度网盘
下载数据的文件格式为 btx,是 SPL 的特有二进制格式。
btx 称为集文件,是一种简单、开放的二进制文件格式,它覆盖了 csv 文件的所有功能,并且性能要比 csv 文件快 4-5 倍。
SPL 可以支持 btx 文件的操作计算,也支持各种数据源与 btx 之间的相互转换。
股票日 K 线
文件名: yyyy.trade.btx。
yyyy.trade.btx 文件为yyyy当年的 A 股日线行情;
每天晚上 7、8 点左右会把当天的 A 股日线归并到当年的yyyy.trade.btx 文件中
数据示例:

数据结构:
| 字段名 | 字段类型 | 含义 |
| code | Integer | 股票代码 |
| tdate | Date | 日期 |
| open | Double | 开盘价 |
| close | Double | 收盘价 |
| low | Double | 最低价 |
| high | Double | 最高价 |
| volume | Long | 成交量 |
| amount | Double | 成交金额 |
| pfactor | Double | 当日价格复权因子 |
注意,股票代码用了整数,而不是常规的字符串,这里 1 表示 000001,2 表示 000002…以此类推。整数的运算性能会远高于字符串。
指数日 K 线
文件名: yyyyMMdd.index.btx, yyyy.index.btx。
yyyyMMdd.index.btx 文件为yyyyMMdd日之前的指数日线行情;
yyyy.index.btx 文件为yyyy当年的指数日线行情;
每天晚上 7、8 点左右会把当天的指数日线归并到当年的yyyy.index.btx 文件中
数据示例:

数据结构:
| 字段名 | 字段类型 | 含义 |
| code | Integer | 股票代码 |
| tdate | Date | 日期 |
| open | Double | 开盘价 |
| close | Double | 收盘价 |
| low | Double | 最低价 |
| high | Double | 最高价 |
| volume | Long | 成交量 |
| amount | Double | 成交金额 |
| pfactor | Double | 当日价格修正因子 |
注意,股票代码用了整数,而不是常规的字符串,这里 1 表示 000001,2 表示 000002…以此类推。整数的运算性能会远高于字符串。
公司基本面
文件名称:company.btx。
提供 2007 年至今的财务数据,每季度一条。
数据示例:

数据结构:
| 字段名 | 字段类型 | 含义 |
| code | Integer | 股票代码 |
| statdate | Date | 财报统计的季度的最后一天 |
| totalshare | Long | 总股本 |
| liqashare | Long | 流通股本 |
| netprofit | Double | 净利润 (元) |
| mbrevenue | Double | 主营营业收入 (元) |
未来会再补充更多信息
股票代码列表
文件名称:stock.btx。
提供股票基础信息,包括股票代码、名称、所属行业、上市日期、退市日期等。
数据示例:

数据结构:
| 字段名 | 字段类型 | 含义 |
| code | Integer | 股票代码 |
| name | String | 股票名 |
| exchanges | String | 中国三大交易所的简写 |
| industry | String | 所属行业 |
| ipodate | Date | 上市日期 |
| outdate | Date | 退市日期 |
指数代码列表
文件名称:indexlist.csv。
提供指数基础信息,包括指数代码、名称、上市日期、退市日期等。
数据示例:

数据结构:
| 字段名 | 字段类型 | 含义 |
| code | Integer | 股票代码 |
| name | String | 股票名 |
| exchanges | String | 中国三大交易所的简写 |
| ipodate | Date | 上市日期 |
| outdate | Date | 退市日期 |
数据读取
股票代码列表
读取股票列表可以用 T 函数全部读入。
|
| A |
| 1 | =T("stock.btx") |
运行效果:

指数代码列表
|
| A |
| 1 | =file("indexlist.csv").import@tc() |
运行效果:

股票日 K 线
将下载的所有yyyy.trade.btx 文件放到同一路径下。
读数脚本代码如下:
|
| A |
| 1 | =end=ifn(end,now()) |
| 2 | =to(year(start),year(end)).(file(~/".trade.btx")).select(~.exists()) |
| 3 | =if(cl, A2.( ~.iselect@b(cl,code)), A2.(~.cursor@b()) ) |
| 4 | =A3.merge(code,tdate).select(tdate>=start && tdate<=end) |
| 5 | return A4.fetch@x() |
脚本参数:
| cl | 股票代码序列,如 [600000,600001];可以为单值,如 600000;填空表示全读 |
| start | 开始日期,如 2024-01-01 |
| end | 截止日期,如 2024-12-31。end 为空时截止到当前日期 |
脚本保存为 loadkday.splx,此脚本可返回一支或多支股票任意时间段的 K 线数据。
如读取一支股票的 k 线数据:
|
| A | |
| 1 | 600000 | 股票代码 |
| 2 | 2024-01-01 | 开始日期 |
| 3 | 2024-12-31 | 截止日期 |
| 4 | =call("loadkday.splx",A1,A2,A3) | 调用脚本,返回 600000 股票 2024 年数据 |
| 5 | =call("loadkday.splx",A1,A2) | end为空,截止到当前日期 |
运行效果:

读取多支股票数据,比如读取所有银行股或全部 A 股:
|
| A | |
| 1 | =T("stock.btx").select(industry=="J66货币金融服务 ").(code) | 读取银行股票代码列表 |
| 2 | 2024-01-01 | 开始日期 |
| 3 | 2024-01-10 | 截止日期 |
| 4 | =call("loadkday.splx",A1,A2,A3) | 调用脚本,返回银行股 2024 年数据 |
| 5 | =call("loadkday.splx",A1,A2) | end为空,截止到当前日期 |
| 6 | =call("loadkday.splx",,A2,A3) | cl为空,读取全部 A 股 |
运行效果:

对于经常使用的脚本,也可以用 register 登记成一个函数来使用。
代码示例:
|
| A | |
| 1 | =register("loadkday","loadkday.splx") | 将脚本登记为函数 |
| 2 | =T("stock.btx").select(industry=="J66货币金融服务 ").(code) | 读取银行股票代码列表 |
| 3 | 2024-01-01 | 开始日期 |
| 4 | 2024-01-10 | 截止日期 |
| 5 | =loadkday(A2,A3,A4) | 返回开始到截止日期的数据 |
| 6 | =loadkday(A2,A3) | end为空,截止到当前日期 |
| 7 | =loadkday(,A3,A4) | cl为空,读取全部股票 |
运行效果同上。
指数日 K 线
将下载的yyyy.index.btx 和yyyyMMdd.index.btx 文件放到同一路径下。
读数脚本代码如下:
|
| A |
| 1 | =year(now()) |
| 2 | =end=ifn(end,now()) |
| 3 | =if(year(start)<A1,(A1-1)*10000+1231)|if(year(end)==A1,A1) |
| 4 | =A3.(file(~/".index.btx")).select(~.exists()) |
| 5 | =if(cl, A4.( ~.iselect@b(cl,code)), A4.(~.cursor@b()) ) |
| 6 | =A5.merge(code,tdate).select(tdate>=start && tdate<=end) |
| 7 | return A6.fetch@x() |
脚本参数:
| cl | 指数代码序列,如 [1,2];可以为单值,如 1;填空表示全读 |
| start | 开始日期,如 2024-01-01 |
| end | 截止日期,如 2024-12-31。end 为空时截止到当前日期 |
脚本保存为 loadkindex.splx,此脚本可返回一支或多支指数任意时间段的 K 线数据。
如读取一支指数的 k 线数据:
|
| A | |
| 1 | 1 | 指数代码 |
| 2 | 2024-01-01 | 开始日期 |
| 3 | 2024-12-31 | 截止日期 |
| 4 | =call("loadkindex.splx",A1,A2,A3) | 调用脚本,返回 000001 指数 2024 年数据 |
| 5 | =call("loadkindex.splx",A1,A2) | end为空,截止到当前日期 |
运行效果:

读取多个指数数据:
|
| A | |
| 1 | =[399001,399002] | 指数代码列表 |
| 2 | 2025-01-01 | 开始日期 |
| 3 | 2025-01-10 | 截止日期 |
| 4 | =call("loadkindex.splx",A1,A2,A3) | 调用脚本,返回多个指数 |
| 5 | =call("loadkindex.splx",A1,A2) | end为空,截止到当前日期 |
| 6 | =call("loadkindex.splx",,A2,A3) | cl为空,读取全部指数 |
运行效果:

对于经常使用的脚本,也可以用 register 登记成一个函数来使用。
代码示例:
|
| A | |
| 1 | =register("loadkindex","loadkindex.splx") | 将脚本登记为函数 |
| 2 | =[399001,399002] | 指数列表 |
| 3 | 2025-01-01 | 开始日期 |
| 4 | 2025-01-10 | 截止日期 |
| 5 | =loadkindex(A2,A3,A4) | 返回开始到截止日期的数据 |
| 6 | =loadkindex(A2,A3) | end为空,截止到当前日期 |
| 7 | =loadkindex(,A3,A4) | cl为空,读取全部指数 |
运行效果同上。
基本面
(1) 直接读入全部 btx 文件。
当数据文件不大时,可以直接全部读入内存。
代码示例:
|
| A | B |
| 1 | =T("company.btx") | 读入基本面数据 |
| 2 | =A1.select(code==600000 && statdate>=date("2024-01-01") && statdate<=date("2024-12-31")) | 选出 600000 股票 2024 年数据 |
运行效果:
A1

A2

(2) 只读取某些股票的基本面
也可以用脚本方式只读取某些股票的基本数据。
脚本代码:
|
| A |
| 1 | =file("company.btx") |
| 2 | =if(cl, A1.iselect@b(cl,code), A1.cursor@b()) |
| 3 | =end=ifn(end,now()) |
| 4 | =A2.select(statdate>=start &&statdate<=end) |
| 5 | =A4.fetch() |
| 6 | >A2.close() |
| 7 | return A5 |
脚本参数:
| cl | 股票代码序列,如 [600000,600001];可以为单值,如 600000;也可为空表示全读 |
| start | 开始日期,如 2024-01-01 |
| end | 截止日期,如 2024-12-31。end 为空时截止到当前日期 |
脚本保存为 loadcompany.splx,此脚本可返回一支或多支股票任意时间段的基本面。
如读取一支股票的基本面:
|
| A | B |
| 1 | 600000 | 股票代码 |
| 2 | 2020-01-01 | 开始日期 |
| 3 | 2020-12-31 | 截止日期 |
| 4 | =call("loadcompany.splx",A1,A2,A3) | 调用脚本,返回 2020 年基本面 |
| 5 | =call("loadcompany.splx",A1,A2) | end为空,截止到当前日期 |
运行效果:

读入多支股票的基本面,如读取所有银行股或全部 A 股。
|
| A | B |
| 1 | =T("stock.btx").select(industry=="J66货币金融服务 ").(code) | 股票代码序列 |
| 2 | 2020-01-01 | 开始日期 |
| 3 | 2020-12-31 | 截止日期 |
| 4 | =call("loadcompany.splx",A1,A2,A3) | 调用脚本,返回银行股 2020 年基本面 |
| 5 | =call("loadcompany.splx",A1,A2) | end为空,截止到当前日期 |
| 6 | =call("loadcompany.splx",,A2,A3) | cl为空,读取全部股票 |
免费下载
相关文章:
SPL 量化 获取数据
下载数据 我们将股票数据分享在百度网盘上供下载,每工作日更新。 目前可供下载的数据有 A 股的日 K 线数据、股票代码列表和上市公司的基本面数据 下载链接: 百度网盘 下载数据的文件格式为 btx,是 SPL 的特有二进制格式。 btx 称为集文…...
VMware与Docker:虚拟化技术的双轨演进与融合实践
一、虚拟化的本质与价值重构 虚拟化(Virtualization)是通过软件抽象层将物理资源转化为可动态分配的虚拟单元,其核心价值在于打破"一机一用"的刚性架构,实现三大突破性转变: 资源解耦:硬件资源…...
3. pandas笔记之:创建
以下是 Pandas 主要数据结构的创建方式整理,涵盖 Series 和 DataFrame 的常见创建方法: 一、Series 创建方式 从列表/数组创建 import pandas as pd import numpy as np# 基础列表 s1 pd.Series([1, 3, 5, np.nan, 6])# 指定索引 s2 pd.Series([10, …...
潞晨科技将暂停DeepSeek API服务,AI大模型技术红利普惠化与市场竞争白热化叠加,内卷恶果,开始显现!
潞晨科技宣布暂停DeepSeek API服务的事件,不仅暴露了AI大模型行业的技术与成本博弈,更折射出国内AI生态中中小企业的生存困境和行业内卷的深层矛盾。这一事件背后,既有企业个体商业模式的局限性,也揭示了整个行业在技术迭代、成本控制和市场策略上的系统性挑战。 一、潞晨科…...
某大型电解铝厂电解系统谐波治理装置改造沃伦森电气
电解铝行业谐波治理解决方案——无源滤波装置优化升级,保障稳定运行 在电解铝生产过程中,谐波污染问题严重影响电网电能质量,甚至可能导致滤波装置损坏,引发群爆事故。河南登封某大型电解铝厂通过无源滤波装置智能化改造ÿ…...
Rust 学习笔记:安装 Rust
Rust 学习笔记:安装 Rust Rust 学习笔记:安装 Rust在 Windows 上安装 Rust命令行创建 Rust 项目在 Mac/Linux 上安装 Rust一些命令升级卸载cargo -hrustc -h 安装 RustRoverrust-analyzer Rust 学习笔记:安装 Rust 在 Windows 上安装 Rust …...
精准落地设计,现代项目管理中的深度实践
在数字化转型浪潮席卷全球的当下,项目管理的复杂性呈指数级增长。无论是软件开发、大型工程建设,还是企业流程再造,都面临着设计理念与实际执行之间的鸿沟。《人月神话》第6章中关于确保体系结构师设计准确落地的论述,为破解这一难…...
编译 C++ 报错“找不到 g++ 编译器”的终极解决方案(含 Windows/Linux/macOS)
前言 在使用终端编译 C 程序时,报错: 或类似提示,意味着你的系统尚未正确安装或配置 g 编译器。本篇将从零手把手教你在 Windows / Linux / macOS 下安装并配置 g,适用于新手或 C 入门阶段的你。 什么是 g? g 是 GN…...
联易融出席深圳链主企业供应链金融座谈会,加速对接票交所系统
近日,深圳市委金融办组织召开全市链主企业供应链金融高质量发展座谈会。联易融作为供应链金融企业代表,与虾皮信息科技、电子元器件和集成电路国际交易中心等代表性机构以及行业协会、金融机构参加了会议。 发展供应链金融是破解中小微企业融资难、融资…...
html单页业务介绍源码
源码介绍 html单页业务介绍源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行 效果预览 源码免费获取 html单页业务介绍源码...
单体OJ项目
单体项目版本、微服务版还需我再钻研钻研。 项目介绍 在系统前台,管理员可以创建、管理题目;用户可以自由搜索题目、阅读题目、编写并提交代码。 在系统后端,能够根据管理员设定的题目测试用例在代码沙箱 中对代码进行编译、运行、判断输出是否正确。 其…...
豆包桌面版 1.47.4 可做浏览器,免安装绿色版
自己动手升级更新办法: 下载新版本后安装,把 C:\Users\用户名\AppData\Local\Doubao\Application 文件夹的文件,拷贝替换 DoubaoPortable\App\Doubao 文件夹的文件,就升级成功了。 再把安装的豆包彻底卸载就可以。 桌面版比网页版…...
数据分析案例:医疗健康数据分析
目录 数据分析案例:医疗健康数据分析1. 项目背景2. 数据加载与预处理2.1 加载数据2.2 数据清洗3. 探索性数据分析(EDA)3.1 再入院率概览3.2 按年龄分组的再入院率3.3 住院时长与再入院4. 特征工程与可视化5. 模型构建与评估5.1 数据划分5.2 训练逻辑回归5.3 模型评估6. 业务…...
【MySQL】索引失效问题详解
目录 1. 最左前缀原则 2. 条件左边有函数或运算 3. 隐式类型转换 4. LIKE 模糊查询以 % 开头 5、MySQL 优化器选择全表扫描 ⭐对 in 关键字特别说明⭐ (1)列表太大时,走全表扫描了 (2)隐式类型转换 ÿ…...
Qt实现语言切换的完整方案
在Qt中实现语言动态切换需要以下几个关键步骤,我将提供一个完整的实现方案: 一、准备工作 在代码中使用tr()标记所有需要翻译的字符串 cpp button->setText(tr("Submit")); 创建翻译文件 在.pro文件中添加: qmake TRANSLATION…...
MongoDB(docker版)备份还原
docker启动MongoDB docker run -d -p 27017:27017 --name my-mongo -v /mongodb/db:/data/db mongo备份MongoDB 使用mongodump备份数据库时,默认会将备份数据保存在当前工作目录下的dump文件夹中。 docker容器中默认备份在当前工作目录,所以此处指定当…...
优选算法第十讲:字符串
优选算法第十讲:字符串 1.最长公共前缀2.最长回文子串3.二进制求和4.字符串相乘 1.最长公共前缀 2.最长回文子串 3.二进制求和 4.字符串相乘...
【扣子Coze 智能体案例四】五行八卦占卜智能体
目录 一、意图识别 二、时间格式转换 三、八字转换 四、八字提取 五、八字提取2 六、数据汇总 七、统计五行占比 八、雷达图生成 九、表格生成 十、AI占卜 十一、结束节点 一、意图识别 用户输入的信息包含各种时间格式的年月日时 用户输入的信息包含天干地支八字…...
2026《数据结构》考研复习笔记四(绪论)
绪论 前言时间复杂度分析 前言 由于先前笔者花费约一周时间将王道《数据结构》知识点大致过了一遍,圈画下来疑难知识点,有了大致的知识框架,现在的任务就是将知识点逐个理解透彻,并将leetcode刷题与课后刷题相结合。因此此后的过…...
域名 → IP 的解析全过程
Question 使用 iOS 的网络库 (比如 AFNetwoking, URLSession, Alamofire) 进行请求时, 域名具体是怎样被解析为 IP 地址的 ? Answer 一次常见的 URLSession / AFNetworking / Alamofire 请求,域名 → IP 的解析全过程 拆成自顶向下 6 个环节, 如下 1 ► 应用层&…...
C++学习:六个月从基础到就业——STL算法(三)—— 数值算法(上)
C学习:六个月从基础到就业——STL算法(三)—— 数值算法(上) 本文是我C学习之旅系列的第二十七篇技术文章,也是第二阶段"C进阶特性"的第五篇,主要介绍C STL算法库中的数值算法(上部分)。查看完整系列目录了解…...
路由与路由器
路由的概念 路由是指在网络通讯中,从源设备到目标设备路径的选择过程。路由器是实现这一过程的关键设备,它通过转发数据包来实现网络的互联。路由工作在OSI参考模型的第三层,‘网络层’。 路由器的基本原理 路由器通过维护一张路由表来决定…...
5.学习笔记-SpringMVC(P61-P70)
SpringMVC-SSM整合-接口测试 (1)业务层接口使用junit接口做测试 (2)表现层用postman做接口测试 (3)事务处理— 1)在SpringConfig.java,开启注解,是事务驱动 2)配置事务管理器(因为事务管理器是要配置数据源对象&…...
【专题刷题】二分查找(一):深度解刨二分思想和二分模板
📝前言说明: 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;ÿ…...
硬核解析!电动汽车能耗预测与续驶里程的关键技术研究
引言 随着电动汽车的普及,续航里程和能耗表现成为用户关注的核心痛点。然而,表显续航与实际续航的差异、低温环境下的电量衰减等问题始终困扰着消费者。本文基于《电动汽车能耗预测与续驶里程研究》的实验成果,深入剖析电动汽车能耗预测的核心模型、多环境测试方法及续航里…...
【OceanBase相关】01-OceanBase数据库部署实践
文章目录 一、前言1、介绍说明2、部署方案二、部署说明1、环境准备2、软件安装2.1、安装OAT2.2、安装OCP3、软件部署三、集群管理1、MySQL租户管理四、Q&A1、OBServer 服务器重启后 observer 进程未能自动启动1.1、问题说明1.2、解决措施2、ERROR 1235 (0A000) at line 1: …...
【华为OD机试真题】428、连续字母长度 | 机试真题+思路参考+代码解析(E卷)(C++)
文章目录 一、题目题目描述输入输出样例1样例2 一、代码与思路🧠C语言思路✅C代码 一、题目 参考:https://sars2025.blog.csdn.net/article/details/139492358 题目描述 ◎ 给定一个字符串,只包含大写字母,求在包含同一字母的子串…...
C# 综合示例 库存管理系统4 classMod类
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的 在《库存管理系统》中使用classMod类来保存全局变量。 变量定义和含义,请详见下面的源代码: public class classMod { //数据库路径...
ZooKeeper配置优化秘籍:核心参数说明与性能优化
#作者:张桐瑞 文章目录 tickTime:Client-Server通信心跳时间initLimit:Leader-Follower初始通信时限syncLimit:Leader-Follower同步通信时限dataDir:数据文件目录clientPort:客户端连接端口服务器名称与地…...
详细讲解 QMutex 线程锁和 QMutexLocker 自动锁的区别
详细讲解 QMutex 线程锁和 QMutexLocker 自动锁的区别 下面我们详细拆解 Qt 中用于线程同步的两个核心类:QMutex 和 QMutexLocker。 🧱 一、什么是 QMutex? QMutex 是 Qt 中的互斥锁(mutex)类,用于防止多个…...













