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

@itick/node-sdk

v1.0.3

Published

Official iTick API SDK for Node.js. Real-time & historical data for global Stocks, Forex, Crypto, Indices, Futures, Funds, Precious Metals. REST (OHLCV/K-line) + low-latency WebSocket. Promise-based, TypeScript-ready. For quant trading & fintech

Readme

npm version node version install size npm bundle size npm peer dependency license badge

English | 簡體中文 | 繁體中文

Node.js 版本的 iTick API SDK,提供基礎、股票、指數、期貨、基金、外匯、加密貨幣數據的 REST API 查詢和 WebSocket 實時數據訂閱功能。用於訪問 iTick API 的實時金融市場數據。

✨ 特性

  • 全面的市場覆蓋:訪問全球金融市場,包括股票、加密貨幣、外匯、指數、期貨和基金
  • 實時數據:基於 WebSocket 的實時數據流,支持自動重連
  • RESTful API:簡潔直觀的 REST API,用於獲取歷史數據和快照
  • 類型安全:完整的 TypeScript 支持和全面的類型定義
  • 自動重連:內置自動重連機制(5 秒間隔,可設置無限次嘗試)
  • 心跳保活:自動 ping/pong 機制(30 秒間隔)保持連接穩定
  • 模組化設計:按資產類型劃分獨立模組,結構更清晰
  • 靈活訂閱:支持報價、盤口、成交和 K 線數據訂閱

🚀 安裝

npm install @itick/node-sdk

環境要求:

  • Node.js >= 18.0.0

🎯 快速開始

基礎用法

import { StockClient } from "@itick/node-sdk";

// 使用 API Token 初始化客戶端
const token = process.env.ITICK_TOKEN;
const client = new StockClient(token);

// 獲取股票報價
async function getQuote() {
  try {
    const response = await client.getQuote({ region: "US", code: "AAPL" });

    if (response.code === 0 && response.data) {
      console.log("最新價格:", response.data.ld);
      console.log("漲跌幅:", response.data.chp);
    }
  } catch (error) {
    console.error("錯誤:", error.message);
  }
}

getQuote();

通過 WebSocket 獲取實時數據

import { CryptoClient } from "@itick/node-sdk";
const client = new CryptoClient(token);

// 創建帶訂閱數據的 WebSocket 連接 SDK內部已處理連接和重連後直接訂閱 subscribeData 數據 無需再發送訂閱數據
const socket = client.createSocket({
  maxReconnectTimes: 10, // 最大重連次數 不傳則使用默認值 0 無限制重連
  pingInterval: 30000, // ping 間隔 默認30 秒
  reconnectInterval: 5000, // 重連間隔 默認5 秒
  subscribeData: {
    codes: ["BTCUSDT$BA", "ETHUSDT$BA"],
    types: ["quote", "tick"],
  },
});

// 創建自定義 WebSocket 連接
const socket = client.createSocket();

// 連接成功或者重連連成功後發送訂閱數據
socket.onSocketOpen(() => {
  socket.subscribeData({
    codes: ["BTCUSDT$BA", "ETHUSDT$BA"],
    types: ["quote", "tick"],
  });
});

// 處理接收到的消息
socket.onSocketMessage((res) => {
  console.log("收到數據:", res);
});

// 處理錯誤
socket.onSocketError((error) => {
  console.error("WebSocket 錯誤:", error);
});

// 完成後斷開連接
// socket.disconnectSocket();

📚 API 參考

基礎模組

金融產品清單和市場節假日信息以及開市休市時間信息。

import { BaseClient } from "@itick/node-sdk";

const client = new BaseClient(token);

// 獲取值種列表
await client.getSymbolList({ type: "stock", region: "US" });
await client.getSymbolList({ type: "crypto", region: "BA" });
await client.getSymbolList({ type: "forex", region: "GB" });

// 獲取市場假期
await client.getSymbolHolidays("US");
await client.getSymbolHolidays("HK");

BaseClient 方法參考表

| 方法名 | 參數說明 | 返回值類型 | 描述 | 詳細參數 | | :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------- | :------------------------------------------------- | :----------------------------------------------------------------------- | | getSymbolList | options: Object- type:enum (產品類型,如 stock,forex,fund,future,indices) - region:string (市場區域代碼,如 US, BA, GB 等) | Promise<APIResponse<SymbolListData[]>> | 獲取指定市場和資產類型的金融產品清單(品種列表)。 | iTick 產品清單 | | getSymbolHolidays | region: string (市場區域代碼,如 US, HK 等) | Promise<APIResponse<HolidayData[]>> | 獲取指定市場的節假日信息,包括開市和休市時間安排。 | iTick 市場假期 |

