{"id":34904053,"url":"https://github.com/chengzuopeng/stock-sdk","last_synced_at":"2026-05-02T09:01:59.013Z","repository":{"id":328487141,"uuid":"1115093974","full_name":"chengzuopeng/stock-sdk","owner":"chengzuopeng","description":"为前端设计的无需 Python、无需后端服务的获取股票数据 JavaScript SDK。","archived":false,"fork":false,"pushed_at":"2026-03-13T10:59:37.000Z","size":515,"stargazers_count":58,"open_issues_count":1,"forks_count":13,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-03-13T20:34:07.507Z","etag":null,"topics":["javascript","sdk-js","sharesdk","stock-market"],"latest_commit_sha":null,"homepage":"https://chengzuopeng.github.io/stock-sdk/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chengzuopeng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-12T10:30:17.000Z","updated_at":"2026-03-13T10:56:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chengzuopeng/stock-sdk","commit_stats":null,"previous_names":["chengzuopeng/stock-sdk"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/chengzuopeng/stock-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chengzuopeng%2Fstock-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chengzuopeng%2Fstock-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chengzuopeng%2Fstock-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chengzuopeng%2Fstock-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chengzuopeng","download_url":"https://codeload.github.com/chengzuopeng/stock-sdk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chengzuopeng%2Fstock-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32528665,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T01:12:54.858Z","status":"online","status_checked_at":"2026-05-02T02:00:05.923Z","response_time":132,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","sdk-js","sharesdk","stock-market"],"created_at":"2025-12-26T09:46:59.823Z","updated_at":"2026-05-02T09:01:59.000Z","avatar_url":"https://github.com/chengzuopeng.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Stock SDK\n\n[![npm version](https://img.shields.io/npm/v/stock-sdk.svg)](https://www.npmjs.com/package/stock-sdk)\n[![npm downloads](https://img.shields.io/npm/dm/stock-sdk.svg)](https://www.npmjs.com/package/stock-sdk)\n[![license](https://img.shields.io/npm/l/stock-sdk)](https://github.com/chengzuopeng/stock-sdk/blob/master/LICENSE)\n[![MCP](https://img.shields.io/badge/protocol-MCP-blue)](https://www.npmjs.com/package/stock-sdk-mcp)\n[![AI Ready](https://img.shields.io/badge/AI-Ready-orange)](https://stock-sdk.linkdiary.cn/mcp/)\n\n**[English](./README_EN.md)** | 中文\n\n为 **前端和 Node.js 设计的股票行情 JavaScript SDK**。\n\n无需 Python、无需后端服务，直接在 **浏览器或 Node.js** 中获取 **A 股 / 港股 / 美股 / 公募基金** 的实时行情与 K 线数据。\n\n**✨ 零依赖 | 🌐 Browser + Node.js | 📦 轻量发布包 | 🧠 完整 TypeScript 类型**\n\n## Documentation\n\n👉🏻 [官方文档](https://stock-sdk.linkdiary.cn/)\n\n📦 [NPM](https://www.npmjs.com/package/stock-sdk) | 📖 [GitHub](https://github.com/chengzuopeng/stock-sdk) | 🎮 [在线演示](https://stock-sdk.linkdiary.cn/playground/)\n\n🧭 [Stock Dashboard](https://chengzuopeng.github.io/stock-dashboard/)：基于 stock-sdk 搭建的股票数据大盘演示站点，欢迎体验。\n\n## Why stock-sdk？\n\n如果你是前端工程师，可能遇到过这些问题：\n\n* 股票行情工具大多是 **Python 生态**，前端难以直接使用\n* 想做行情看板 / Demo，不想额外维护后端服务\n* 财经接口返回格式混乱、编码复杂（GBK / 并发 / 批量）\n* AkShare 很强，但并不适合浏览器或 Node.js 项目\n\n**stock-sdk 的目标很简单：**\n\n\u003e 让前端工程师，用最熟悉的 JavaScript / TypeScript，优雅地获取股票行情数据。\n\n---\n\n## 使用场景\n\n* 📊 股票行情看板（Web / Admin）\n* 📈 数据可视化（ECharts / TradingView）\n* 🎓 股票 / 金融课程 Demo\n* 🧪 量化策略原型验证（JS / Node）\n* 🕒 Node.js 定时抓取行情数据\n\n---\n\n## 特性\n\n- ✅ **零依赖**，轻量级发布包\n- ✅ 支持 **浏览器** 和 **Node.js 18+** 双端运行\n- ✅ 同时提供 **ESM** 和 **CommonJS** 两种模块格式\n- ✅ 完整的 **TypeScript** 类型定义和单元测试覆盖\n- ✅ **A 股、港股、美股、公募基金**实时行情\n- ✅ **历史 K 线**（日/周/月）、**分钟 K 线**（1/5/15/30/60 分钟）和**当日分时走势**数据\n- ✅ **技术指标**：内置 MA、MACD、BOLL、KDJ、RSI、WR、BIAS、CCI、ATR、OBV、ROC、DMI、SAR、KC\n- ✅ **期货行情**：国内期货 K 线、全球期货实时行情与 K 线、期货库存数据\n- ✅ **期权数据**：中金所股指期权、上交所 ETF 期权、商品期权的报价 / K 线 / 分钟行情\n- ✅ **资金流向**（个股/大盘/排名/板块）、**盘口大单**、**涨停板池**、**盘口异动** 等扩展数据\n- ✅ **沪深港通 / 北向资金**（分时、汇总、持股排行、历史、个股持仓）\n- ✅ **龙虎榜**（详情、个股统计、机构买卖、营业部排行、席位明细）\n- ✅ **大宗交易** + **融资融券** 全套数据\n- ✅ 获取全部 **A 股代码列表**（5000+ 只股票）和批量获取**全市场行情**（内置并发控制）\n- ✅ 支持 **provider 级重试 / 限流 / 熔断策略覆盖**，兼容旧的全局请求配置\n- ✅ **AI / MCP 就绪** — 配套 [stock-sdk-mcp](https://www.npmjs.com/package/stock-sdk-mcp) MCP Server，一行命令接入 Cursor / Claude / Gemini 等 AI 工具\n\n## 安装\n\n```bash\nnpm install stock-sdk\n# 或\nyarn add stock-sdk\n# 或\npnpm add stock-sdk\n```\n\n## 快速开始（10 行 Demo）\n\n```ts\nimport { StockSDK } from 'stock-sdk';\n\nconst sdk = new StockSDK();\n\nconst quotes = await sdk.getSimpleQuotes([\n  'sh000001',\n  'sz000858',\n  'sh600519',\n]);\n\nquotes.forEach(q =\u003e {\n  console.log(`${q.name}: ${q.price} (${q.changePercent}%)`);\n});\n```\n\n## 示例：全市场 A 股行情\n\n前端直接一次性获取全市场 A 股行情（5000+股票），无需 Python 或后端服务。\n\n```ts\nconst allQuotes = await sdk.getAllAShareQuotes({\n  batchSize: 300,\n  concurrency: 5,\n  onProgress: (completed, total) =\u003e {\n    console.log(`进度: ${completed}/${total}`);\n  },\n});\n\nconsole.log(`共获取 ${allQuotes.length} 只股票`);\n```\n\n## 请求治理与错误码\n\n```ts\nimport { StockSDK, HttpError, getSdkErrorCode } from 'stock-sdk';\n\nconst sdk = new StockSDK({\n  retry: { maxRetries: 2, baseDelay: 500 },\n  providerPolicies: {\n    eastmoney: {\n      timeout: 12000,\n      rateLimit: { requestsPerSecond: 3, maxBurst: 3 },\n    },\n  },\n});\n\ntry {\n  await sdk.getSimpleQuotes(['sh600519']);\n} catch (error) {\n  if (error instanceof HttpError) {\n    console.log(error.status, error.statusText);\n  }\n\n  console.log(getSdkErrorCode(error)); // HTTP_ERROR / NETWORK_ERROR / TIMEOUT ...\n}\n```\n\n`getSdkErrorCode` 只做标准化识别，不会改变原始错误实例类型。网络错误仍然保持 `TypeError`，超时仍然保持 `AbortError` / `DOMException` 的兼容行为。\n\n## 开发校验命令\n\n```bash\nyarn typecheck\nyarn build\nyarn test\nyarn test:integration:smoke\n# 全量集成回归\nyarn test:integration:full\n```\n\n## 🤖 AI / MCP 集成\n\nStock SDK 配套 MCP Server（[stock-sdk-mcp](https://www.npmjs.com/package/stock-sdk-mcp)），可一键接入主流 AI 工具：\n\n| AI 工具 | 配置方式 |\n|---------|---------|\n| Cursor | `~/.cursor/mcp.json` |\n| Claude Desktop | `claude_desktop_config.json` |\n| OpenClaw | `~/.clawdbot/config.yaml` |\n| Codex CLI | `~/.codex/config.json` |\n| Gemini CLI | `~/.gemini/settings.json` |\n\n**配置示例：**\n\n```json\n{\n  \"mcpServers\": {\n    \"stock-sdk\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"stock-sdk-mcp\"]\n    }\n  }\n}\n```\n\n**内置 4 个专业 AI Skills：** 技术分析 / 智能选股 / 市场概览 / 实时监控\n\n👉 [完整 MCP 文档](https://stock-sdk.linkdiary.cn/mcp/)\n\n---\n\n## API 列表\n\n💡 API 详细文档请查阅 [https://stock-sdk.linkdiary.cn/](https://stock-sdk.linkdiary.cn/)\n\n### 实时行情\n\n| 方法 | 说明 |\n|------|------|\n| `getFullQuotes` | A 股/指数全量行情 |\n| `getSimpleQuotes` | A 股/指数简要行情 |\n| `getHKQuotes` | 港股行情 |\n| `getUSQuotes` | 美股行情 |\n| `getFundQuotes` | 公募基金行情 |\n\n### K 线数据\n\n| 方法 | 说明 |\n|------|------|\n| `getHistoryKline` | A 股历史 K 线（日/周/月） |\n| `getHKHistoryKline` | 港股历史 K 线（日/周/月） |\n| `getUSHistoryKline` | 美股历史 K 线（日/周/月） |\n| `getMinuteKline` | A 股分钟 K 线（1/5/15/30/60 分钟） |\n| `getTodayTimeline` | A 股当日分时走势 |\n\n### 技术指标\n\n| 方法 | 说明 |\n|------|------|\n| `getKlineWithIndicators` | 获取带技术指标的 K 线数据 |\n| `calcMA` | 计算均线（SMA/EMA/WMA） |\n| `calcMACD` | 计算 MACD |\n| `calcBOLL` | 计算布林带 |\n| `calcKDJ` | 计算 KDJ |\n| `calcRSI` | 计算 RSI |\n| `calcWR` | 计算威廉指标 |\n| `calcBIAS` | 计算乖离率 |\n| `calcCCI` | 计算商品通道指数 |\n| `calcATR` | 计算平均真实波幅 |\n| `calcOBV` | 计算能量潮 |\n| `calcROC` | 计算变动率指标 |\n| `calcDMI` | 计算趋向指标 |\n| `calcSAR` | 计算抛物线转向 |\n| `calcKC` | 计算肯特纳通道 |\n\n### 行业板块\n\n| 方法 | 说明 |\n|------|------|\n| `getIndustryList` | 行业板块名称列表 |\n| `getIndustrySpot` | 行业板块实时行情 |\n| `getIndustryConstituents` | 行业板块成分股 |\n| `getIndustryKline` | 行业板块历史 K 线（日/周/月） |\n| `getIndustryMinuteKline` | 行业板块分时行情（1/5/15/30/60 分钟） |\n\n### 概念板块\n\n| 方法 | 说明 |\n|------|------|\n| `getConceptList` | 概念板块名称列表 |\n| `getConceptSpot` | 概念板块实时行情 |\n| `getConceptConstituents` | 概念板块成分股 |\n| `getConceptKline` | 概念板块历史 K 线（日/周/月） |\n| `getConceptMinuteKline` | 概念板块分时行情（1/5/15/30/60 分钟） |\n\n### 期货行情\n\n| 方法 | 说明 |\n|------|------|\n| `getFuturesKline` | 国内期货历史 K 线（日/周/月） |\n| `getGlobalFuturesSpot` | 全球期货实时行情 |\n| `getGlobalFuturesKline` | 全球期货历史 K 线（日/周/月） |\n| `getFuturesInventorySymbols` | 期货库存品种列表 |\n| `getFuturesInventory` | 期货库存数据 |\n| `getComexInventory` | COMEX 黄金/白银库存 |\n\n### 期权数据\n\n| 方法 | 说明 |\n|------|------|\n| `getIndexOptionSpot` | 中金所股指期权 T 型报价（看涨 + 看跌） |\n| `getIndexOptionKline` | 股指期权合约日 K 线 |\n| `getCFFEXOptionQuotes` | 中金所全部期权实时行情列表 |\n| `getETFOptionMonths` | 上交所 ETF 期权到期月份列表 |\n| `getETFOptionExpireDay` | ETF 期权到期日与剩余天数 |\n| `getETFOptionMinute` | ETF 期权当日分钟行情 |\n| `getETFOptionDailyKline` | ETF 期权历史日 K 线 |\n| `getETFOption5DayMinute` | ETF 期权 5 日分钟行情 |\n| `getCommodityOptionSpot` | 商品期权 T 型报价 |\n| `getCommodityOptionKline` | 商品期权合约日 K 线 |\n| `getOptionLHB` | 期权龙虎榜 |\n\n### 扩展数据\n\n| 方法 | 说明 |\n|------|------|\n| `getFundFlow` | 资金流向（按代码批量查询） |\n| `getPanelLargeOrder` | 盘口大单占比 |\n| `getTradingCalendar` | A 股交易日历 |\n| `getDividendDetail` | 股票分红派送详情 |\n\n### 资金流向（深度）\n\n| 方法 | 说明 |\n|------|------|\n| `getIndividualFundFlow` | 个股资金流历史（日/周/月） |\n| `getMarketFundFlow` | 大盘（上证 + 深证）资金流历史 |\n| `getFundFlowRank` | 个股资金流排名（今日 / 3 日 / 5 日 / 10 日） |\n| `getSectorFundFlowRank` | 板块资金流排名（行业 / 概念 / 地域） |\n| `getSectorFundFlowHistory` | 单个板块的历史资金流 |\n\n### 沪深港通 / 北向资金\n\n| 方法 | 说明 |\n|------|------|\n| `getNorthboundMinute` | 北向 / 南向资金分时数据 |\n| `getNorthboundFlowSummary` | 沪深港通市场资金流向汇总 |\n| `getNorthboundHoldingRank` | 北向 / 沪股通 / 深股通持股个股排行 |\n| `getNorthboundHistory` | 北向 / 南向资金历史 |\n| `getNorthboundIndividual` | 个股北向持仓历史 |\n\n### 涨停板 / 盘口异动\n\n| 方法 | 说明 |\n|------|------|\n| `getZTPool` | 涨停 / 昨日涨停 / 强势 / 次新 / 炸板 / 跌停 6 大股池 |\n| `getStockChanges` | 22 种盘口异动（火箭发射 / 大笔买入 / 封涨停 等） |\n| `getBoardChanges` | 当日板块异动详情 |\n\n### 龙虎榜\n\n| 方法 | 说明 |\n|------|------|\n| `getDragonTigerDetail` | 龙虎榜详情（按日期范围） |\n| `getDragonTigerStockStats` | 个股上榜统计（近 1/3/6 月、1 年） |\n| `getDragonTigerInstitution` | 机构买卖统计 |\n| `getDragonTigerBranchRank` | 营业部排行 |\n| `getDragonTigerStockSeatDetail` | 个股某日上榜席位明细（买入榜 + 卖出榜） |\n\n### 大宗交易 / 融资融券\n\n| 方法 | 说明 |\n|------|------|\n| `getBlockTradeMarketStat` | 大宗交易市场每日总览 |\n| `getBlockTradeDetail` | 大宗交易明细 |\n| `getBlockTradeDailyStat` | 大宗交易每日统计（按股票汇总） |\n| `getMarginAccountInfo` | 融资融券账户统计 |\n| `getMarginTargetList` | 融资融券标的明细 |\n\n### 批量查询\n\n| 方法 | 说明 |\n|------|------|\n| `getAShareCodeList` | 获取全部 A 股代码 |\n| `getUSCodeList` | 获取全部美股代码 |\n| `getHKCodeList` | 获取全部港股代码 |\n| `getAllAShareQuotes` | 获取全市场 A 股行情 |\n| `getAllHKShareQuotes` | 获取全市场港股行情 |\n| `getAllUSShareQuotes` | 获取全市场美股行情 |\n| `getAllQuotesByCodes` | 批量获取指定股票行情 |\n\n### 搜索\n\n| 方法 | 说明 |\n|------|------|\n| `search` | 搜索股票代码/名称/拼音 |\n\n---\n\n## 许可证\n\n[ISC](./LICENSE)\n\n---\n\n🌐 [官网](https://stock-sdk.linkdiary.cn) | 📦 [NPM](https://www.npmjs.com/package/stock-sdk) | 📖 [GitHub](https://github.com/chengzuopeng/stock-sdk) | 🎮 [在线演示](https://stock-sdk.linkdiary.cn/playground) | 🧭 [Stock Dashboard](https://chengzuopeng.github.io/stock-dashboard/) | 🐛 [Issues](https://github.com/chengzuopeng/stock-sdk/issues)\n\n---\n\n如果这个项目对你有帮助，欢迎 Star ⭐ 或提出 Issue 反馈。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchengzuopeng%2Fstock-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchengzuopeng%2Fstock-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchengzuopeng%2Fstock-sdk/lists"}