行情订阅

示例上下文

import { createClientConfig, PushClient } from '@tigeropenapi/tigeropen';

const config = createClientConfig({
  tigerId: 'your_tiger_id',
  privateKey: 'your_private_key',
  account: 'your_account',
});

const pushClient = new PushClient(config);

// 设置回调函数
pushClient.setCallbacks({
  onConnect: () => {
    console.log('连接成功');
    // 连接成功后开始订阅
    pushClient.subscribeQuote(['AAPL', '00700']);
  },
  onQuote: (data) => {
    console.log('行情推送:', data.symbol, data.latestPrice);
  },
  onTick: (data) => {
    console.log('逐笔推送:', data.symbol, data.volume);
  },
  onKline: (data) => {
    console.log('K线推送:', data.symbol);
  },
  onDisconnect: () => {
    console.log('连接断开');
  },
  onError: (err) => {
    console.error('错误:', err.message);
  },
});

// 发起连接
pushClient.connect();

订阅股票行情

签名

subscribeQuote(symbols: string[]): void

用途

订阅股票行情推送。数据通过 onQuote 回调接收。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.subscribeQuote(['AAPL', '00700']);

回调数据示例(通过 onQuote 接收)

BBO 更新(type=2,仅最优买卖报价变动):

{
  "symbol": "00700",
  "type": 2,
  "timestamp": 1785826149941,
  "serverTimestamp": 1785826149946,
  "latestPrice": 485.4,
  "askPrice": 485.6,
  "askSize": 13000,
  "bidPrice": 485.2,
  "bidSize": 6300,
  "volume": 28453200,
  "amount": 13792456000
}

BASIC 更新(type=1,完整行情快照):

{
  "symbol": "AAPL",
  "type": 1,
  "timestamp": 1785826200000,
  "serverTimestamp": 1785826200005,
  "latestPrice": 198.52,
  "latestPriceTimestamp": 1785826199800,
  "preClose": 197.96,
  "volume": 45230100,
  "amount": 8975632000,
  "open": 198.10,
  "high": 199.62,
  "low": 197.80,
  "avgPrice": 198.35
}

type 字段说明:1 = BASIC(完整行情快照),2 = BBO(仅最优买卖报价更新)。


取消订阅股票行情

签名

unsubscribeQuote(symbols?: string[]): void

用途

取消股票行情推送。不传参数则取消所有 quote 订阅。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.unsubscribeQuote(['AAPL']);

订阅逐笔成交

签名

subscribeTick(symbols: string[]): void

用途

订阅逐笔成交推送。数据通过 onTick 回调接收。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.subscribeTick(['00700']);

回调数据示例(通过 onTick 接收)

{
  "symbol": "00700",
  "type": "+",
  "cond": "",
  "sn": 63725,
  "priceBase": 4856,
  "priceOffset": 1,
  "time": [1785826150107],
  "price": [0],
  "volume": [200],
  "partCode": [],
  "quoteLevel": "hkStockQuoteLv2",
  "timestamp": 1785826150651,
  "secType": "STK",
  "mergedVols": []
}

Tick 数据采用增量编码以提高传输效率:

  • 价格还原:(priceBase + price[i]) / 10^priceOffset。上例中 (4856 + 0) / 10^1 = 485.6
  • 时间还原:time[0] 为绝对时间戳,后续 time[i] = time[i] + time[i-1](本例只有一笔)
  • type+ 主动买入,- 主动卖出,* 中性成交

取消订阅逐笔成交

签名

unsubscribeTick(symbols?: string[]): void

用途

取消逐笔成交推送。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.unsubscribeTick(['00700']);

订阅深度行情

签名

subscribeDepth(symbols: string[]): void

用途

订阅盘口深度推送。数据通过 onDepth 回调接收。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.subscribeDepth(['00700']);

回调数据示例(通过 onDepth 接收)

{
  "symbol": "00700",
  "timestamp": 1785826150200,
  "ask": {
    "price": [485.6, 485.8, 486.0, 486.2, 486.4],
    "volume": [13000, 8500, 22000, 5600, 3200],
    "orderCount": [5, 3, 8, 2, 1],
    "exchange": [],
    "time": []
  },
  "bid": {
    "price": [485.4, 485.2, 485.0, 484.8, 484.6],
    "volume": [6300, 15200, 9800, 4100, 7500],
    "orderCount": [3, 6, 4, 2, 3],
    "exchange": [],
    "time": []
  }
}

