WebSocket
Endpoint
wss://big.one/ws/v2
认证
在订阅 private
数据之前,您需要认证客户,例如 Order
、Account
等。
协议
当前,我们支持两种协议:proto
和 json
。默认使用 json
。
在 proto
模式下,我们使用 Google 的 Protocol Buffers(Protobuf)来编码和解码数据流。使用 Protobuf 的优点是能够将数据流压缩到最小尺寸,减少传输延迟。此外,开发者可以通过提供 proto 文件自动生成相应的数据结构,从而大大降低了使用门槛。
如何设置 WebSocket 协议
设置请求头 Sec-WebSocket-Protocol
为 proto
或 json
。
我们推荐使用 proto
格式,proto 文件可以在 这里 找到。
请求ID
requestId
用作 API 请求的标识符。API 响应将包括 requestId
,使您能够将每个响应与相应的请求匹配。因此,对于每个请求,使用唯一的 requestId
是确保准确跟踪的必要条件。
响应
成功订阅后,API 会首先返回 snapshot
,然后如果订阅生成新数据,则会推送 更新数据
。
错误响应
{
"requestId":"1",
"error":{
"code":45000,
"message":"GRPC error: xxx"
}
}
保活
开发者可以使用 Ping/Pong 帧保持连接活跃。我们还提供了一个 HeartBeat
消息。
错误代码
代码 | 类型 |
---|---|
45000 | grpc 错误 |
45001 | 登录状态错误 |
其他 | 默认错误 |
支持的方法
AuthenticateCustomer
{"requestId":"1", "authenticateCustomerRequest":{"token":"Bearer {YOUR_TOKEN}"}}
参数
名称 | 描述 | 示例 | 必填 |
---|---|---|---|
market | 交易对的 ID | BTC-USDT | 是 |
交易对深度
订阅
{"requestId": "1", "subscribeMarketDepthRequest":{"market":"BTC-USDT"}}
当用户发送订阅深度数据请求时,服务器会首先推送该交易对的深度snapshot。然后,在深度数据发生变化时,服务器会推送更新。
响应
snapshot
{
"requestId": "1",
"depthSnapshot": {
"depth": {
"market":"BTC-USDT",
"asks":[
{
"price":"197.96",
"amount":"5.0",
"orderCount":1
}
],
"bids":[
{
"price":"159.99",
"amount":"1.07552",
"orderCount":1
}
]
},
"changeId":"2",
"prevId":"1"
}
}
更新数据
{
"requestId": "1",
"depthUpdate": {
"depth": {
"market":"BTC-USDT",
"asks":[
{
"price":"197.96",
"amount":"5.0",
"orderCount":"1"
}
],
"bids":[
{
"price":"159.99",
"amount":"1.07552",
"orderCount":"1"
}
]
},
"changeId":"2",
"prevId":"1"
}
}
深度
名称 | 类型 | 描述 | 示例 |
---|---|---|---|
market | 字符串 | 交易对符号 | BTC-USDT |
asks | PriceLevel | 卖方(卖单) | |
bids | PriceLevel | 买方(买单) | |
changeId | 字符串 | 当前交易对的变化 ID | |
prevId | 字符串 | 上一个交易对的变化 ID |
PriceLevel
名称 | 类型 | 描述 | 示例 |
---|---|---|---|
price | 字符串 | 卖单价格 | 197.96 |
amount | 字符串 | 卖单数量 | 5.0 |
orderCount | 整数 | 卖单的订单数量 | 1 |
取消订阅
{"requestId": "1", "unsubscribeMarketDepthRequest":{"market":"BTC-USDT"}}
交易对Candle
订阅
{"requestId": "1", "subscribeMarketCandlesRequest":{"market":"BTC-USDT", "period": "MIN5", "limit": "20"}}
参数
名称 | 描述 | 示例 | 必需 |
---|---|---|---|
market | 交易对ID | BTC-USDT | 是 |
period | 时间周期 | MIN5 | 是 |
limit | 期望的candle snapshot数量 | 20 | 否 |
时间周期
符号 | 描述 |
---|---|
MIN1 | 1分钟 |
MIN5 | 5分钟 |
MIN15 | 15分钟 |
MIN30 | 30分钟 |
HOUR1 | 1小时 |
HOUR3 | 3小时 |
HOUR4 | 4小时 |
HOUR6 | 6小时 |
HOUR12 | 12小时 |
DAY1 | 1天 |
WEEK1 | 1周 |
snapshot
{
"requestId":"1",
"candlesSnapshot":{
"candles":[
{
"market":"BTC-USDT",
"time":"2018-09-12T13:40:00Z",
"open":"9.0",
"high":"9.0",
"low":"9.0",
"close":"9.0",
"period":"MIN5"
}
]
}
}
更新数据
{
"requestId":"1",
"candleUpdate":{
"candle":{
"market":"BTC-USDT",
"time":"2018-09-12T05:30:00Z",
"open":"9",
"high":"9",
"low":"9",
"close":"9",
"period":"MIN5"
}
}
}
candle
名称 | 描述 | 示例 |
---|---|---|
market | 交易对ID | BTC-USDT |
time | candle的UTC时间 | 2018-09-12T13:40:00Z |
open | 该周期内的开盘价 | 9.0 |
high | 该周期内的最高价 | 9.0 |
low | 该周期内的最低价 | 9.0 |
close | 该周期内的收盘价 | 9.0 |
period | 时间周期 | MIN5 |
取消订阅
{"requestId": "1", "unsubscribeMarketCandlesRequest":{"market":"BTC-USDT", "period": "MIN5"}}
交易对行情
订阅
{"requestId": "1", "subscribeMarketsTickerRequest":{"markets":["BTC-USDT", "ONE-BTC"]}}
参数
名称 | 描述 | 示例 | 必需 |
---|---|---|---|
requestId | 请求ID | 1 | 是 |
markets | 交易对ID列表 | ["BTC-USDT"] | 是 |
snapshot
{
"requestId":"1",
"tickersSnapshot":{
"tickers":[
{
"market":"ETH-USDT",
"ask":{
"price":"197.96",
"amount":"5.0",
"orderCount":"1"
},
"bid":{
"price":"159.99",
"amount":"1.07552",
"orderCount":"1"
},
"open":"197.46",
"high":"0.0",
"low":"0.0",
"close":"213.96",
"volume":"0.0"
}
]
}
}
更新数据
{
"requestId":"1",
"tickerUpdate":{
"ticker":{
"market":"ETH-USDT",
"ask":{
"price":"197.96",
"amount":"5.0",
"orderCount":"1"
},
"bid":{
"price":"159.99",
"amount":"1.07552",
"orderCount":"1"
},
"open":"197.46",
"high":"220.0",
"low":"190.0",
"close":"213.96",
"volume":"1000.0"
}
}
}
行情
名称 | 描述 | 示例 |
---|---|---|
market | 交易对ID | BTC-USDT |
ask | 第一个卖单价格层 | |
bid | 第一个买单价格层 | |
open | 24小时内的开盘价 | 10.24 |
high | 24小时内的最高价 | 10.24 |
low | 24小时内的最低价 | 10.24 |
close | 24小时内的收盘价 | 10.24 |
volume | 24小时内的成交量 | 10.24 |
取消订阅
{"requestId": "1", "unsubscribeMarketsTickerRequest":{"markets":["BTC-USDT", "ONE-BTC"]}}
交易对交易
订阅
{"requestId": "1", "subscribeMarketTradesRequest":{"market":"BTC-USDT", "limit": "20"}}
参数
名称 | 描述 | 示例 | 必需 |
---|---|---|---|
requestId | 请求ID | 1 | 是 |
market | 交易对ID | BTC-USDT | 是 |
limit | 期望的交易snapshot数量 | 20 | 否 |
snapshot
注:
takerOrder
和makerOrder
字段总是为 null。
{
"requestId":"1",
"tradesSnapshot":{
"trades":[
{
"id":"28622",
"price":"9.0",
"amount":"10000.0",
"market":"BTC-USDT",
"createdAt":"2018-09-12T09:52:37Z",
"makerOrder":null,
"takerOrder":null,
"takerSide":"BID"
}
]
}
}
更新数据
注:
takerOrder
和makerOrder
字段总是为 null。
{
"requestId":"1",
"tradeUpdate":{
"trade":{
"id":"28622",
"price":"9.0",
"amount":"10000.0",
"market":"BTC-USDT",
"createdAt":"2018-09-12T09:52:37Z",
"makerOrder":null,
"takerOrder":{
"id":"",
"price":"",
"stopPrice":"",
"amount":"",
"market":"",
"side":"BID",
"state":"PENDING",
"filledAmount":"",
"filledFees":"",
"avgDealPrice":"",
"createdAt":null,
"updatedAt":null,
"businessUnit":"SPOT",
"type":"LIMIT",
"operator":"LTE",
"ioc":false
},
"takerSide":"BID"
}
}
}
交易
名称 | 描述 | 示例 |
---|---|---|
id | 交易ID | 1 |
price | 交易价格 | 9.0 |
amount | 交易金额 | 1000.0 |
market | 交易对ID | BTC-USDT |
createdAt | 交易创建时间 | 2018-09-12T09:52:37Z |
makerOrder | 做市方订单 | |
takerOrder | 承接方订单 |
订单
名称 | 描述 | 示例 |
---|---|---|
id | 订单ID | 1 |
price | 订单价格 | 10.24 |
stopPrice | 止损价格 | 10.24 |
amount | 订单金额 | 1000.0 |
market | 交易对ID | BTC-USDT |
side | 订单方向 | ASK |
state | 订单状态 | FILLED |
filledAmount | 已成交金额 | 1000.0 |
filledFees | 已成交费用 | 90.0 |
avgDealPrice | 订单平均成交价格 | 9.0 |
createdAt | 订单创建时间 | 2018-09-12T09:52:36Z |
updatedAt | 订单更新时间 | 2018-09-12T09:52:36Z |
取消订阅
{"requestId": "1", "unsubscribeMarketTradesRequest":{"market":"BTC-USDT"}}
用户账户
订阅
{"requestId": "1", "subscribeViewerAccountsRequest":{}}
snapshot
{
"requestId":"1",
"accountsSnapshot":{
"accounts":[
{
"asset":"BTC",
"balance":"10.0",
"lockedBalance":"0.0"
}
]
}
}
更新数据
{
"requestId":"1",
"accountUpdate":{
"account":{
"asset":"BTC",
"balance":"0.0",
"lockedBalance":"0.0"
}
}
}
账户
名称 | 描述 | 示例 |
---|---|---|
asset | 货币 | BTC |
balance | 账户余额 | 10.0 |
lockedBalance | 账户锁仓余额 | 10.0 |
取消订阅
{"requestId": "1", "unsubscribeViewerAccountsRequest":{}}
用户订单
订阅某交易对的订单
{"requestId": "1", "subscribeViewerOrdersRequest":{"market":"BTC-USDT"}}
参数
名称 | 描述 | 示例 | 必需 |
---|---|---|---|
market | 交易对ID | BTC-USDT | 是 |
snapshot
{
"requestId":"1",
"ordersSnapshot":{
"orders":[
{
"id":"42844576",
"price":"9.0",
"stopPrice":"0.0",
"amount":"10000.0",
"market":"BTC-USDT",
"side":"ASK",
"state":"FILLED",
"filledAmount":"10000.0",
"filledFees":"90.0",
"avgDealPrice":"9.0",
"createdAt":"2018-09-12T09:52:36Z",
"updatedAt":"2018-09-12T09:52:37Z"
}
]
}
}
更新数据
{
"requestId":"1",
"orderUpdate":{
"order":{
"id":"42844576",
"price":"9.0",
"stopPrice":"0.0",
"amount":"10000.0",
"market":"BTC-USDT",
"side":"ASK",
"state":"FILLED",
"filledAmount":"10000.0",
"filledFees":"90.0",
"avgDealPrice":"9.0",
"createdAt":"2018-09-12T09:52:36Z",
"updatedAt":"2018-09-12T09:52:37Z"
}
}
}
订单
名称 | 描述 | 示例 |
---|---|---|
id | 订单ID | 1 |
price | 订单价格 | 10.24 |
stopPrice | 止损价格 | 10.24 |
amount | 订单金额 | 1000.0 |
market | 交易对ID | BTC-USDT |
side | 订单方向 | ASK |
state | 订单状态 | FILLED |
filledAmount | 已成交金额 | 1000.0 |
filledFees | 已成交费用 | 90.0 |
avgDealPrice | 订单平均成交价格 | 9.0 |
createdAt | 订单创建时间 | 2018-09-12T09:52:36Z |
updatedAt | 订单更新时间 | 2018-09-12T09:52:36Z |
取消订阅
{"requestId": "1", "unsubscribeViewerOrdersRequest":{"market":"BTC-USDT"}}
订阅所有交易对的订单
不会返回snapshot数据,只会推送订单更新响应
{"requestId": "1", "subscribeAllViewerOrdersRequest":{}}
取消订阅
{"requestId": "1", "unsubscribeAllViewerOrdersRequest":{}}