博客 / 詳情

返回

寫給前端的股票行情 SDK: stock-sdk,終於不用再求後端幫忙了

用 JavaScript 獲取股票數據,真的有這麼難嗎?

起因

説實話,這個項目的誕生完全是被逼出來的。

去年我想做一個股票行情看板,就是那種簡單的頁面,能實時顯示幾隻自選股的漲跌。聽起來很簡單對吧?但當我真正開始動手的時候,才發現事情沒那麼簡單。

網上搜一圈,股票數據接口相關的工具幾乎全是 Python 的。AkShare、Tushare、掘金量化……確實牛,功能也確實全,但問題是——我是個前端啊

為了一個小看板,難道要我專門搭一個 Python 後端?再寫個接口轉發給前端?這也太折騰了。

於是我開始找有沒有 JavaScript 能用的方案。結果你猜怎麼着?翻遍了 npm,幾乎找不到一個好用的。有的年久失修,有的只支持 Node.js 不支持瀏覽器,有的類型支持一塌糊塗,還有的接口莫名其妙就掛了。

摸索了一圈之後,我決定:算了,自己寫一個得了。

stock-sdk 是什麼?

簡單説,stock-sdk 就是一個專門給前端和 Node.js 用的股票行情 SDK。

核心目標就一個:讓你用最熟悉的 JavaScript / TypeScript,10 行代碼搞定股票數據獲取。

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}%)`);
});

就這麼簡單。不用搭後端,不用裝 Python,瀏覽器裏直接跑。

它能幹什麼?

寫到現在,功能已經比較齊全了:

行情數據

  • A 股、港股、美股、公募基金的實時行情
  • 歷史 K 線(日線、周線、月線)
  • 分鐘 K 線(1 分鐘到 60 分鐘都支持)
  • 當日分時走勢

板塊數據

  • 行業板塊、概念板塊的列表和實時行情
  • 板塊成分股
  • 板塊 K 線數據

技術指標

  • 內置 MA、MACD、BOLL、KDJ、RSI 等常用指標
  • 一個接口搞定 K 線 + 指標計算

擴展數據

  • 資金流向
  • 盤口大單
  • A 股交易日曆

批量能力

  • 一次性獲取全市場 5000+ 只 A 股行情
  • 內置併發控制,不會把接口打掛
  • 進度回調,知道當前拉取到哪裏了

為什麼要用它?

説實話,這個問題我自己也想過很久。畢竟市面上不是沒有其他方案。

但仔細想想,stock-sdk 確實解決了一些痛點:

1. 零依賴,真的很小

壓縮後不到 20KB。沒有亂七八糟的依賴,不會給你的項目增加額外負擔。

2. 瀏覽器和 Node.js 都能跑

這個是我一開始就確定的設計目標。不管你是做 Web 頁面還是 Node.js 腳本,都能直接用。同時提供 ESM 和 CommonJS 兩種格式,現代項目和老項目都兼容。

3. TypeScript 類型完整

説真的,類型提示這個東西,用過就回不去了。每個接口返回什麼字段、每個參數是什麼類型,IDE 裏一目瞭然。寫代碼的時候不用反覆查文檔。

4. 接口穩定

數據源用的是騰訊財經和東方財富的公開接口,穩定性還是有保障的。而且我做了比較完善的錯誤處理,不會因為某個請求失敗就整個崩掉。

適合什麼場景?

這個 SDK 不是萬能的,我也不打算把它做成大而全的東西。它比較適合這些場景:

  • 股票看板:做一個自選股頁面,看看漲跌
  • 數據可視化:用 ECharts 或者 TradingView 畫 K 線圖
  • 學習 Demo:金融課程、量化入門的演示項目
  • 量化驗證:快速驗證一個交易策略的想法
  • 定時腳本:Node.js 定時抓取行情數據

如果你需要更專業的量化回測、高頻交易之類的,這個 SDK 可能就不太夠用了。那種場景還是 Python 生態更成熟。

一些實際的例子

獲取全市場 A 股行情

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

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

5000 多隻股票,幾秒鐘就拉完了。併發控制是內置的,不用自己操心。

獲取帶技術指標的 K 線

const data = await sdk.getKlineWithIndicators('sh600519', {
  period: 'daily',
  count: 100,
  indicators: {
    ma: { periods: [5, 10, 20] },
    macd: true,
    boll: true,
  },
});

// data.kline 是原始 K 線
// data.indicators.ma 是均線數據
// data.indicators.macd 是 MACD 數據
// data.indicators.boll 是布林帶數據

一個接口把 K 線和指標都算好了,直接拿去畫圖就行。

寫在最後

這個項目從去年開始寫,斷斷續續維護到現在,功能也越來越完善了。

其實我一直覺得,工具這個東西,好不好用自己最清楚。stock-sdk 就是我自己在用的東西,遇到問題就修,需要新功能就加。

如果你也是前端,也需要獲取股票數據,不妨試試。有問題歡迎提 Issue,我會盡量響應。


相關鏈接

  • 📦 NPM
  • 📖 GitHub
  • 🌐 官方文檔
  • 🎮 在線演示

安裝就一行命令:

npm install stock-sdk

如果覺得還不錯,給個 Star ⭐ 唄~

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.