最近,Stock SDK 被阮一峰老师的《科技爱好者周刊》第 397 期收录到了「工具」栏目里:科技爱好者周刊(第 397 期):财富正在向 AI 集中。
对一个个人维护的开源项目来说,这是一个很有意思的节点。最早做 Stock SDK,只是想解决一个很具体的问题:前端工程师想做股票行情看板、可视化 Demo、金融课程示例,为什么总是要先绕到 Python 生态,或者额外搭一个后端服务?
现在,Stock SDK 的公开版本已经更新到 1.9.3,项目围绕真实用户反馈已经收到并解决了 10 余个 issue;GitHub 上也已经获得了 900+ Star。它已经不只是一个「能查行情」的小工具,而是在逐步变成一个面向浏览器和 Node.js 的金融数据 SDK。
这篇文章就系统介绍一下,Stock SDK 目前到底能做什么。

先说定位:给前端和 Node.js 用的股票行情 SDK
Stock SDK 的核心定位很明确:
不依赖 Python,不要求自建后端,让开发者直接在浏览器或 Node.js 中获取股票、基金、期货、期权等公开财经数据。
这和很多传统行情工具的出发点不同。Python 生态已经有 AkShare、Tushare 等成熟方案,但在前端场景里,常见问题是:
- Web 页面想直接展示行情,却不想额外维护服务端转发层。
- Node.js 脚本想定时抓取数据,却不想引入 Python 运行时。
- 财经接口返回格式不统一,字段、编码、批量请求、分页、限流都需要反复处理。
- 项目希望有完整 TypeScript 类型,而不是一堆松散的 JSON。
Stock SDK 解决的是这些「JavaScript 工程里真实会遇到」的问题。它提供 ESM 和 CommonJS 两种产物,支持浏览器与 Node.js 18+,并保持零运行时依赖,适合直接集成到前端页面、数据看板、Node.js 任务脚本或教学 Demo 里。
一个最小示例大概是这样:
ts
import { StockSDK } from 'stock-sdk';
const sdk = new StockSDK();
const quotes = await sdk.getSimpleQuotes([
'sh000001',
'sz000858',
'sh600519',
]);
for (const quote of quotes) {
console.log(`${quote.name}: ${quote.price} (${quote.changePercent}%)`);
}
这段代码不需要后端服务,也不需要 Python 进程。只要项目里安装了 stock-sdk,就可以直接拿到结构化行情数据。
一、行情数据:A 股、港股、美股、公募基金
Stock SDK 最基础、也是最常用的能力,是实时行情。
目前它支持:
- A 股 / 指数完整行情:
getFullQuotes - A 股 / 指数简要行情:
getSimpleQuotes - 港股行情:
getHKQuotes - 美股行情:
getUSQuotes - 公募基金行情:
getFundQuotes
这些接口主要面向「页面展示」和「轻量分析」场景。例如行情看板、股票搜索结果页、投资组合列表、课程 Demo、Node.js 定时快照等,都可以直接使用。
更重要的是,它不只支持单只股票。SDK 内置了批量查询能力,可以获取 A 股、港股、美股、公募基金代码列表,也可以按代码列表批量拉取行情:
getAShareCodeListgetHKCodeListgetUSCodeListgetFundCodeListgetAllAShareQuotesgetAllHKShareQuotesgetAllUSShareQuotesgetAllQuotesByCodes
例如全市场 A 股行情,可以通过内置并发控制分批获取:
ts
const allQuotes = await sdk.getAllAShareQuotes({
batchSize: 300,
concurrency: 5,
onProgress: (completed, total) => {
console.log(`进度: ${completed}/${total}`);
},
});
console.log(`共获取 ${allQuotes.length} 只股票`);
这类能力适合做大盘热力图、全市场涨跌统计、股票池筛选、行情缓存等功能。
二、K 线与分时:从日线到分钟线
只有实时行情还不够,做图表、回看走势、计算指标,都需要 K 线数据。
Stock SDK 目前提供:
- A 股历史 K 线:
getHistoryKline - 港股历史 K 线:
getHKHistoryKline - 美股历史 K 线:
getUSHistoryKline - A 股分钟 K 线:
getMinuteKline - A 股当日分时:
getTodayTimeline
历史 K 线覆盖日、周、月等周期;分钟 K 线支持 1、5、15、30、60 分钟等粒度。对于常见的 Web K 线图、分时图、走势回放、技术指标计算,这些接口已经可以支撑完整的数据流。
从 1.9.1 开始,港股和美股历史 K 线也拆成了更清晰的类型:HKHistoryKline 和 USHistoryKline,分别携带货币和时区信息,同时保留旧类型别名,兼顾向后兼容。
三、技术指标:不仅拿数据,还能直接算指标
很多行情 SDK 只负责把数据拿回来,指标计算需要业务侧自己实现。Stock SDK 直接内置了一批常见技术指标:
- MA / SMA / EMA / WMA
- MACD
- BOLL
- KDJ
- RSI
- WR
- BIAS
- CCI
- ATR
- OBV
- ROC
- DMI
- SAR
- KC
你可以单独使用 calcMA、calcMACD、calcBOLL 等函数,也可以通过 addIndicators 批量添加指标,还可以直接调用 getKlineWithIndicators 获取「K 线 + 指标」的组合结果。
这对于前端图表非常实用:业务层不需要再复制一份指标算法,也不需要在每个图表组件里重复处理窗口期、空值和结果对齐问题。
四、板块数据:行业、概念与成分股
股票分析里,个股不是孤立存在的。很多时候你需要看它所属的行业、概念板块,以及板块内其他成分股的表现。
Stock SDK 提供了行业板块和概念板块两组能力:
- 行业板块列表:
getIndustryList - 行业板块实时行情:
getIndustrySpot - 行业板块成分股:
getIndustryConstituents - 行业板块历史 K 线:
getIndustryKline - 行业板块分钟行情:
getIndustryMinuteKline - 概念板块列表:
getConceptList - 概念板块实时行情:
getConceptSpot - 概念板块成分股:
getConceptConstituents - 概念板块历史 K 线:
getConceptKline - 概念板块分钟行情:
getConceptMinuteKline
有了这些接口,就可以做行业轮动、概念热度、板块成分股涨跌分布、板块 K 线等功能。
五、资金流向、北向资金与市场事件
从 1.x 的持续迭代开始,Stock SDK 不再只停留在行情和 K 线,而是补充了更多市场结构数据。
资金流向方面,SDK 支持:
- 个股资金流历史:
getIndividualFundFlow - 大盘资金流历史:
getMarketFundFlow - 个股资金流排名:
getFundFlowRank - 板块资金流排名:
getSectorFundFlowRank - 板块历史资金流:
getSectorFundFlowHistory - 基础资金流向:
getFundFlow - 盘口大单占比:
getPanelLargeOrder
沪深港通 / 北向资金方面,支持:
- 北向 / 南向资金分时:
getNorthboundMinute - 沪深港通资金流向汇总:
getNorthboundFlowSummary - 北向持股排行:
getNorthboundHoldingRank - 北向 / 南向历史资金:
getNorthboundHistory - 个股北向持仓历史:
getNorthboundIndividual
市场事件方面,支持:
- 涨停、昨日涨停、强势、次新、炸板、跌停等股池:
getZTPool - 盘口异动:
getStockChanges - 板块异动:
getBoardChanges
这些数据适合做更偏交易观察和市场情绪分析的页面,比如资金监控、题材热度、涨停复盘、北向资金追踪等。
六、龙虎榜、大宗交易、融资融券
如果要把一个股票数据工具做成更完整的「看盘辅助」或「研究辅助」,只看价格是不够的。Stock SDK 也覆盖了一批交易公开信息:
龙虎榜相关能力包括:
- 龙虎榜详情:
getDragonTigerDetail - 个股上榜统计:
getDragonTigerStockStats - 机构买卖统计:
getDragonTigerInstitution - 营业部排行:
getDragonTigerBranchRank - 个股席位明细:
getDragonTigerStockSeatDetail
大宗交易和融资融券方面包括:
- 大宗交易市场统计:
getBlockTradeMarketStat - 大宗交易明细:
getBlockTradeDetail - 大宗交易每日统计:
getBlockTradeDailyStat - 融资融券账户统计:
getMarginAccountInfo - 融资融券标的明细:
getMarginTargetList
这些接口可以用来做复盘工具、个股事件页、机构行为观察、融资融券跟踪等功能。
七、期货与期权:不止股票
Stock SDK 的能力边界也扩展到了期货和期权。
期货方面支持:
- 国内期货历史 K 线:
getFuturesKline - 全球期货实时行情:
getGlobalFuturesSpot - 全球期货历史 K 线:
getGlobalFuturesKline - 期货库存品种列表:
getFuturesInventorySymbols - 期货库存数据:
getFuturesInventory - COMEX 黄金 / 白银库存:
getComexInventory
期权方面支持:
- 中金所股指期权 T 型报价:
getIndexOptionSpot - 中金所股指期权日 K 线:
getIndexOptionKline - 中金所全部期权实时行情:
getCFFEXOptionQuotes - ETF 期权到期月份:
getETFOptionMonths - ETF 期权到期日与剩余天数:
getETFOptionExpireDay - ETF 期权当日分钟行情:
getETFOptionMinute - ETF 期权日 K 线:
getETFOptionDailyKline - ETF 期权 5 日分钟行情:
getETFOption5DayMinute - 商品期权 T 型报价:
getCommodityOptionSpot - 商品期权日 K 线:
getCommodityOptionKline - 期权龙虎榜:
getOptionLHB
这让 SDK 不再只是股票行情接口,而是一个更广义的公开金融数据访问层。
八、搜索、交易日历与外链工具
围绕实际应用,Stock SDK 还补充了一些「不显眼但很必要」的能力。
例如:
- 股票搜索:
search - A 股交易日历:
getTradingCalendar - 是否交易日判断:
isTradingDay - 市场状态判断:
getMarketStatus - 搜索结果外链生成:
generateSearchExternalLinks
搜索结果可以直接生成东方财富、雪球等外部链接,方便在前端页面里做跳转。交易日历和市场状态则适合用于定时任务、行情刷新控制、非交易日提示等场景。
九、工程能力:零依赖、类型完整、请求治理
我自己很看重的一点是:Stock SDK 不是把一堆公开接口简单包一层就结束,而是尽量把它做成一个能被正式项目接入的 TypeScript SDK。
目前它具备:
- 零运行时依赖
- 浏览器和 Node.js 双端兼容
- ESM / CommonJS 双格式输出
- 完整 TypeScript 类型定义
- Vitest 单元测试和集成测试
- README、中文文档、英文文档、在线 Playground
- provider 级请求治理能力
请求治理尤其重要。财经公开接口并不总是稳定,可能遇到超时、限流、临时不可用、返回格式变化等问题。Stock SDK 内部提供了 RequestClient,并支持:
- timeout
- retry
- rate limit
- circuit breaker
- providerPolicies
例如可以给东方财富单独配置更严格的限流策略:
ts
import { StockSDK } from 'stock-sdk';
const sdk = new StockSDK({
retry: { maxRetries: 2, baseDelay: 500 },
providerPolicies: {
eastmoney: {
timeout: 12000,
rateLimit: {
requestsPerSecond: 3,
maxBurst: 3,
},
},
},
});
这类设计的目标不是追求接口数量,而是让 SDK 在真实项目里更耐用。
十、AI / MCP:让 AI 工具也能调用股票数据
除了 SDK 本身,Stock SDK 还配套了 stock-sdk-mcp,可以作为 MCP Server 接入 Cursor、Claude Desktop、Gemini、Codex CLI、OpenClaw 等 AI 工具。
这意味着,AI 助手不仅可以「解释股票概念」,还可以通过工具调用拿到真实行情数据,再基于数据做技术分析、市场概览、智能选股、实时监控等任务。
在 AI 编程工具越来越普及的背景下,这一点很有意思:Stock SDK 提供的是 JavaScript / TypeScript 工程里的基础数据能力,而 MCP 则把这些能力继续开放给 AI Agent。
适合哪些场景?
如果你正在做下面这些东西,Stock SDK 会比较合适:
- 股票行情看板
- Web / Admin 数据大屏
- ECharts、TradingView 类图表 Demo
- 金融课程或教学案例
- Node.js 定时行情抓取
- 投资组合观察页
- 市场复盘工具
- 量化策略原型验证
- AI Agent 金融数据工具调用
但也需要明确一点:Stock SDK 使用的是腾讯财经、东方财富等公开接口,实时行情并不是交易所级别的实时撮合数据,通常会有数十秒到数分钟延迟。因此,它适合展示、研究、教学、分析、原型验证,不适合用于高频交易或强实时交易决策。
结语
从最初的「前端能不能直接拿股票行情」到现在覆盖 A 股、港股、美股、公募基金、期货、期权、K 线、分时、指标、资金、北向、龙虎榜、融资融券、MCP 集成,Stock SDK 还在持续扩展。
这次被《科技爱好者周刊》收录,对我来说既是一次曝光,也是一次提醒:一个工具只有真正解决别人的问题,才值得继续打磨。
如果你正在做股票数据相关的前端项目、Node.js 脚本、行情看板、教学 Demo 或 AI 数据工具,欢迎试试看 Stock SDK,也欢迎提 issue 或参与改进。