Skip to content

itick-org/nodejs-sdk

Repository files navigation

iTick logo

iTick Node.js SDK

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

English | 简体中文 | 繁體中文

The Node.js SDK for iTick API, providing REST API queries and WebSocket real-time data subscription for basics, stocks, indices, futures, funds, forex, and cryptocurrencies. Used to access real-time financial market data from the iTick API.

✨ Features

  • Comprehensive Market Coverage: Access global financial markets including stocks, cryptocurrencies, forex, indices, futures, and funds
  • Real-time Data: WebSocket-based real-time data streaming with automatic reconnection support
  • RESTful API: Clean and intuitive REST API for retrieving historical data and snapshots
  • Type Safety: Full TypeScript support with comprehensive type definitions
  • Auto Reconnection: Built-in automatic reconnection mechanism (5-second interval, configurable unlimited attempts)
  • Heartbeat Keep-alive: Automatic ping/pong mechanism (30-second interval) to maintain stable connections
  • Modular Design: Independent modules organized by asset type for clearer structure
  • Flexible Subscription: Support for subscribing to quotes, order book depth, trades, and candlestick data

🚀 Installation

npm install @itick/node-sdk

Requirements:

  • Node.js >= 18.0.0

🎯 Quick Start

Basic Usage

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

// Initialize client with API Token
const token = process.env.ITICK_TOKEN;
const client = new StockClient(token);

// Get stock quote
async function getQuote() {
  try {
    const response = await client.getQuote({ region: "US", code: "AAPL" });

    if (response.code === 0 && response.data) {
      console.log("Latest Price:", response.data.ld);
      console.log("Change %:", response.data.chp);
    }
  } catch (error) {
    console.error("Error:", error.message);
  }
}

getQuote();

Real-time Data via WebSocket

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

// Create WebSocket connection with subscription data - SDK handles connection and automatically subscribes after reconnection, no need to send subscription data again
const socket = client.createSocket({
  maxReconnectTimes: 10, // Maximum reconnection attempts, default is 0 (unlimited)
  pingInterval: 30000, // Ping interval, default 30 seconds
  reconnectInterval: 5000, // Reconnection interval, default 5 seconds
  subscribeData: {
    codes: ["BTCUSDT$BA", "ETHUSDT$BA"],
    types: ["quote", "tick"],
  },
});

// Create custom WebSocket connection
const socket = client.createSocket();

// Send subscription data after successful connection or reconnection
socket.onSocketOpen(() => {
  socket.subscribeData({
    codes: ["BTCUSDT$BA", "ETHUSDT$BA"],
    types: ["quote", "tick"],
  });
});

// Handle received messages
socket.onSocketMessage((res) => {
  console.log("Received data:", res);
});

// Handle errors
socket.onSocketError((error) => {
  console.error("WebSocket error:", error);
});

// Disconnect when done
// socket.disconnectSocket();

📚 API Reference

Base Module

Financial instrument listings, market holiday information, and trading hours.

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

const client = new BaseClient(token);

// Get symbol list
await client.getSymbolList({ type: "stock", region: "US" });
await client.getSymbolList({ type: "crypto", region: "BA" });
await client.getSymbolList({ type: "forex", region: "GB" });

// Get market holidays
await client.getSymbolHolidays("US");
await client.getSymbolHolidays("HK");

BaseClient Method Reference Table

Method Name Parameters Return Type Description Details
getSymbolList options: Object
- type:enum (Product type, e.g., stock,forex,fund,future,indices)
- region:string (Market region code, e.g., US, BA, GB, etc.)
Promise<APIResponse<SymbolListData[]>> Get financial instrument listings (symbol list) for specified market and asset type. iTick Symbol List
getSymbolHolidays region: string (Market region code, e.g., US, HK, etc.) Promise<APIResponse<HolidayData[]>> Get holiday information for specified market, including trading hours schedule. iTick Market Holidays

Stock Module

Access global stock market data including US stocks, Hong Kong stocks, etc.

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

const client = new StockClient(token);

// Get single stock information
await client.getInfo({ region: "US", code: "AAPL" });

// Get real-time quote
await client.getQuote({ region: "US", code: "AAPL" });

// Get order book depth
await client.getDepth({ region: "US", code: "AAPL" });

