不用 Python,前端也能获取股票行情?我做了一个 stock-sdk

2,680 阅读4分钟

很多人一提到「股票行情数据」,第一反应都是:Python、AkShare、起个后端服务。

但在实际开发里,我经常遇到一个更具体的问题:

我只是想做一个行情看板 / 教学 Demo / 可视化页面,
却不得不额外维护一个后端(甚至只是为了做一次接口转发)。

这件事从工程角度看并不划算,于是我做了一个更“前端/Node 友好”的工具:stock-sdk


背景:前端在做行情相关功能时常见的几个坑

如果你做过行情看板、可视化或 Demo,大概率遇到过:

  • 现成方案多在 Python 生态,前端无法直接用
  • 直接请求第三方接口会碰到:编码(GBK)批量并发解析格式
  • 想在浏览器侧做一个可跑的 Demo,却不想为了它再搭一套后端
  • 接口不稳定时,缺少统一的重试/限流/错误处理方式

我希望把这些“工程脏活”封装掉,让使用者只关心:拿到结构化数据,直接画图/落库/做展示


stock-sdk 是什么?

stock-sdk 是一个为 前端和 Node.js 设计的股票行情 SDK:

  • 直接在 浏览器或 Node.js 运行
  • 无需 Python、无需额外后端
  • 提供完整 TypeScript 类型
  • 支持多数据源(如腾讯财经 qt.gtimg.cn、东方财富等,具体以项目实现为准)

它现在支持哪些能力?

当前版本主要覆盖两大块:实时行情 + K 线/分时,并补充一些扩展数据:

  • A 股 / 港股 / 美股 / 公募基金实时行情
  • 历史 K 线(日 / 周 / 月)
  • 分钟 K 线(1 / 5 / 15 / 30 / 60)
  • 当日分时走势
  • 资金流向、盘口大单等
  • A 股代码列表(5000+)
  • 全市场 A 股实时行情(内置并发控制与进度回调)

同时在工程层面做了这些“更实用”的点:

  • 零依赖、体积小(<10KB)
  • Browser + Node.js 双端
  • ESM + CommonJS
  • 单元测试与覆盖率

安装

npm i stock-sdk
# or yarn add stock-sdk
# or pnpm add stock-sdk

10 行 Demo:直接拉几只股票的实时行情

import { StockSDK } from 'stock-sdk';

const sdk = new StockSDK();

const quotes = await sdk.getSimpleQuotes([
  'sh000001',
  'sz000858',
  'sh600519',
]);

quotes.forEach(q => {
  console.log(`${q.name}: ${q.price} (${q.changePercent}%)`);
});

适合直接拿去:

  • 做页面展示
  • 做 Demo / 教学
  • 画 ECharts / TradingView

一个更“有冲击力”的用法:前端拉全市场 A 股行情(5000+)

这块我觉得对前端同学最有用:你可以在不搭后端的情况下,直接获取全市场 A 股实时行情。

const allQuotes = await sdk.getAllAShareQuotes({
  batchSize: 300,
  concurrency: 3,
  onProgress: (completed, total) => {
    console.log(`进度: ${completed}/${total}`);
  },
});

console.log(`共获取 ${allQuotes.length} 只股票`);

使用场景包括:

  • 行情看板(全市场筛选、排行、涨跌幅榜)
  • 数据可视化(行业/概念聚合)
  • 原型验证(快速跑通数据链路)

和 AkShare 的关系

AkShare 是非常优秀的工具,但它更偏:

  • Python 生态
  • 数据分析/量化研发链路

stock-sdk 更偏:

  • Web / Node.js 工程使用
  • 前端可视化、教学 Demo、轻量中台接口

简单说:各自面向的人群与使用链路不同


适合谁 / 不适合谁

适合:

  • 前端工程师、数据可视化开发者
  • 教学 / Demo / 原型验证
  • Node.js 定时任务、轻量中台接口

不适合:

  • 高频交易
  • 对数据稳定性/一致性有严格 SLA 的商业生产场景

后续计划:我准备把它往哪些方向扩展?

如果你也在做类似场景,下面这些规划你可能会用得上。我会优先做“更工程化、更通用”的能力。

1)更工程化的客户端能力(优先级最高)

  • 统一错误类型(Error code、可读 message、原始响应保留)
  • 自动重试 + 指数退避(针对偶发网络失败/接口波动)
  • 限流与更细粒度的并发策略(按数据源、按接口分组)
  • 可选缓存层(内存缓存/TTL;Node 环境可扩展到持久化)
  • 请求钩子/中间件机制(日志、埋点、代理、鉴权、Mock)

2)更实用的“前端开发辅助能力”

  • 代码/交易所前缀智能规范化000001 / sz000001 自动识别)
  • 股票搜索/模糊匹配(基于代码列表 + 拼音/简称的轻量检索)
  • 交易日历与交易时段判断(节假日/是否开盘/下一交易日)
  • 常用指标工具(SMA/EMA/RSI/MACD 等基础指标,方便快速画图)

3)数据面扩展(会更谨慎)

  • 公司基本面(财务摘要、估值、分红/除权等,取决于数据源可用性)
  • 板块/行业/概念聚合(用于看板分组、排行)
  • 更多市场品种(指数更全、ETF、可转债等)

注:数据接口来自公开数据源,可能随时变更;我会尽量在 SDK 层做兼容与兜底,但也建议把它用于“展示/研究/教学/原型”等对稳定性要求相对合理的场景。


项目地址

如果你在项目里用到了它,或者希望我优先支持某个能力,欢迎提 Issue。
觉得有帮助也欢迎 Star ⭐(这对维护开源真的很重要)。