港股市场会包含 orderCount(每档委托笔数)。exchangetime 字段用于期权交易所信息。


取消订阅深度行情

签名

unsubscribeDepth(symbols?: string[]): void

用途

取消盘口深度推送。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.unsubscribeDepth(['00700']);

订阅期权行情

签名

subscribeOption(symbols: string[]): void

用途

订阅期权行情推送。数据通过 onOption 回调接收,数据结构与 onQuote 相同(QuoteData 类型)。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.subscribeOption(['AAPL  250718C00200000']);

回调数据示例(通过 onOption 接收)

{
  "symbol": "AAPL  250718C00200000",
  "type": 1,
  "timestamp": 1785826200000,
  "serverTimestamp": 1785826200003,
  "latestPrice": 5.30,
  "preClose": 5.15,
  "volume": 12580,
  "identifier": "AAPL  250718C00200000",
  "openInt": 45230,
  "askPrice": 5.35,
  "askSize": 120,
  "bidPrice": 5.25,
  "bidSize": 85
}

期权推送额外包含 identifier(合约标识)和 openInt(未平仓合约数)。


取消订阅期权行情

签名

unsubscribeOption(symbols?: string[]): void

用途

取消期权行情推送。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.unsubscribeOption(['AAPL  250718C00200000']);

订阅期货行情

签名

subscribeFuture(symbols: string[]): void

用途

订阅期货行情推送。数据通过 onFuture 回调接收,数据结构与 onQuote 相同(QuoteData 类型)。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.subscribeFuture(['ES2506']);

回调数据示例(通过 onFuture 接收)

{
  "symbol": "ES2506",
  "type": 1,
  "timestamp": 1785826200000,
  "serverTimestamp": 1785826200002,
  "latestPrice": 5425.50,
  "preClose": 5410.25,
  "preSettlement": 5412.00,
  "volume": 1520300,
  "tradeTime": 1785826199500,
  "minTick": 0.25,
  "askPrice": 5425.75,
  "askSize": 150,
  "bidPrice": 5425.50,
  "bidSize": 230
}

期货推送额外包含 preSettlement(前结算价)、tradeTime(最新成交时间)和 minTick(最小变动价位)。


取消订阅期货行情

签名

unsubscribeFuture(symbols?: string[]): void

用途

取消期货行情推送。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.unsubscribeFuture(['ES2506']);

订阅 K 线

签名

subscribeKline(symbols: string[]): void

用途

订阅分钟 K 线推送。数据通过 onKline 回调接收。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.subscribeKline(['AAPL']);

回调数据示例(通过 onKline 接收)

{
  "symbol": "AAPL",
  "time": 1785826140000,
  "open": 198.35,
  "high": 198.62,
  "low": 198.20,
  "close": 198.52,
  "avg": 198.41,
  "volume": 125600,
  "count": 890,
  "amount": 24920000,
  "serverTimestamp": 1785826200005
}

每分钟推送一根 K 线。time 为该分钟起始时间戳,count 为该分钟内成交笔数。


取消订阅 K 线

签名

unsubscribeKline(symbols?: string[]): void

用途

取消 K 线推送。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.unsubscribeKline(['AAPL']);

订阅股票榜单

签名

subscribeStockTop(market: string, indicators: string[]): void

用途

订阅股票排行榜推送。数据通过 onStockTop 回调接收。

参数、默认值与约束

参数类型必填SDK 默认值约束
marketstringNone
indicatorsstring[]None

返回

void

示例

pushClient.subscribeStockTop('US', ['changeRate', 'volume']);

回调数据示例(通过 onStockTop 接收)

{
  "market": "US",
  "timestamp": 1785826200000,
  "topData": [
    {
      "targetName": "volume",
      "item": [
        { "symbol": "NVDA", "latestPrice": 135.20, "targetValue": 82500000 },
        { "symbol": "TSLA", "latestPrice": 248.50, "targetValue": 65300000 },
        { "symbol": "AAPL", "latestPrice": 198.52, "targetValue": 45230100 }
      ]
    },
    {
      "targetName": "changeRate",
      "item": [
        { "symbol": "XYZ", "latestPrice": 12.80, "targetValue": 0.156 },
        { "symbol": "ABC", "latestPrice": 45.30, "targetValue": 0.098 }
      ]
    }
  ]
}

