新闻详情

新闻详情

首页 / 资讯中心 / 详情

free-stockdb Python SDK源码剖析:StockDBClient从初始化到复权折算的完整路径

发布时间:2026/9/17 23:50:42来源:尧图网络
free-stockdb Python SDK源码剖析:StockDBClient从初始化到复权折算的完整路径
free-stockdb Python SDK源码剖析StockDBClient从初始化到复权折算的完整路径【免费下载链接】free-stockdb面向 A 股日K、分钟K与ETF分钟数据的本地量化引擎集成增量同步、本地缓存、复权、批量查询、回测与指标计算。项目地址: https://gitcode.com/GitHub_Trending/fr/free-stockdbfree-stockdb 是一个面向 A 股日K、分钟K与 ETF 分钟数据的本地量化数据引擎而 Python SDK 中的StockDBClient就是它与量化策略之间最核心的桥梁。本文带你完整走一遍这条源码路径从客户端初始化、连接本地数据库服务到get_data()的批量查询主流程再到前复权/后复权的内存折算逻辑帮助你真正看懂数据是怎么流动起来的。一分钟认识 StockDBClient整个 SDK 的核心只有两个文件客户端实现pybao/stock_sdk.py定义了StockDBClient类及其全部查询、聚合、复权逻辑底层驱动from stockdb import init, rd引入的 C 二进制模块stockdb.pyd负责与本机数据库服务默认监听127.0.0.1:7899通信服务参数见 stockdb.conf设计思路非常清晰C 层管存储和通信Python 层管业务逻辑周期聚合、复权折算、字段过滤、DataFrame 封装。zb.get()指标计算39 种指标也建立在这个客户端之上见 pybao/zhibiao.py。初始化连接时悄悄做完的两件事StockDBClient.__init__默认连接127.0.0.1:7899表面上只是建立连接源码里其实做了两件事pybao/stock_sdk.py1. 优先走init()建立连接self.rd init(hosthost, portport, passwordpassword) if self.rd is None: self.rd rd若init()失败会回退到模块级全局rd若底层二进制模块缺失则抛出带排查指引的ImportError提示stockdb.pyd路径对新手非常友好。2. 一次性预加载全市场复权因子raw self.rd.get(复权*).get(cum)这一步把全部股票、全部除权日期的累计复权因子拉到内存按股票代码整理成两个平行数组_fq_dates[code]该股票的除权日期列表LevelDB 天然有序无需排序_fq_cums[code]对应的累计复权因子列表这是典型的用一次 O(N) 换后续 O(log N)的缓存设计——因为后面每根 K 线都要做复权折算把因子预先装进内存并支持二分查找是整条链路里最关键的铺垫。 如果你刚拿到仓库先运行 pybao/安装.py 把项目目录写入 Python 的sys.path之后任何目录都能直接from stock_sdk import *效果类似 pip 安装。上手步骤可参考 先看这个使用说明.txt。get_data 主流程四步从参数到结果get_data()是 SDK 的总入口支持日K/分钟K/周K/月K、单股/批量、同步/异步。它的工作可以拆成四步第一步确定表名与时间查询表达式table 分钟k if frequency in (1m,5m,15m,30m,60m) else 日k time_query self.build_time_query_for_retrieval(start, end, desc, frequency)两个细节值得注意周K/月K 并不存表底层先查日k再由 Python 内存聚合见下文分钟级查询若只传 8 位日期build_time_query_for_retrieval会自动补全为 14 位时间戳000000/235959一次覆盖全天交易时段第二步单股点查 / 批量 pipeline单只股票rd.vals(table, code, time_query)一次范围查询多只股票rd.pipe()管道批量mget单路请求内并发多股避免逐股往返第三步内存加工管线剔除无效记录 → 复权折算 → 周期聚合 → 排序/截取 → 字段投影fq in (qfq,hfq)时执行复权折算下一节详解frequency为1w/1M走_merge_to_period按 ISO 周/年月分组合并日K为5m/15m/30m/60m走_merge_minutes_to_period用交易分钟数对齐 A 股午休断档把 1 分钟 K 聚合到整 5/15/30/60 分钟窗口需要降序且发生了聚合时聚合完成后才反转保证分组正确最后按limit截取、按fields投影把 dict 压成紧凑的二维数值列表第四步返回格式封装as_dfTrue时合并为带code首列的 Pandas DataFrame批量模式自动合并多股否则返回 list/dict。异步版get_data_async与同步版结构完全一致只是把查询换成await方便在事件循环中使用。复权折算一次二分查找 一个比例_apply_fq_in_memory是整个 SDK 最精华的片段pybao/stock_sdk.py核心只有三步1. 二分定位当前因子idx bisect.bisect_right(dates, r_date_str) - 1 f_current cums[idx] if idx 0 else 1.0对每根 K 线用bisect在预加载的除权日数组中找到不晚于该日期的最大累计因子。LevelDB 存储天然有序所以这里 O(log N) 完成。2. 计算折算比例前复权qfqratio f_latest / f_current锚定最新因子保证最新价真实价后复权hfqratio 1.0 / f_current锚定上市初价格单调累积3. 折算并就地复制open/high/low/close/pre_close五个字段除以ratio并舍入ETF/基金代码保留 3 位小数股票 2 位。ratio ≈ 1的记录直接跳过——未发生过除权除息时整段零开销。注意源码是r.copy()后再改绝不污染底层数据库缓存的对象这是缓存正确性的关键细节。这种因子存本地、查询时现算的方案意味着新增一次分红送转只需更新因子表全历史行情无需回刷重写。数据同步与校验机制详见 docs/DATA_SOURCE.md。同步与异步只是查询那一步不同对比get_data与get_data_async会发现聚合、复权、过滤这些 Python 逻辑完全复用唯一的差别是取数方式同步rd.valsvsawait rd.vals。这种薄异步包装 厚共享逻辑的写法让维护成本几乎不翻倍值得参考。想动手验证官方示例 调用方式/python/sdk_test.py 覆盖了原生查询、板块映射、批量日K、批量指标到在线 tick 行情的完整链路末尾还附了一份get_data全参数速查注释建议对照源码阅读。小结一条清晰的职责链环节位置设计要点连接与因子预加载__init__一次 O(N) 缓存换全程 O(log N) 折算查询表达式构建_build_time_query单日点查、分钟级自动补全时间戳批量取数get_data第 2 步单股vals/ 多股pipe管道复权折算_apply_fq_in_memory二分查找因子 拷贝后修改前/后复权零回刷周期聚合_merge_to_period/_merge_minutes_to_periodISO 周分桶、A 股午休分钟对齐返回封装_to_dataframe/_filter_fields二维数值列表、带 code 列的合并 DataFrame理解了这条初始化 → 预加载因子 → 批量查询 → 内存复权 → 聚合封装的路径你就掌握了 free-stockdb Python SDK 的骨架——后续的 39 种指标计算、板块映射bk.get()、私有数据写入都只是挂在这条数据链上的新能力。【免费下载链接】free-stockdb面向 A 股日K、分钟K与ETF分钟数据的本地量化引擎集成增量同步、本地缓存、复权、批量查询、回测与指标计算。项目地址: https://gitcode.com/GitHub_Trending/fr/free-stockdb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