股票模組

訪問美股、港股等全球股票市場數據。

import { StockClient } from "@itick/node-sdk";

const client = new StockClient(token);

// 獲取單只股票信息
await client.getInfo({ region: "US", code: "AAPL" });

// 獲取實時報價
await client.getQuote({ region: "US", code: "AAPL" });

// 獲取盤口深度
await client.getDepth({ region: "US", code: "AAPL" });

// 獲取最新成交
await client.getTick({ region: "US", code: "AAPL" });

// 獲取 K 線數據
await client.getKline({
  region: "US",
  code: "AAPL",
  interval: "5m",
  limit: 100,
});

// 批量查詢
await client.getQuotes({ region: "US", codes: ["AAPL", "MSFT", "GOOGL"] });
await client.getDepths({ region: "US", codes: ["AAPL", "MSFT"] });
await client.getTicks({ region: "US", codes: ["AAPL", "MSFT"] });
await client.getKlines({
  region: "US",
  codes: ["AAPL", "MSFT"],
  interval: "1d",
  limit: 50,
});

// IPO 信息
await client.getIPO({ region: "US", code: "RIVN" });

// 調整係數| 除權因子
await client.getSplit({ region: "US", code: "AAPL" });

StockClient 方法參考表

| 方法名 | 參數說明 | 返回值類型 | 描述 | 詳細參數 | | :--- | :--- | :--- | :--- | :--- | | getInfo | params: Object- region: string (市場編碼,如 US, HK 等)- code: string (股票代碼,如 AAPL)-exchange?:string (可選, 上市交易所, 如 NYSE, NASDAQ等) | Promise<APIResponse<StockInfo>> | 獲取股票基本信息 | iTick 股票信息 | | getIPO | params: Object- region: string (市場編碼,如 US, HK 等)- code: string (股票代碼,如 AAPL) | Promise<APIResponse<StockIPO>> | 獲取股票 IPO 信息 | iTick 股票 IPO | | getSplit | params: Object- region: string (市場編碼,如 US, HK 等)- code: string (股票代碼,如 AAPL) | Promise<APIResponse<StockSplit>> | 獲取股票除權因子調整係數 | iTick 股票除權因子 | | getTick | params: Object- region: string (市場編碼,如 US, HK 等)- code: string (股票代碼,如 AAPL) | Promise<APIResponse<TickData>> | 獲取單個股票最新成交行情 | iTick 股票實時成交 | | getQuote | params: Object- region: string (市場編碼,如 US, HK 等)- code: string (股票代碼,如 AAPL) | Promise<APIResponse<QuoteData>> | 獲取單個股票最新報價 | iTick 股票實時報價 | | getDepth | params: Object- region: string (市場編碼,如 US, HK 等)- code: string (股票代碼,如 AAPL) | Promise<APIResponse<DepthData>> | 獲取單個股票最新盤口 | iTick 股票實時盤口 | | getKline | options: GetKlineOptions- region: string (市場編碼)- code: string (股票代碼)- interval: KlineType (K 線週期類型)- limit: number (返回數據條數,最大 500)- et?: string \| number (可選,結束時間戳) | Promise<APIResponse<KlineData[]>> | 獲取單個股票 K 線數據 | iTick 股票 K 線 | | getTicks | params: Object- region: string (市場編碼)- codes: string[] \| string (股票代碼列表) | Promise<APIResponse<TickDataMap>> | 獲取多個股票最新成交行情 | iTick 股票批量成交 | | getQuotes | params: Object- region: string (市場編碼)- codes: string[] \| string (股票代碼列表) | Promise<APIResponse<QuoteDataMap>> | 獲取多個股票最新報價 | iTick 股票批量報價 | | getDepths | params: Object- region: string (市場編碼)- codes: string[] \| string (股票代碼列表) | Promise<APIResponse<DepthDataMap>> | 獲取多個股票最新盤口 | iTick 股票批量盤口 | | getKlines | options: GetKlineOptions- region: string (市場編碼)- codes: string[] \| string (股票代碼列表)- interval: KlineType (K 線週期類型)- limit: number (返回數據條數,最大 500)- et?: string \| number (可選,結束時間戳) | Promise<APIResponse<KlineDataMap>> | 獲取多個股票 K 線數據 | iTick 股票批量 K 線 | | createSocket | options?: CreateSocketOptions (可選,WebSocket 連接選項) | SocketClient | 創建 WebSocket 連接用於實時數據訂閱 | iTick WebSocket 股票 |

