ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

一次调用算完全市场:free-stockdb 的 39 个 A股技术指标实操指南

一次调用算完全市场:free-stockdb 的 39 个 A股技术指标实操指南

一次调用算完全市场:free-stockdb 的 39 个 A股技术指标实操指南

【免费下载链接】free-stockdb面向 A 股日K、分钟K与ETF分钟数据的本地量化引擎,集成增量同步、本地缓存、复权、批量查询、回测与指标计算。项目地址: https://gitcode.com/GitHub_Trending/fr/free-stockdb

free-stockdb 是一个面向 A 股日K与分钟K的本地量化引擎:数据同步落盘本地磁盘后,内置 39 项技术指标与 5 种自定义指数编制能力,一个zb.get()就能批量算完全市场指标,不用自己写 MA/MACD 公式,也不用 pandas 逐股遍历。

先把环境跑起来:两次双击加一行 Python

  • Windows 用户拿到发行包后,双击「数据更新」同步数据到./data:Zstd 压缩、增量同步、断点续传,首次拉全量历史,之后只处理变化的部分,中途退出再跑即可。
  • 双击stockdb.exe启动本地服务,默认监听127.0.0.1:7899,不暴露公网。之后即使断网,查询、回测、指标计算都能照常做。
  • Python 环境只需跑一次 pybao/安装.py,它会把项目路径写入 site-packages,之后任何脚本里直接from zhibiao import zb即可,类似 pip 装好的库。

磁盘占用不高:只存日线约 5GB,含全量分钟线约 20GB(按 README.md 的硬件建议,内存 2GB 起步、8GB 以上更稳)。

全市场指标批量计算:zb.get() 一次调用怎么传参

指标用逗号拼名字,股票传列表,每个指标的参数通过n独立指定,这是批量接口最核心的设计:

from zhibiao import zb # 2 只股票 × 3 个指标,参数各自独立:MA 取 5/10/20,KDJ 用默认值,MACD 用 12,26,9 d = zb.get( "ma,kdj,macd", ["600633", "000007"], start="20260601", end="20260630", frequency="1d", n=["5,10,20", None, "12,26,9"], # 与 name 顺序一一对齐,None 表示默认参数 )

几个容易忽略的点:

  • 单只股票传字符串,返回 list;多只传列表,返回{代码: list}。每只股票按日期升序独立计算,不需要全市场日期对齐。
  • n的对齐规则:单指标可直接传5或"5,10,20";多指标必须传与 name 同序的列表。常用默认值:MACD12,26,9、KDJ9,3,3、RSI24、BOLL"20,2"、BIAS"6,12,24"。
  • 39 项指标分五类,完整清单见 pybao/zhibiao.py 的jisuan()源码:
    • 趋势类:MA、EMA、SMA、WMA、DMA、EXPMA、TRIX、DMI、DFMA、BBI
    • 震荡类:MACD、KDJ、RSI、WR、CCI、PSY、BIAS、ROC、MTM、DPO
    • 通道类:BOLL、KTN、TAQ
    • 量价类:OBV、VR、EMV、MFI、CR、MASS
    • 综合类:ATR、ASI、BRAR、XSII、STD、SUM、HHV、LLV、REF
  • 其中 MA/EMA/SMA/WMA/DMA/STD/SUM/HHV/LLV/REF 这 10 个基础指标支持fields参数指定计算字段,默认基于 close,可换成 volume、amount、high 等;其余复合指标固定按价格口径。
  • 周期支持"day"/"1d"/"1m"/"30m"等;复权fq默认"qfq"(前复权),传None即不复权。

各参数的完整说明和更多示例在 调用方式/python/zb_test.py 里,逐行可跑。

金叉死叉信号怎么取:cross 的三种模式

选股里最常见的"金叉"判断不用手写交叉检测,在任意调用上加一个cross参数:

# 原始指标值 + 交叉信号一起返回,方便复盘验证 d = zb.get("ma,kdj,macd", ["600633", "000007"], start="20260601", end="20260630", cross="with_value")
  • cross=False(默认):只返回原始指标数值
  • cross=True:只返回交叉信号,1=金叉,-1=死叉,0=无交叉
  • cross="with_value":原始值与信号同时返回
  • 多指标同时传入时,cross字段只在所有单项指标当日同时金叉时才为 True,天然适合多指标共振选股
  • 基础指标(如 MA)配合cross使用时代码只允许指定单个fields

等权指数怎么编:zhishu 的 5 种加权方法

想给一个股票池算虚拟指数——行业轮动、风格因子、自建策略基准都靠它——把股票列表交给zhishu接口即可,不用自己拉权重算加权:

# 等权指数,初始基点 1000,end="N" 表示取到最新 d = zb.get("zhishu", ["600633", "000007"], start="20260601", end="N", frequency="1d", method=1)

method 取值:

  • 1 等权:成分股权重相同,做基准最简单常用
  • 2 流通市值加权:按流通市值分配权重
  • 3 成交额加权:反映当日市场活跃度
  • 4 成交量加权:按当日成交量加权
  • 5 总市值加权:口径上最接近主流编制指数

两点限制要记牢:method 2/5 依赖市值字段,而分钟 K 线不含市值,所以分钟级数据只能用 method=1/3/4;默认base=1000可改。返回值包含指数开高低收、pct_chg日涨跌、汇总成交量/成交额,以及当日成分数stock_count。

不止 Python:另外四种本地入口

同一套指标引擎有多层外壳,按使用习惯选:

  • HTTP API:任何语言直接请求,形如http://127.0.0.1:7899/?cmd=get&t=...
  • Excel / WPS 宏:在表格里取数、选股,办公场景闭环
  • HTML 页面:双击即开浏览器,无代码浏览、筛选本地行情
  • AI MCP:协议为自实现,无需安装 MCP SDK,Claude、Cursor 等支持 MCP 的工具连上后即可查询行情、计算指标

各入口都有现成脚本,说明见 调用方式/调用说明.txt。

新手常问的几个问题

  • end 不传会怎样?end必传,否则只能取到默认起始日单日;end="N"表示取到最新。
  • start 有默认值吗?有,源码里DEFAULT_START为 20260302,传start即可覆盖。
  • 为什么给 MACD 传 fields 会报错?fields只对 MA/EMA/STD/HHV 等 10 个基础指标开放,复合指标固定按价格计算。
  • zhishu 能配 cross 吗?不能,交叉信号只面向技术指标。
  • 多股票查询慢吗?计算核心是编译型实现,全市场数千只股票一次批量计算通常几秒内返回。

本项目用于软件学习、数据管理与量化研究,不构成投资建议。

【免费下载链接】free-stockdb面向 A 股日K、分钟K与ETF分钟数据的本地量化引擎,集成增量同步、本地缓存、复权、批量查询、回测与指标计算。项目地址: https://gitcode.com/GitHub_Trending/fr/free-stockdb

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进