// Get latest trade
await client.getTick({ region: "US", code: "AAPL" });

// Get candlestick data
await client.getKline({
  region: "US",
  code: "AAPL",
  interval: "5m",
  limit: 100,
});

// Batch queries
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 information
await client.getIPO({ region: "US", code: "RIVN" });

// Stock split information
await client.getSplit({ region: "US", code: "AAPL" });

StockClient Method Reference Table

Method Name Parameters Return Type Description Details
getInfo params: Object
- region: string (Market code, e.g., US, HK, etc.)
- code: string (Stock code, e.g., AAPL)
-exchange?:string (Optional, Exchange code e.g., NYSE, NASDAQ)
Promise<APIResponse<StockInfo>> Get basic stock information iTick Stock Info
getIPO params: Object
- region: string (Market code, e.g., US, HK, etc.)
- code: string (Stock code, e.g., AAPL)
Promise<APIResponse<StockIPO>> Get stock IPO information iTick Stock IPO
getSplit params: Object
- region: string (Market code, e.g., US, HK, etc.)
- code: string (Stock code, e.g., AAPL)
Promise<APIResponse<StockSplit>> Get stock ex-rights and dividend information iTick Stock Split
getTick params: Object
- region: string (Market code, e.g., US, HK, etc.)
- code: string (Stock code, e.g., AAPL)
Promise<APIResponse<TickData>> Get latest trade data for a single stock iTick Stock Real-time Tick
getQuote params: Object
- region: string (Market code, e.g., US, HK, etc.)
- code: string (Stock code, e.g., AAPL)
Promise<APIResponse<QuoteData>> Get latest quote for a single stock iTick Stock Real-time Quote
getDepth params: Object
- region: string (Market code, e.g., US, HK, etc.)
- code: string (Stock code, e.g., AAPL)
Promise<APIResponse<DepthData>> Get latest order book depth for a single stock iTick Stock Real-time Depth
getKlines options: GetKlineOptions
- region: string (Market code)
- code: string (Stock code)
- interval: KlineType (Candlestick period type)
- limit: number (Number of data points returned, max 500)
- et?: string | number (Optional, end timestamp)
Promise<APIResponse<KlineData[]>> Get candlestick data for a single stock iTick Stock K-line
getTicks params: Object
- region: string (Market code)
- codes: string[] | string (Stock code list)
Promise<APIResponse<TickDataMap>> Get latest trade data for multiple stocks iTick Stock Batch Ticks
getQuotes params: Object
- region: string (Market code)
- codes: string[] | string (Stock code list)
Promise<APIResponse<QuoteDataMap>> Get latest quotes for multiple stocks iTick Stock Batch Quotes
getDepths params: Object
- region: string (Market code)
- codes: string[] | string (Stock code list)
Promise<APIResponse<DepthDataMap>> Get latest order book depth for multiple stocks iTick Stock Batch Depths
getKline options: GetKlinesOptions
- region: string (Market code)
- codes: string[] | string (Stock code list)
- interval: KlineType (Candlestick period type)
- limit: number (Number of data points returned, max 500)
- et?: string | number (Optional, end timestamp)
Promise<APIResponse<KlineDataMap>> Get candlestick data for multiple stocks iTick Stock Batch K-lines
createSocket options?: CreateSocketOptions (Optional, WebSocket connection options) SocketClient Create WebSocket connection for real-time data subscription iTick WebSocket Stocks

Cryptocurrency Module

Access cryptocurrency market data from multiple exchanges.

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

const client = new CryptoClient(token);

// Get real-time data
await client.getQuote({ region: "BA", code: "BTCUSDT" });
await client.getDepth({ region: "BA", code: "ETHUSDT" });
await client.getTick({ region: "BA", code: "BTCUSDT" });

// Get candlestick data
await client.getKline({
  region: "BA",
  code: "BTCUSDT",
  interval: "1h",
  limit: 100,
});

// Batch queries
await client.getQuotes({ region: "BA", codes: ["BTCUSDT", "ETHUSDT"] });

CryptoClient Method Reference Table