加密貨幣模組

訪問多個交易所的加密貨幣市場數據。

import { CryptoClient } from "@itick/node-sdk";

const client = new CryptoClient(token);

// 獲取實時數據
await client.getQuote({ region: "BA", code: "BTCUSDT" });
await client.getDepth({ region: "BA", code: "ETHUSDT" });
await client.getTick({ region: "BA", code: "BTCUSDT" });

// 獲取 K 線數據
await client.getKline({
  region: "BA",
  code: "BTCUSDT",
  interval: "1h",
  limit: 100,
});

// 批量查詢
await client.getQuotes({ region: "BA", codes: ["BTCUSDT", "ETHUSDT"] });

CryptoClient 方法參考表

| 方法名 | 參數說明 | 返回值類型 | 描述 | 詳細參數 | | :--- | :--- | :--- | :--- | :--- | | getTick | params: Object- region: string (市場編碼,如 BA, BT, PB 等)- code: string (標的代碼,如 BTCUSDT) | Promise<APIResponse<TickData>> | 獲取單個加密貨幣最新成交行情 | iTick 加密貨幣實時成交 | | getQuote | params: Object- region: string (市場編碼,如 BA, BT, PB 等)- code: string (標的代碼,如 BTCUSDT) | Promise<APIResponse<QuoteData>> | 獲取單個加密貨幣最新報價 | iTick 加密貨幣實時報價 | | getDepth | params: Object- region: string (市場編碼,如 BA, BT, PB 等)- code: string (標的代碼,如 BTCUSDT) | Promise<APIResponse<DepthData>> | 獲取單個加密貨幣最新盤口 | iTick 加密貨幣實時盤口 | | getKline | options: GetKlineOptions- region: string (市場編碼)- code: string (標的代碼)- interval: KlineType (K 線週期類型)- limit: number (返回數據條數,最大 500)- et?: string \| number (可選,結束時間戳) | Promise<APIResponse<KlineData[]>> | 獲取單個加密貨幣 K 線數據 | iTick 加密貨幣 K 線 | | getTicks | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<TickDataMap>> | 獲取多個加密貨幣最新成交行情 | iTick 加密貨幣批量成交 | | getQuotes | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<QuoteDataMap>> | 獲取多個加密貨幣最新報價 | iTick 加密貨幣批量報價 | | getDepths | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<DepthDataMap>> | 獲取多個加密貨幣最新盤口 | iTick 加密貨幣批量盤口 | | getKlines | options: GetKlineOptions- region: string (市場編碼)- codes: string[] \| string (標的代碼列表)- interval: KlineType (K 線週期類型)- limit: number (返回數據條數,最大 500)- et?: string \| number (可選,結束時間戳) | Promise<APIResponse<KlineDataMap>> | 獲取多個加密貨幣 K 線數據 | iTick 加密貨幣批量 K 線 | | createSocket | options?: CreateSocketOptions (可選,WebSocket 連接選項) | SocketClient | 創建 WebSocket 連接用於實時數據訂閱 | iTick WebSocket 加密貨幣 |

外匯模組

訪問外匯市場數據。

import { ForexClient } from "@itick/node-sdk";

const client = new ForexClient(token);

await client.getQuote({ region: "GB", code: "EURUSD" });
await client.getDepth({ region: "GB", code: "GBPUSD" });
await client.getTick({ region: "GB", code: "USDJPY" });
await client.getKline({ region: "GB", code: "EURUSD", interval: "1d", limit: 50 });

ForexClient 方法參考表

