npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

stock-sdk

v2.4.0

Published

零依赖股票行情 SDK:A股/港股/美股/基金/期货/期权,浏览器 + Node.js 双端,内置 CLI 与 MCP server。Zero-dependency stock market data SDK (CLI + MCP) for browser & Node.js.

Readme

Stock SDK

npm version npm downloads license MCP AI Ready

English | 中文

前端和 Node.js 设计的股票行情 JavaScript SDK

无需 Python、无需后端服务,直接在 浏览器或 Node.js 中获取 A 股 / 港股 / 美股 / 公募基金 的实时行情与 K 线数据。还自带 命令行工具MCP server,一条命令取行情或接入 AI。

✨ 零依赖、轻量发布包 | 🌐 Browser + Node.js | 📦 ESM + CJS + subpath | 🧠 完整 TypeScript 类型 | 🖥️ CLI | 🤖 MCP

v2.0.0:v2 是一次架构跃迁(命名空间 API、统一符号模型、Quote 可辨识联合、统一错误体系、CLI / MCP / subpath 导出)。 安装:npm i stock-sdk。从 v1 升级请先读 v1 → v2 迁移指南破坏性变更,无兼容别名)。

📖 官网文档

👉 https://stock-sdk.linkdiary.cn

完整 API、命名空间总览、CLI / MCP 指南、在线 Playground、v1 → v2 迁移文档全部在这里。先看官网再上手最快。

v1 稳定版文档 已归档)

📦 NPM | 📖 GitHub | 🎮 在线 Playground

🧭 Stock Dashboard:基于 stock-sdk 搭建的股票数据大盘演示站点,欢迎体验。

Why stock-sdk?

如果你是前端工程师,可能遇到过这些问题:

  • 股票行情工具大多是 Python 生态,前端难以直接使用
  • 想做行情看板 / Demo,不想额外维护后端服务
  • 财经接口返回格式混乱、编码复杂(GBK / 并发 / 批量)

stock-sdk 的目标很简单:

让前端工程师,用最熟悉的 JavaScript / TypeScript,优雅地获取股票行情数据。


使用场景

  • 📊 股票行情看板(Web / Admin)
  • 📈 数据可视化(ECharts / TradingView)
  • 🎓 股票 / 金融课程 Demo
  • 🧪 量化策略原型验证(JS / Node)
  • 🕒 Node.js 定时抓取行情数据
  • 🖥️ 命令行临时查行情 / 🤖 给 AI 工具接数据源