大数据+智慧戒毒所智能化监管方案:实时预警与数据底座设计 2026/9/18 0:20:48

大数据+智慧戒毒所智能化监管方案:实时预警与数据底座设计

简介:这份《大数据智慧戒毒所智能化监管方案》以PDF形式提供,面向戒毒所信息化建设者、监管场所管理人员及智慧司法方案设计人员,聚焦如何用数据驱动提升监管效率、风险预警与康复管理水平。压缩包仅含1个PDF文件,约2.87MB&#x…

阅读更多 →
豆包AI手机零售版实测:加价预装App,AI优化只是噱头? 2026/9/18 0:20:47

豆包AI手机零售版实测:加价预装App,AI优化只是噱头?

我前两天去数码城陪朋友提手机,柜台角落摆着一台贴上“豆包 AI 手机零售版”标签的机器,标价比同配置普通版贵了整整八百块。导购说得很玄乎,内置豆包大模型,写文案、查资料、清垃圾、优化系统全是“一句话的事”。我当时没忍住&a…

阅读更多 →
C++ 常用标准库函数实战避坑:string、vector、algorithm 2026/9/18 0:20:47

C++ 常用标准库函数实战避坑:string、vector、algorithm

简介:这是一份面向C初学者与需要随时查阅标准库接口的开发者整理的常用函数速查文档,针对日常编程中数学运算、字符串处理、内存操作与类型转换等高频需求,把零散的函数原型与返回值说明汇集到一处,便于快速定位与对照使用。压缩包…

阅读更多 →
从BrandDynamics到有意义差异化:品牌资产量化与实力溢价归因 2026/9/18 0:20:47

从BrandDynamics到有意义差异化:品牌资产量化与实力溢价归因

简介:这份PDF资料是KantarMillwardBrown(Millward Brown)关于「有意义、差异化的品牌框架」的品牌资产衡量体系研究文献,面向品牌营销从业者、市场调研人员、企业品牌管理者及商科学习研究者。内容围绕品牌资产如何与财务结果直接…

阅读更多 →
大型集团管控制度顶层设计:从权责矩阵到IT落地的完整路径 2026/9/18 0:20:47

大型集团管控制度顶层设计:从权责矩阵到IT落地的完整路径

简介:这份大型集团管控制度顶层设计方案演示文稿,面向集团总部管理者、企业制度体系建设人员及战略规划岗位,系统梳理了集团总部的战略决策中心定位、六大核心能力,以及由自描述文件、基础性文件、战略和运营、治理和风控四部分构…

阅读更多 →
Claude 大升级:Chat 与 Cowork 合并,多工具集成,入口减法利弊几何? 2026/9/18 0:17:47

Claude 大升级:Chat 与 Cowork 合并,多工具集成,入口减法利弊几何?

一个Claude,三个"新"功能以前Chat和Work在产品上区分明显,Chat是聊天框,问答结束一轮交流;Cowork则可承接任务,自行完成搜索、写报告等工作。现在两者被整合到一个入口,新版Claude无需用户主动选…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