| 方法名 | 參數說明 | 返回值類型 | 描述 | 詳細參數 | | :--- | :--- | :--- | :--- | :--- | | getTick | params: Object- region: string (市場編碼,如 GB 等)- code: string (標的代碼,如 EURUSD) | Promise<APIResponse<TickData>> | 獲取單個外匯對最新成交行情 | iTick 外匯實時成交 | | getQuote | params: Object- region: string (市場編碼,如 GB 等)- code: string (標的代碼,如 EURUSD) | Promise<APIResponse<QuoteData>> | 獲取單個外匯對最新報價 | iTick 外匯實時報價 | | getDepth | params: Object- region: string (市場編碼,如 GB 等)- code: string (標的代碼,如 EURUSD) | Promise<APIResponse<DepthData>> | 獲取單個外匯對最新盤口 | iTick 外匯實時盤口 | | getKline | options: GetKlineOptions- region: string (市場編碼)- code: string (標的代碼)- interval: KlineType (K 線週期類型)- limit: number (返回數據條數,最大 500)- et?: string \| number (可選,結束時間戳) | Promise<APIResponse<KlineData[]>> | 獲取單個外匯對 K 線數據 | iTick 外匯 K 線 | | getTicks | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<TickDataMap>> | 獲取多個外匯對最新成交行情 | iTick 外匯批量成交 | | getQuotes | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<QuoteDataMap>> | 獲取多個外匯對最新報價 | iTick 外匯批量報價 | | getDepths | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<DepthDataMap>> | 獲取多個外匯對最新盤口 | iTick 外匯批量盤口 | | getKlines | options: GetKlineOptions- region: string (市場編碼)- codes: string[] \| string (標的代碼列表)- interval: KlineType (K 線週期類型)- limit: number (返回數據條數,最大 500)- et?: string \| number (可選,結束時間戳) | Promise<APIResponse<KlineDataMap>> | 獲取多個外匯對 K 線數據 | iTick 外匯批量 K 線 | | createSocket | options?: CreateSocketOptions (可選,WebSocket 連接選項) | SocketClient | 創建 WebSocket 連接用於實時數據訂閱 | iTick WebSocket 外匯 |

指數模組

訪問全球股票指數數據。

import { IndicesClient } from "@itick/node-sdk";

const client = new IndicesClient(token);

await client.getQuote({ region: "US", code: "SPX" });
await client.getDepth({ region: "US", code: "NDX" });
await client.getKline({ region: "US", code: "DJI", interval: "1w", limit: 20 });

IndicesClient 方法參考表

| 方法名 | 參數說明 | 返回值類型 | 描述 | 詳細參數 | | :--- | :--- | :--- | :--- | :--- | | getTick | params: Object- region: string (市場編碼,如 US, GB 等)- code: string (標的代碼,如 DJI, SPX) | Promise<APIResponse<TickData>> | 獲取單個指數最新成交行情 | iTick 指數實時成交 | | getQuote | params: Object- region: string (市場編碼,如 US, GB 等)- code: string (標的代碼,如 DJI, SPX) | Promise<APIResponse<QuoteData>> | 獲取單個指數最新報價 | iTick 指數實時報價 | | getDepth | params: Object- region: string (市場編碼,如 US, GB 等)- code: string (標的代碼,如 DJI, SPX) | Promise<APIResponse<DepthData>> | 獲取單個指數最新盤口 | iTick 指數實時盤口 | | getKline | options: GetKlineOptions- region: string (市場編碼)- code: string (標的代碼)- interval: KlineType (K 線週期類型)- limit: number (返回數據條數,最大 500)- et?: string \| number (可選,結束時間戳) | Promise<APIResponse<KlineData[]>> | 獲取單個指數 K 線數據 | iTick 指數 K 線 | | getTicks | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<TickDataMap>> | 獲取多個指數最新成交行情 | iTick 指數批量成交 | | getQuotes | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<QuoteDataMap>> | 獲取多個指數最新報價 | iTick 指數批量報價 | | getDepths | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<DepthDataMap>> | 獲取多個指數最新盤口 | iTick 指數批量盤口 | | getKlines | options: GetKlineOptions- region: string (市場編碼)- codes: string[] \| string (標的代碼列表)- interval: KlineType (K 線週期類型)- limit: number (返回數據條數,最大 500)- et?: string \| number (可選,結束時間戳) | Promise<APIResponse<KlineDataMap>> | 獲取多個指數 K 線數據 | iTick 指數批量 K 線 | | createSocket | options?: CreateSocketOptions (可選,WebSocket 連接選項) | SocketClient | 創建 WebSocket 連接用於實時數據訂閱 | iTick WebSocket 指數 |

