API概述
0. 域名
线上域名: https://openapi.bitwellex.com, https://openapi.bitwellex.co
您可以自行比较使用openapi.bitwellex.com和openapi.bitwellex.co两个域名的延迟情况,选择延迟低的进行使用。
其中,openapi.bitwellex.co域名对使用aws云服务的用户做了一定的链路延迟优化。
1. 访问限制
本章节访问限制的细节:
- Rest API
当访问超过频率限制时,将返回429状态:请求太频繁。
1.1 Rest API
如果传入有效的APIKey 用用户ID限速;如果没有则拿公网IP限速。
限速规则:各个接口上有单独的说明,如果没有一般接口限速为 5次/秒。
1.2 WebSocket
WebSocket将每个命令类型限制为每秒50条命令
2. 验证
本章节主要为验证的细节分以下4个方面:
- 生成APIKey
- 发起请求
- 签名
- 时间戳
2.1 生成APIKey
在对任何请求进行签名之前,您必须通过BitWell网站创建一个APIKey。创建APIKey后,您将获得2个必须记住的信息:
- APIKey
- SecretKey
APIKey和SecretKey将由BitWell生成和提供。
2.2 发起请求
所有REST请求头都必须包含如下KEY:
- BW-ACCESS-KEY: 字符串类型的APIKey。
- BW-ACCESS-SIGN: 使用Base64编码签名(请参阅签名)。
- BW-ACCESS-TIMESTAMP: 发起请求的时间戳。
FT-language 语言(可选),支持以下三种,默认 “en-US”
- 简体中文 zh-CN
- 繁体中文 zh-HK
- 英文 en-US
所有请求都应该含有application/json
类型内容,并且是有效的JSON。
2.3 签名
BW-ACCESS-SIGN的请求头是对timestamp + Request Method + Request Path + Request body (其中+表示字符串连接) 使用HMAC SHA256方法加密,然后通过Base64编码输出而得。
字段 | 说明 | 注意事项 | 示例 |
---|---|---|---|
timestamp | Unix时间戳格式,精确到毫秒 | 值与BW-ACCESS-TIMESTAMP请求头相同 | 1420674445201 |
Request Method | 请求方法 | 字母全部大写 | POST |
Request Path | 请求接口路径 | GET请求包含query参数 | /order/pending?num=30 |
Request Body | 请求主体的字符串 | 1) 若请求没有主体(通常为GET请求), 则省略 2) 值与请求一致 |
{“symbol”:“BTC_USDT”,“order_id”:1010000867765} |
SecretKey | 私钥 | BitWell个人中心申请所生成 | DtUTxNBkTUKr4N9hwaYmDSRgxyIDD0Za |
2.3.1 javascript算法示例
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/hmac-sha256.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/enc-base64.min.js"></script>
<script>
var timestamp = new Date().getTime();
var message = timestamp + 'GET' + '/users/self/verify';
var secretKey = "-BW Secret Key-";
var hash = CryptoJS.HmacSHA256(message, secretKey);
var hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
document.write(hashInBase64);
</script>
2.3.2 php算法示例
$secretKey = "Apply BW Api Secret Key and replace with your's";
$timestamp = intval(microtime(true)*1000);
$requestMethod = 'GET';
$requestPath = '/api/v1/orders/pending';
$requestBody = '';
$message = $timestamp.$requestMethod.$requestPath.$requestBody;
$s = hash_hmac('sha256', $message, $secretKey, true);
echo base64_encode($s);
2.3.3 python2.7算法示例
import hashlib
import hmac
import base64
import time
timstamp = int(round(time.time() * 1000))
m = str(timstamp) + 'GET' + '/order/pending?start=1' + ''
message = bytes(m).encode('utf-8')
secret = bytes("--secretKey--").encode('utf-8')
signature = base64.b64encode(hmac.new(secret, message, digestmod=hashlib.sha256).digest())
print(signature)
2.3.4 go算法示例
package main
import (
"crypto/hmac"
"crypto/sha256"
"encoding/base64"
"fmt"
"time"
)
func ComputeHmac256(message string, secret string) string {
key := []byte(secret)
h := hmac.New(sha256.New, key)
h.Write([]byte(message))
return base64.StdEncoding.EncodeToString(h.Sum(nil))
}
func main() {
timestamp := time.Now().UnixNano() / 1000000
message := fmt.Sprintf("%d%s%s%s", timestamp, "GET", "/order/pending?from=3", "")
secretKey := "-BW Secret Key-"
fmt.Println(ComputeHmac256(message, secretKey))
}
hmac参考: https://tools.ietf.org/id/draft-mcgrew-aead-aes-cbc-hmac-sha2-03.html
hmac sha256示例参考: https://www.jokecamp.com/blog/examples-of-creating-base64-hashes-using-hmac-sha256-in-different-languages/
2.4 时间戳
BW-ACCESS-TIMESTAMP请求头必须是Unix时间戳格式(如:1420674445201),精确到毫秒
2.5 Websocket 签名
注意:Websocket 签名时 Request Method
设为 POST
, Request Path
和 Request Body
设为空字符串
2.6 公共api验证
公共api无须验证,但对频率有所限制。如果您是机构客户,访问量较大,可以联系客服申请公共api提频,申请通过后会取得单独的appkey参数,在访问公共api时在其URL访问参数中指定即可
市场交易对
1. 现货交易对
请求方式: GET
请求地址: /pub/openapi/v1/symbol/spot/all
登录授权: 否
请求参数: 无
返回结果:
字段名 | 字段类型 | 备注 |
---|---|---|
base_asset | string | 基础资产code |
quote_asset | string | 交易资产code |
symbol | string | 交易对code |
price_precision | int | 价格精度 |
volume_precision | int | 数量精度 |
quote_asset_precision | int | 交易资产精度 |
base_asset_precision | int | 基础资产精度 |
{
"data": [
{
"base_asset": "USDT",
"quote_asset": "BTC",
"symbol": "BTC_USDT",
"price_precision": 2,
"volume_precision": 4
},
{
"base_asset": "USDT",
"symbol": "ETH_USDT",
"price_precision": 2,
"quote_asset": "ETH",
"volume_precision": 4
}
],
"errmsg": "",
"errno": 0
}
2. 指数交易对
请求方式: GET
请求地址: /pub/openapi/v1/symbol/index/all
登录授权: 否
请求参数: 无
返回结果:
字段名 | 字段类型 | 备注 |
---|---|---|
base_asset | string | 基础资产code |
quote_asset | string | 交易资产code |
symbol | string | 交易对code |
price_precision | int | 价格精度 |
volume_precision | int | 数量精度 |
{
"data": [
{
"base_asset": "USDT",
"symbol": "BTC_INDEX",
"price_precision": 2,
"quote_asset": "FT_INDEX",
"volume_precision": 0
},
{
"base_asset": "USDT",
"symbol": "MKR_INDEX",
"price_precision": 2,
"quote_asset": "FT_INDEX",
"volume_precision": 0
}
],
"errmsg": "",
"errno": 0
}
3. 期权交易对
请求方式: GET
请求地址: /pub/openapi/v1/symbol/options/all
登录授权: 否
请求参数: 无
返回结果:
字段名 | 字段类型 | 备注 |
---|---|---|
base_asset | string | 基础资产code |
symbol | string | 交易对code |
price_precision | int | 价格精度 |
volume_precision | int | 数量精度 |
direction | int | 方向:看涨:1,看跌:2 |
index_symbol | string | 关联指数 |
multiple | string | 合约乘数 |
strike_price | string | 行权价 |
strike_time | int64 | 行权时间,精确到秒 |
underlying_asset | string | 标的资产code |
quote_asset_precision | int | 交易资产精度 |
base_asset_precision | int | 基础资产精度 |
{
"data": [
{
"base_asset": "USDT",
"symbol": "FIL-20200927-16-C",
"direction": 1,
"index_symbol": "FIL_INDEX",
"multiple": "10",
"price_precision": 2,
"strike_price": "16",
"strike_time": 1601197200,
"underlying_asset": "FIL",
"volume_precision": 0
},
{
"base_asset": "USDT",
"symbol": "MKR-20201002-900-C",
"direction": 1,
"index_symbol": "MKR_INDEX",
"multiple": "0.1",
"price_precision": 2,
"strike_price": "900",
"strike_time": 1601629200,
"underlying_asset": "MKR",
"volume_precision": 0
},
{
"base_asset": "USDT",
"symbol": "BTC-20201002-7500-P",
"direction": 2,
"index_symbol": "BTC_INDEX",
"multiple": "0.1",
"price_precision": 2,
"quote_asset": "FT_OPTIONS",
"strike_price": "7500",
"strike_time": 1601629200,
"underlying_asset": "BTC",
"volume_precision": 0
}
],
"errmsg": "",
"errno": 0
}
4. 永续交易对
请求方式: GET
请求地址: /pub/openapi/v1/symbol/swap/all
登录授权: 否
请求参数: 无
返回结果:
字段名 | 字段类型 | 备注 |
---|---|---|
base_asset | string | 基础资产code |
symbol | string | 交易对code |
price_precision | int | 价格精度 |
volume_precision | int | 数量精度 |
index_symbol | string | 关联指数 |
multiple | string | 合约乘数 |
underlying_asset | string | 标的资产code |
quote_asset_precision | int | 交易资产精度 |
base_asset_precision | int | 基础资产精度 |
{
"data": [
{
"base_asset": "USDT",
"index_symbol": "BTC_INDEX",
"multiple": "0.1",
"price_precision": 2,
"symbol": "BTCUSDT_SWAP",
"underlying_asset": "BTC",
"volume_precision": 0
}
],
"errmsg": "",
"errno": 0
}
资产API
输出结构如下
字段名 | 字段类型 | 备注 |
---|---|---|
data | object | 返回数据 |
errmsg | string | 错误信息 |
errno | int | 错误码( 0 : 代表成功) |
{
"data":{},
"errmsg":"",
"errno":0
}
输出响应头的content-type默认应为application/json 若成功响应,则errno对应为0
1. 资产查询
请求方式: GET
请求地址: /openapi/v1/asset/all
请求授权: 是
请求参数:
无
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 资产列表 |
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
code | string | 资产code |
name | string | 资产名称 |
{
"data": {
"items": [
{
"code": "BTC",
"name": "Bitcoin"
},
{
"code": "USDT",
"name": "Tether USD"
}
]
},
"errmsg": "",
"errno": 0
}
2. 现货单个资产余额查询
请求方式: GET
请求地址: /openapi/v1/asset/spot/balance
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
asset | string | true | 资产code | “资产查询"获取, 如: BTC |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
asset | string | 资产code |
asset_name | string | 资产名称 |
available | string | 可用余额 |
frozen | string | 委托冻结资金 |
locked | string | 锁仓资金 |
total | string | 总计资金(可用+委托冻结+锁仓) |
{
"data": {
"asset": "BTC",
"asset_name": "Bitcoin",
"available": "1013.12720675",
"frozen": "0",
"locked": "0",
"total": "1013.12720675"
},
"errmsg": "",
"errno": 0
}
3. 现货所有资产余额查询
请求方式: GET
请求地址: /openapi/v1/asset/spot/all_balance
请求授权: 是
请求参数: 无
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 资产余额列表 |
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
asset | string | 资产code |
asset_name | string | 资产名称 |
available | string | 可用余额 |
frozen | string | 委托冻结资金 |
locked | string | 锁仓资金 |
total | string | 总计资金(可用+委托冻结+锁仓) |
{
"data": {
"items": [
{
"asset": "BTC",
"asset_name": "Bitcoin",
"available": "1013.12720675",
"frozen": "0",
"locked": "0",
"total": "1013.12720675"
},
{
"asset": "USDT",
"asset_name": "Tether USD",
"available": "9860739.020219",
"frozen": "279.21",
"locked": "0",
"total": "9861018.230219"
},
{
"asset": "ETH",
"asset_name": "Ethereum",
"available": "10000000.995",
"frozen": "0",
"locked": "0",
"total": "10000000.995"
}
]
},
"errmsg": "",
"errno": 0
}
4. 期权单个资产余额查询
请求方式: GET
请求地址: /openapi/v1/asset/options/balance
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
asset | string | true | 资产code | “资产查询"获取, 如: BTC |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
asset | string | 资产code |
asset_name | string | 资产名称 |
available | string | 可用余额 |
frozen | string | 委托冻结资金 |
total | string | 总计资金(可用+委托冻结+备兑冻结+保证金冻结) |
covered_frozen | string | 备兑冻结 |
margin_frozen | string | 保证金冻结 |
{
"data": {
"asset": "BTC",
"asset_name": "Bitcoin",
"available": "8999.9",
"covered_frozen": "0",
"frozen": "0.1",
"margin_frozen": "0",
"total": "9000"
},
"errmsg": "",
"errno": 0
}
5. 期权所有资产余额查询
请求方式: GET
请求地址: /openapi/v1/asset/options/all_balance
请求授权: 是
请求参数: 无
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 资产余额列表 |
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
asset | string | 资产code |
asset_name | string | 资产名称 |
available | string | 可用余额 |
frozen | string | 委托冻结资金 |
total | string | 总计资金(可用+委托冻结+备兑冻结+保证金冻结) |
covered_frozen | string | 备兑冻结 |
margin_frozen | string | 保证金冻结 |
{
"data": {
"items": [
{
"asset": "BTC",
"asset_name": "Bitcoin",
"available": "8999.9",
"covered_frozen": "0",
"frozen": "0.1",
"margin_frozen": "0",
"total": "9000"
},
{
"asset": "USDT",
"asset_name": "Tether USD",
"available": "90000491.665951",
"covered_frozen": "0",
"frozen": "218.33",
"margin_frozen": "96.3",
"total": "90000806.295951"
},
{
"asset": "ETH",
"asset_name": "Ethereum",
"available": "0",
"covered_frozen": "0",
"frozen": "0",
"margin_frozen": "0",
"total": "0"
}
]
},
"errmsg": "",
"errno": 0
}
6. 永续单个资产余额查询
请求方式: GET
请求地址: /openapi/v1/asset/swap/balance
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
asset | string | true | 资产code | “资产查询"获取, 如: BTC |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
asset | string | 资产code |
asset_name | string | 资产名称 |
available | string | 可用余额 |
frozen | string | 委托冻结资金 |
total | string | 总计资金(可用+委托冻结+保证金冻结) |
margin_frozen | string | 保证金冻结 |
{
"data": {
"asset": "USDT",
"asset_name": "Tether USD",
"available": "99773.583336",
"frozen": "0",
"margin_frozen": "8286.637863",
"total": "108060.221199"
},
"errmsg": "",
"errno": 0
}
7. 永续所有资产余额查询
请求方式: GET
请求地址: /openapi/v1/asset/swap/all_balance
请求授权: 是
请求参数: 无
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 资产余额列表 |
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
asset | string | 资产code |
asset_name | string | 资产名称 |
available | string | 可用余额 |
frozen | string | 委托冻结资金 |
total | string | 总计资金(可用+委托冻结+保证金冻结) |
margin_frozen | string | 保证金冻结 |
{
"data": {
"items": [
{
"asset": "BTC",
"asset_name": "Bitcoin",
"available": "0",
"frozen": "0",
"margin_frozen": "0",
"total": "0"
},
{
"asset": "USDT",
"asset_name": "Tether USD",
"available": "99773.583336",
"frozen": "0",
"margin_frozen": "8286.637863",
"total": "108060.221199"
}
]
},
"errmsg": "",
"errno": 0
}
8. 资产划转(现货账户)
请求方式: POST
请求地址: /openapi/v1/asset/transfer
登录授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
asset | string | 是 | 资产code | 如: BTC/USDT |
amount | float | 是 | 转账金额 | 如: 1.55 |
to_uid | int | 是 | 收款人 |
返回结果:
{
"data": {},
"errmsg": "",
"errno": 0
}
现货API
输出结构如下
字段名 | 字段类型 | 备注 |
---|---|---|
data | object | 返回数据 |
errmsg | string | 错误信息 |
errno | int | 错误码( 0 : 代表成功) |
{
"data":{},
"errmsg":"",
"errno":0
}
输出响应头的content-type默认应为application/json 若成功响应,则errno对应为0
另外,分页返回的 page 字段中,total为数据总条数(非总页数)。
1. 下单
请求方式: POST
请求地址: /openapi/v1/spot/order/place
请求授权: 是
请求参数:
{
"symbol":"BTC_USDT",
"order_type":"buy_limit",
"price":8838,
"volume":0.01,
"client_oid":"test1111111111111"
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | true | 交易对 | NA | 如: BTC_USDT, ETH_USDT |
order_type | string | true | 订单类型 | NA | buy_limit :限价-买,sell_limit :限价-卖,buy_market :市价-买,sell_market :市价-卖,limit_stop_loss :限价止损,limit_stop_profit :限价止盈,market_stop_loss :市价止损,market_stop_profit :市价止盈,buy_post_only : 只挂单-买,sell_post_only : 只挂单-卖 |
price | float | false | 委托价格 | NA | 对市价单无效 |
volume | float | true | 委托数量 | NA | |
tri_price | float | false | 止盈止损订单触发价格 | NA | |
remain_type | string | false | 剩余处理类型 | cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
|
client_oid | string | false | 用户自编订单号 | NA | 最大长度32个字符 |
retain_seconds | int | false | 挂单保留时间 | 0 | 单位:秒, 0表示不过期 |
-
remain_type : 剩余处理类型, 默认值
限价单, remain_type用
limit
: 以委托价挂单市价单/只挂单, remain_type用
cancel
: 未满足部分即时撤单 -
市价单/只挂单, remain_type只支持
cancel
: 未满足部分即时撤单
order_type 具体分类
1.1 buy_limit
: 限价-买
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | true | 交易对 | 见上 |
order_type | string | true | 订单类型 | 值为 buy_limit |
price | float | true | 委托价格 | 见上 |
volume | float | true | 委托数量 | 见上 |
1.2 sell_limit
: 限价-卖
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | true | 交易对 | 见上 |
order_type | string | true | 订单类型 | 值为 sell_limit |
price | float | true | 委托价格 | 见上 |
volume | float | true | 委托数量 | 见上 |
1.3 buy_market
: 市价-买
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | true | 交易对 | 见上 |
order_type | string | true | 订单类型 | 值为 buy_market |
volume | float | true | 委托数量 | 见上 |
1.4 sell_market
: 市价-卖
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | true | 交易对 | 见上 |
order_type | string | true | 订单类型 | 值为 sell_market |
volume | float | true | 委托数量 | 见上 |
1.5 limit_stop_loss
: 限价止损
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | true | 交易对 | 见上 |
order_type | string | true | 订单类型 | 值为 limit_stop_loss |
price | float | true | 委托价格 | 见上 |
volume | float | true | 委托数量 | 见上 |
tri_price | float | true | 触发价格(止损线) | 见上 |
1.6 limit_stop_profit
: 限价止盈
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | true | 交易对 | 见上 |
order_type | string | true | 订单类型 | 值为 limit_stop_profit |
price | float | true | 委托价格 | 见上 |
volume | float | true | 委托数量 | 见上 |
tri_price | float | true | 触发价格(止盈线) | 见上 |
1.7 market_stop_loss
: 市价止损
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | true | 交易对 | 见上 |
order_type | string | true | 订单类型 | 值为 market_stop_loss |
volume | float | true | 委托数量 | 见上 |
tri_price | float | true | 触发价格(止损线) | 见上 |
1.8 market_stop_profit
: 市价止盈
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | true | 交易对 | 见上 |
order_type | string | true | 订单类型 | 值为 market_stop_profit |
volume | float | true | 委托数量 | 见上 |
tri_price | float | true | 触发价格(止盈线) | 见上 |
1.9 buy_post_only
: 只挂单-买
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | true | 交易对 | 见上 |
order_type | string | true | 订单类型 | 值为 buy_post_only |
price | float | true | 委托价格 | 见上 |
volume | float | true | 委托数量 | 见上 |
1.10 sell_post_only
: 只挂单-卖
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | true | 交易对 | 见上 |
order_type | string | true | 订单类型 | 值为 sell_post_only |
price | float | true | 委托价格 | 见上 |
volume | float | true | 委托数量 | 见上 |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
tri_order_id | int | 触价单订单编号(触价单使用) |
order_id | int | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
{
"data": {
"tri_order_id": 1010000867764,
"order_id": 1010000867765,
"client_oid": "c111111a11111",
},
"errmsg":"",
"errno":0
}
2. 批量下单
- 一个批量最多5张订单
请求方式: POST
请求地址: /openapi/v1/spot/order/batch_place
请求授权: 是
请求参数:
{
"batch_orders":[
{
"symbol":"XRP_USDT",
"order_type":"buy_limit",
"price":0.21,
"volume":1,
"client_oid":"test1111111111111"
}, {
"symbol":"XRP_USDT",
"order_type":"sell_limit",
"price":0.22,
"volume":1,
"client_oid":"test1111111111112"
}, {
"symbol":"XRP_USDT",
"order_type":"buy_market",
"volume":1,
"client_oid":"test1111111111113"
}, {
"symbol":"XRP_USDT",
"order_type":"sell_market",
"volume":1,
"client_oid":"test1111111111114"
}, {
"symbol":"XRP_USDT",
"order_type":"limit_stop_loss",
"price":0.21,
"volume":1,
"tri_price":0.19,
"client_oid":"test1111111111115"
}
]
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
batch_orders | array | true | 下单数据 | NA |
- 参数
batch_orders
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | true | 交易对 | NA | 如: BTC_USDT, ETH_USDT |
order_type | string | true | 订单类型 | NA | buy_limit :限价-买,sell_limit :限价-卖,buy_market :市价-买,sell_market :市价-卖,limit_stop_loss :限价止损,limit_stop_profit :限价止盈,market_stop_loss :市价止损,market_stop_profit :市价止盈,buy_post_only : 只挂单-买,sell_post_only : 只挂单-卖 |
price | float | false | 委托价格 | NA | 对市价单无效 |
volume | float | true | 委托数量 | NA | |
tri_price | float | false | 止盈止损订单触发价格 | NA | |
remain_type | string | false | 剩余处理类型 | cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
|
client_oid | string | false | 用户自编订单号 | NA | 最大长度32个字符 |
retain_seconds | int | false | 挂单保留时间 | 0 | 单位:秒, 0表示不过期 |
-
remain_type : 剩余处理类型, 默认值
同"下单api"
-
市价单/只挂单, remain_type只支持
cancel
: 未满足部分即时撤单
order_type 具体分类: 同"下单api"
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 订单数据 |
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int | 订单编号 |
tri_order_id | int | 触价单订单编号(触价单使用) |
client_oid | string | 用户自编订单号(如有) |
errmsg | string | 错误信息 |
errno | int | 错误码(0 : 代表成功) |
{
"data": {
"items": [
{
"client_oid":"c111111a11111",
"tri_order_id":0,
"order_id":1010000868734,
"errmsg":"",
"errno":0
},
{
"client_oid":"c111111a11112",
"order_id":0,
"tri_order_id":0,
"errmsg":"Invalid remain type",
"errno":11010101
}
]
},
"errmsg":"",
"errno":0
}
3. 撤单
请求方式: POST
请求地址: /openapi/v1/spot/order/cancel
请求授权: 是
请求参数:
{
"order_id":1010000869102
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
order_id | int64 | true | 订单id | NA |
响应数据:
{
"data": {
"order_id": 1010000866876,
"client_oid": "c111111a11111",
},
"errmsg":"",
"errno":0
}
4. 批量撤单
- 一个批量最多10张订单
请求方式: POST
请求地址: /openapi/v1/spot/order/batch_cancel
请求授权: 是
请求参数:
{
"order_ids": [
1010000869123,
1010000869124
]
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
order_ids | int64[] | true | 订单id | NA |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
success | array | 撤单成功订单 |
failed | array | 撤单失败订单 |
- 返回参数
success
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
- 返回参数
failed
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
errmsg | string | 错误信息(仅对被拒订单有效) |
errno | int | 错误码(仅对被拒订单有效) |
{
"data": {
"failed": [
{
"client_oid":"",
"errmsg":"委托单已处理,无法撤单",
"errno":11010202,
"order_id":1010000868741
}
],
"success": [
{
"client_oid":"test1111111111111",
"errmsg":"",
"errno":0,
"order_id":1010000868744
},
{
"client_oid":"test1111111111112",
"errmsg":"",
"errno":0,
"order_id":1010000868745
}
]
},
"errmsg":"",
"errno":0
}
5. 交易对批量撤单
请求方式: POST
请求地址:/openapi/v1/spot/order/symbol_batch_cancel
登录授权:是
请求参数:
{
"symbol": "BTC_USDT",
"direction": 0
"price":1.234
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | true | 交易对 | NA | 如: BTC_USDT, ETH_USDT |
direction | int | false | 交易对 | 0 |
1 :撤卖单; 2 :撤买单; 0 :撤买卖单 |
price | float | false | 撤单价格 | 0 |
撤销当前价到买一或卖一价之间所有委托单;值为0不生效 |
响应数据:
{
"data":{},
"errmsg":"",
"errno":0
}
6. 订单详情
请求方式: GET
请求地址: /openapi/v1/spot/order/query
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
order_id | int64 | true | 订单id | NA |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
order_time | int | 委托时间(时间戳) |
order_id | int64 | 订单ID |
client_oid | string | 用户自编订单号 |
symbol | string | 交易对 |
direction | string | 买卖方向, buy :买, sell :卖 |
price | string | 委托价格 |
volume | string | 委托数量 |
match_volume | string | 成交数量 |
match_amount | string | 成交金额 |
queue_price | string | 挂单价格 |
queue_volume | string | 挂单数量 |
order_type | string | 订单类型,buy_limit :限价-买,sell_limit :限价-卖,buy_market :市价-买,sell_market :市价-卖,limit_stop_loss :限价止损,limit_stop_profit :限价止盈,market_stop_loss :市价止损,market_stop_profit :市价止盈,buy_post_only : 只挂单-买,sell_post_only : 只挂单-卖 |
remain_type | string | 剩余处理类型, cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
state | int | 委托单状态, 0 . 待处理, 1 . 挂单中, 2 . 撤单中, 3 . 无成交且已撤单, 4 . 部分成交且已撤单, 5 . 全部成交, 6 . 错误, 7 . 等待触发, 8 . 已触发, 9 . 触价失效 |
tri_direction | string | 触发单方向, up : 上触价, down : 下触价 |
tri_price | string | 触发价格 |
{
"data": {
"order_time": 1601283710,
"order_id": 10100002577892,
"client_oid": "test00001",
"symbol": "BTC_USDT",
"direction": "buy",
"price": "7000",
"volume": "0.001",
"match_volume": "0.001",
"match_amount": "7",
"queue_price": "7000",
"queue_volume": "0",
"order_type": "buy_limit",
"state": 5,
"tri_price": "0",
"tri_direction": "",
"remain_type": "limit"
},
"errmsg":"",
"errno":0
}
7. 当前委托查询
请求方式: GET
请求地址: /openapi/v1/spot/order/pending
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | false | 交易对 | NA | 如: BTC_USDT, ETH_USDT |
start_date | string | false | 查询开始日期 | NA | 日期格式 yyyy-mm-dd , 以订单生成时间进行查询 |
end_date | string | false | 查询结束日期 | NA | 日期格式 yyyy-mm-dd , 以订单生成时间进行查询 |
num | int | false | 结果集数量 | 10 | 每页返回的结果集数量,最大为100,不填默认返回10条 |
- start_date,end_date相关
- 起止时间需同时存在
- 开始时间小于等于结束时间
- 结束时间不能大于当前时间
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 订单列表 |
page | object | 分页信息 |
- 返回参数
page
字段名 | 字段类型 | 备注 |
---|---|---|
prev | string | 上一页, 第1页时值为”” |
next | string | 下一页, items 数组长度小于num 时值为”” |
分页使用:
第1页:
`openapi/v1/spot/order/pending`
上一页: 当前页大于`1`时, `prev`返回值不为空, 如下
`openapi/v1/spot/order/pending?prev_id=xxxx&page_index=2`
下一页: `items`数组长度等于`num`时, `next`返回值不为空, 如下
`openapi/v1/spot/order/pending?next_id=xxxx&page_index=3`
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
order_time | int | 委托时间(时间戳) |
order_id | int64 | 订单ID |
client_oid | string | 用户自编订单号 |
symbol | string | 交易对 |
direction | string | 买卖方向, buy :买, sell :卖 |
price | string | 委托价格 |
volume | string | 委托数量 |
match_volume | string | 成交数量 |
match_amount | string | 成交金额 |
queue_price | string | 挂单价格 |
queue_volume | string | 挂单数量 |
order_type | string | 订单类型,buy_limit :限价-买,sell_limit :限价-卖,buy_market :市价-买,sell_market :市价-卖,limit_stop_loss :限价止损,limit_stop_profit :限价止盈,market_stop_loss :市价止损,market_stop_profit :市价止盈,buy_post_only : 只挂单-买,sell_post_only : 只挂单-卖 |
remain_type | string | 剩余处理类型, cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
state | int | 委托单状态, 0 . 待处理, 1 . 挂单中, 2 . 撤单中, 3 . 无成交且已撤单, 4 . 部分成交且已撤单, 5 . 全部成交, 6 . 错误, 7 . 等待触发, 8 . 已触发, 9 . 触价失效 |
tri_direction | string | 触发单方向, up : 上触价, down : 下触价 |
tri_price | string | 触发价格 |
{
"data": {
"items": [
{
"order_time": 1601283710,
"order_id": 10100002577892,
"client_oid": "test00001",
"symbol": "BTC_USDT",
"direction": "buy",
"price": "7000",
"volume": "0.001",
"match_volume": "0.001",
"match_amount": "7",
"queue_price": "7000",
"queue_volume": "0",
"order_type": "buy_limit",
"state": 5,
"tri_price": "0",
"tri_direction": "",
"remain_type": "limit"
},
],
"page": {
"prev": "",
"next": "/openapi/v1/spot/order/pending?next_id=10100002606285&page_index=2"
}
},
"errmsg": "",
"errno": 0
}
8. 历史委托查询
请求方式: GET
请求地址: /openapi/v1/spot/order/filled
请求授权: 是
请求参数: 同当前委托查询
响应数据: 同当前委托查询
9. 所有委托查询
请求方式: GET
请求地址: /openapi/v1/spot/order/all
请求授权: 是
请求参数: 同当前委托查询
响应数据: 同当前委托查询
10. 成交查询
请求方式: GET
请求地址: /openapi/v1/spot/order/matches
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
order_id | int64 | false | 订单id | NA | |
symbol | string | false | 交易对 | NA | 如: BTC_USDT, ETH_USDT |
start_date | string | false | 查询开始日期 | NA | 日期格式 yyyy-mm-dd , 以成交时间进行查询 |
end_date | string | false | 查询结束日期 | NA | 日期格式 yyyy-mm-dd , 以成交时间时间进行查询 |
num | int | false | 结果集数量 | 10 | 每页返回的结果集数量,最大为100,不填默认返回10条 |
- start_date,end_date相关
- 起止时间需同时存在
- 开始时间小于等于结束时间
- 结束时间不能大于当前时间
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 成交列表 |
page | object | 分页信息 |
- 返回参数
page
字段名 | 字段类型 | 备注 |
---|---|---|
prev | string | 上一页, 第1页时值为”” |
next | string | 下一页, items 数组长度小于num 时值为”” |
分页使用:同当前委托查询
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
match_time | int | 成交时间(时间戳) |
direction | string | 买卖方向, buy :买, sell :卖 |
price | string | 成交价格 |
volume | string | 成交数量 |
fee_asset | string | 手续费资产 |
fee_volume | string | 手续费 |
symbol | string | 交易对 |
bonus_asset | string | maker补贴资产 |
bonus_volume | string | maker补贴资产数量 |
{
"data": {
"items": [
{
"direction": "sell",
"fee_asset": "USDT",
"fee_volume": "0.09607",
"match_time": 1591431070,
"price": "9607.04",
"symbol": "BTC_USDT",
"volume": "0.01",
"bonus_asset": "USDT",
"bonus_volume": "0.15"
}
],
"page": {
"prev": "",
"next": "/openapi/v1/spot/order/matches?next_id=1312783&page_index=2"
}
},
"errmsg": "",
"errno": 0
}
期权API
输出结构如下
字段名 | 字段类型 | 备注 |
---|---|---|
data | object | 返回数据 |
errmsg | string | 错误信息 |
errno | int | 错误码( 0 : 代表成功) |
{
"data":{},
"errmsg":"",
"errno":0
}
输出响应头的content-type默认应为application/json 若成功响应,则errno对应为0
1. 下单
请求方式: POST
请求地址: /openapi/v1/options/order/place
请求授权: 是
请求参数:
{
"symbol": "BTC-0612-7500-C",
"price":218.1,
"volume":1,
"offset": "open",
"open_mode": "buy",
"client_oid":"test2111111111111"
}
常用参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | true | 交易对 | NA | 如: BTC-0515-8250-C, BTC-0515-8250-P |
price | float | true | 委托价格 | NA | price_type 为market 时可不传此参数 |
volume | int | true | 委托数量(张) | NA | 委托数量只能为整数(xx张) |
offset | string | true | 开仓/平仓 | NA | open : 开仓, close : 平仓 |
open_mode | string | true | 开仓模式 | NA | buy : 买入开仓,covered_sell :备兑卖出开仓,margin_sell :保证金卖出开仓"看跌"期权不支持 covered_sell |
client_oid | string | false | 用户自编订单号 | NA | 最大长度32个字符 |
高级选项(可选)
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
price_type | string | false | 价格类型 | limit |
limit : 限价, average : 均价, market : 市价 |
remain_type | string | false | 剩余处理类型 | limit |
cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
retain_seconds | int | false | 挂单保留时间 | 0: 不过期 | 单位:秒, 0表示不过期 |
-
remain_type : 剩余处理类型, 默认值
price_type用
limit
: 限价, remain_type用limit
: 以委托价挂单price_type用
average
: 均价, remain_type用limit_match_best
: 以最优成交价挂单,如果没有成交则撤单price_type用
market
: 市价, remain_type用cancel
: 未满足部分即时撤单 -
市价单, remain_type只支持
cancel
: 未满足部分即时撤单
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
{
"data": {
"order_id": 1020000867765,
"client_oid": "c111111a11111",
},
"errmsg":"",
"errno":0
}
2. 批量下单
- 一个批量最多5张订单
请求方式: POST
请求地址: /openapi/v1/options/order/batch_place
请求授权: 是
请求参数:
{
"batch_orders": [
{
"symbol": "BTC-0612-7500-C",
"price":224.1,
"volume":1,
"offset": "open",
"open_mode": "buy",
"client_oid":"test2111111111114"
}, {
"symbol": "BTC-0612-7500-C",
"price":225.1,
"volume":1,
"offset": "open",
"open_mode": "covered_sell",
"client_oid":"test2111111111115"
}, {
"symbol": "BTC-0612-7500-C",
"price":225.1,
"volume":1,
"offset": "open",
"open_mode": "margin_sell",
"client_oid":"test2111111111116"
}, {
"symbol": "BTC-0612-7500-C",
"price":218.1,
"volume":1,
"offset": "close",
"open_mode": "buy",
"client_oid":"test2111111111117"
}, {
"symbol": "BTC-0612-7500-C",
"price":220,
"volume":1,
"offset": "close",
"open_mode": "covered_sell",
"client_oid":"test2111111111118"
}
]
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
batch_orders | array | true | 下单数据 | NA |
- 参数
batch_orders
常用参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | true | 交易对 | NA | 如: BTC-0515-8250-C, BTC-0515-8250-P |
price | float | true | 委托价格 | NA | price_type 为market 时可不传此参数 |
volume | int | true | 委托数量(张) | NA | 委托数量只能为整数(xx张) |
offset | string | true | 开仓/平仓 | NA | open : 开仓, close : 平仓 |
open_mode | string | true | 开仓模式 | NA | buy : 买入开仓,covered_sell :备兑卖出开仓,margin_sell :保证金卖出开仓"看跌"期权不支持 covered_sell |
client_oid | string | false | 用户自编订单号 | NA | 最大长度32个字符 |
高级选项(可选)
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
price_type | string | false | 价格类型 | limit |
limit : 限价, average : 均价, market : 市价 |
remain_type | string | false | 剩余处理类型 | limit |
cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
retain_seconds | int | false | 挂单保留时间 | 0: 不过期 | 单位:秒, 0表示不过期 |
-
remain_type : 剩余处理类型, 默认值, 请参考"下单api”
-
市价单, remain_type只支持
cancel
: 未满足部分即时撤单
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 订单数据 |
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
errmsg | string | 错误信息 |
errno | int | 错误码(0 : 代表成功) |
{
"data": {
"items": [
{
"client_oid": "test2111111111114",
"errmsg": "",
"errno": 0,
"order_id": 1020000869145
},
{
"client_oid": "test2111111111115",
"errmsg": "",
"errno": 0,
"order_id": 1020000869146
},
{
"client_oid": "test2111111111116",
"errmsg": "",
"errno": 0,
"order_id": 1020000869147
},
{
"client_oid": "test2111111111117",
"errmsg": "",
"errno": 0,
"order_id": 1020000869148
},
{
"client_oid": "test2111111111118",
"errmsg": "期权未平合约数不足",
"errno": 11020501,
"order_id": 0
}
]
},
"errmsg": "",
"errno": 0
}
3. 单向持仓下单
请求方式: POST
请求地址: /openapi/v1/options/order/place_uni
请求授权: 是
请求参数:
{
"symbol": "BTC-20210831-32000-C",
"price": 60,
"volume":2,
"offset": "open",
"open_mode": "buy",
"client_oid": "100000000000000000109"
}
常用参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | true | 交易对 | NA | 如: BTC-0515-8250-C, BTC-0515-8250-P |
price | float | true | 委托价格 | NA | price_type 为market 时可不传此参数 |
volume | int | true | 委托数量(张) | NA | 委托数量只能为整数(xx张) |
offset | string | true | 开仓/平仓 | NA | open : 开仓, close : 平仓, auto : 先平仓再开仓 |
open_mode | string | true | 开仓模式 | NA | buy : 买入开仓,covered_sell :备兑卖出开仓,margin_sell :保证金卖出开仓"看跌"期权不支持 covered_sell |
client_oid | string | false | 用户自编订单号 | NA | 最大长度32个字符 |
高级选项(可选)
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
price_type | string | false | 价格类型 | limit |
limit : 限价, average : 均价, market : 市价 |
remain_type | string | false | 剩余处理类型 | limit |
cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
retain_seconds | int | false | 挂单保留时间 | 0: 不过期 | 单位:秒, 0表示不过期 |
-
remain_type : 剩余处理类型, 默认值
price_type用
limit
: 限价, remain_type用limit
: 以委托价挂单price_type用
average
: 均价, remain_type用limit_match_best
: 以最优成交价挂单,如果没有成交则撤单price_type用
market
: 市价, remain_type用cancel
: 未满足部分即时撤单 -
市价单, remain_type只支持
cancel
: 未满足部分即时撤单
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
open | object | 开仓数据 |
close | array | 平仓数据 |
- 返回参数
open
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
errmsg | string | 错误信息 |
errno | int | 错误码(0 : 代表成功) |
- 返回参数
close
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
errmsg | string | 错误信息 |
errno | int | 错误码(0 : 代表成功) |
{
"data": {
"close": [
{
"client_oid": "",
"errmsg": "",
"errno": 0,
"order_id": 5638463651748380672
}
],
"open": {
"client_oid": "",
"errmsg": "",
"errno": 0,
"order_id": 5638463656043347969
}
},
"errmsg": "",
"errno": 0
}
4. 撤单
请求方式: POST
请求地址: /openapi/v1/options/order/cancel
请求授权: 是
请求参数:
{
"order_id":1020000869150
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
order_id | int64 | true | 订单id | NA |
响应数据:
{
"data": {
"order_id": 1010000866876,
"client_oid": "c111111a11111",
},
"errmsg":"",
"errno":0
}
5. 批量撤单
- 一个批量最多10张订单
请求方式: POST
请求地址: /openapi/v1/options/order/batch_cancel
请求授权: 是
请求参数:
{
"order_ids": [
1020000869143,
1020000869144
]
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
order_ids | int64[] | true | 订单id | NA |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
success | array | 撤单成功订单 |
failed | array | 撤单失败订单 |
- 返回参数
success
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
- 返回参数
failed
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
errmsg | string | 错误信息(仅对被拒订单有效) |
errno | int | 错误码(仅对被拒订单有效) |
{
"data": {
"failed": [
{
"client_oid": "",
"errmsg": "订单未触发,禁止撤单",
"errno": 11010203,
"order_id": 1020000869144
}
],
"success": [
{
"client_oid": "",
"errmsg": "",
"errno": 0,
"order_id": 1020000869143
}
]
},
"errmsg": "",
"errno": 0
}
6. 交易对批量撤单
请求方式: POST
请求地址:/openapi/v1/options/order/symbol_batch_cancel
登录授权:是
请求参数:
{
"symbol": "BTC-0612-7500-C",
"direction": 0
"price":1.234
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | true | 交易对 | NA | 如: BTC-0612-7500-C |
direction | int | false | 交易对 | 0 |
1 :撤卖单; 2 :撤买单; 0 :撤买卖单 |
price | float | false | 撤单价格 | 0 |
撤销当前价到买一或卖一价之间所有委托单;值为0不生效 |
响应数据:
{
"data":{},
"errmsg":"",
"errno":0
}
7. 订单详情
请求方式: GET
请求地址: /openapi/v1/options/order/query
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
order_id | int64 | true | 订单id | NA |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
order_time | int | 委托时间 |
order_id | int64 | 订单ID |
client_oid | string | 用户自编订单号 |
symbol | string | 交易对名称 |
direction | string | 买卖方向, buy :买, sell :卖 |
price | string | 委托价格 |
volume | string | 委托数量 |
offset | string | 开仓/平仓, open : 开仓, close : 平仓 |
open_mode | string | 开仓模式, buy : 买入开仓,covered_sell :备兑卖出开仓,margin_sell :保证金卖出开仓 |
price_type | string | 价格类型 limit : 限价, average : 均价, market : 市价 |
match_volume | string | 成交数量 |
match_amount | string | 成交金额 |
queue_price | string | 挂单价格 |
queue_volume | string | 挂单数量 |
remain_type | string | 剩余处理类型, cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
state | int | 委托单状态, 0 . 待处理, 1 . 挂单中, 2 . 撤单中, 3 . 无成交且已撤单, 4 . 部分成交且已撤单, 5 . 全部成交, 6 . 错误, 7 . 等待触发, 8 . 已触发, 9 . 触价失效 |
{
"data": {
"order_time": 1602315076,
"order_id": 10200002605606,
"client_oid": "",
"symbol": "BTC-20201016-7500-C",
"direction": "sell",
"price": "301",
"volume": "1",
"offset": "open",
"open_mode": "margin_sell",
"price_type": "limit",
"match_volume": "1",
"match_amount": "585.55",
"queue_price": "301",
"queue_volume": "0",
"state": 5,
"remain_type": "limit"
},
"errmsg": "",
"errno": 0
}
8. 当前委托查询
请求方式: GET
请求地址: /openapi/v1/options/order/pending
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | false | 交易对 | NA | 如: BTC_USDT, ETH_USDT |
start_date | string | false | 查询开始日期 | NA | 日期格式 yyyy-mm-dd , 以订单生成时间进行查询 |
end_date | string | false | 查询结束日期 | NA | 日期格式 yyyy-mm-dd , 以订单生成时间进行查询 |
num | int | false | 结果集数量 | 10 | 每页返回的结果集数量,最大为100,不填默认返回10条 |
- start_date,end_date相关
- 起止时间需同时存在
- 开始时间小于等于结束时间
- 结束时间不能大于当前时间
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 订单列表 |
page | object | 分页信息 |
- 返回参数
page
字段名 | 字段类型 | 备注 |
---|---|---|
prev | string | 上一页, 第1页时值为”” |
next | string | 下一页, items 数组长度小于num 时值为”” |
分页使用:
第1页:
`openapi/v1/options/order/pending`
上一页: 当前页大于`1`时, `prev`返回值不为空, 如下
`openapi/v1/options/order/pending?prev_id=xxxx&page_index=2`
下一页: `items`数组长度等于`num`时, `next`返回值不为空, 如下
`/openapi/v1/options/order/pending?next_id=xxxx&page_index=3`
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
order_time | int | 委托时间 |
order_id | int64 | 订单ID |
client_oid | string | 用户自编订单号 |
symbol | string | 交易对名称 |
direction | string | 买卖方向, buy :买, sell :卖 |
price | string | 委托价格 |
volume | string | 委托数量 |
queue_price | string | 挂单价格 |
queue_volume | string | 挂单数量 |
offset | string | 开仓/平仓, open : 开仓, close : 平仓 |
open_mode | string | 开仓模式, buy : 买入开仓,covered_sell :备兑卖出开仓,margin_sell :保证金卖出开仓 |
price_type | string | 价格类型 limit : 限价, average : 均价, market : 市价 |
match_volume | string | 成交数量 |
match_amount | string | 成交金额 |
remain_type | string | 剩余处理类型, cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
state | int | 委托单状态, 0 . 待处理, 1 . 挂单中, 2 . 撤单中, 3 . 无成交且已撤单, 4 . 部分成交且已撤单, 5 . 全部成交, 6 . 错误, 7 . 等待触发, 8 . 已触发, 9 . 触价失效 |
{
"data": {
"items": [
{
"order_time": 1602315076,
"order_id": 10200002605606,
"client_oid": "",
"symbol": "BTC-20201016-7500-C",
"direction": "sell",
"price": "301",
"volume": "1",
"offset": "open",
"open_mode": "margin_sell",
"price_type": "limit",
"match_volume": "1",
"match_amount": "585.55",
"queue_price": "301",
"queue_volume": "0",
"state": 5,
"remain_type": "limit"
}
],
"page": {
"prev": "",
"next": "/openapi/v1/options/order/pending?next_id=10200001849964&page_index=2"
}
},
"errmsg": "",
"errno": 0
}
9. 历史委托查询
请求方式: GET
请求地址: /openapi/v1/options/order/filled
请求授权: 是
请求参数: 同当前委托查询
响应数据: 同当前委托查询
10. 所有委托查询
请求方式: GET
请求地址: /openapi/v1/options/order/all
请求授权: 是
请求参数: 同当前委托查询
响应数据: 同当前委托查询
11. 成交查询
请求方式: GET
请求地址: /openapi/v1/options/order/matches
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
order_id | int64 | true | 订单id | NA | |
symbol | string | true | 交易对 | NA | 如: BTC_USDT, ETH_USDT |
start_date | string | false | 查询开始日期 | NA | 日期格式 yyyy-mm-dd , 以成交时间进行查询 |
end_date | string | false | 查询结束日期 | NA | 日期格式 yyyy-mm-dd , 以成交时间时间进行查询 |
num | int | false | 结果集数量 | 10 | 每页返回的结果集数量,最大为100,不填默认返回10条 |
- start_date,end_date相关
- 起止时间需同时存在
- 开始时间小于等于结束时间
- 结束时间不能大于当前时间
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 成交列表 |
page | object | 分页信息 |
- 返回参数
page
字段名 | 字段类型 | 备注 |
---|---|---|
prev | string | 上一页, 第1页时值为”” |
next | string | 下一页, items 数组长度小于num 时值为”” |
分页使用:同当前委托查询
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
match_time | int | 成交时间 |
direction | string | 买卖方向, buy :买, sell :卖 |
price | string | 成交价格 |
volume | string | 成交数量 |
fee_asset | string | 手续费资产 |
fee_volume | string | 手续费 |
symbol | string | 交易对 |
offset | string | 开仓/平仓, open : 开仓, close : 平仓 |
open_mode | string | 开仓模式, buy : 买入开仓,covered_sell :备兑卖出开仓,margin_sell :保证金卖出开仓 |
bonus_asset | string | maker补贴资产 |
bonus_volume | string | maker补贴资产数量 |
{
"data": {
"items": [
{
"direction": "sell",
"fee_asset": "USDT",
"fee_volume": "0.1",
"match_time": 1591448079,
"offset": "open",
"open_mode": "margin_sell",
"price": "213.37",
"symbol": "BTC-0612-7500-C",
"volume": "1",
"bonus_asset": "USDT",
"bonus_volume": "0.15"
}
],
"page": {
"prev": "",
"next": "/openapi/v1/options/order/matches?next_id=1313173&page_index=2"
}
},
"errmsg": "",
"errno": 0
}
12. 期权持仓查询
请求方式: GET
请求地址: /openapi/v1/options/position
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | false | 交易对 | NA | 如: BTC-0515-8250-C |
symbols | string[] | false | 交易对 | NA | 多个交易对查询,最多10 个交易对 |
num | int | false | 结果集数量 | 10 | 每页返回的结果集数量,最大为100,不填默认返回10条 |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 持仓列表 |
page | object | 分页信息 |
- 返回参数
page
字段名 | 字段类型 | 备注 |
---|---|---|
prev | string | 上一页, 第1页时值为”” |
next | string | 下一页, items 数组长度小于num 时值为”” |
分页使用:同当前委托查询
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
open_volume | int | 持仓数量 |
frozen_volume | int | 冻结数量 |
available | int | 可平仓数量 - open_volume(持仓数量) - frozen_volume(冻结数量) |
covered_frozen | string | 冻结备兑数量(备兑占用) |
margin_frozen | string | 冻结保证金数额(保证金占用) |
open_mode | string | 开仓模式, buy : 买入开仓,covered_sell :备兑卖出开仓,margin_sell :保证金卖出开仓 |
open_profit | string | 收益(浮动盈亏) |
symbol | string | 交易对名称 |
expiration_date | int | 期权到期日(10位时间戳) |
{
"data": {
"items": [
{
"open_volume": 1,
"frozen_volume": 0,
"available": 1,
"covered_frozen": "0",
"margin_frozen": "0",
"open_mode": "buy",
"open_profit": "108.4",
"symbol": "BTC-20201016-7500-C",
"expiration_date": 1602838800
}
],
"page": {
"prev": "",
"next": "/openapi/v1/options/position?next_id=115245&page_index=2"
}
},
"errmsg": "",
"errno": 0
}
永续API
输出结构如下
字段名 | 字段类型 | 备注 |
---|---|---|
data | object | 返回数据 |
errmsg | string | 错误信息 |
errno | int | 错误码( 0 : 代表成功) |
{
"data":{},
"errmsg":"",
"errno":0
}
输出响应头的content-type默认应为application/json 若成功响应,则errno对应为0
1. 获取下单数据
请求方式: GET
请求地址: /openapi/v1/swap/order/data
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | true | 交易对 | NA | 如: BTCUSDT_SWAP |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
max_leverage | int | 最大杠杆倍数 |
user_leverage | int | 用户杠杆倍数 如果未设置默认值 20 |
margin_mode | string | 保证金模式cross : 全仓, isolated : 逐仓如果未设置默认值 cross |
ladder_qtys | array | 阶梯数量 |
- 返回参数
ladder_qtys
字段名 | 字段类型 | 备注 |
---|---|---|
min_qty | int | 最小数量 |
max_qty | int | 最大数量 |
min_lrg | int | 最小杠杆 |
max_qty | int | 最大杠杆 |
pos_qty | int | 已有持仓数量(未平持仓+委托) |
remain_qty | int | 剩余可开数量 |
{
"data":{
"ladder_qtys": [
{
"min_qty": 0,
"max_qty": 10,
"min_lrg": 100,
"max_lrg": 150,
"pos_qty": 6,
"remain_qty": 0
},
{
"min_qty": 10,
"max_qty": 20,
"min_lrg": 80,
"max_lrg": 100,
"pos_qty": 14,
"remain_qty": 0
},
{
"min_qty": 20,
"max_qty": 50,
"min_lrg": 50,
"max_lrg": 80,
"pos_qty": 0,
"remain_qty": 28
},
{
"min_qty": 50,
"max_qty": 100,
"min_lrg": 0,
"max_lrg": 50,
"pos_qty": 52,
"remain_qty": 28
}
],
"margin_mode": "cross",
"max_leverage": 150,
"user_leverage": 20
},
"errmsg":"",
"errno":0
}
-
用户可用最大杠杆倍数及在此倍数下可开张数, 列表/计算如下:
持仓量(累计) 杠杆 已有持仓 剩余可开 0,10 100,150 6 0 10,20 80,100 14 0 20,50 50,80 0 28 50,100 0,50 52 28 -
上表"剩余可开"计算公式/规则:
“持仓量” – 此阶梯及高于此阶梯已有持仓(未平持仓/委托)累积;
如 “80,100” 此阶梯剩余: 20 – (14+6) = 0低阶梯挤占高阶梯: min(当前阶梯"剩余可开”, 低于当前阶梯"剩余可开”)
如上表, 虽然 “100,150” 倍区间剩余 4 张, 但"80,100"倍区间“挤占”了它的空间,所以不可开仓
2. 账户保证金模式设置
请求方式: POST
请求地址: /openapi/v1/swap/set_margin_mode
登录授权: 是
请求参数:
{
"symbol": "BTCUSDT_SWAP",
"margin_mode": "cross"
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | 是 | 交易对 | |
margin_mode | string | 是 | 保证金模式 | cross : 全仓,isolated : 逐仓 |
响应数据:
{
"data":{},
"errmsg":"",
"errno":0
}
3. 动态调整杠杆
请求方式: POST
请求地址: /openapi/v1/swap/adjust_leverage
登录授权: 是
请求参数:
{
"symbol": "BTCUSDT_SWAP",
"leverage": 30
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | 是 | 交易对 | |
leverage | int | 是 | 杠杆 |
响应数据:
{
"data":{},
"errmsg":"",
"errno":0
}
4. 下单
请求方式: POST
请求地址: /openapi/v1/swap/order/place
请求授权: 是
请求参数:
{
"symbol": "BTCUSDT_SWAP",
"leverage":10,
"price": 70,
"volume":1,
"offset": "open",
"direction": "buy",
"client_oid":"100000000000000003"
}
常用参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | true | 交易对 | NA | 如: BTCUSDT_SWAP |
leverage | int | false | 杠杆 | NA | 开仓必传,平仓不传 |
price | float | false | 委托价格 | NA | price_type 为market 时可不传此参数 |
volume | int | true | 委托数量(张) | NA | 委托数量只能为整数(xx张) |
offset | string | true | 开仓/平仓 | NA | open : 开仓, close : 平仓 |
pos_id | int | false | 未平持仓id | NA | 平仓时必传 |
direction | string | false | 买入/卖出 | NA | buy :买入, sell :卖出开仓必传,平仓不传 |
client_oid | string | false | 用户自编订单号 | NA | 最大长度32个字符 |
高级选项(可选)
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
price_type | string | false | 价格类型 | limit |
limit : 限价, average : 均价, market : 市价, post_only : 只挂单 |
remain_type | string | false | 剩余处理类型 | limit |
cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
retain_seconds | int | false | 挂单保留时间 | 0 | 单位:秒, 0表示不过期 |
-
remain_type : 剩余处理类型, 默认值
price_type用
limit
: 限价, remain_type用limit
: 以委托价挂单price_type用
average
: 均价, remain_type用limit_match_best
: 以最优成交价挂单,如果没有成交则撤单price_type用
market
: 市价 或post_only
: 只挂单, remain_type用cancel
: 未满足部分即时撤单 -
market
: 市价 或post_only
: 只挂单, remain_type只支持cancel
: 未满足部分即时撤单
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
{
"data": {
"order_id": 1020000867765,
"client_oid": "c111111a11111",
},
"errmsg":"",
"errno":0
}
5. 批量下单
- 一个批量最多5张订单
请求方式: POST
请求地址: /openapi/v1/swap/order/batch_place
请求授权: 是
请求参数:
{
"batch_orders": [
{
"symbol": "BTCUSDT_SWAP",
"leverage":10,
"price": 70,
"volume":1,
"offset": "open",
"direction": "buy",
"client_oid":"100000000000000004"
}, {
"symbol": "BTCUSDT_SWAP",
"leverage":10,
"volume":1,
"offset": "open",
"direction": "buy",
"client_oid":"100000000000000005",
"price_type": "market"
}, {
"symbol": "BTCUSDT_SWAP",
"price": 90,
"volume":1,
"offset": "close",
"price_type": "limit",
"pos_id": 6
}
]
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
batch_orders | array | true | 下单数据 | NA |
- 参数
batch_orders
常用参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | true | 交易对 | NA | 如: BTCUSDT_SWAP |
leverage | int | false | 杠杆 | NA | 开仓必传,平仓不传 |
price | float | false | 委托价格 | NA | price_type 为market 时可不传此参数 |
volume | int | true | 委托数量(张) | NA | 委托数量只能为整数(xx张) |
offset | string | true | 开仓/平仓 | NA | open : 开仓, close : 平仓 |
pos_id | int | false | 未平持仓id | NA | 平仓时必传 |
direction | string | false | 买入/卖出 | NA | buy :买入, sell :卖出开仓必传,平仓不传 |
client_oid | string | false | 用户自编订单号 | NA | 最大长度32个字符 |
高级选项(可选)
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
price_type | string | false | 价格类型 | limit |
limit : 限价, average : 均价, market : 市价, post_only : 只挂单 |
remain_type | string | false | 剩余处理类型 | limit |
cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
retain_seconds | int | false | 挂单保留时间 | 0 | 单位:秒, 0表示不过期 |
-
remain_type : 剩余处理类型, 默认值, 请参考"下单api”
-
market
: 市价 或post_only
: 只挂单, remain_type只支持cancel
: 未满足部分即时撤单
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 订单数据 |
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
errmsg | string | 错误信息 |
errno | int | 错误码(0 : 代表成功) |
{
"data": {
"items": [
{
"client_oid": "test2111111111114",
"errmsg": "",
"errno": 0,
"order_id": 1020000869145
},
{
"client_oid": "test2111111111115",
"errmsg": "",
"errno": 0,
"order_id": 1020000869146
},
{
"client_oid": "test2111111111116",
"errmsg": "",
"errno": 0,
"order_id": 1020000869147
},
{
"client_oid": "test2111111111117",
"errmsg": "",
"errno": 0,
"order_id": 1020000869148
},
{
"client_oid": "test2111111111118",
"errmsg": "未平合约数不足",
"errno": 11020501,
"order_id": 0
}
]
},
"errmsg": "",
"errno": 0
}
6. 单向持仓下单
请求方式: POST
请求地址: /openapi/v1/swap/order/place_uni
请求授权: 是
请求参数:
{
"symbol": "BTCUSDT_SWAP",
"leverage":10,
"price": 70,
"volume":1,
"offset": "open",
"direction": "buy",
"client_oid":"100000000000000003"
}
常用参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | true | 交易对 | NA | 如: BTCUSDT_SWAP |
leverage | int | false | 杠杆 | NA | 开仓必传,平仓不传 |
price | float | false | 委托价格 | NA | price_type 为market 时可不传此参数 |
volume | int | true | 委托数量(张) | NA | 委托数量只能为整数(xx张) |
offset | string | true | 开/平仓 | NA | open : 开仓, close : 平仓, auto : 先平仓再开仓 |
pos_id | int | false | 未平持仓id | NA | offset 为close 时必传 |
direction | string | false | 买入/卖出 | NA | buy :买入, sell :卖出 开仓必传,平仓不传 |
client_oid | string | false | 用户自编订单号 | NA | 最大长度32个字符 |
高级选项(可选)
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
price_type | string | false | 价格类型 | limit |
limit : 限价, average : 均价, market : 市价, post_only : 只挂单 |
remain_type | string | false | 剩余处理类型 | limit |
cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
retain_seconds | int | false | 挂单保留时间 | 0 | 单位:秒, 0表示不过期 |
-
remain_type : 剩余处理类型, 默认值
price_type用
limit
: 限价, remain_type用limit
: 以委托价挂单price_type用
average
: 均价, remain_type用limit_match_best
: 以最优成交价挂单,如果没有成交则撤单price_type用
market
: 市价 或post_only
: 只挂单, remain_type用cancel
: 未满足部分即时撤单 -
market
: 市价 或post_only
: 只挂单, remain_type只支持cancel
: 未满足部分即时撤单
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
open | object | 开仓数据 |
close | array | 平仓数据 |
- 返回参数
open
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
errmsg | string | 错误信息 |
errno | int | 错误码(0 : 代表成功) |
- 返回参数
close
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
pos_id | int | 未平持仓id |
errmsg | string | 错误信息 |
errno | int | 错误码(0 : 代表成功) |
{
"data": {
"open": {
"order_id": 1020000869145,
"client_oid": "test2111111111114",
"errmsg": "",
"errno": 0
},
"close": [
{
"order_id": 1020000869146,
"client_oid": "test2111111111115",
"pos_id": 22,
"errmsg": "",
"errno": 0
},
{
"order_id": 0,
"client_oid": "",
"pos_id": 23,
"errmsg": "未平合约数不足",
"errno": 11020501
}
]
},
"errmsg": "",
"errno": 0
}
7. 撤单
请求方式: POST
请求地址: /openapi/v1/swap/order/cancel
请求授权: 是
请求参数:
{
"order_id":1020000869150
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
order_id | int64 | true | 订单id | NA |
响应数据:
{
"data": {
"order_id": 1010000866876,
"client_oid": "c111111a11111",
},
"errmsg":"",
"errno":0
}
8. 批量撤单
- 一个批量最多10张订单
请求方式: POST
请求地址: /openapi/v1/swap/order/batch_cancel
请求授权: 是
请求参数:
{
"order_ids": [
1020000869143,
1020000869144
]
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
order_ids | int64[] | true | 订单id | NA |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
success | array | 撤单成功订单 |
failed | array | 撤单失败订单 |
- 返回参数
success
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
- 返回参数
failed
字段名 | 字段类型 | 备注 |
---|---|---|
order_id | int64 | 订单编号 |
client_oid | string | 用户自编订单号(如有) |
errmsg | string | 错误信息(仅对被拒订单有效) |
errno | int | 错误码(仅对被拒订单有效) |
{
"data": {
"failed": [
{
"client_oid": "",
"errmsg": "委托单已处理,无法撤单",
"errno": 11010202,
"order_id": 1020000869144
}
],
"success": [
{
"client_oid": "",
"errmsg": "",
"errno": 0,
"order_id": 1020000869143
}
]
},
"errmsg": "",
"errno": 0
}
9. 订单详情
请求方式: GET
请求地址: /openapi/v1/swap/order/query
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
order_id | int64 | true | 订单id | NA |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
order_time | int | 委托时间 |
order_id | int64 | 订单ID |
client_oid | string | 用户自编订单号 |
symbol | string | 交易对名称 |
margin_mode | string | 保证金模式, cross : 全仓, isolated : 逐仓 |
leverage | int | 杠杆 |
direction | string | 买卖方向, buy :买, sell :卖 |
price | string | 委托价格 |
volume | string | 委托数量 |
offset | string | 开仓/平仓, open : 开仓, close : 平仓 |
price_type | string | 价格类型 limit : 限价, average : 均价, market : 市价, post_only : 只挂单 |
match_volume | string | 成交数量 |
match_amount | string | 成交金额 |
queue_price | string | 挂单价格 |
queue_volume | string | 挂单数量 |
remain_type | string | 剩余处理类型, cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
state | int | 委托单状态, 0 . 待处理, 1 . 挂单中, 2 . 撤单中, 3 . 无成交且已撤单, 4 . 部分成交且已撤单, 5 . 全部成交, 6 . 错误, 7 . 等待触发, 8 . 已触发, 9 . 触价失效 |
{
"data": {
"order_time": 1608983787,
"order_id": 1040000634984,
"client_oid": "",
"symbol": "BTCUSDT_SWAP",
"margin_mode": "cross",
"leverage": 20,
"direction": "sell",
"price": "0",
"volume": "1",
"offset": "close",
"price_type": "market",
"match_volume": "1",
"match_amount": "0",
"queue_price": "0",
"queue_volume": "0",
"state": 5,
"remain_type": "limit_side_best"
},
"errmsg": "",
"errno": 0
}
10. 当前委托查询
请求方式: GET
请求地址: /openapi/v1/swap/order/pending
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | false | 交易对 | NA | 如: BTCUSDT_SWAP |
start_date | string | false | 查询开始日期 | NA | 日期格式 yyyy-mm-dd , 以订单生成时间进行查询 |
end_date | string | false | 查询结束日期 | NA | 日期格式 yyyy-mm-dd , 以订单生成时间进行查询 |
num | int | false | 结果集数量 | 10 | 每页返回的结果集数量,最大为100,不填默认返回10条 |
- start_date,end_date相关
- 起止时间需同时存在
- 开始时间小于等于结束时间
- 结束时间不能大于当前时间
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 订单列表 |
page | object | 分页信息 |
- 返回参数
page
字段名 | 字段类型 | 备注 |
---|---|---|
prev | string | 上一页, 第1页时值为”” |
next | string | 下一页, items 数组长度小于num 时值为”” |
分页使用:
第1页:
`openapi/v1/swap/order/pending`
上一页: 当前页大于`1`时, `prev`返回值不为空, 如下
`openapi/v1/swap/order/pending?prev_id=xxxx&page_index=2`
下一页: `items`数组长度等于`num`时, `next`返回值不为空, 如下
`/openapi/v1/swap/order/pending?next_id=xxxx&page_index=3`
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
order_time | int | 委托时间 |
order_id | int64 | 订单ID |
client_oid | string | 用户自编订单号 |
symbol | string | 交易对名称 |
margin_mode | string | 保证金模式, cross : 全仓, isolated : 逐仓 |
leverage | int | 杠杆 |
direction | string | 买卖方向, buy :买, sell :卖 |
price | string | 委托价格 |
volume | string | 委托数量 |
queue_price | string | 挂单价格 |
queue_volume | string | 挂单数量 |
offset | string | 开仓/平仓, open : 开仓, close : 平仓 |
price_type | string | 价格类型 limit : 限价, average : 均价, market : 市价, post_only : 只挂单 |
match_volume | string | 成交数量 |
match_amount | string | 成交金额 |
remain_type | string | 剩余处理类型, cancel : 未满足部分即时撤单limit_match_best : 以最优成交价挂单,如果没有成交则撤单limit_last : 以最后成交价挂单,如果没有成交则撤单limit_side_best : 以本方最优盘口价挂单,如果没有盘口则撤单limit : 以委托价挂单 |
state | int | 委托单状态, 0 . 待处理, 1 . 挂单中, 2 . 撤单中, 3 . 无成交且已撤单, 4 . 部分成交且已撤单, 5 . 全部成交, 6 . 错误, 7 . 等待触发, 8 . 已触发, 9 . 触价失效 |
{
"data": {
"items": [
{
"order_time": 1608983787,
"order_id": 1040000634984,
"client_oid": "",
"symbol": "BTCUSDT_SWAP",
"margin_mode": "cross",
"leverage": 20,
"direction": "sell",
"price": "0",
"volume": "1",
"offset": "close",
"price_type": "market",
"match_volume": "1",
"match_amount": "0",
"queue_price": "0",
"queue_volume": "0",
"state": 5,
"remain_type": "limit_side_best",
}
],
"page": {
"prev": "",
"next": "/openapi/v1/swap/order/pending?next_id=634974&page_index=2"
}
},
"errmsg": "",
"errno": 0
}
11. 历史委托查询
请求方式: GET
请求地址: /openapi/v1/swap/order/filled
请求授权: 是
请求参数: 同当前委托查询
响应数据: 同当前委托查询
12. 成交查询
请求方式: GET
请求地址: /openapi/v1/swap/order/matches
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
order_id | int64 | true | 订单id | NA | |
symbol | string | true | 交易对 | NA | 如: BTCUSDT_SWAP |
start_date | string | false | 查询开始日期 | NA | 日期格式 yyyy-mm-dd , 以成交时间进行查询 |
end_date | string | false | 查询结束日期 | NA | 日期格式 yyyy-mm-dd , 以成交时间时间进行查询 |
num | int | false | 结果集数量 | 10 | 每页返回的结果集数量,最大为100,不填默认返回10条 |
- start_date,end_date相关
- 起止时间需同时存在
- 开始时间小于等于结束时间
- 结束时间不能大于当前时间
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 成交列表 |
page | object | 分页信息 |
- 返回参数
page
字段名 | 字段类型 | 备注 |
---|---|---|
prev | string | 上一页, 第1页时值为”” |
next | string | 下一页, items 数组长度小于num 时值为”” |
分页使用:同当前委托查询
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
match_time | int | 成交时间 |
direction | string | 买入/卖出, buy :买入, sell :卖出 |
price | string | 成交价格 |
volume | string | 成交数量 |
fee_asset | string | 手续费资产 |
fee_volume | string | 手续费 |
symbol | string | 交易对 |
offset | string | 开仓/平仓, open : 开仓, close : 平仓 |
bonus_asset | string | 补贴资产 |
bonus_volume | string | 补贴资产数量 |
{
"data": {
"items": [
{
"offset": "close",
"direction": "sell",
"fee_asset": "USDT",
"fee_volume": 0.02,
"match_time": 1608631913,
"price": 100,
"volume": 1,
"symbol": "BTCUSDT_SWAP",
"bonus_asset": "USDT",
"bonus_volume": "0.15"
}
],
"page": {
"prev": "",
"next": "/openapi/v1/swap/order/matches?next_id=1196&page_index=2"
}
},
"errmsg": "",
"errno": 0
}
13. 永续合约持仓查询
请求方式: GET
请求地址: /openapi/v1/swap/position
请求授权: 是
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
symbol | string | false | 交易对 | NA | 如: BTCUSDT_SWAP |
symbols | string[] | false | 交易对 | NA | 多个交易对查询,最多10 个交易对 |
num | int | false | 结果集数量 | 10 | 每页返回的结果集数量,最大为100,不填默认返回10条 |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 持仓列表 |
page | object | 分页信息 |
- 返回参数
page
字段名 | 字段类型 | 备注 |
---|---|---|
prev | string | 上一页, 第1页时值为”” |
next | string | 下一页, items 数组长度小于num 时值为”” |
分页使用:同当前委托查询
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
pos_id | int | 持仓id |
symbol | string | 交易对名称 |
margin_mode | string | 保证金模式, cross : 全仓, isolated : 逐仓 |
leverage | string | 杠杆 |
direction | string | 买卖方向, buy :买, sell :卖 |
open_volume | int | 持仓数量 |
frozen_volume | int | 冻结数量 |
liquidate_price | string | 强平价 |
avg_open_price | string | 开仓均价 |
open_profit | string | 浮动盈亏 |
profit | string | 已实现盈亏 |
margin_asset | string | 保证金资产 |
open_margin | string | 初始保证金(开仓保证金) |
position_margin | string | 持仓保证金 |
max_draw_amount | string | 超额保证金(最大可提取数量) |
{
"data": {
"items": [
{
"pos_id": 1000402,
"symbol": "BTCUSDT_SWAP",
"margin_mode": "cross",
"leverage": "20",
"direction": "buy",
"open_volume": 4,
"frozen_volume": 0,
"liquidate_price": "18912.5",
"avg_open_price": "25000",
"open_profit": "-1.85",
"profit": "0",
"margin_asset": "USDT",
"open_margin": "5",
"position_margin": "26.849992",
"max_draw_amount": "21.849992"
},
{
"pos_id": 1000395,
"symbol": "BTCUSDT_SWAP",
"margin_mode": "cross",
"leverage": "20",
"direction": "sell",
"open_volume": 15,
"frozen_volume": 0,
"liquidate_price": "95661.39",
"avg_open_price": "25000",
"open_profit": "0.41",
"profit": "0",
"margin_asset": "USDT",
"open_margin": "18.75",
"position_margin": "1078.670842",
"max_draw_amount": "1059.920842"
}
],
"page": {
"prev": "",
"next": "/openapi/v1/swap/position?next_id=37&num=3&page_index=2"
}
},
"errmsg": "",
"errno": 0
}
14. 超额保证金提取
请求方式: POST
请求地址: /openapi/v1/swap/draw_margin
请求授权: 是
请求参数:
{
"draw_margins": [
{
"pos_id":11,
"volume":1.1
}, {
"pos_id":22,
"volume":2.2
}
]
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
draw_margins | array | true | 保证金提取数据 | NA |
- 参数
draw_margins
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
pos_id | int | true | 持仓id | NA | |
volume | float | true | 保证金提取金额 | NA |
响应数据:
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 持仓数据 |
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
pos_id | int | 持仓id |
errmsg | string | 错误信息 |
errno | int | 错误码(0 : 代表成功) |
{
"data": {
"items": [
{
"pos_id": 11
"errmsg": "",
"errno": 0,
},
{
"pos_id": 22
"errmsg": "",
"errno": 0,
}
]
},
"errmsg": "",
"errno": 0
}
15. 全仓模式 - 保证金追加
请求方式: POST
请求地址: /openapi/v1/swap/cross_margin_add
请求授权: 是
请求参数:
{
"asset":"USDT",
"volume":2.2
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
asset | string | true | 追加资产code | NA | |
volume | float | true | 保证金追加金额 | NA |
响应数据:
{
"data":{},
"errmsg":"",
"errno":0
}
16. 逐仓模式 - 保证金追加
请求方式: POST
请求地址: /openapi/v1/swap/isolated_margin_add
请求授权: 是
请求参数:
{
"margin_adds": [
{
"pos_id":11,
"volume":1.1
}, {
"pos_id":22,
"volume":2.2
}
]
}
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
margin_adds | array | true | 保证金追加数据 | NA |
- 参数
margin_adds
字段名 | 字段类型 | 是否必须 | 中文说明 | 默认值 | 备注 |
---|---|---|---|---|---|
pos_id | int | true | 持仓id | NA | |
volume | float | true | 保证金追加金额 | NA |
字段名 | 字段类型 | 备注 |
---|---|---|
items | array | 持仓数据 |
- 返回参数
items
字段名 | 字段类型 | 备注 |
---|---|---|
pos_id | int | 持仓id |
errmsg | string | 错误信息 |
errno | int | 错误码(0 : 代表成功) |
{
"data": {
"items": [
{
"pos_id": 11
"errmsg": "",
"errno": 0,
},
{
"pos_id": 22
"errmsg": "",
"errno": 0,
}
]
},
"errmsg": "",
"errno": 0
}
行情API
输出结构如下
字段名 | 字段类型 | 备注 |
---|---|---|
data | object | 返回数据 |
errmsg | string | 错误信息 |
errno | int | 错误码( 0 : 代表成功, 其他错误码请参考errmsg) |
{
"data":{},
"errmsg":"",
"errno":0
}
输出响应头的content-type默认应为application/json 若成功响应,则errno对应为0
1. K线数据(蜡烛图)
请求方式: GET
请求地址: /pub/openapi/v1/hq/kline
登录授权: 否
特殊说明: 这个接口的返回值中time
是一个区间段的开始, 例如:8:00~8:15的数据, time是8:00的时间戳
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | 是 | 交易对代码 | 如: BTC_USDT |
type | int | 否 | K线类型 | 参照type 参数列表 |
num | int | 否 | 数量 | 默认60 最大值2880 |
ts | int | 否 | 时间戳 | 取时间戳之前数据 |
type参数列表:
type字段枚举值 | type字段说明 |
---|---|
1 | day |
2 | hour |
3 | minute |
4 | 5min |
5 | 15min |
6 | 30min |
7 | 4h |
8 | 8h |
9 | 1week |
10 | 1month |
返回结果:
{
"data": [
{
"symbol": "BTC_USDT",
"time": 1593344700,
"open": 40.34,
"close": 39.79,
"high": 40.34,
"low": 39.76,
"volume": 86,
"amount": 3439.52,
"type": 5
}
],
"errmsg": "",
"errno": 0
}
返回字段说明:
字段 | 字段说明 |
---|---|
time | 时间 (单位s) |
open | 开盘价 |
close | 收盘价 |
high | 最高价 |
low | 最低价 |
volume | 成交量 |
amount | 成交额 |
type | 同入参type |
2. 获取最新的市场行情
请求方式: GET
请求地址: /pub/openapi/v1/hq/quote
登录授权: 否
特殊说明:
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | 是 | 交易对代码 | 如: BTC_USDT,XRP_USDT |
返回结果:
{
"data": [
{
"amount": 21.5631,
"amount_24": 84057335.36599398,
"high": 11349,
"high_24": 11349,
"low": 10980.56,
"low_24": 10980.56,
"open": 11098.02,
"prev_24": 11142.66,
"sn": 214650314992441180,
"state": 2,
"symbol": "BTC_USDT",
"time": 1596467413652610,
"trade": 11349,
"type": "spot",
"volume": 0.0019,
"volume_24": 7518.5058
},
{
"amount": 86.515,
"amount_24": 28004799.082520593,
"high": 0.31586,
"high_24": 0.31586,
"low": 0.28397,
"low_24": 0.28397,
"open": 0.28594,
"prev_24": 0.289,
"sn": 214650314992060860,
"state": 2,
"symbol": "XRP_USDT",
"time": 1596467414119937,
"trade": 0.3146,
"type": "spot",
"volume": 275,
"volume_24": 93996959.91
}
],
"errmsg": "",
"errno": 0
}
字段 | 名称 |
---|---|
symbol | 交易对 |
trade | 当前价 |
high_24 | 24小时最高 |
low_24 | 24小时最低 |
volume_24 | 24小时成交量 |
amount_24 | 24小时成交额 |
prev_24 | 24小时前成交价,计算24小时涨跌幅用 |
time | 最近一笔报价成交时间 微秒时间戳 |
type | 当前数据类型 “index” 指数,“spot” 现货 ,“options” 期权, “swap"永续 |
3. 获取最新的盘口
请求方式: GET
请求地址: /pub/openapi/v1/hq/orderbook
登录授权: 否
特殊说明: ask数组的key(价格)按照从小到大, bid数组的key(价格)按照从大到小
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | 是 | 交易对代码 | 如: BTC_USDT |
{
"data": {
"ask": [
[45283.13, 565],
[45283.19, 477],
[45283.23, 696],
[45283.43, 302],
[45283.74, 2220],
[45284.19, 2661],
[45284.64, 1071],
[45285.09, 140],
[45285.58, 619],
[45285.82, 2096],
[45286.14, 7],
[45286.92, 1629],
[45288.27, 1725],
[45288.72, 1886],
[45291.17, 31364]
],
"bid": [
[45281.16, 247],
[45280.85, 44],
[45280.6, 456],
[45280.26, 248],
[45280.2, 265],
[45279.95, 1226],
[45279.67, 1094],
[45279.22, 2178],
[45278.77, 1875],
[45278.46, 683],
[45278.15, 1478],
[45277.11, 20923],
[45272.95, 1621],
[45272.5, 2153],
[45269.35, 25945]
],
"sn": 0,
"time": 1628832932000000,
"trade": 0,
"volume": 0
},
"errmsg": "",
"errno": 0
}
字段 | 名称 |
---|---|
bid | 价格-> 数量 |
ask | 价格-> 数量 |
time | 内存快照的时间, 单位:us |
4. 获取最新的成交记录
请求方式: GET
请求地址: /pub/openapi/v1/hq/transaction
登录授权: 否
特殊说明:
请求参数:
字段名 | 字段类型 | 是否必须 | 中文说明 | 备注 |
---|---|---|---|---|
symbol | string | 是 | 交易对代码 | 如: BTC_USDT |
{
"data": [
{
"amount": 1721920.6,
"direction": 1,
"open_mode": "open",
"price": 45313.7,
"sn": 0,
"subtype": "transaction",
"symbol": "BTCUSDT_SWAP",
"time_us": 1628833106042871,
"volume": 38,
"extra": 0
}
],
"errmsg": "",
"errno": 0
}
逐笔数据结构为数组,可能同时包括多条成交数据
key | value |
---|---|
price | 价格 |
volume | 成交量 |
amount | 成交额 |
time_us | 成交微秒 |
symbol | 交易对代码 |
行情WS
1. WS说明
接口地址
wss://openws.bitwellex.com/v2
wss://openws.bitwellex.co/v2
您可以自行比较使用openws.bitwellex.com和openws.bitwellex.co两个域名的延迟情况,选择延迟低的进行使用。
其中,openws.bitwellex.co域名对使用aws云服务的用户做了一定的链路延迟优化。
QA
QA1:
Q: ws的kline时间 和 kline接口返回历史数据里 date字段的值 单位不太一样 A: ws的单位是: us , 然后api的单位是: s
QA2:
Q: 比如 USDT_BTC-quote这条指令 如果我发了多次 会合并吗?我发了同样指令 会成倍的返回消息吗?
A: 会合并, 不会成倍推送消息, 服务端做了唯一校验,如果当前用户订阅了该key,二次订阅无效
QA3:
Q: 如果分钟,小时,天,分时来回的切换的话,我是不是要频繁的先给ws发送unsub请求才行? 先发送unsub 再发送sub
A: 对, 需要客户端unsub掉历史的, 防止ws泄露(例如用户点击了4下, 如果不unsub, 就会成4倍的推送消息)
建立连接
地址如上
ping text
由于服务器和客户端维护ws有心跳时间, 如果60s内无心跳,或者无数据通讯, 有可能会造成服务端或者客户端主动断开连接, 所以服务端提供ping text消息, 请在60s返回内定期发送ping text
格式:
客户端发送消息: ping
服务端回应: success
如果服务端未回复,有可能是服务端已经主动断开了连接, 请重连
2. 鉴权
鉴权发生在建立连接之后, 客户端主动发送text消息, 消息格式如下:
{
"action":"auth",
"type":"openapi",
"access_key": "W2zxxxxND1Wxxxxtdt9gxxxxJFtxxxxQ",
"signature": "4F65x5A2bLaaaWVQj3Aqp+B4w+ivaA7n5Oi2SuYtCJ9o=",
"timestamp": "1420674445201"
}
鉴权成功后服务端会返回鉴权结果:
{"action":"auth","type":"openapi","errmsg":"","errno":0,"ts":1602583578}
说明:
- 如果errno不为0, 则说明鉴权失败,失败具体信息参考errmsg
- 鉴权逻辑参考 api概述
- timestamp参数单位: ms, ts单位: s
3. 订阅数据方式
订阅消息需要客户端发送msg(json格式), symbol是交易对数组,所以支持批量和单个订阅
{
"action":"sub",
"symbol":["BTC_USDT","ETH_USDT","BTC_ETH"],
"type":"quote"
}
字段说明:
action: sub订阅,unsub取消订阅
symbol: 交易对数组,支持批量和单个订阅
4. 数据索引
行情数据, symbol是具体的交易对(例如:BTC_USDT), type有如下枚举值:
- quote 报价
- transaction 逐笔交易
- orderbook 盘口数据
- option 期权信息
- kline-{时间单位例如:15min} kline数据
- swap 永续数据
用户订单, symbol是USER_ORDER,type有如下枚举值:
- state_change 订单状态变更
用户期权, symbol是USER_OPTION
- pos_change 持仓数量变更
5. 报价数据
{
"amount_24": 1359041553290.97,
"high_24": 45678,
"highest_bid": 45338.04,
"leverage": 0,
"low_24": 43805.35,
"lowest_ask": 45339.94,
"prev_24": 45164.09,
"prev_1h": 45240.93,
"sn": 0,
"state": 0,
"subtype": "quote",
"symbol": "BTCUSDT_SWAP",
"time": 1628833420434784,
"trade": 45338.92,
"type": "swap",
"volume_24": 30429594
}
字段说明:
字段 | 字段说明 |
---|---|
symbol | 交易对 |
trade | 当前价 |
high_24 | 24小时最高 |
low_24 | 24小时最低 |
highest_bid | 买一 |
lowest_ask | 卖一 |
volume_24 | 24小时成交量 |
amount_24 | 24小时成交额 |
prev_24 | 24小时前成交价,计算24小时涨跌幅用 |
time | 最近一笔报价成交时间 微秒时间戳 |
type | 当前数据类型 “index” 指数,“spot” 现货 ,“options” 期权 “swap” 永续 |
6. K线数据
{
"symbol":"BTC_USDT",
"open":1.0,
"high":1.0,
"low":1.0,
"volume":4.0,
"amount":4.0,
"close":1.0,
"subtype":"kline-15min",
"time": 1592619538684837
}
字段 | 字段说明 |
---|---|
open | 开 |
high | 高 |
low | 低 |
close | 收 |
time | unix时间,单位 us |
volume | 这段时间成交量 |
amount | 这段时间成交额 |
kline-{type}参数列表:
type字段枚举值 | type字段说明 |
---|---|
1 | day |
2 | hour |
3 | minute |
4 | 5min |
5 | 15min |
6 | 30min |
7 | 4h |
8 | 8h |
9 | 1week |
10 | 1month |
7. 逐笔数据
[
{
"symbol":"BTC-0703-9000-C",
"price":39.01,
"volume":4,
"amount":156.04,
"direction":1,
"subtype":"",
"open_mode":"open",
"time_us":1593347347135782,
"sn":198669755295637272
},
{
"symbol":"BTC-0703-9000-C",
"price":38.93,
"volume":5,
"amount":194.65,
"direction":1,
"subtype":"transaction",
"time_us":1593347347135784,
"sn":198669755295637272
}
]
逐笔数据结构为数组,可能同时包括多条成交数据
字段 | 字段说明 |
---|---|
price | 价格 |
volume | 成家量 |
amount | 成交额 |
time_us | 成交微秒 |
symbol | 交易对代码 |
8. 盘口数据
{
"bid":{
"38.76":1,
"38.64":1,
"38.63":8,
"38.62":3,
"38.58":6,
},
"ask":{
"38.87":6,
"38.88":1,
"38.89":6,
"38.9":8,
"38.97":2,
},
"trade":38.87,
"volume":3,
"symbol": "BTC_USDT",
"subtype":"orderbook",
"time":1593347487172380,
"sn":198669755295637354
}
字段 | 字段说明 |
---|---|
bid | 委买盘口数组 |
—key | 价格 |
—value | 数量 |
ask | 委卖盘口数组 |
—key | 价格 |
—value | 数量 |
trade | 最新一笔成交价 |
volume | 最近一笔成交量 |
9. 期权信息数据
{
"theory_price":35.95,
"delta":0.5389,
"gamma":0.0047,
"theta":-3.5326,
"vega":41.3693,
"leverage":12.5184,
"iv":0,
"open_positions":0,
"symbol": "BTC-0703-9000-C",
"subtype":"option"
}
字段说明:
字段 | 字段说明 |
---|---|
theory_price | 理论价格 |
delta | delta |
gamma | gamma |
theta | theta |
vega | vega |
leverage | 杠杆率 |
iv | 隐含波动率 |
open_positions | 未平持仓数 |
symbol | 交易对 |
subtype | 订阅的type |
10. 永续合约信息数据
{
"theory_price": 45338.84,
"mark_price": 45338.84,
"funding_rate": 0.00009,
"next_funding_rate": 0.00009,
"symbol": "BTCUSDT_SWAP",
"subtype": "swap",
"open_positions": 609038,
"ema": 45335.77
}
字段说明:
字段 | 字段说明 |
---|---|
theory_price | 理论价格 |
mark_price | 标记价格 |
funding_rate | 当前资金费率 |
next_funding_rate | 预计资金费率 |
symbol | 交易对 |
subtype | 订阅的type |
open_positions | 未平持仓数 |
用户相关WS
1. 概述
授权/数据格式同 行情ws
相关约定
2. 用户订单
订阅格式
{
"action":"sub",
"symbol":["USER_ORDER"],
"type":"state_change" # 订单变更
}
响应数据
同订单列表数据格式
3. 用户期权
订阅格式
{
"action":"sub",
"symbol":["USER_OPTION"],
"type":"pos_change" # 持仓变更
}
响应数据
{
"symbol": "BTC-20201016-7500-C"
"open_mode": "buy",
"open_volume": 0,
"frozen_volume": 0,
}
字段名 | 字段类型 | 说明 |
---|---|---|
symbol | string | 交易对code |
open_mode | string | 开仓方式, buy: 开仓买入, margin_sell:保证金卖出,covered_sell:备兑卖出 |
open_volume | int | 开仓数量 |
frozen_volume | int | 冻结数量 |
4. 用户永续
订阅格式
{
"action":"sub",
"symbol":["USER_SWAP"],
"type":"pos_change" # 持仓变更
}
响应数据
同永续合约持仓查询
well平台币相关数据
1. 平台币数量分类更新
请求方式: GET
请求地址:/pub/openapi/v1/collateral/well_updates
登录授权:否
请求参数: 无
返回结果:
字段名 | 字段类型 | 备注 |
---|---|---|
lock_amount | number | 质押WELL数 |
circulate_amount | number | 流通量 |
lock_percentage | number | 当前质押/流通, 保留4位小数, lock_amount/circulate_amount |
destroyed_amount | number | 已销毁WELL |
announce_issued_amount | number | 名义发行总量 |
destroyed_percentage | number | 销毁/名义发行总量, 保留4位小数, destroyed_amount/announce_issued_amount |
{
"data": {
"lock_amount": 36200,
"circulate_amount": 100000,
"lock_percentage": 0.36,
"destroyed_amount": 10000,
"announce_issued_amount": 1000000,
"destroyed_percentage": 0.01
},
"errmsg": "",
"errno": 0
}