特性

  • 零依赖,浏览器 + Node.js 18+ 双端运行;同时提供 ESMCommonJS
  • 命名空间 APIsdk.quotes.cn() / sdk.kline.cn() / sdk.options.etf.dailyKline(),按领域分组、IDE 自动补全友好
  • 统一符号模型string 一等公民,sh600519 / 600519 / 600519.SH / 00700 / hk00700 / AAPL / 105.AAPL 等写法容错解析;支持中证等特殊指数(930955 / H30533 / HSHCI / GDAXI详见符号指南
  • A 股 / 港股 / 美股 / 公募基金实时行情、历史 K 线(日/周/月)、分钟 K 线(1/5/15/30/60)、当日分时
  • 技术指标:MA / MACD / BOLL / KDJ / RSI / WR / BIAS / CCI / ATR / OBV / ROC / DMI / SAR / KC
  • 筹码分布(CYQ)sdk.chips.cn/hk/us 获利比例 / 平均成本 / 90-70 成本区间与集中度 / 筹码峰直方图(东财算法本地计算,零新增数据源)
  • 信号 / 选股 / 回测calcSignals(金叉死叉/超买超卖等事件识别)、链式选股器、本地回测
  • 期货 / 期权 / 资金流 / 龙虎榜 / 北向 / 大宗交易 / 融资融券 / 涨停板 等全套扩展数据
  • 基金深度数据:历史净值、实时估值、同类排名走势、基金/ETF 分红送配、主题基金
  • subpath 导出stock-sdk/{indicators,signals,symbols,screener,cache,errors},纯计算不拖入网络层,tree-shake 友好
  • 统一错误体系:对外只抛 SdkError,带标准 code,可从 stock-sdk/errors 导入
  • 请求治理:provider 级重试 / 限流 / 熔断 + 可注入 fetchImpl / signal / 生命周期 hooks
  • CLIstock-sdk quote 600519 终端直接取行情
  • 内置 MCP serverstock-sdk mcp 一行接入 Cursor / Claude / Codex 等 AI 工具(零依赖手写,无 @modelcontextprotocol/sdk

安装

# 最新版(v2:命名空间 API / CLI / MCP)
npm install stock-sdk

# v1 旧版(已封存,仅维护 critical 修复)
npm install stock-sdk@legacy

快速开始

import { StockSDK } from 'stock-sdk';

const sdk = new StockSDK();

// 命名空间 API(v2)— 符号写法容错,'600519' / 'sh600519' / '600519.SH' 都可
const quotes = await sdk.quotes.cnSimple(['sh000001', 'sz000858', 'sh600519']);
quotes.forEach((q) => {
  console.log(`${q.name}: ${q.price} (${q.changePercent}%)`);
});

// 历史 K 线 + 技术指标
const kline = await sdk.kline.withIndicators('600519', {
  period: 'daily',
  indicators: { ma: { periods: [5, 10, 20] }, macd: {} },
});

// 全市场 A 股行情(5000+ 股票,内置并发控制)
const all = await sdk.batch.cn({ concurrency: 5 });
console.log(`共 ${all.length} 只`);

港股 '00700' / 'hk00700',美股 'AAPL' / '105.AAPL',由 normalizeSymbol 统一容错解析。


命令行(CLI)

安装后即得 stock-sdk 命令(或用 npx):

# 行情(按代码自动识别市场)
npx stock-sdk quote 600519 00700 AAPL
# K 线 + 输出截断
npx stock-sdk kline 600519 --period weekly --limit 30
# 带技术指标
npx stock-sdk indicators 600519 --ma 5,10,20 --macd
# 搜索
npx stock-sdk search 茅台
# 任意命名空间方法直达
npx stock-sdk quotes cn sh600519 sz000001

默认 JSON 输出,可加 --format table|csv--pretty--limit N


🤖 AI / MCP 集成

v2 内置零依赖 MCP server,一条命令启动:

npx stock-sdk mcp

接入 Cursor / Claude Desktop / Codex / Gemini 等(配置 mcpServers):

{
  "mcpServers": {
    "stock-sdk": {
      "command": "npx",
      "args": ["-y", "stock-sdk", "mcp"]
    }
  }
}

环境变量 STOCK_SDK_MCP_TOOLS=core|full|<逗号分隔工具名> 控制工具集范围(默认 core)。

除工具外还内置 7 个场景化 AI Skills(MCP Prompts,如 analyze_stock / screen_stocks / diagnose_stock),支持的客户端可一键触发;STOCK_SDK_MCP_PROMPTS=core|full|<名单> 控制技能集(默认 core)。详见 AI Skills 文档

👉 完整 MCP 文档


信号 / 选股 / 回测

import { calcSignals } from 'stock-sdk/signals';
import { screen, backtest } from 'stock-sdk/screener';

// 金叉/死叉/超买超卖等事件识别(基于带指标的 K 线)
const signals = calcSignals(klineWithIndicators, {
  ma: { fast: 5, slow: 20 },
  rsi: {},
});

// 链式选股(输入任意行情数组,纯本地、无网络)
const picks = screen(allQuotes)
  .where((q) => q.pe != null && q.pe < 20)
  .where((q) => q.changePercent > 3)
  .sortBy((q) => q.amount)
  .top(20);

// 本地回测
const report = backtest({
  klines,
  strategy: (bar, i, all) => 'hold', // 返回 'buy' | 'sell' | 'hold'
});
console.log(report.totalReturn, report.winRate, report.maxDrawdown);

请求治理与错误

import { StockSDK } from 'stock-sdk';
import { HttpError, getSdkErrorCode } from 'stock-sdk/errors';

const sdk = new StockSDK({
  retry: { maxRetries: 2, baseDelay: 500 },
  providerPolicies: {
    eastmoney: { timeout: 12000, rateLimit: { requestsPerSecond: 3, maxBurst: 3 } },
  },
});

try {
  await sdk.quotes.cnSimple(['sh600519']);
} catch (error) {
  // v2 对外只抛 SdkError,带统一 code
  if (error instanceof HttpError) console.log(error.status, error.statusText);
  console.log(getSdkErrorCode(error)); // HTTP_ERROR / NETWORK_ERROR / TIMEOUT / ABORTED / PARSE_ERROR ...
}

子路径导出(subpath)

只用纯计算(指标 / 符号 / 信号 / 选股)时,从 subpath 导入,bundle 不会拖入 RequestClient 与所有 provider:

// 14 个指标、共 17 个纯函数(MA 族含 calcSMA/calcEMA/calcWMA 三个变体):
// calcSMA / calcEMA / calcWMA / calcMA / calcMACD / calcBOLL / calcKDJ /
// calcRSI / calcWR / calcBIAS / calcCCI / calcATR / calcOBV / calcROC /
// calcDMI / calcSAR / calcKC
import { calcMACD, calcKDJ } from 'stock-sdk/indicators';
import { normalizeSymbol, toTencentSymbol } from 'stock-sdk/symbols';
import { calcSignals } from 'stock-sdk/signals';
import { screen, backtest } from 'stock-sdk/screener';
import { MemoryCacheStore, cacheThrough } from 'stock-sdk/cache';
import { SdkError, isSdkError, getSdkErrorCode } from 'stock-sdk/errors';

市场支持矩阵

不同市场的能力覆盖度差异较大,下表帮你快速判断 SDK 是否覆盖你的场景。

  • ✅ 已支持 | ⚠️ 部分支持(见备注)| ❌ 暂未实现 | — 概念不适用

| 能力 | A 股 | 港股 | 美股 | 公募基金 | 期货 | 期权 | |------|:----:|:----:|:----:|:--------:|:----:|:----:| | 实时行情 | ✅ | ✅ | ✅ | ✅ | ✅ 全球期货 | ✅ ETF / 中金所 / 商品 | | 历史 K 线(日/周/月) | ✅ | ✅ | ✅ | ⚠️ 场内 ETF/LOF | ✅ 国内 + 全球 | ✅ | | 分钟 K 线(5/15/30/60) | ✅ | ✅ kline.hkMinute | ✅ kline.usMinute | ⚠️ 场内 ETF/LOF | ❌ | ❌ | | 筹码分布(CYQ) | ✅ chips.cn | ✅ chips.hk | ✅ chips.us | — | — | — | | 当日分时(1 分钟) | ✅ quotes.timeline | ✅ kline.hkMinute(period='1') | ✅ kline.usMinute(period='1') | ⚠️ 场内 ETF/LOF | ❌ | ✅ ETF 期权 | | 分红派送 | ✅ | ❌ | ❌ | ✅ 基金 + ETF | — | — | | 资金流向 | ✅ 个股/大盘/排名/板块 | ❌ | ❌ | — | — | — | | 板块(行业 / 概念) | ✅ | ❌ | ❌ | ❌ | — | — | | 龙虎榜 | ✅ | — | — | — | — | ✅ 期权龙虎榜 | | 沪深港通 / 北向资金 | ✅ 北向 | ✅ 南向 | — | — | — | — | | 大宗交易 / 融资融券 | ✅ | ❌ | ❌ | — | — | — | | 涨停板 / 盘口异动 | ✅ | — | — | — | — | — | | 全市场代码列表 / 批量行情 | ✅ 5000+ | ✅ | ✅ | ✅ 代码 | ❌ | ❌ | | 库存数据 | — | — | — | — | ✅ 国内 + COMEX | — | | 交易日历 | ✅ calendar.* | ⚠️ 仅市场状态 | ⚠️ 仅市场状态 | — | — | — |

数据延迟:实时行情来自腾讯财经 / 东方财富等公开接口,非实时撮合,通常有数十秒到数分钟延迟,不适合高频交易决策。


API 概览(命名空间)

💡 完整 API 见 官方文档。v2 全部方法挂在命名空间下:

| 命名空间 | 代表方法 | |---|---| | sdk.quotes | .cn / .cnSimple / .hk / .us / .fund / .fundFlow / .largeOrder / .timeline | | sdk.codes | .cn / .us / .hk / .fund | | sdk.batch | .cn / .hk / .us / .byCodes / .raw | | sdk.kline | .cn / .cnMinute / .hk / .hkMinute / .us / .usMinute / .withIndicators / .signals | | sdk.chips | .cn / .hk / .us(筹码分布:获利比例 / 平均成本 / 成本区间 / 筹码峰) | | sdk.board | .industry.* / .concept.*list / spot / constituents / kline / minuteKline) | | sdk.options | .index.* / .etf.* / .commodity.* / .cffex.* / .lhb | | sdk.futures | .kline / .globalSpot / .globalKline / .inventory / .comexInventory … | | sdk.fundFlow | .individual / .market / .rank / .sectorRank / .sectorHistory | | sdk.northbound | .minute / .summary / .holdingRank / .history / .individual | | sdk.marketEvent | .ztPool / .stockChanges(支持多类型 / 'all') / .boardChanges / .individualChanges / .individualChangesHistory(个股异动) | | sdk.dragonTiger | .detail / .stockStats / .institution / .branchRank / .seatDetail | | sdk.blockTrade / sdk.margin | 大宗交易 / 融资融券 | | sdk.fund | .dividendList / .navHistory / .estimate / .rankHistory / .theme | | sdk.calendar | .isTradingDay / .nextTradingDay / .prevTradingDay / .marketStatus | | sdk.reference | .dividendDetail / .tradingCalendar | | 顶层 | sdk.search(keyword) |

指标计算从主包改为 subpath:import { calcMACD } from 'stock-sdk/indicators'。 从 v1 扁平 API 迁移?见 v1 → v2 迁移指南(含完整 sdk.getXxx()sdk.<ns>.<method>() 映射表)。


开发校验

pnpm typecheck
pnpm build
pnpm test
pnpm test:integration:smoke   # 冒烟集成(真实网络)
pnpm test:integration:full    # 全量集成回归

许可证

ISC


🌐 官网 | 📦 NPM | 📖 GitHub | 🎮 在线演示 | 🧭 Stock Dashboard | 🐛 Issues


如果这个项目对你有帮助,欢迎 Star ⭐ 或提出 Issue 反馈。