期貨模組

訪問期貨市場數據。

import { FutureClient } from "@itick/node-sdk";

const client = new FutureClient(token);

await client.getQuote({ region: "US", code: "ES" });
await client.getDepth({ region: "US", code: "NQ" });
await client.getKline({ region: "US", code: "CL", interval: "5m", limit: 100 });

FutureClient 方法參考表

| 方法名 | 參數說明 | 返回值類型 | 描述 | 詳細參數 | | :--- | :--- | :--- | :--- | :--- | | getTick | params: Object- region: string (市場編碼,如 US, CN, HK 等)- code: string (標的代碼,如 CL, GC) | Promise<APIResponse<TickData>> | 獲取單個期貨合約最新成交行情 | iTick 期貨實時成交 | | getQuote | params: Object- region: string (市場編碼,如 US, CN, HK 等)- code: string (標的代碼,如 CL, GC) | Promise<APIResponse<QuoteData>> | 獲取單個期貨合約最新報價 | iTick 期貨實時報價 | | getDepth | params: Object- region: string (市場編碼,如 US, CN, HK 等)- code: string (標的代碼,如 CL, GC) | Promise<APIResponse<DepthData>> | 獲取單個期貨合約最新盤口 | iTick 期貨實時盤口 | | getKline | options: GetKlineOptions- region: string (市場編碼)- code: string (標的代碼)- interval: KlineType (K 線週期類型)- limit: number (返回數據條數,最大 500)- et?: string \| number (可選,結束時間戳) | Promise<APIResponse<KlineData[]>> | 獲取單個期貨合約 K 線數據 | iTick 期貨 K 線 | | getTicks | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<TickDataMap>> | 獲取多個期貨合約最新成交行情 | iTick 期貨批量成交 | | getQuotes | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<QuoteDataMap>> | 獲取多個期貨合約最新報價 | iTick 期貨批量報價 | | getDepths | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<DepthDataMap>> | 獲取多個期貨合約最新盤口 | iTick 期貨批量盤口 | | getKlines | options: GetKlineOptions- region: string (市場編碼)- codes: string[] \| string (標的代碼列表)- interval: KlineType (K 線週期類型)- limit: number (返回數據條數,最大 500)- et?: string \| number (可選,結束時間戳) | Promise<APIResponse<KlineDataMap>> | 獲取多個期貨合約 K 線數據 | iTick 期貨批量 K 線 | | createSocket | options?: CreateSocketOptions (可選,WebSocket 連接選項) | SocketClient | 創建 WebSocket 連接用於實時數據訂閱 | iTick WebSocket 期貨 |

基金模組

訪問共同基金和 ETF 數據。

import { FundClient } from "@itick/node-sdk";

const client = new FundClient(token);

await client.getQuote({ region: "US", code: "VOO" });
await client.getDepth({ region: "US", code: "QQQ" });
await client.getKline({ region: "US", code: "SPY", interval: "1d", limit: 100 });

FundClient 方法參考表

| 方法名 | 參數說明 | 返回值類型 | 描述 | 詳細參數 | | :--- | :--- | :--- | :--- | :--- | | getTick | params: Object- region: string (市場編碼,如 US, HK 等)- code: string (標的代碼,如 SPY, QQQ) | Promise<APIResponse<TickData>> | 獲取單個基金最新成交行情 | iTick 基金實時成交 | | getQuote | params: Object- region: string (市場編碼,如 US, HK 等)- code: string (標的代碼,如 SPY, QQQ) | Promise<APIResponse<QuoteData>> | 獲取單個基金最新報價 | iTick 基金實時報價 | | getDepth | params: Object- region: string (市場編碼,如 US, HK 等)- code: string (標的代碼,如 SPY, QQQ) | Promise<APIResponse<DepthData>> | 獲取單個基金最新盤口 | iTick 基金實時盤口 | | getKline | options: GetKlineOptions- region: string (市場編碼)- code: string (標的代碼)- interval: KlineType (K 線週期類型)- limit: number (返回數據條數,最大 500)- et?: string \| number (可選,結束時間戳) | Promise<APIResponse<KlineData[]>> | 獲取單個基金 K 線數據 | iTick 基金 K 線 | | getTicks | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<TickDataMap>> | 獲取多個基金最新成交行情 | iTick 基金批量成交 | | getQuotes | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<QuoteDataMap>> | 獲取多個基金最新報價 | iTick 基金批量報價 | | getDepths | params: Object- region: string (市場編碼)- codes: string[] \| string (標的代碼列表) | Promise<APIResponse<DepthDataMap>> | 獲取多個基金最新盤口 | iTick 基金批量盤口 | | getKlines | options: GetKlineOptions- region: string (市場編碼)- codes: string[] \| string (標的代碼列表)- interval: KlineType (K 線週期類型)- limit: number (返回數據條數,最大 500)- et?: string \| number (可選,結束時間戳) | Promise<APIResponse<KlineDataMap>> | 獲取多個基金 K 線數據 | iTick 基金批量 K 線 | | createSocket | options?: CreateSocketOptions (可選,WebSocket 連接選項) | SocketClient | 創建 WebSocket 連接用於實時數據訂閱 | iTick WebSocket 基金 |