targetName 支持的指标:changeRate(涨跌幅)、changeRate5Min(5 分钟涨跌幅)、turnoverRate(换手率)、amount(成交额)、volume(成交量)、amplitude(振幅)。


取消订阅股票榜单

签名

unsubscribeStockTop(market: string, indicators: string[]): void

用途

取消股票排行榜推送。

参数、默认值与约束

参数类型必填SDK 默认值约束
marketstringNone
indicatorsstring[]None

返回

void

示例

pushClient.unsubscribeStockTop('US', ['volume']);

订阅期权榜单

签名

subscribeOptionTop(market: string, indicators: string[]): void

用途

订阅期权排行榜推送。数据通过 onOptionTop 回调接收。

参数、默认值与约束

参数类型必填SDK 默认值约束
marketstringNone
indicatorsstring[]None

返回

void

示例

pushClient.subscribeOptionTop('US', ['volume', 'bigOrder']);

回调数据示例(通过 onOptionTop 接收)

{
  "market": "US",
  "timestamp": 1785826200000,
  "topData": [
    {
      "targetName": "volume",
      "bigOrder": [],
      "item": [
        {
          "symbol": "TSLA",
          "expiry": "20250718",
          "strike": "260.0",
          "right": "CALL",
          "totalAmount": 5820000,
          "totalVolume": 98500,
          "totalOpenInt": 125000,
          "volumeToOpenInt": 0.788,
          "latestPrice": 8.65,
          "updateTime": 1785826199000
        }
      ]
    },
    {
      "targetName": "bigOrder",
      "bigOrder": [
        {
          "symbol": "AAPL",
          "expiry": "20250718",
          "strike": "200.0",
          "right": "CALL",
          "dir": "BUY",
          "volume": 5000,
          "price": 5.30,
          "amount": 2650000,
          "tradeTime": 1785826180000
        }
      ],
      "item": []
    }
  ]
}

targetName 支持的指标:bigOrder(大单)、volume(成交量)、amount(成交额)、openInt(持仓量)。大单条件:单笔成交量 > 1000 张。


取消订阅期权榜单

签名

unsubscribeOptionTop(market: string, indicators: string[]): void

用途

取消期权排行榜推送。

参数、默认值与约束

参数类型必填SDK 默认值约束
marketstringNone
indicatorsstring[]None

返回

void

示例

pushClient.unsubscribeOptionTop('US', ['volume']);

订阅数字货币行情

签名

subscribeCc(symbols: string[]): void

用途

订阅全量逐笔推送(Full Tick)。数据通过 onFullTick 回调接收,每笔成交独立推送,不做增量压缩。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.subscribeCc(['AAPL']);

回调数据示例(通过 onFullTick 接收)

{
  "symbol": "AAPL",
  "timestamp": 1785826200000,
  "source": "",
  "ticks": [
    {
      "sn": 128450,
      "time": 1785826199800,
      "price": 198.52,
      "volume": 100,
      "type": "+",
      "cond": "",
      "partCode": "Q"
    },
    {
      "sn": 128451,
      "time": 1785826199850,
      "price": 198.50,
      "volume": 200,
      "type": "-",
      "cond": "",
      "partCode": "Q"
    }
  ]
}

subscribeTick 不同,全量逐笔不做增量编码,每笔成交直接包含绝对价格和时间。type+ 主动买,- 主动卖,* 中性。


取消订阅数字货币行情

签名

unsubscribeCc(symbols?: string[]): void

用途

取消全量逐笔推送。

参数、默认值与约束

参数类型必填SDK 默认值约束
symbolsstring[]None

返回

void

示例

pushClient.unsubscribeCc(['AAPL']);

订阅市场榜单

签名

subscribeMarket(market: string): void

用途

订阅整个市场的行情推送(全市场快照)。数据通过 onQuote 回调接收。

参数、默认值与约束

参数类型必填SDK 默认值约束
marketstringNone

返回

void

示例

pushClient.subscribeMarket('US');

取消订阅市场榜单

签名

unsubscribeMarket(market: string): void

用途

取消整个市场的行情推送。

参数、默认值与约束

参数类型必填SDK 默认值约束
marketstringNone

返回

void

示例

pushClient.unsubscribeMarket('US');

Did this page help you?