Websocket推送
Websocket信息
基本信息
行情基础端点请参见这里
直接访问时URL格式为 /openapi/quote/ws/v1
名称
值
topic
realtimes, trade, kline_$interval, depth
event
sub, cancel, cancel_all
interval
1m, 5m, 15m, 30m, 1h, 2h, 6h, 12h, 1d, 1w, 1M
请求订阅数据样例:
{ "symbol": "$symbol0, $symbol1", "topic": "$topic", "event": "sub", // 可调整的参数 "params": { // kline返回上限是2000,默认为1 "limit": "$limit", // 返回的数据是否是压缩过的,默认为false "binary": "false" }}
名称
解释
limit
规定返回结果的数量
binary
规定返回的数据是否是压缩过的。默认值是false。
心跳
每隔一段时间,客户端需要发送ping帧,服务端会回复pong帧,否则服务端会在5分钟内主动断开链接。
请求
{ "ping": 1535975085052}
返回
{ "pong": 1535975085052}
逐笔交易
逐笔交易推送每一笔成交的信息。成交,或者说交易的定义是仅有一个吃单者与一个挂单者相互交易。
在成功连接到服务器后,服务器首先会推送一条最近的60条成交。在这条推送之后,每条推送都是实时的成交。
变量“v”可以理解成一个交易ID。这个变量是全局递增的并且独特的。例如:假设过去5秒有3笔交易发生,分别是ETHUSDT、BTCUSDT、BHTBTC。它们的“v”会为连续的值(112,113,114)。
请求订阅数据样例:
{ "symbol": "$symbol0, $symbol1", "topic": "trade", "event": "sub", "params": { "binary": false // Whether data returned is in binary format }}
返回:
{ "symbol": "BTCUSDT", "topic": "trade", "data": [{ "v": "426635153180475392", // 参见解释 "t": 1565594873508, //时间戳 "p": "11369", // 价格 "q": "0.01", // 数量 "m": false // true = 买, false = 卖 }, { "v": "426635153373413376", "t": 1565594873531, "p": "11369", "q": "0.0012", "m": false }], "f": false // 是不是第一个返回}
Symbol的Ticker
按Symbol逐秒刷新的24小时完整ticker信息
请求订阅数据样例:
{ "symbol": "$symbol0, $symbol1", "topic": "realtimes", "event": "sub", "params": { "binary": false }}
返回:
{ "symbol": "ETHUSDT", "topic": "realtimes", "data": [{ "t": "1565592599015", //时间戳 "s": "ETHUSDT", //symbol "c": "212.63", //收盘价 "h": "216.96", //最高价 "l": "206.78", //最低价 "o": "210.23", //开盘价 "v": "73013.575", //交易量 "qv": "15726612.498168", //交易额 }], "f": false // 是否为第一个返回}
K线/蜡烛图
K线stream逐秒推送所请求的K线种类(最新一根K线)的更新
K线/蜡烛图间隔:
订阅Kline需要提供间隔参数,最短为分钟线,最长为月线。支持以下间隔:
m -> 分钟; h -> 小时; d -> 天; w -> 周; M -> 月
1m
5m
15m
30m
1h
2h
4h
6h
12h
1d
1w
1M
请求订阅数据样例:
{ "symbol": "$symbol0, $symbol1", "topic": "kline_"+$间隔, "event": "sub", "params": { "binary": false }}
返回:
{ "symbol": "BTCUSDT", "topic": "kline", "params": {"klineType": "15m"}, "data": [{ "t": 1565595900000, //k线开始时间 "s": "BTCUSDT", // symbol "c": "11436.14", //收盘价 "h": "11437", //最高价 "l": "11381.89", //最低价 "o": "11381.89", //开盘价 "v": "16.3306" //交易量 }], "f": true // 是否为第一个返回}
订单簿深度信息
Symbol的深度信息。
这里是订单簿快照推送的详细信息:
订单簿快照频率:每300ms, 如果book变了的话。
订单簿快照频率深度:bids 和 asks各300
订单簿版本变更触发事件:
订单进入订单簿
订单离开订单簿
订单数量变更
订单已完成
全量深度
{ "symbol": "$symbol0, $symbol1", "topic": "depth", "event": "sub", "params": { "binary": false }}
这个订阅会推送全量深度信息,因此数据量大。如果想要推送评率更快,请订阅合并深度。
返回:
{ "symbol": "BTCUSDT", "topic": "depth", "data": [{ "s": "BTCUSDT", //Symbol "t": 1565600357643, //时间戳 "v": "112801745_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//是否为第一个返回}
合并深度
{ "symbol": "$symbol0, $symbol1", "topic": "mergedDepth", "event": "sub", "params": { "binary": false, "dumpScale": 1, }}
这个订阅必须传dumpScale(合并精度)这个参数。dumpScale不能大于ticker的精度。你可以在brokerInfo这个端点查询ticker的精度信息。
示例brokerInfo返回
{"filters":[ {"minPrice":"0.01", "maxPrice":"100000.00000000", "tickSize":"0.01", "filterType":"PRICE_FILTER"}, {"minQty":"0.00005", "maxQty":"100000.00000000", "stepSize":"0.000001", "filterType":"LOT_SIZE"}, {"minNotional":"1", "filterType":"MIN_NOTIONAL" }],"exchangeId":"301","symbol":"BTCUSDT","symbolName":"BTCUSDT","status":"TRADING","baseAsset":"BTC","baseAssetPrecision":"0.000001","quoteAsset":"USDT","quotePrecision":"0.01", // BTCUSDT的精度为0.01,最大dumpScale为-log10(0.01)=2。"icebergAllowed":false}
增量深度信息
{ "symbol": "$symbol0, $symbol1", "topic": "diffDepth", "event": "sub", "params": { "binary": false }}
每秒推送订单簿的变化部分(如果有)。
在增量深度信息中,数量不一定等于对应价格的数量。如果数量=0,这说明在上一条推送中的这个价格已经没有了。如果数量>0,这时的数量为更新后的这个价格所对应的数量
假设我们收到的返回数据中有这样一条:
["0.00181860", "155.92000000"]// 价格,数量
如果下一条返回数据中有:
["0.00181860", "12.3"]
这说明这个价格对应的数量有变更,已经更新变更的数量
如果下一条返回数据中有:
["0.00181860", "0"]
这说明这个价格对应的数量已经消失,将会在客户端中删除。
Payload:
{ "symbol": "BTCUSDT", "topic": "diffDepth", "data": [{ "e": 0, "t": 1565687625534, "v": "115277986_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 //是否为第一个返回值}
指数数据
期权和期货指数数据。
请求订阅数据样例:
{ "symbol": "$symbol0, $symbol1", "topic": "index", "event": "sub",}
返回:
{ "symbol": "HTUSDT", "topic": "index", "data": [{ "symbol": "HTUSDT", //symbol "index": "5.0941", //当前指数价 "edp": "5.08799333", //预计交割价,见期权rest文档 "formula": "(5.0941[HUOBI])/1" //来源 }], "f": true //是否为第一个返回}
错误处理
错误码:
INVALID_REQUEST("-10000", "Invalid request!")JSON_FORMAT_ERROR("-10001", "Invalid JSON!")INVALID_EVENT("-10002", "Invalid event")REQUIRED_EVENT("-10003", "Event required!")INVALID_TOPIC("-10004", "Invalid topic!")REQUIRED_TOPIC("-10005", "Topic required!")PARAM_EMPTY("-10007", "Params required!")PERIOD_EMPTY("-10008", "Period required!")PERIOD_ERROR("-10009", "Invalid period!")SYMBOLS_ERROR("-100010", "Invalid Symbols!")
最后更新于
这有帮助吗?