🔌 WebSocket 實時數據

支持的數據類型

  • quote:實時報價
  • depth:盤口深度
  • tick:最新成交
  • kline@1mkline@1:1 分鐘 K 線
  • kline@5mkline@2:5 分鐘 K 線
  • kline@15mkline@3:15 分鐘 K 線
  • kline@30mkline@4:30 分鐘 K 線
  • kline@1hkline@5:1 小時 K 線
  • kline@2hkline@6:2 小時 K 線(僅加密貨幣)
  • kline@4hkline@7:4 小時 K 線(僅加密貨幣)
  • kline@1dkline@8:日線
  • kline@1wkline@9:周線
  • kline@1Mkline@10:月線

連接選項

const socket = client.createSocket({
  maxReconnectTimes: 10, // 最大重連次數(0 = 無限)
  reconnectInterval: 5000, // 重連間隔(毫秒)
  pingInterval: 30000, // Ping 間隔(毫秒)
  subscribeData: {
    codes: ["AAPL$US", "MSFT$US"],
    types: ["quote", "tick", "kline@1m"],
  },
});

事件處理器

// 連接打開
socket.onSocketOpen(() => {
  console.log("已連接!");
});

// 接收消息
socket.onSocketMessage((data) => {
  console.log("收到數據:", data);
});

// 發生錯誤
socket.onSocketError((error) => {
  console.error("錯誤:", error);
});

// 連接關閉
socket.onSocketClose(() => {
  console.log("已斷開");
});

// 檢查連接狀態
const isConnected = socket.checkSocketConnected();

// 斷開連接
socket.disconnectSocket();

動態訂閱

// 連接後訂閱
socket.subscribeSocket({
  ac: "subscribe",
  types: ["quote", "depth"],
  codes: ["TSLA$US", "NVDA$US"],
});

// 取消訂閱
socket.subscribeSocket({
  ac: "unsubscribe",
  types: ["tick"],
  codes: ["AAPL$US"],
});

⚠️ 錯誤處理

try {
  const response = await client.getQuote({ region: "US", code: "AAPL" });

  if (response.code !== 0) {
    console.error("API 錯誤:", response.msg);
    return;
  }

  // 處理數據
  console.log(response.data);
} catch (error) {
  if (error instanceof Error) {
    console.error("網絡錯誤:", error.message);
  }
}

📘 TypeScript 支持

完整的 TypeScript 支持和全面的類型定義:

import type {
  APIResponse,
  QuoteData,
  SocketKlineData,
  SocketTickData,
  SocketDepthData,
  SocketQuoteData,
} from "@itick/node-sdk";

// 類型安全的響應
const response: APIResponse<QuoteData> = await client.getQuote({
  region: "US",
  code: "AAPL",
});

// 類型安全的 WebSocket 消息
socket.onSocketMessage((response) => {
  const { code, data, msg, resAc } = response;
  if (data?.type === "quote") {
    const quoteData: SocketQuoteData = data;
  }
  if (data?.type === "kline@1") {
    const klineData: SocketKlineData = data;
  }
  if (data?.type === "tick") {
    const tickData: SocketTickData = data;
  }
  if (data?.type === "depth") {
    const depthData: SocketDepthData = data;
  }
});

📖 文檔

📄 許可證

MIT 許可證 - 查看 LICENSE 文件了解詳情。

🤝 貢獻

歡迎貢獻!請隨時提交 Pull Request。

📧 支持


由 iTick 團隊用 ❤️ 製作