Method Name Parameters Return Type Description Details
getTick params: Object
- region: string (Market code, e.g., BA, BT, PB, etc.)
- code: string (Symbol code, e.g., BTCUSDT)
Promise<APIResponse<TickData>> Get latest trade data for a single cryptocurrency iTick Crypto Real-time Tick
getQuote params: Object
- region: string (Market code, e.g., BA, BT, PB, etc.)
- code: string (Symbol code, e.g., BTCUSDT)
Promise<APIResponse<QuoteData>> Get latest quote for a single cryptocurrency iTick Crypto Real-time Quote
getDepth params: Object
- region: string (Market code, e.g., BA, BT, PB, etc.)
- code: string (Symbol code, e.g., BTCUSDT)
Promise<APIResponse<DepthData>> Get latest order book depth for a single cryptocurrency iTick Crypto Real-time Depth
getKlines options: GetKlineOptions
- region: string (Market code)
- code: string (Symbol code)
- interval: KlineType (Candlestick period type)
- limit: number (Number of data points returned, max 500)
- et?: string | number (Optional, end timestamp)
Promise<APIResponse<KlineData[]>> Get candlestick data for a single cryptocurrency iTick Crypto K-line
getTicks params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<TickDataMap>> Get latest trade data for multiple cryptocurrencies iTick Crypto Batch Ticks
getQuotes params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<QuoteDataMap>> Get latest quotes for multiple cryptocurrencies iTick Crypto Batch Quotes
getDepths params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<DepthDataMap>> Get latest order book depth for multiple cryptocurrencies iTick Crypto Batch Depths
getKline options: GetKlinesOptions
- region: string (Market code)
- codes: string[] | string (Symbol code list)
- interval: KlineType (Candlestick period type)
- limit: number (Number of data points returned, max 500)
- et?: string | number (Optional, end timestamp)
Promise<APIResponse<KlineDataMap>> Get candlestick data for multiple cryptocurrencies iTick Crypto Batch K-lines
createSocket options?: CreateSocketOptions (Optional, WebSocket connection options) SocketClient Create WebSocket connection for real-time data subscription iTick WebSocket Crypto

Forex Module

Access foreign exchange market data.

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 Method Reference Table

Method Name Parameters Return Type Description Details
getTick params: Object
- region: string (Market code, e.g., GB, etc.)
- code: string (Symbol code, e.g., EURUSD)
Promise<APIResponse<TickData>> Get latest trade data for a single currency pair iTick Forex Real-time Tick
getQuote params: Object
- region: string (Market code, e.g., GB, etc.)
- code: string (Symbol code, e.g., EURUSD)
Promise<APIResponse<QuoteData>> Get latest quote for a single currency pair iTick Forex Real-time Quote
getDepth params: Object
- region: string (Market code, e.g., GB, etc.)
- code: string (Symbol code, e.g., EURUSD)
Promise<APIResponse<DepthData>> Get latest order book depth for a single currency pair iTick Forex Real-time Depth
getKlines options: GetKlineOptions
- region: string (Market code)
- code: string (Symbol code)
- interval: KlineType (Candlestick period type)
- limit: number (Number of data points returned, max 500)
- et?: string | number (Optional, end timestamp)
Promise<APIResponse<KlineData[]>> Get candlestick data for a single currency pair iTick Forex K-line
getTicks params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<TickDataMap>> Get latest trade data for multiple currency pairs iTick Forex Batch Ticks
getQuotes params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<QuoteDataMap>> Get latest quotes for multiple currency pairs iTick Forex Batch Quotes
getDepths params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<DepthDataMap>> Get latest order book depth for multiple currency pairs iTick Forex Batch Depths
getKline options: GetKlinesOptions
- region: string (Market code)
- codes: string[] | string (Symbol code list)
- interval: KlineType (Candlestick period type)
- limit: number (Number of data points returned, max 500)
- et?: string | number (Optional, end timestamp)
Promise<APIResponse<KlineDataMap>> Get candlestick data for multiple currency pairs iTick Forex Batch K-lines
createSocket options?: CreateSocketOptions (Optional, WebSocket connection options) SocketClient Create WebSocket connection for real-time data subscription iTick WebSocket Forex

Indices Module

Access global stock index data.

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 Method Reference Table

