stock-sdk:为前端设计的股票行情 SDK
做过金融相关的前端(哪怕只是行情看板 Demo),大概率都会遇到一些工程层面的麻烦:
- 股票行情工具大多集中在 Python 生态,前端难以直接使用
- 为了拉数据,不得不自建一层后端中转
- 接口格式混乱、字段不友好,还要处理 GBK 编码
- 全市场批量拉取时,并发、限频、容错一堆细节要自己兜
stock-sdk 做的事很朴素:把这些公开数据源的“工程脏活”封装起来,提供一个 零依赖、TypeScript 友好、浏览器与 Node.js 都能用 的行情 SDK,让前端可以像调用普通 API 一样获取行情、K 线和分时数据。
前阵子有个朋友问我:抓股票行情数据是不是必须学 Python?
我说不一定啊,JavaScript 也能搞。
他不信,说你随便找个能用的 JS 股票数据库试试?
我还真试了。然后发现……他说得对,真没几个能用的。
被迫营业
事情是这样的。
我本来只是想给自己做个小工具,每天早上打开浏览器就能看到自选股涨跌的那种。功能很简单,就是个看板页面,技术上也没什么难度。
难的是数据从哪来。
找了一圈才发现,股票数据这块,Python 生态是真的强。AkShare、Tushare 这些库功能齐全、文档完善、社区活跃,用 Python 的话几行代码就搞定了。
但问题是,我一个写前端的,为了个小看板专门去写 Python 后端?这也太杀鸡用牛刀了。
npm 上倒是有一些股票相关的包,但要么好几年没更新了,要么只支持 Node.js 不支持浏览器,要么类型定义稀烂。能打的真没几个。
既然找不到合适的,那就自己造一个呗。
stock-sdk 诞生了
花了点时间,我把自己用的代码整理成了一个 npm 包,取名 stock-sdk。
设计思路很简单:让前端能用最熟悉的方式获取股票数据,不要额外依赖,不用搭后端,浏览器里就能跑。
先看个最简单的例子:
1 | import { StockSDK } from 'stock-sdk'; |
没有 API Key,不用注册账号,直接 npm install 就能用。
功能盘点
用了一段时间,功能也慢慢加上来了。目前支持的东西还挺多:
行情获取
| 市场 | 说明 |
|---|---|
| A 股 | 沪深两市 + 北交所,5000+ 只股票 |
| 港股 | 港交所股票行情 |
| 美股 | 纳斯达克、纽交所股票 |
| 基金 | 公募基金净值和估值 |
除了实时行情,还支持历史 K 线(日/周/月)、分钟 K 线(1/5/15/30/60 分钟)、当日分时走势。
板块数据
行业板块和概念板块都支持:
- 板块列表和实时涨跌
- 板块成分股查询
- 板块 K 线数据
这个在分析热点轮动的时候挺有用的。
技术指标
不想自己算指标?SDK 里内置了常用的:
- 均线:MA(支持 SMA、EMA、WMA)
- 趋势:MACD、BOLL
- 超买超卖:KDJ、RSI、WR
- 其他:BIAS、CCI、ATR
一个接口就能拿到 K 线 + 指标数据,直接扔给 ECharts 画图。
批量能力
这个是我比较满意的一点。很多接口一次只能查几只股票,想拉全市场数据就得自己处理并发、限流、重试……
stock-sdk 把这些都封装好了:
1 | const allQuotes = await sdk.getAllAShareQuotes({ |
一行代码拉 5000+ 只股票,内置并发控制,还有进度回调。
技术细节
说几个我觉得做得还行的点:
1. 真·零依赖
没有用 axios,没有 lodash,什么都没有。用的是原生 fetch,所以浏览器和 Node.js 18+ 都能跑。打包出来不到 20KB。
2. 双模块格式
同时输出 ESM 和 CommonJS,现代项目用 import,老项目用 require,都没问题。
3. TypeScript First
从第一行代码就是用 TypeScript 写的,类型定义是跟着代码一起维护的,不是后补的 .d.ts。写代码的时候 IDE 提示很准,返回字段有哪些、参数怎么传,鼠标悬停就能看到。
4. 测试覆盖
核心逻辑都有单元测试,覆盖率 95% 以上。毕竟是处理金融数据的,精度和稳定性还是要保证的。
我拿它来干嘛
分享几个我自己的用法:
早盘快报
写了个 Node.js 脚本,每天早上 9:30 自动拉一遍自选股行情,推送到微信。
热门板块监控
用行业板块接口 + 概念板块接口,每隔 5 分钟刷新一次,看看今天资金在往哪里跑。
策略回测
拉历史 K 线 + 技术指标,验证一些简单的交易逻辑。虽然比不上专业的回测框架,但用来快速验证想法够用了。
给朋友用
做了个简单的 Web 页面,朋友想查什么股票直接输入代码就行。不用装 App,浏览器打开就能用。
它不适合什么
说完优点也说说局限性:
- 不适合高频交易:数据源是公开接口,延迟在秒级,毫秒级的场景不行
- 不适合专业量化:真正做量化还是 Python 生态更成熟,stock-sdk 更适合快速验证和原型开发
- 不保证数据准确性:数据来自腾讯和东财的公开接口,仅供学习参考,投资决策还是要以券商数据为准
最后
这个项目从自用到开源,也维护了有一段时间了。
功能在慢慢完善,文档也在慢慢补齐。最近还上线了官网和在线 Playground,不用本地安装就能直接试用。
如果你也是前端,也想折腾点股票数据相关的东西,可以试试这个库。
有问题随时提 Issue,我尽量响应。
🔗 链接汇总
安装命令:
1 | npm install stock-sdk |
觉得有用的话,顺手点个 Star ⭐ 支持一下~
Happy Coding!
