行情订阅
示例上下文
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 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 是 | 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 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 否 | None | — |
返回
void
示例
pushClient.unsubscribeQuote(['AAPL']);订阅逐笔成交
签名
subscribeTick(symbols: string[]): void用途
订阅逐笔成交推送。数据通过 onTick 回调接收。
参数、默认值与约束
| 参数 | 类型 | 必填 | SDK 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 是 | 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 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 否 | None | — |
返回
void
示例
pushClient.unsubscribeTick(['00700']);订阅深度行情
签名
subscribeDepth(symbols: string[]): void用途
订阅盘口深度推送。数据通过 onDepth 回调接收。
参数、默认值与约束
| 参数 | 类型 | 必填 | SDK 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 是 | 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(每档委托笔数)。exchange和time字段用于期权交易所信息。
取消订阅深度行情
签名
unsubscribeDepth(symbols?: string[]): void用途
取消盘口深度推送。
参数、默认值与约束
| 参数 | 类型 | 必填 | SDK 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 否 | None | — |
返回
void
示例
pushClient.unsubscribeDepth(['00700']);订阅期权行情
签名
subscribeOption(symbols: string[]): void用途
订阅期权行情推送。数据通过 onOption 回调接收,数据结构与 onQuote 相同(QuoteData 类型)。
参数、默认值与约束
| 参数 | 类型 | 必填 | SDK 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 是 | 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 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 否 | None | — |
返回
void
示例
pushClient.unsubscribeOption(['AAPL 250718C00200000']);订阅期货行情
签名
subscribeFuture(symbols: string[]): void用途
订阅期货行情推送。数据通过 onFuture 回调接收,数据结构与 onQuote 相同(QuoteData 类型)。
参数、默认值与约束
| 参数 | 类型 | 必填 | SDK 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 是 | 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 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 否 | None | — |
返回
void
示例
pushClient.unsubscribeFuture(['ES2506']);订阅 K 线
签名
subscribeKline(symbols: string[]): void用途
订阅分钟 K 线推送。数据通过 onKline 回调接收。
参数、默认值与约束
| 参数 | 类型 | 必填 | SDK 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 是 | 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 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 否 | None | — |
返回
void
示例
pushClient.unsubscribeKline(['AAPL']);订阅股票榜单
签名
subscribeStockTop(market: string, indicators: string[]): void用途
订阅股票排行榜推送。数据通过 onStockTop 回调接收。
参数、默认值与约束
| 参数 | 类型 | 必填 | SDK 默认值 | 约束 |
|---|---|---|---|---|
market | string | 是 | None | — |
indicators | string[] | 是 | 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 默认值 | 约束 |
|---|---|---|---|---|
market | string | 是 | None | — |
indicators | string[] | 是 | None | — |
返回
void
示例
pushClient.unsubscribeStockTop('US', ['volume']);订阅期权榜单
签名
subscribeOptionTop(market: string, indicators: string[]): void用途
订阅期权排行榜推送。数据通过 onOptionTop 回调接收。
参数、默认值与约束
| 参数 | 类型 | 必填 | SDK 默认值 | 约束 |
|---|---|---|---|---|
market | string | 是 | None | — |
indicators | string[] | 是 | 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 默认值 | 约束 |
|---|---|---|---|---|
market | string | 是 | None | — |
indicators | string[] | 是 | None | — |
返回
void
示例
pushClient.unsubscribeOptionTop('US', ['volume']);订阅数字货币行情
签名
subscribeCc(symbols: string[]): void用途
订阅全量逐笔推送(Full Tick)。数据通过 onFullTick 回调接收,每笔成交独立推送,不做增量压缩。
参数、默认值与约束
| 参数 | 类型 | 必填 | SDK 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 是 | 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 默认值 | 约束 |
|---|---|---|---|---|
symbols | string[] | 否 | None | — |
返回
void
示例
pushClient.unsubscribeCc(['AAPL']);订阅市场榜单
签名
subscribeMarket(market: string): void用途
订阅整个市场的行情推送(全市场快照)。数据通过 onQuote 回调接收。
参数、默认值与约束
| 参数 | 类型 | 必填 | SDK 默认值 | 约束 |
|---|---|---|---|---|
market | string | 是 | None | — |
返回
void
示例
pushClient.subscribeMarket('US');取消订阅市场榜单
签名
unsubscribeMarket(market: string): void用途
取消整个市场的行情推送。
参数、默认值与约束
| 参数 | 类型 | 必填 | SDK 默认值 | 约束 |
|---|---|---|---|---|
market | string | 是 | None | — |
返回
void
示例
pushClient.unsubscribeMarket('US');Updated 8 days ago