Method Name Parameters Return Type Description Details
getTick params: Object
- region: string (Market code, e.g., US, GB, etc.)
- code: string (Symbol code, e.g., DJI, SPX)
Promise<APIResponse<TickData>> Get latest trade data for a single index iTick Indices Real-time Tick
getQuote params: Object
- region: string (Market code, e.g., US, GB, etc.)
- code: string (Symbol code, e.g., DJI, SPX)
Promise<APIResponse<QuoteData>> Get latest quote for a single index iTick Indices Real-time Quote
getDepth params: Object
- region: string (Market code, e.g., US, GB, etc.)
- code: string (Symbol code, e.g., DJI, SPX)
Promise<APIResponse<DepthData>> Get latest order book depth for a single index iTick Indices Real-time Depth
getKlines options: GetKlineOptions
- region: string (Market code)
- code: string (Symbol code)
- interval: KlineType (Candlestick period type)
- limit: number (Number of data points returned, max 500)
- et?: string | number (Optional, end timestamp)
Promise<APIResponse<KlineData[]>> Get candlestick data for a single index iTick Indices K-line
getTicks params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<TickDataMap>> Get latest trade data for multiple indices iTick Indices Batch Ticks
getQuotes params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<QuoteDataMap>> Get latest quotes for multiple indices iTick Indices Batch Quotes
getDepths params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<DepthDataMap>> Get latest order book depth for multiple indices iTick Indices Batch Depths
getKline options: GetKlinesOptions
- region: string (Market code)
- codes: string[] | string (Symbol code list)
- interval: KlineType (Candlestick period type)
- limit: number (Number of data points returned, max 500)
- et?: string | number (Optional, end timestamp)
Promise<APIResponse<KlineDataMap>> Get candlestick data for multiple indices iTick Indices Batch K-lines
createSocket options?: CreateSocketOptions (Optional, WebSocket connection options) SocketClient Create WebSocket connection for real-time data subscription iTick WebSocket Indices

Futures Module

Access futures market data.

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 Method Reference Table

Method Name Parameters Return Type Description Details
getTick params: Object
- region: string (Market code, e.g., US, CN, HK, etc.)
- code: string (Symbol code, e.g., CL, GC)
Promise<APIResponse<TickData>> Get latest trade data for a single futures contract iTick Futures Real-time Tick
getQuote params: Object
- region: string (Market code, e.g., US, CN, HK, etc.)
- code: string (Symbol code, e.g., CL, GC)
Promise<APIResponse<QuoteData>> Get latest quote for a single futures contract iTick Futures Real-time Quote
getDepth params: Object
- region: string (Market code, e.g., US, CN, HK, etc.)
- code: string (Symbol code, e.g., CL, GC)
Promise<APIResponse<DepthData>> Get latest order book depth for a single futures contract iTick Futures Real-time Depth
getKlines options: GetKlineOptions
- region: string (Market code)
- code: string (Symbol code)
- interval: KlineType (Candlestick period type)
- limit: number (Number of data points returned, max 500)
- et?: string | number (Optional, end timestamp)
Promise<APIResponse<KlineData[]>> Get candlestick data for a single futures contract iTick Futures K-line
getTicks params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<TickDataMap>> Get latest trade data for multiple futures contracts iTick Futures Batch Ticks
getQuotes params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<QuoteDataMap>> Get latest quotes for multiple futures contracts iTick Futures Batch Quotes
getDepths params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<DepthDataMap>> Get latest order book depth for multiple futures contracts iTick Futures Batch Depths
getKline options: GetKlinesOptions
- region: string (Market code)
- codes: string[] | string (Symbol code list)
- interval: KlineType (Candlestick period type)
- limit: number (Number of data points returned, max 500)
- et?: string | number (Optional, end timestamp)
Promise<APIResponse<KlineDataMap>> Get candlestick data for multiple futures contracts iTick Futures Batch K-lines
createSocket options?: CreateSocketOptions (Optional, WebSocket connection options) SocketClient Create WebSocket connection for real-time data subscription iTick WebSocket Futures

Funds Module

Access mutual fund and ETF data.

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 Method Reference Table

