Websocket 行情推送
- 本篇所列出的所有wss接口的baseurl为: wss://stream.toobit.com
- 直接访问时URL格式为 wss://#HOST/quote/ws/v1
| 名称 | 值 |
|---|---|
| topic | realtimes(实时行情), trade(最新成交), kline_$interval(k线), depth(深度),markPrice(标记价格),markPriceKline_$interval(标记价格K线),index(指数价格)indexKline_$interval(指数价格K线) |
| event | sub(订阅), cancel(取消), cancel_all(取消全部) |
| interval | 1m, 5m, 15m, 30m, 1h, 2h, 6h, 12h, 1d, 1w, 1M |
实时订阅/取消数据流
请求订阅数据样例:
json
{
"symbol": "$symbol0, $symbol1",
"topic": "$topic",
"event": "sub",
"params": {
"limit": "$limit", // kline返回上限是2000,默认为1
"binary": "false" //返回的数据是否是压缩过的,默认为false
}
}取消订阅数据样例:
json
{
"symbol": "$symbol0, $symbol1",
"topic": "$topic",
"event": "cancel",
"params": {
"limit": "$limit", // kline返回上限是2000,默认为1
"binary": "false" //返回的数据是否是压缩过的,默认为false
}
}心跳
每隔一段时间,客户端需要发送ping帧,服务端会回复pong帧,否则服务端会在5分钟内主动断开链接。
Payblad
json
{
"pong": 1535975085052
}请求
json
{
"ping": 1535975085052
}逐笔交易
逐笔交易推送每一笔成交的信息。成交,或者说交易的定义是仅有一个吃单者与一个挂单者相互交易。 在成功连接到服务器后,服务器首先会推送一条最近的60条成交。在这条推送之后,每条推送都是实时的成交。 变量"v"可以理解成一个交易ID。这个变量是全局递增的并且独特的。例如:假设过去5秒有3笔交易发生,分别是ETHUSDT、BTCUSDT、BHTBTC。它们的"v"会为连续的值(112,113,114)。
Payload
json
{
"symbol": "BTCUSDT",
"symbolName": "BTCUSDT",
"topic": "trade",
"params": {
"realtimeInterval": "24h",
"binary": "false"
},
"data": [
{
"v": "1291465821801168896", // 参见解释
"t": 1668690723096, //时间戳
"p": "399", // 价格
"q": "1", // 数量
"m": false // true = 买, false = 卖
},
{
"v": "1291465842546196481",
"t": 1668690725569,
"p": "399",
"q": "1",
"m": false
}
],
"f": true, // 是不是第一个返回
"sendTime": 1668753154192
}请求订阅数据样例:
json
{
"symbol": "$symbol0, $symbol1",
"topic": "trade",
"event": "sub",
"params": {
"binary": false // Whether data returned is in binary format
}
}K线 Streams
K线stream逐秒推送所请求的K线种类(最新一根K线)的更新
K线图间隔参数:
m -> 分钟; h -> 小时; d -> 天; w -> 周; M -> 月
- 1m
- 5m
- 15m
- 30m
- 1h
- 2h
- 4h
- 6h
- 12h
- 1d
- 1w
- 1M
Payload
json
{
"symbol": "BTCUSDT",
"symbolName": "BTCUSDT",
"topic": "kline",
"params": {
"realtimeInterval": "24h",
"klineType": "1m",
"binary": "false"
},
"data": [
{
"t": 1668753840000,//k线开始时间
"s": "BTCUSDT",// symbol
"sn": "BTCUSDT",// symbol name
"c": "445",//收盘价
"h": "445",//最高价
"l": "445",//最低价
"o": "445",//开盘价
"v": "0"//交易量
}
],
"f": true,// 是否为第一个返回
"sendTime": 1668753854576
}请求订阅数据样例:
json
{
"symbol": "$symbol0, $symbol1",
"topic": "kline_"+$间隔,
"event": "sub",
"params": {
"binary": false
}
}按Symbol的完整Ticker
按Symbol逐秒刷新的24小时完整ticker信息
Payload
json
{
"symbol": "BTCUSDT",
"symbolName": "BTCUSDT",
"topic": "realtimes",
"params": {
"realtimeInterval": "24h",
"binary": "false"
},
"data": [
{
"t": 1668753480049, //时间戳
"s": "BTCUSDT", //symbol
"sn": "BTCUSDT", // symbol name
"c": "445", //收盘价
"h": "445", //最高价
"l": "310", //最低价
"o": "311", //开盘价
"v": "3747.7597191", //交易量
"qv": "1426443.9553995", //交易额
"m": "0.4309", // margin
"e": 301 // 交易id
}
],
"f": true, // 是否为第一个返回
"sendTime": 1668753481048
}请求订阅数据样例:
json
{
"symbol": "$symbol0, $symbol1",
"topic": "realtimes",
"event": "sub",
"params": {
"binary": false
}
}有限档深度信息
Symbol的深度信息。
- 订单簿快照频率:每300ms, 如果book变了的话。
- 订单簿快照频率深度:bids 和 asks各300
- 订单簿版本变更触发事件:
- 订单进入订单簿
- 订单离开订单簿
- 订单数量变更
- 订单已完成
Payload
json
{
"symbol": "BTCUSDT",
"topic": "depth",
"data": [{
"s": "BTCUSDT", //Symbol
"t": 1565600357643, //时间戳
"v": "112801745_18", //版本号_18,18表示18位精度,版本号不保证一直唯一,但时间相近的数据肯定不同
"b": [ //Bids
["11371.49", "0.0014"], //[价格, 数量]
["11371.12", "0.2"],
["11369.97", "0.3523"],
["11369.96", "0.5"],
["11369.95", "0.0934"],
["11369.94", "1.6809"],
["11369.6", "0.0047"],
["11369.17", "0.3"],
["11369.16", "0.2"],
["11369.04", "1.3203"]
],
"a": [//Asks
["11375.41", "0.0053"], //[价格, 数量]
["11375.42", "0.0043"],
["11375.48", "0.0052"],
["11375.58", "0.0541"],
["11375.7", "0.0386"],
["11375.71", "2"],
["11377", "2.0691"],
["11377.01", "0.0167"],
["11377.12", "1.5"],
["11377.61", "0.3"]
]
}],
"f": true//是否为第一个返回
}请求订阅数据样例:
json
{
"symbol": "$symbol0, $symbol1",
"topic": "depth",
"event": "sub",
"params": {
"binary": false
}
}增量深度信息
Payload
json
{
"symbol": "BTCUSDT",
"topic": "diffDepth",
"data": [{
"e": 0,
"t": 1565687625534,
"v": "115277986_18",//版本号_18,18表示18位精度,版本号不保证一直唯一,但时间相近的数据肯定不同
"b": [
["11316.78", "0.078"],
["11313.16", "0.0052"],
["11312.12", "0"],
["11309.75", "0.0067"],
["11309.58", "0"],
["11306.14", "0.0073"]
],
"a": [
["11318.96", "0.0041"],
["11318.99", "0.0017"],
["11319.12", "0.0017"],
["11319.22", "0.4516"],
["11319.23", "0.0934"],
["11319.24", "3.0665"]
]
}],
"f": false //是否为第一个返回值
}请求订阅数据样例:
json
{
"symbol": "$symbol0, $symbol1",
"topic": "diffDepth",
"event": "sub",
"params": {
"binary": false
}
}每秒推送订单簿的变化部分(如果有)。 在增量深度信息中,数量不一定等于对应价格的数量。如果数量=0,这说明在上一条推送中的这个价格已经没有了。如果数量>0,这时的数量为更新后的这个价格所对应的数量 假设我们收到的返回数据中有这样一条:
["0.00181860", "155.92000000"]// 价格,数量
如果下一条返回数据中有:
["0.00181860", "12.3"]
这说明这个价格对应的数量有变更,已经更新变更的数量 如果下一条返回数据中有:
["0.00181860", "0"]
这说明这个价格对应的数量已经消失,将会在客户端中删除。