Method Name Parameters Return Type Description Details
getTick params: Object
- region: string (Market code, e.g., US, HK, etc.)
- code: string (Symbol code, e.g., SPY, QQQ)
Promise<APIResponse<TickData>> Get latest trade data for a single fund iTick Fund Real-time Tick
getQuote params: Object
- region: string (Market code, e.g., US, HK, etc.)
- code: string (Symbol code, e.g., SPY, QQQ)
Promise<APIResponse<QuoteData>> Get latest quote for a single fund iTick Fund Real-time Quote
getDepth params: Object
- region: string (Market code, e.g., US, HK, etc.)
- code: string (Symbol code, e.g., SPY, QQQ)
Promise<APIResponse<DepthData>> Get latest order book depth for a single fund iTick Fund Real-time Depth
getKlines options: GetKlineOptions
- region: string (Market code)
- code: string (Symbol code)
- interval: KlineType (Candlestick period type)
- limit: number (Number of data points returned, max 500)
- et?: string | number (Optional, end timestamp)
Promise<APIResponse<KlineData[]>> Get candlestick data for a single fund iTick Fund K-line
getTicks params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<TickDataMap>> Get latest trade data for multiple funds iTick Fund Batch Ticks
getQuotes params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<QuoteDataMap>> Get latest quotes for multiple funds iTick Fund Batch Quotes
getDepths params: Object
- region: string (Market code)
- codes: string[] | string (Symbol code list)
Promise<APIResponse<DepthDataMap>> Get latest order book depth for multiple funds iTick Fund Batch Depths
getKline options: GetKlinesOptions
- region: string (Market code)
- codes: string[] | string (Symbol code list)
- interval: KlineType (Candlestick period type)
- limit: number (Number of data points returned, max 500)
- et?: string | number (Optional, end timestamp)
Promise<APIResponse<KlineDataMap>> Get candlestick data for multiple funds iTick Fund Batch K-lines
createSocket options?: CreateSocketOptions (Optional, WebSocket connection options) SocketClient Create WebSocket connection for real-time data subscription iTick WebSocket Funds

🔌 WebSocket Real-time Data

Supported Data Types

  • quote: Real-time quote
  • depth: Order book depth
  • tick: Latest trade
  • kline@1m or kline@1: 1-minute candlestick
  • kline@5m or kline@2: 5-minute candlestick
  • kline@15m or kline@3: 15-minute candlestick
  • kline@30m or kline@4: 30-minute candlestick
  • kline@1h or kline@5: 1-hour candlestick
  • kline@2h or kline@6: 2-hour candlestick (crypto only)
  • kline@4h or kline@7: 4-hour candlestick (crypto only)
  • kline@1d or kline@8: Daily candlestick
  • kline@1w or kline@9: Weekly candlestick
  • kline@1M or kline@10: Monthly candlestick

Connection Options

const socket = client.createSocket({
  maxReconnectTimes: 10, // Maximum reconnection attempts (0 = unlimited)
  reconnectInterval: 5000, // Reconnection interval (milliseconds)
  pingInterval: 30000, // Ping interval (milliseconds)
  subscribeData: {
    codes: ["AAPL$US", "MSFT$US"],
    types: ["quote", "tick", "kline@1m"],
  },
});

Event Handlers

// Connection opened
socket.onSocketOpen(() => {
  console.log("Connected!");
});

// Receive messages
socket.onSocketMessage((data) => {
  console.log("Received data:", data);
});

// Error occurred
socket.onSocketError((error) => {
  console.error("Error:", error);
});

// Connection closed
socket.onSocketClose(() => {
  console.log("Disconnected");
});

// Check connection status
const isConnected = socket.checkSocketConnected();

// Disconnect
socket.disconnectSocket();

Dynamic Subscription

// Subscribe after connection
socket.subscribeSocket({
  ac: "subscribe",
  types: ["quote", "depth"],
  codes: ["TSLA$US", "NVDA$US"],
});

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

⚠️ Error Handling

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

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

  // Process data
  console.log(response.data);
} catch (error) {
  if (error instanceof Error) {
    console.error("Network Error:", error.message);
  }
}

📘 TypeScript Support

Full TypeScript support with comprehensive type definitions:

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

// Type-safe response
const response: APIResponse<QuoteData> = await client.getQuote({
  region: "US",
  code: "AAPL",
});

// Type-safe WebSocket messages
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;
  }
});

📖 Documentation

📄 License

MIT License - see the LICENSE file for details.

🤝 Contributing

Contributions are welcome! Feel free to submit a Pull Request.

📧 Support


Made with ❤️ by the iTick Team

About

Node.js 版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors