更新日志
更新日志
版本: V1.1.7 (日期: 2024 Sep 26)
Cancel-only status 接口 GET /spot/v1/system/cancel_only_status
新增是否升级中信息.
历史变更日志
版本 | 时间 | 更新内容 |
---|---|---|
V0.1.6 | 2023 JUL 1 |
* orders、trades 相关接口和 websocket 频道添加手续费抵扣字段 |
V1.1.5 | 2023 MAR 15 |
* 使用费率等级, 废弃下面接口里面分费率. GET /spot/v1/configs * 输出 GET /spot/v1/account_configs |
V1.1.4 | 2023 FEB 17 |
* GET /um/v1/accounts 响应添加字段 total_future_value , total_option_value , future_value |
V1.1.3 | 2022 JAN 18 |
* API跟pair/currency有关的接口增加字段: display name, 给界面展示使用. |
V1.1.2 | 2022 DEC 15 |
* GET /spot/v1/user/trades 和websocket trade 频道增加 label * 新接口 GET /spot/v1/market/summary |
V1.1.1 | 2022 JUN 2 |
* K线增加精度(minutes): 360, 720 |
V1.1.0 | 2022-04-22 |
* GET /spot/v1/accounts 不再显示USDC余额(USDC已经被移除) * 币对查询 GET /spot/v1/instruments 添加 active 参数以及返回添加 display_status 字段。 |
V1.0.7 | 2022-01-20 |
* 现货支持批量下单/改单 |
V1.0.6 | 2021-11-11 |
* 统一保证金模式下,下单新增价格区间限制 * 统一保证金模式下市价单转化为 banded-market 订单. |
V1.0.5 | 2021-08-10 |
* websocket order_book频道新增推送频率fixed100ms * websocket新增RPC: cancel_on_disconnect |
V1.0.4 | 2021-07-20 |
* 接口 POST /spot/v1/orders 和 POST /spot/v1/amend_orders 新增 self_trading_mode 字段. 默认值为0(不开启自成交,如果出现自成交的情况会撤销taker单,用户如果不关心自成交功能可以忽略self_trading_mode 字段) * 接口 POST /spot/v1/amend_orders 新增 mmp 字段以支持修改订单MMP * 为了支持自成交交易,接口 GET /spot/v1/user/trades 去掉 offset 参数和has_more 分页信息. * 如果用户有自成交, 那么接口 GET /spot/v1/user/trades 返回的trade_id不是唯一的,存在两笔trade拥有相同的trade_id,不同的taker/maker order_id. |
V1.0.3 | 2021-07-01 |
* 新增 GET /spot/v1/system/cancel_only_status * 增加文档 GET /spot/v1/instruments 为 步长 /最小值 输出实际精度 * 新增 GET /spot/v1/mmp_state , POST /spot/v1/update_mmp_config , POST /spot/v1/reset_mmp , websocket mmp_frozen 频道 |
V1.0.2 | 2021-06-15 |
* POST /spot/v1/orders 和 POST /spot/v1/amend_orders 的相应数据返回更新后的price ,qty ,cancel_reason * 添加 qty_min 限制,这是base currency的最小单位,不再用以前的 qty_step * 添加 invite-debate 和 invite-rebate-refund 两种资产流水类型 * 充值失败和撤销提币类型改为 bad-deposit 和 withdraw-revert 两种资产流水类型,不用原来的 deposit-rollback 和 withdraw-refund * 在 POST /spot/v1/orders 文档部分,添加buy-market订单状态说明 * 新增 cod REST API: POST /spot/v1/user_configs/cod 和 GET /spot/v1/user_configs/cod |
V1.0.0 | 2021-05-26 |
* 初始中文版本 |
介绍
欢迎访问bit.com的API文档,您可以通过API形式获取市场数据、完成交易、管理您的账户。
API文档包含3个部分:文档左侧为目录;中间为API接口说明,右侧为示例代码。
如何联系我们:
网站:https://www.bit.com
用户支持:[email protected]
VIP服务:[email protected]
Telegram中文服务:https://t.me/bitcom_exchange_cn
做市商项目
欢迎广大做市商参与BIT长期做市项目。
提供以下信息发送邮件至: [email protected]
1、BIT账户信息;
2、除邮箱外的有效联系方式;
邮件里需注明所申请的做市商类别 (可多选):
• BIT现货做市商申请
• BIT永续合约做市商申请
• BIT期权合约做市商申请
为鼓励做市商为平台提供更好的流动性,可以享受交易手续费优惠。具体做市责任及手续费申请后提供。
*做市商项目的最终解释权归BIT所有。
用户手册
在bit.com 我们提供数字资产现货、合约、期权等衍生品交易服务。 有两种方式可以调用我们的API接口:Rest 和 Websocket。
- Rest 接口
Rest 接口分为公共接口和私有接口,公有接口无需鉴权可直接调用。私有接口,要求进行API私钥签名鉴权。请先在BIT网站的API页面申请私钥,设置权限后启动API开发。 私有接口权限:只读,现货交易,期货&期权交易,钱包,block trade。 各接口的类型及权限可通过接口目录查询。 - Websocket 接口
Websocket接口是基于Websocket协议。用户需要先建立Websocket连接,然后发送请求订阅频道,随后bit.com会主动向用户推送数据。如果不想接收消息可取消订阅或者断开连接。 订阅频道分为公有频道和私有频道,公有频道无需鉴权可直接订阅。私有频道需要申请token且通过鉴权后订阅。 各频道的类型和权限可通过频道目录查询。
测试环境访问地址
REST API 地址:
https://betaapi.bitexch.dev
或者https://betaspot-api.bitexch.dev
WS API 地址:
wss://betaspot-ws.bitexch.dev
生产环境访问地址
REST API 地址:
https://api.bit.com
或者https://spot-api.bit.com
WS API 地址:
wss://spot-ws.bit.com
访问限制
为了保证系统运行效率,bit.com实施API访问限流措施。公有接口按IP进行频率限制,私有接口按UID进行频率限制。当请求频率超限时,会返加“429 too many requests” 提示。每个UID的API限制参数可在bit.com网站的交易中心页面进行查看。如需提高限制参数,请联系我们的用户支持([email protected])。
API接口调用次数按类别计算,该类别下的接口一起共享api访问频率限制。如现货公有接口共8个,这8个接口1秒内调用的次数之和不能超过10次。
Rest API 限制:
公有接口(现货公有接口):每个IP 10次/秒;
私有接口(现货交易接口):每个UID 5次/秒;
私有接口(钱包接口):每个UID 1次/秒;
私有接口(现货其他):每个UID 5次/秒;
公有接口(UM公有接口):每个IP 10次/秒;
私有接口(UM其他接口):每个UID 5次/秒;Websocket API 限制:
未登录用户(连接数):每个IP 100个;
未登录用户(连接频率):每个IP 10次/秒;
已登录用户(连接数):每个UID 10个私有连接;
已连接IP:连接建立后30秒内未进行订阅,则断开连接。
账户模式使用指引
Bit.com现支持统一保证金模式(Unified margin account mode)。
统一保证金模式以下简写为UM(Unified margin account mode)模式。
查询自己的账户类型及相关配置
- 请调用GET /um/v1/account_mode (目前只有
um
统一保证金模式)
- 对于
Um
统一保证金用户- 查询统一保证金账户:
GET /um/v1/accounts
- 查询统一保证金账户:
统一保证金模式下的钱包功能
- 当您为统一交易模式时,请使用统一交易账户地址进行充值。
- 获取统一交易账户的充值记录应调用GET /v1/wallet/um-deposits
- 统一交易账户的提现应调用POST /v1/wallet/um-withdraw
- 子账号交易模式与母账号彼此独立,账户类型也可不同。
- 如果您想在子母账户之间转账,请调用子母账户转账接口POST /v1/wallet/sub-user-transfer
统一保证金模式下的交易功能
- 统一模式,用户查询账户数据,请调用GET /um/v1/accounts
- 统一模式,用户查询资产交易日志,请调用GET /um/v1/transactions
- 统一模式,用户查询计息记录,请调用GET /um/v1/interest_records
查询指数请调用GET /um/v1/index_price
借币利率请调用GET /um/v1/loan_rates - 现货价格区间限制: 统保模式下,现货市价单会被转换为
banded-market
订单. 行为跟limit-ioc
订单一样。现货限价单的价格有区间限制。详情看现货下单文档
统一保证金模式下的订阅功能
- um模式没有新增websocket服务连接地址,用户通过现货或合约的websocket服务都可以订阅um相关频道。
订阅方式参考: 合约 现货。
um相关频道可以和合约、现货其它频道一起订阅。 - 统一模式下,订阅用户的账户信息,请调用um_account频道。
鉴权
私有接口必填字段
- 用户必须把私钥key放在请求头部,如X-Bit-Access-Key
- 用户必须在请求参数(GET请求: query string, POST请求:JSON Body)中添加timestamp字段(单位为毫秒),API 服务会检查时间戳,如果abs(server_timestamp - request_timestamp) > 5000 请求会被拒绝。
- timestamp字段 必须为整型,而非字符串类型。
- 用户必须在请求参数中添加signature字段(GET请求: query string, POST请求:JSON Body)
- 对POST请求,请求头Content-Type需设为 application/json
如果鉴权失败,会返回错误码412“AkID is valid”。
签名算法
#########
# Python code to calc BIT.COM API signature
#########
import hashlib
import hmac
def encode_list(self, item_list):
list_val = []
for item in item_list:
obj_val = self.encode_object(item)
list_val.append(obj_val)
sorted_list = sorted(list_val)
output = '&'.join(sorted_list)
output = '[' + output + ']'
return output
def encode_object(self, obj):
if isinstance(obj, (str, int)):
return obj
# treat obj as dict
sorted_keys = sorted(obj.keys())
ret_list = []
for key in sorted_keys:
val = obj[key]
if isinstance(val, list):
list_val = self.encode_list(val)
ret_list.append(f'{key}={list_val}')
elif isinstance(val, dict):
# call encode_object recursively
dict_val = self.encode_object(val)
ret_list.append(f'{key}={dict_val}')
elif isinstance(val, bool):
bool_val = str(val).lower()
ret_list.append(f'{key}={bool_val}')
else:
general_val = str(val)
ret_list.append(f'{key}={general_val}')
sorted_list = sorted(ret_list)
output = '&'.join(sorted_list)
return output
def get_signature(self, http_method, api_path, param_map):
str_to_sign = api_path + '&' + self.encode_object(param_map)
print('str_to_sign = ' + str_to_sign)
sig = hmac.new(self.secret_key.encode('utf-8'), str_to_sign.encode('utf-8'), digestmod=hashlib.sha256).hexdigest()
return sig
#########
# END
#########
- 请求参数:POST为JSON,其余部分为查询字符串
- 对签名进行编码,对于简单的json对象,请按字母顺序对参数进行排序,并把他们用“&”连接,如'param1=value1¶m2=value2', then get str_to_sign = api_path + '&' + 'param1=value1¶m2=value2'
- 对嵌套数组对象,对每个对象进行编码,并按字母顺序进行排序,使用“&”符号连接,并用[ ]括起来,如 str_to_sign = api_path + '&' + 'param1=value1&array_key1=[array_item1&array_item2]', 参见下面的例子
- 签名使用哈希算法,hex(hmac_sha256(str_to_sign, secret_key))
- 在请求参数中添加签名字段:对查询字符串,添加“&signature=YOUR_SIGNATURE”, 对JOSN请求体, 添加 {'signature':YOUR_SIGNATURE}
GET 请求示例:
*Secret Key: eabc3108-dd2b-43df-a98d-3e2054049b73
*HTTP method: GET
*API Path: /v1/margins
*Query string: price=8000&qty=30&instrument_id=BTC-PERPETUAL×tamp=1588242614000
*得到 str_to_sign = /v1/margins&instrument_id=BTC-PERPETUAL&price=8000&qty=30×tamp=1588242614000
> echo -n "/v1/margins&instrument_id=BTC-PERPETUAL&price=8000&qty=30×tamp=1588242614000" | openssl dgst -sha256 -hmac "eabc3108-dd2b-43df-a98d-3e2054049b73"
> e3be96fdd18b5178b30711e16d13db406e0bfba089f418cf5a2cdef94f4fb57d
sig = hex(hmac_sha256(str_to_sign, secret_key)) = e3be96fdd18b5178b30711e16d13db406e0bfba089f418cf5a2cdef94f4fb57d
*最后 query string: price=8000&qty=30&instrument_id=BTC-PERPETUAL×tamp=1588242614000&signature=e3be96fdd18b5178b30711e16d13db406e0bfba089f418cf5a2cdef94f4fb57d
POST 请求示例:
Secret Key: eabc3108-dd2b-43df-a98d-3e2054049b73
HTTP method: POST
API Path: /v1/orders
JSON body:
{
"instrument_id": "BTC-27MAR20-9000-C",
"order_type": "limit",
"price": "0.021",
"qty": "3.14",
"side": "buy",
"time_in_force": "gtc",
"stop_price": "",
"stop_price_trigger": "",
"auto_price": "",
"auto_price_type": "",
"timestamp": 1588242614000
}
得到 str_to_sign = /v1/orders&auto_price=&auto_price_type=&instrument_id=BTC-27MAR20-9000-C&order_type=limit&price=0.021&qty=3.14&side=buy&stop_price=&stop_price_trigger=&time_in_force=gtc×tamp=1588242614000
> echo -n "/v1/orders&auto_price=&auto_price_type=&instrument_id=BTC-27MAR20-9000-C&order_type=limit&price=0.021&qty=3.14&side=buy&stop_price=&stop_price_trigger=&time_in_force=gtc×tamp=1588242614000" | openssl dgst -sha256 -hmac "eabc3108-dd2b-43df-a98d-3e2054049b73"
> 34d9afa68830a4b09c275f405d8833cd1c3af3e94a9572da75f7a563af1ca817
sig = hex(hmac_sha256(str_to_sign, secret_key)) = 34d9afa68830a4b09c275f405d8833cd1c3af3e94a9572da75f7a563af1ca817
最后JSON请求体为:
{
"instrument_id": "BTC-27MAR20-9000-C",
"order_type": "limit",
"price": "0.021",
"qty": "3.14",
"side": "buy",
"time_in_force": "gtc",
"stop_price": "",
"stop_price_trigger": "",
"auto_price": "",
"auto_price_type": "",
"timestamp": 1588242614000,
"signature": "34d9afa68830a4b09c275f405d8833cd1c3af3e94a9572da75f7a563af1ca817"
}
POST 请求带 boolean 字段
例如以POST /v1/orders 为例 (post_only 字段),
在JSON BODY, true/false必须为小写,不加双引号 {"post_only": true}
在Query string: post_only=true
例子
request
curl -X POST "https://betaapi.bitexch.dev/v1/orders" -H "Content-Type: application/json" -H "X-Bit-Access-Key: ak-df074cbc-dbf7-46f9-b07c-f4f51763ac7a" -d '{"instrument_id": "BTC-26JUN20-3500-P", "price": "15", "qty": "1", "side": "sell", "time_in_force": "gtc", "order_type": "limit", "post_only": true, "timestamp": 1592587664652, "signature": "cf2d8fe95b71764056a4f707e2388ce84a82ed2915cbe92b58f37c26ea0eda97"}'
得到 string to sign
- str_to_sign = /v1/orders&instrument_id=BTC-26JUN20-3500-P&order_type=limit&post_only=true&price=15&qty=1&side=sell&time_in_force=gtc×tamp=1592587664652
POST 请求带 array 字段
- 逻辑
for item in object_array:
str_list.add(encode(item))
str_list.sorted()
str_to_sign = '&'.join(str_list)
以 POST /v1/blocktrades 为例:
- In json body, use following format {"trades": [{"instrument_id": "BTC-25SEP20-9000-C", "price": "0.21", "qty": "50", "side": "sell"}, {"instrument_id": "BTC-PERPETUAL", "price": "9000", "qty": "500000", "side": "buy"}]}
私钥是 eabc3108-dd2b-43df-a98d-3e2054049b73
例子
request
curl -X POST "https://betaapi.bitexch.dev/v1/trades" -H "Content-Type: application/json" -H "X-Bit-Access-Key: ak-df074cbc-dbf7-46f9-b07c-f4f51763ac7a" -d '{"label": "A0627-1", "role": "taker", "trades": [{"instrument_id": "BTC-25SEP20-9000-C", "price": "0.21", "qty": "50", "side": "sell"}, {"instrument_id": "BTC-PERPETUAL", "price": "9000", "qty": "500000", "side": "buy"}], "timestamp": 1593239722621, "signature": "9636f1850e33557c03a499bb5c1aed9a36be340f3dbfd22a3f066438b3987d6b"}'
得到 string to sign
- str_to_sign = /v1/trades&label=A0627-1&role=taker×tamp=1593239722621&trades=[instrument_id=BTC-25SEP20-9000-C&price=0.21&qty=50&side=sell&instrument_id=BTC-PERPETUAL&price=9000&qty=500000&side=buy]
接口目录
- 用户自定义字符串(label 等)合法字符: [A-Z], [a-z], [0-9], "-", "_"
路径 | 方法 | 描述 | 范围 | 限速归类 | 权限 |
---|---|---|---|---|---|
/spot/v1/orders | POST | 下单 | private | 现货交易接口 | 现货交易 |
/spot/v1/cancel_orders | POST | 取消订单 | private | 现货交易接口 | 现货交易 |
/spot/v1/amend_orders | POST | 修改订单 | private | 现货交易接口 | 现货交易 |
/spot/v1/update_mmp_config | POST | 更新 MMP 设置 | private | 现货交易接口 | 现货交易 |
/spot/v1/reset_mmp | POST | 重置 MMP 状态 | private | 现货交易接口 | 现货交易 |
/spot/v1/user_configs/cod | POST | 更新 cod 设置 | private | 现货交易接口 | 现货交易 |
/spot/v1/open_orders | GET | 未结订单 | private | 现货其他接口 | 读取 |
/spot/v1/orders | GET | 订单历史 | private | 现货其他接口 | 读取 |
/spot/v1/user/trades | GET | 用户交易记录 | private | 现货其他接口 | 读取 |
/spot/v1/accounts | GET | 现货账户信息 | private | 现货其他接口 | 读取 |
/spot/v1/transactions | GET | 现货交易日志 | private | UM 其他接口 | 读取 |
/um/v1/account_mode | GET | 查询账户类型 | private | UM 其他接口 | 读取 |
/um/v1/accounts | GET | 统一 UM 账户信息 | private | UM 其他接口 | 读取 |
/um/v1/transactions | GET | 统一 UM 交易日志 | private | 现货其他接口 | 读取 |
/um/v1/interest_records | GET | 查询利息记录 | private | UM 其他接口 | 读取 |
/spot/v1/ws/auth | GET | 获取 websocket 的 token | private | 现货其他接口 | 读取 |
/spot/v1/mmp_state | GET | 查询 Mmp 状态 | private | 现货其他接口 | 读取 |
/spot/v1/user_configs/cod | GET | 查询 cod 配置 | private | 现货其他接口 | 读取 |
/spot/v1/system/time | GET | 查询服务时间戳 | public | 现货公有接口 | / |
/spot/v1/system/version | GET | 查询 API 版本 | public | 现货公有接口 | / |
/spot/v1/system/cancel_only_status | GET | 查询 cancel only 状态 | public | 现货公有接口 | / |
/spot/v1/instruments | GET | 查询产品列表 | public | 现货公有接口 | / |
/spot/v1/orderbooks | GET | 查询市场深度 | public | 现货公有接口 | / |
/spot/v1/market/trades | GET | 查询市场最新交易 | public | 现货公有接口 | / |
/spot/v1/klines | GET | 查询 Kline | public | 现货公有接口 | / |
/spot/v1/tickers | GET | 查询市场 ticker | public | 现货公有接口 | / |
/spot/v1/market/summary | GET | 查询市场价格汇总信息 | public | 现货公有接口 | / |
/um/v1/index_price | GET | 查询指数价格 | public | UM 公有接口 | / |
/um/v1/loan_rates | GET | 查询借币利率 | public | UM 公有接口 | / |
API SDK
Python
Python REST API (现货,USDT本位&USD本位) python-umapi
Go
Go API (币本位) go-api
Java
Java API for (现货,USDT本位&USD本位) java-api
系统接口
查询服务器时间
GET /spot/v1/system/time
curl "https://betaspot-api.bitexch.dev/spot/v1/system/time"
返回数据
{
"code": 0,
"message": "",
"data": 1587884283175
}
查询服务器时间
请求参数
None
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
data | integer | 服务器时间戳 |
查询API版本
GET /spot/v1/system/version
curl "https://betaspot-api.bitexch.dev/spot/v1/system/version"
返回数据
{
"code": 0,
"message": "",
"data": "v1.0"
}
查询API版本。
请求参数
None
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
data | string | API版本 |
查询 cancel only 状态
GET /spot/v1/system/cancel_only_status
curl "https://betaapi.bitexch.dev/spot/v1/system/cancel_only_status"
返回数据
{
"code": 0,
"message": "",
"data": {
"status": 0,
"remain_ms": 0,
"is_upgrading": false
}
}
当bit.com在进行系统维护、升级等特殊时期,整个系统会处于只允许撤销订单,不能下新订单的状态(即cancel only状态)。此接口用于查询系统是否处于cancel-only 状态,还有多长时间结束。
status
status=1: cancel-only或者系统升级中
status=0: cancel-only已经结束以及系统没有在升级中,可以下单
remain_ms
Cancel-only 还有多长时间结束(毫秒)
is_upgrading
系统是否升级中
请求参数
None
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
status | integer | Cancel-only 状态 |
remain_ms | integer | Cancel-only 还有多长时间结束(毫秒) |
is_upgrading | boolean | 系统是否升级中 |
公共市场数据
获取币对
GET /spot/v1/instruments
curl "https://betaspot-api.bitexch.dev/spot/v1/instruments"
返回数据
{
"code": 0,
"message": "",
"data": [
{
"pair": "BTC-USDT",
"base_currency": "BTC",
"quote_currency": "USDT",
"price_step": "0.01",
"qty_step": "0.000001",
"qty_min": "0.0001",
"quote_qty_step": "0.00000001",
"quote_qty_min": "10",
"taker_fee_rate": "0.00070000",
"maker_fee_rate": "0.00020000",
"groups": [
"1",
"10",
"100",
"1000"
],
"group_steps": [
"0.01000000",
"0.10000000",
"1.00000000",
"10.00000000"
],
"status": 1,
"display_status": 1
},
{
"pair": "ETH-USDT",
"base_currency": "ETH",
"quote_currency": "USDT",
"price_step": "0.01",
"qty_step": "0.0001",
"qty_min": "0.001",
"quote_qty_step": "0.00000001",
"quote_qty_min": "10",
"taker_fee_rate": "0.00070000",
"maker_fee_rate": "0.00020000",
"groups": [
"1",
"10",
"100",
"1000"
],
"group_steps": [
"0.01000000",
"0.10000000",
"1.00000000",
"10.00000000"
],
"status": 1,
"display_status": 1
}
]
}
获取交易币对的列表,查询各币对的交易限制和价格步长等信息。
请求参数
参数名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
active | string | false | "true" | 是否查询活跃币对 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
pair | string | 币对名称 |
base_currency | string | 交易货币币种 |
quote_currency | string | 计价货币币种 |
price_step | string | 交易价格步长,交易价格必须为步长的整数倍(输出实际精度) |
qty_step | string | 交易数量步长,交易数量必须为步长的整数倍(输出实际精度) |
qty_min | string | 最小交易数量 (base currency, 输出实际精度) |
quote_qty_step | string | 计价货币交易数量步长,计价货币数量必须为步长的整数倍(输出实际精度) |
quote_qty_min | string | 计价货币最小交易量(输出实际精度) |
taker_fee_rate | string | Taker手续费率(已废弃,目前使用vip费率等级) |
maker_fee_rate | string | Maker手续费率(已废弃,目前使用vip费率等级) |
groups | string array | 聚合倍数(用于websocket订单频道聚合使用)返回一串价格步长,如[1,10,50,100] |
group_steps | string array | 聚合步长 |
status | int | 币对状态, 1=活跃, 2=不活跃 |
display_status | int | 页面展示状态 (内部使用, 1=展示, 2=隐藏) |
获取指数
GET /um/v1/index_price
curl "https://betaapi.bitexch.dev/um/v1/index_price?currency=BTC"e_currency=USDT"
返回数据
{
"code": 0,
"message": "",
"data": [
{
"index_name": "BTC-USDT",
"index_price": "50000"
}
]
}
获取以USD或USDT为计价币种的指数。
支持币对:
USD
: BTC-USD, ETH-USD, BCH-USD
USDT
: BTC-USDT, ETH-USDT, BCH-USDT, USDC-USDT
币种参数为非必填,如果币种传入为空,则返回某计价币种下的所有币对指数。
查询参数
参数名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
currency | string | false | "" | 币种 |
quote_currency | string | true | "" | 计价币种(目前支持USD和USDT) |
返回数据
参数名称 | 数据类型 | 说明 |
---|---|---|
index_name | string | 指数名称 |
index_price | string | 指数价格 |
查询借币利率
GET /um/v1/loan_rates
curl "https://betaapi.bitexch.dev/um/v1/loan_rates?currency=ETH"
返回数据
{
"code": 0,
"message": "",
"data": {
"currency": "ETH",
"last_hour_rate": "0.03000000"
}
}
获取过去最近一小时的借币利率。
查询参数
参数名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
currency | string | false | "" | 币种 |
返回数据
参数名称 | 数据类型 | 说明 |
---|---|---|
currency | string | 币种 |
last_hour_rate | string | 过去一小时的平均借币利率 |
获取市场深度
GET /spot/v1/orderbooks
curl "https://betaspot-api.bitexch.dev/spot/v1/orderbooks?pair=BTC-USDT"
返回数据
{
"code": 0,
"message": "",
"data": {
"pair": "BTC-USDT",
"timestamp": 1585299600000,
"asks": [
["60000", "3.00000000"],
["60030", "0.70000000"],
["60100", "18.00000000"]
],
"bids": [
["59992", "0.30000000"],
["59990", "2.00000000"],
["59987", "5.60000000"]
]
}
}
根据币对获取市场深度。
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
pair | string | true | "" | 币对名称 |
level | int | false | 5 | 深度层数,范围:[1,50] |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
pair | string | 币对名称 |
timestamp | integer | 时间戳 |
asks | string | Asks队列 [price, qty] |
bids | string | Bids队列 [price, qty] |
获取市场成交记录
GET /spot/v1/market/trades
curl "https://betaspot-api.bitexch.dev/spot/v1/market/trades?pair=BTC-USDT&start_time=1617243797588&end_time=1617596597588"
返回数据
{
"code": 0,
"message": "",
"data": [
{
"created_at": 1617592997588,
"trade_id": "7",
"pair": "BTC-USDT",
"price": "61030.00000000",
"qty": "0.02000000",
"side": "sell"
}
]
}
获取市场成交记录。
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
pair | string | true | "" | 币对名称 |
start_time | integer | false | one month ago | 起始时间戳 |
end_time | integer | false | now | 结束时间戳 |
count | int | false | 100 | 返回数(默认100,最大500条) |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
trade_id | integer | 交易ID |
pair | string | 币对名称 |
created_at | integer | 成交时间戳 |
price | string | 成交价格 |
qty | string | 成交数量 |
side | string | 交易方向 |
获取K线
GET /spot/v1/klines
curl "https://betaspot-api.bitexch.dev/spot/v1/klines?pair=BTC-USDT&start_time=1585296000000&end_time=1585596000000&timeframe_min=30"
返回数据
{
"code": 0,
"message": "",
"data": {
"close": [
60050
],
"high": [
60100
],
"low": [
60008
],
"open": [
60030
],
"timestamps": [
1585296000000
],
"volume": [
310.2
]
}
}
按照币对获取K线数据。
K线接口返回6个序列数据:开盘价序列、最高价序列、最低价序列、收盘价序列、时间戳序列和交易量序列
支持K线周期:
K线周期 | 说明 |
---|---|
1 | 1 分钟 |
3 | 3 分钟 |
5 | 5 分钟 |
15 | 15 分钟 |
30 | 30 分钟 |
60 | 60 分钟 |
240 | 240 分钟 |
1d | 1天 |
1w | 1周(自然周) |
1m | 1月(自然月) |
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
pair | string | true | "" | 币对名称 |
start_time | integer | true | one month ago | 起始时间戳 |
end_time | integer | true | now | 结束时间戳 |
timeframe_min | string | true | "" | K线周期 |
count | int | false | 500 | 返回数(默认500,最大1000条) |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
open | float array | 开盘价 |
high | float array | 最高价 |
low | float array | 最低价 |
close | float array | 收盘价 |
timestamps | float array | 时间戳 |
volume | float array | 成交量 |
获取行情信息
GET /spot/v1/tickers
curl "https://betaspot-api.bitexch.dev/spot/v1/tickers?pair=BTC-USDT"
返回数据
{
"code": 0,
"message": "",
"data":{
"time":1589126498813,
"pair":"BTC-USDT",
"best_bid":"60050.00000000",
"best_ask":"60020.00000000",
"best_bid_qty":"13.50000000",
"best_ask_qty":"21.00000000",
"last_price":"60030.00000000",
"last_qty":"30.00000000",
"open24h":"60040.00000000",
"high24h":"60100.00000000",
"low24h":"60000.00000000",
"price_change24h":"0.03000000",
"volume24h":"300.00000000",
"quote_volume24h":"18000000.00000000"
}
}
通过币对获取行情数据。
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
pair | string | true | "" | 币对名称 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
pair | string | 币对名称 |
last_price | string | 最新成交价 |
last_qty | string | 最新成交量 |
open24h | string | 24小时开盘价 |
high24h | string | 24小时最高价 |
low24h | string | 24小时最低价 |
volume24h | string | 24小时成交量 |
quote_volume24h | string | 24小时计价币种成交量 |
price_change24h | string | 24小时价格变化 |
best_bid | string | 最佳买入价 |
best_ask | string | 最佳卖出价 |
best_bid_qty | string | 最佳买入数量 |
best_ask_qty | string | 最佳卖出数量 |
获取市场价格汇总信息
GET /spot/v1/market/summary
curl "https://betaspot-api.bitexch.dev/spot/v1/market/summary?quote_ccy=USD"
返回数据
{
"code": 0,
"message": "",
"data":[
{
"time":1589126498813,
"pair":"BTC-USD",
"best_bid":"60050.00000000",
"best_ask":"60020.00000000",
"best_bid_qty":"13.50000000",
"best_ask_qty":"21.00000000",
"last_price":"60030.00000000",
"last_qty":"30.00000000",
"open24h":"60040.00000000",
"high24h":"60100.00000000",
"low24h":"60000.00000000",
"price_change24h":"0.03000000",
"volume24h":"300.00000000",
"quote_volume24h":"18000000.00000000"
},
{
"time":1589126498814,
"pair":"ETH-USD",
"best_bid":"3050.00000000",
"best_ask":"3020.00000000",
"best_bid_qty":"13.50000000",
"best_ask_qty":"21.00000000",
"last_price":"3030.00000000",
"last_qty":"30.00000000",
"open24h":"3040.00000000",
"high24h":"3100.00000000",
"low24h":"3000.00000000",
"price_change24h":"0.03000000",
"volume24h":"300.00000000",
"quote_volume24h":"900000.00000000"
}
]
}
通过计价货币币种获取市场价格汇总信息。
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
quote_ccy | string | true | "" | 计价货币币种 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
pair | string | 币对名称 |
last_price | string | 最新成交价 |
last_qty | string | 最新成交量 |
open24h | string | 24小时开盘价 |
high24h | string | 24小时最高价 |
low24h | string | 24小时最低价 |
volume24h | string | 24小时成交量 |
quote_volume24h | string | 24小时计价币种成交量 |
price_change24h | string | 24小时价格变化 |
best_bid | string | 最佳买入价 |
best_ask | string | 最佳卖出价 |
best_bid_qty | string | 最佳买入数量 |
best_ask_qty | string | 最佳卖出数量 |
账户信息
查询账户模式
GET /um/v1/account_mode
curl -H "X-Bit-Access-Key: ak-ba3bd026-29e6-443b-8eb6-d2ea3b607113" "https://betaapi.bitexch.dev/um/v1/account_mode?timestamp=1589521383462&signature=30f7cf5c8018f5dfee515533e25a1813e9120be7898b62fb85a2f4129f3e9528"
返回数据
// account_mode = Um
{
"code": 0,
"message": "",
"data": {
"user_id": 1,
"account_mode": "um",
"auto_borrow": true,
"um_risk_mode": "regular",
"classic_accounts": []
}
}
// account_mode = classic
{
"code": 0,
"message": "",
"data": {
"user_id": 1,
"account_mode": "classic",
"auto_borrow": false,
"um_risk_mode": "",
"classic_accounts": [
{
"currency": "BCH",
"classic_risk_mode": "portfolio_margin"
},
{
"currency": "BTC",
"classic_risk_mode": "portfolio_margin"
},
{
"currency": "ETH",
"classic_risk_mode": "portfolio_margin"
}
]
}
}
查询账户类型。账户类型有两类:经典模式和统一UM模式。另外还有迁移中的临时状态。
查询参数
None
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
user_id | int | 用户ID |
account_mode | string | 账户模式 |
auto_borrow | bool | 是否自动借币 |
um_risk_mode | string | 统一模式下 风控模式 (当账户类型为统一模式时有效) |
classic_accounts | array | 经典模式下分币种的风控模式(当账户类型为经典模式时有效) |
- 经典账户信息
classic account
只有当account_mode
=classic
时会返回有效值。
字段名称 | 数据类型 | 说明 |
---|---|---|
currency | string | 币种 |
classic_risk_mode | string | 风控模式 |
统一UM账户信息
GET /um/v1/accounts
curl -H "X-Bit-Access-Key: ak-ba3bd026-29e6-443b-8eb6-d2ea3b607113" "https://betaapi.bitexch.dev/um/v1/accounts?timestamp=1589521383462&signature=30f7cf5c8018f5dfee515533e25a1813e9120be7898b62fb85a2f4129f3e9528"
返回数据
{
"code": 0,
"message": "",
"data": {
"user_id": 481554,
"created_at": 1649923879505,
"total_collateral": "3170125.05978108",
"total_margin_balance": "3170125.05978108",
"total_available": "3169721.64891398",
"total_initial_margin": "403.41086710",
"total_maintenance_margin": "303.16627631",
"total_initial_margin_ratio": "0.00012725",
"total_maintenance_margin_ratio": "0.00009563",
"total_liability": "0.00000000",
"total_unsettled_amount": "-0.84400340",
"total_future_value": "1.26000000",
"total_option_value": "0.00000000",
"spot_orders_hc_loss": "0.00000000",
"total_position_pnl": "1225.53245820",
"details": [
{
"currency": "BTC",
"equity": "78.13359310",
"liability": "0.00000000",
"index_price": "41311.20615385",
"cash_balance": "78.13360190",
"margin_balance": "78.13359310",
"available_balance": "78.12382795",
"initial_margin": "0.00976516",
"spot_margin": "0.00000000",
"maintenance_margin": "0.00733859",
"potential_liability": "0.00000000",
"interest": "0.00000000",
"interest_rate": "0.07000000",
"pnl": "0.02966586",
"total_delta": "0.48532539",
"session_rpl": "0.00001552",
"session_upl": "-0.00003595",
"option_value": "0.00000000",
"option_pnl": "0.00000000",
"option_session_rpl": "0.00000000",
"option_session_upl": "0.00000000",
"option_delta": "0.00000000",
"option_gamma": "0.00000000",
"option_vega": "0.00000000",
"option_theta": "0.00000000",
"future_value": "1.23000000",
"future_pnl": "0.02966586",
"future_session_rpl": "0.00001552",
"future_session_upl": "-0.00003595",
"future_session_funding": "0.00001552",
"future_delta": "0.48532539",
"future_available_balance": "76.72788921",
"option_available_balance": "76.72788921",
"unsettled_amount": "-0.00002043",
"usdt_index_price": "41311.20615385"
},
{
"currency": "ETH",
"equity": "1.99960000",
"liability": "0.00000000",
"index_price": "3119.01923077",
"cash_balance": "1.99960000",
"margin_balance": "1.99960000",
"available_balance": "1.99960000",
"initial_margin": "0.00000000",
"spot_margin": "0.00000000",
"maintenance_margin": "0.00000000",
"potential_liability": "0.00000000",
"interest": "0.00000000",
"interest_rate": "0.07000000",
"pnl": "0.00000000",
"total_delta": "0.00000000",
"session_rpl": "0.00000000",
"session_upl": "0.00000000",
"option_value": "0.00000000",
"option_pnl": "0.00000000",
"option_session_rpl": "0.00000000",
"option_session_upl": "0.00000000",
"option_delta": "0.00000000",
"option_gamma": "0.00000000",
"option_vega": "0.00000000",
"option_theta": "0.00000000",
"future_value": "0.03000000",
"future_pnl": "0.00000000",
"future_session_rpl": "0.00000000",
"future_session_upl": "0.00000000",
"future_session_funding": "0.00000000",
"future_delta": "0.00000000",
"future_available_balance": "1.99960000",
"option_available_balance": "1.99960000",
"unsettled_amount": "0.00000000",
"usdt_index_price": "3119.01923077"
}
],
"usdt_total_collateral": "3170125.05978108",
"usdt_total_margin_balance": "3170125.05978108",
"usdt_total_available": "3169721.64891398",
"usdt_total_initial_margin": "403.41086710",
"usdt_total_maintenance_margin": "303.16627631",
"usdt_total_initial_margin_ratio": "0.00012725",
"usdt_total_maintenance_margin_ratio": "0.00009563",
"usdt_total_liability": "0.00000000",
"usdt_total_unsettled_amount": "-0.84400340"
}
}
UM用户,用此接口获取统一交易账户信息。
total_initial_margin_ratio
PM | total_initial_margin_ratio 公式 |
---|---|
true | (total_im + spot_haircut_loss) / collateral |
false | (total_im + spot_haircut_loss) / margin_balance |
1)如果分子和分母都为0,返回0。
2)否则如果分母 <=0, 返回 "infinity".
3)返回分子/分母
total_maintenance_margin_ratio
PM | total_maintenance_margin_ratio 公式 |
---|---|
true | total_maintenance_margin / collateral |
false | total_maintenance_margin / margin_balance |
1)如果分子和分母都为0,返回0。
2)否则如果分母 <=0, 返回 "infinity".
3)返回分子/分母
请求参数
参数名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
with_linear_pair_margins | string | false | "" | 在linear_pair_margins 字段中返回按正向币对分类的保证金数值. 仅支持Portfolio Margin下返回. |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
user_id | int | 用户ID |
created_at | int | 时间戳(查询时刻) |
total_collateral | string | 账户维度USD总担保品金额 |
total_margin_balance | string | 账户维度USD总保证金余额 |
total_available | string | 账户维度USD总可用余额 |
total_initial_margin | string | 账户维度USD总初始保证金 |
total_maintenance_margin | string | 账户维度USD总维持保证金 |
total_initial_margin_ratio | string | 账户维度USD总初始保证金率,可能会返回"infinity" |
total_maintenance_margin_ratio | string | 账户维度USD总维持保证金率,可能会返回"infinity" |
total_liability | string | 账户维度USD总负债 |
total_unsettled_amount | string | 账户维度USD总待结金额 |
total_future_value | string | 期货总市值 |
total_option_value | string | 期权总市值 |
spot_orders_hc_loss | string | 现货挂单损失 |
total_position_pnl | string | 账户维度USD损益 [SUM(ccy.pnl * ccy.index-price)] |
details | array | 分币种账户信息 |
usdt_total_collateral | string | (兼容旧字段) 等于 total_collateral |
usdt_total_margin_balance | string | (兼容旧字段) 等于 total_margin_balance |
usdt_total_available | string | (兼容旧字段) 等于 total_available |
usdt_total_initial_margin | string | (兼容旧字段) 等于 total_initial_margin |
usdt_total_maintenance_margin | string | (兼容旧字段) 等于 total_maintenance_margin |
usdt_total_initial_margin_ratio | string | (兼容旧字段) 等于 total_initial_margin_ratio |
usdt_total_maintenance_margin_ratio | string | (兼容旧字段) 等于 total_maintenance_margin_ratio |
usdt_total_liability | string | (兼容旧字段) 等于 total_liability |
usdt_total_unsettled_amount | string | (兼容旧字段) 等于 total_unsettled_amount |
- 分币种账户信息
字段名称 | 数据类型 | 说明 |
---|---|---|
currency | string | 币种 |
equity | string | 权益 |
liability | string | 负债 |
index_price | string | USD指数价格 |
usdt_index_price | string | (兼容旧字段) 等于 index_price |
cash_balance | string | 现金余额 |
margin_balance | string | 保证金余额 |
available_balance | string | 可用余额 |
initial_margin | string | 初始保证金 |
spot_margin | string | 现货冻结金额 |
maintenance_margin | string | 维持保证金 |
potential_liability | string | 潜在负债 |
interest | string | 借币利息 |
interest_rate | string | 借币利率 |
pnl | string | 币种维度损益 |
total_delta | string | 账户delta总值 |
session_rpl | string | 已实现损益 |
session_upl | string | 未实现损益 |
option_value | string | 期权市值 |
option_pnl | string | 期权损益 |
option_session_rpl | string | 期权已实现损益 |
option_session_upl | string | 期权未实现损益 |
option_delta | string | 期权delta |
option_gamma | string | 期权gamma |
option_vega | string | 期权vega |
option_theta | string | 期权theta |
future_value | string | 期货市值 |
future_pnl | string | 期货损益 |
future_session_rpl | string | 期货已实现损益 |
future_session_upl | string | 期货未实现损益 |
future_session_funding | string | 期货funding |
future_delta | string | 期货delta |
future_available_balance | string | 期货最大可用余额 |
option_available_balance | string | 期权最大可用余额 |
unsettled_amount | string | 待结金额 |
- 按正向币对分类的保证金
当请求中有with_linear_pair_margins=true
参数时, 在linear_pair_margins
字段中返回一个数组. 仅支持Portfolio Margin下返回.
字段名称 | 数据类型 | 说明 |
---|---|---|
pair | string | 正向币对名称 |
initial_margin | string | 币对初始保证金 |
maintenance_margin | string | 币对维持保证金 |
统一UM账户交易日志
GET /um/v1/transactions
curl -H "X-Bit-Access-Key: ak-8e97ac6c-8075-4a94-b2bb-38bd537619fa" "https://betaapi.bitexch.dev/um/v1/transactions?currency=BTC&type=trade-recv&limit=2×tamp=1620369292928&signature=35d76033f6e251ce85524ec4310417fd555953fff00cd33f3a94e3d27d062965"
返回数据
{
"code": 0,
"message": "",
"data": [
{
"tx_time": 1631240595162,
"tx_type": "deposit",
"ccy": "BTC",
"instrument_id": "",
"direction": "",
"qty": "3.20000000",
"price": "",
"position": "",
"fee_paid": "0.00000000",
"fee_rate": "",
"funding": "",
"change": "3.20000000",
"balance": "107.00000000",
"order_id": "",
"trade_id": "",
"remark": ""
},
{
"tx_time": 1630722195162,
"tx_type": "spot-trade-recv",
"ccy": "BTC",
"instrument_id": "BTC-USDT",
"direction": "buy",
"qty": "2.00000000",
"price": "60000.00000000",
"position": "",
"fee_paid": "0.00030000",
"fee_rate": "0.00000000",
"funding": "",
"change": "2.00000000",
"balance": "102.00000000",
"order_id": "9001",
"trade_id": "3001",
"remark": ""
}
],
"page_info": {
"has_more": false
}
}
查询统一交易账户的交易日志。
查询参数
参数名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
currency | string | false | "" | 币种 |
instrument_id | string | false | "" | 产品名称 |
start_time | integer | false | Three month ago | 起始时间戳 |
end_time | integer | false | Now | 结束时间戳 |
type | string | false | "" | UM交易日志类型 |
offset | int | false | 1 | 分页偏移(第一页为1) |
limit | int | false | 100 | 分页大小 |
返回数据
参数名称 | 数据类型 | 说明 |
---|---|---|
tx_time | integer | 时间戳 |
tx_type | string | UM交易日志类型 |
ccy | string | 币种 |
instrument_id | string | 产品名称 |
direction | string | 方向: buy/sell |
qty | string | 数量 |
price | string | 交易价格 (针对trade交易类型有效) |
position | string | 期权/期货仓位 |
fee_paid | string | 手续费 |
fee_rate | string | 手续费率 |
funding | string | 资金费用 |
change | string | 账户变动 |
cash_flow | string | 现金流(现货cash_flow=change, 期权/期货请参考期权/期货的transactions文档) |
balance | string | 变动后的余额 |
order_id | string | 订单ID |
trade_id | string | 交易ID |
remark | string | 备注 |
查询计息记录
GET /um/v1/interest_records
curl -H "X-Bit-Access-Key: ak-8e97ac6c-8075-4a94-b2bb-38bd537619fa" "https://betaapi.bitexch.dev/um/v1/interest_records?currency=BTC×tamp=1631669478618&signature=3d4685f07751cd51f42ee631938f189cbe6e9712cc6d559881e5b3b6d1ba1224"
返回数据
{
"code": 0,
"message": "",
"data": [
{
"currency": "BTC",
"time": 1631559600000,
"loan_rate": "0.00300000",
"liability": "100.00000000",
"interest": "1.05000000"
},
{
"currency": "BTC",
"time": 1631556000000,
"loan_rate": "0.00300000",
"liability": "100.00000000",
"interest": "1.06000000"
},
{
"currency": "BTC",
"time": 1631552400000,
"loan_rate": "0.00300000",
"liability": "100.00000000",
"interest": "1.07000000"
}
],
"page_info": {
"has_more": true
}
}
只有UM模式用户可启用借币功能。此接口用于获取统一保证金UM账户的计息记录。
查询参数
参数名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
currency | string | true | "" | 币种 |
start_time | integer | false | One month ago | 起始时间戳 |
end_time | integer | false | Now | 结束时间戳 |
offset | int | false | 1 | 分页偏移(第一页为1) |
limit | int | false | 100 | 分页大小 |
返回数据
参数名称 | 数据类型 | 说明 |
---|---|---|
currency | string | 币种 |
time | integer | 计息时间戳 |
loan_rate | string | 计息利率 |
liability | string | 计息负债 |
interest | string | 利息 |
开启或关闭COD(Cancel On Disconnect)
POST /spot/v1/user_configs/cod
curl -X POST "https://betaspot-api.bitexch.dev/spot/v1/user_configs/cod" -H "Content-Type: application/json" -H "X-Bit-Access-Key: ak-ba3bd026-29e6-443b-8eb6-d2ea3b607113" -d '{"cod":true, "timestamp": 1590572422557, "signature": "3c8c2271a58e3d11dfbd262a6be40ebdd07e8f394a002db0065068b36bc66d5a"}'
返回数据
{
"code": 0,
"message": "",
"data": {
}
}
开启或关闭COD, 如果COD是开启状态, 同时全部私有频道的连接都断开的话, 这个账户的所有未结订单都会被撤销
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
cod | bool | true | "" | 开启或关闭COD |
返回数据
None
查询COD配置
GET /spot/v1/user_configs/cod
curl -H "X-Bit-Access-Key: ak-ba3bd026-29e6-443b-8eb6-d2ea3b607113" "https://betaspot-api.bitexch.dev/spot/v1/user_configs/cod?timestamp=1588932548594&signature=d642b046b247bf00ba285bb260582aadf33e98d2b47d26479b99cc1a7941f807"
返回数据
{
"code": 0,
"message": "",
"data": {
"cod": true
}
}
查询COD配置
请求参数
无
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
cod | bool | COD是否开启 |
查询MMP状态
GET /spot/v1/mmp_state
curl -H "X-Bit-Access-Key: ak-96cc0cbd-c501-448f-a32d-21228bc9648f" "https://betaspot-api.bitexch.dev/spot/v1/mmp_state?timestamp=1600050649936&signature=3a3c511ab776674c4a8db31135f22c8bf2bc5aac4eb0070c8c4d577e89e01643"
返回数据
{
"code": 0,
"message": "",
"data": {
"mmp_enabled": true,
"mmp_user_configurable": true,
"mmp_data": [
{
"pair": "BTC-USDT",
"mmp_config": {
"window_ms": 2000,
"frozen_period_ms": 10000,
"qty_limit": "30.00000000",
"delta_limit": "10.00000000"
},
"mmp_state": {
"mmp_frozen_until_ms": -1,
"mmp_frozen": false
}
}
]
}
}
查询MMP状态.
mmp_enabled
MMP是否开启.
mmp_user_configurable
用户是否可以更改MMP配置, 如果为true,用户可以调用 POST /spot/v1/update_mmp_config
mmp_data
MMP 配置参数和状态列表,针对每一个交易对:
mmp_frozen_until_ms
mmp_frozen_until_ms 显示冻结状态.
mmp_frozen_until_ms > 0: 冻结到指定时间戳,或者手动reset MMP解冻
mmp_frozen_until_ms = 0: 冻结直到reset MMP解冻
mmp_frozen_until_ms = -1: 解冻状态
mmp_frozen
显示MMP是否已经冻结.
请求参数
None
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
mmp_enabled | bool | MMP 是否开启 |
mmp_user_configurable | bool | 用户是否可以修改MMP配置 |
mmp_data | array | MMP配置和状态列表(如下) |
- MMP 配置 (mmp_config)
字段名称 | 数据类型 | 说明 |
---|---|---|
window_ms | integer | MMP滚动时间窗口 |
frozen_period_ms | integer | MMP冻结时间窗口 |
qty_limit | string | MMP数量上限 (in base currency, e.g. BTC) |
delta_limit | string | MMP delta 上限 (in base currency, e.g. BTC) |
- MMP 状态 (mmp_state)
字段名称 | 数据类型 | 说明 |
---|---|---|
mmp_frozen_until_ms | integer | MMP冻结时间戳 |
mmp_frozen | bool | MMP是否冻结 |
更新MMP配置
POST /spot/v1/update_mmp_config
curl -X POST "https://betaspot-api.bitexch.dev/spot/v1/update_mmp_config" -H "Content-Type: application/json" -H "X-Bit-Access-Key: ak-96cc0cbd-c501-448f-a32d-21228bc9648f" -d '{"pair": "BTC-USDT", "window_ms": 20000, "frozen_period_ms": 30000, "qty_limit": "1000.00000000", "delta_limit": "1000.00000000", "timestamp": 1600050944127, "signature": "661b535fa878633718922fd90b419de4b5d9ae447833876b91bc8bcc7906e0f3"}'
返回数据
{
"code": 0,
"message": "",
"data": "ok"
}
更新MMP配置参数 仅当mmp.user_configurable = true, 可以调用此函数,否则返回错误。
MMP冻结状态会触发当 qty >= qty_limit
或者 abs(delta) >= delta_limit
.
window_ms
: MMP 滚动时间窗口
frozen_period_ms
: MMP 冻结时间窗口
qty_limit
: MMP 数量上限 (in base currency, e.g. BTC)
delta_limit
: MMP delta 上限 (in base currency, e.g. BTC)
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
pair | string | true | "" | 交易对 |
window_ms | integer | true | 0 | MMP 滚动时间窗口 |
frozen_period_ms | integer | true | 0 | MMP 冻结时间窗口 |
qty_limit | string | true | "" | MMP 数量上限 (in base currency, e.g. BTC) |
delta_limit | string | true | "" | MMP delta 上限 (in base currency, e.g. BTC) |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
data | string | ok |
重置MMP状态
POST /spot/v1/reset_mmp
curl -X POST "https://betaspot-api.bitexch.dev/spot/v1/reset_mmp" -H "Content-Type: application/json" -H "X-Bit-Access-Key: ak-96cc0cbd-c501-448f-a32d-21228bc9648f" -d '{"pair": "BTC-USDT", "timestamp": 1600050689085, "signature": "992507afc30728c2bc55d7bf7f47e76126ce3f40ddebc205594877381c4374fa"}'
返回数据
{
"code": 0,
"message": "",
"data": "ok"
}
重置MMP状态(解冻),用户可以继续下MMP订单。
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
pair | string | true | "" | 交易对 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
data | string | ok |
查询现货用户配置
GET /spot/v1/account_configs
curl -H "X-Bit-Access-Key: ak-8628663d-678c-49b0-8d4e-a8691152a2d0" "https://betaspot-api.bitexch.dev/spot/v1/account_configs?timestamp=1678345228345&signature=0ff4933fb920e498514168f58848b8dc72570825f78adf4d9c9ca37a8e59ff96"
返回数据
{
"code": 0,
"message": "",
"data": {
"user_id": "51140",
"customize_open_counts": false,
"max_open_order_count_all": 500,
"max_open_order_count_pair": 200,
"customize_fee_rates": false,
"pair_config_list": [
{
"pair": "BTC-USD",
"taker_fee_rate": "0.01500000",
"maker_fee_rate": "0.01000000",
"display_name": "BTC-USD",
"fee_rate_class": {
"pair": "BTC-USD",
"taker_fee_rate": "0.01500000",
"maker_fee_rate": "0.01000000",
"source": "vip",
"taker_basic": "0.00070000",
"maker_basic": "0.00020000",
"taker_user_defined": "",
"maker_user_defined": "",
"taker_vip_level": "0.01500000",
"maker_vip_level": "0.01000000",
"has_vip_level": true,
"vip_level": 1
}
}
],
"parent_user_id": "0"
}
}
查询现货用户配置.
请求参数
NONE
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
user_id | string | 用户ID |
customize_open_counts | bool | 是否定制 open order counts 参数 |
max_open_order_count_all | string | 最大全局未结订单数量 |
max_open_order_count_pair | string | 最大币对未结订单数量 |
customize_fee_rates | bool | 是否定制费率(已废弃,目前使用 vip 费率等级) |
parent_user_id | string | 母账户ID |
- 币对配置列表
字段名称 | 数据类型 | 说明 |
---|---|---|
pair | string | 币对 |
display_name | string | 显示名称 |
taker_fee_rate | string | taker 费率(已废弃,目前使用 vip 费率等级) |
maker_fee_rate | string | maker 费率(已废弃,目前使用 vip 费率等级) |
fee_rate_class.pair | string | 币对 |
fee_rate_class.taker_basic | string | 产品的 taker 费率 |
fee_rate_class.maker_basic | string | 产品的 maker 费率 |
fee_rate_class.taker_user_defined | string | 定制的 taker 费率 |
fee_rate_class.maker_user_defined | string | 定制的 maker 费率 |
fee_rate_class.taker_vip_level | string | VIP 级别的 taker 费率 |
fee_rate_class.maker_vip_level | string | VIP 级别的 maker 费率 |
fee_rate_class.has_vip_level | bool | 用户是否有 VIP 级别 |
fee_rate_class.vip_level | int | VIP 级别 |
fee_rate_class.source | string | 费率来源 |
fee_rate_class.taker_fee_rate | string | 最终生效的 taker 费率 |
fee_rate_class.maker_fee_rate | string | 最终生效的 maker 费率 |
订单管理
下单
POST /spot/v1/orders
curl -X POST "https://betaspot-api.bitexch.dev/spot/v1/orders" -H "Content-Type: application/json" -H "X-Bit-Access-Key: ak-ba3bd026-29e6-443b-8eb6-d2ea3b607113" -d '{"pair": "BTC-USDT", "price": "60000", "qty": "3", "side": "buy", "time_in_force": "gtc", "mmp":false, "self_trading_mode": 0, "timestamp": 1589523989378, "signature": "68b658eb68f4ce529623bb4505f5c1c6408b37064a9a5f2102d08088e59d917c"}'
返回数据
{
"code": 0,
"message": "",
"data": {
"order_id": "17552314",
"created_at": 1589523803017,
"updated_at": 1589523803017,
"user_id": "51140",
"pair": "BTC-USDT",
"order_type": "limit",
"side": "buy",
"price": "60000",
"qty": "3.00000000",
"quote_qty": "0.00000000",
"time_in_force": "gtc",
"avg_price": "0.00000000",
"filled_qty": "0.00000000",
"status": "open",
"taker_fee_rate": "0.00050000",
"maker_fee_rate": "0.00020000",
"cancel_reason": "",
"label":"hedge",
"source": "api",
"post_only": false,
"reject_post_only": false,
"mmp": false,
"is_liquidation": false,
"is_um": true,
"fee": "0.000000000000",
"fee_ccy": "BTC",
"fee_deduction_enabled": true,
"fee_in_deduction_ccy": "3.000000000000",
"fee_deduction_ccy": "TONCOIN",
"fee_deduction_rate": "0.101100000000"
}
}
价格规则:
* 市价下单:"price"
价格字段需为空,不可填写
* 限价下单: "price"
价格字段必须写入有效价格
数量规则:
* 限价单和市价单的卖单应在"qty"
字段填下单数量,单位为基准货币(如币对BTC-USDT基准货币为BTC)
* 市价单的买单应在"quote_qty"
字段填下单数量,单位为计价货币(如币对BTC-USDT计价货币为USDT),它是目标交易数量。
* 市价单的买单:"quote_qty"
字段不可为空,"qty"
字段必须为空。以BTC-USDT币对为例,USDT为计价货币,quote_qty 应为USDT的数量。
* 限价单或市价单的卖单:"qty"
字段不可为空,"quote_qty"
字段必须为空。
* 在订单查询时,quote_qty字段仅对市价单买单有值。
* 市价单的买单,订单查询返回filled_qty
成交数量字段,单位为基准货币(没有filled_quote_qty
字段),交易量=avg_price
平均价格*filled_qty
成交数量,由于订单类型为ioc,所以成交金额可能会比请求的quote_qty
报价数量要少。市价单的生效时间字段应为'ioc'类型。
费用币种:
费用币种与购入币种相同
假设买入BTC-USDT币对, 费用币种为BTC
假设卖出BTC-USDT币对,费用币种为USDT
布尔类型字段的使用:
布尔类型字段的字符串中不要加引号
正确示例: {"post_only": true
}
错误示例: {"post_only": "true"
}
fee_in_deduction_ccy
= fee in USDT / TON-USDT * ( 1 - fee_deduction_rate
)
如果手续费不是 USDT,先转换成 USDT。
下单数量或计价下单数量不是数量整数倍:
下单数量或者计价下单数量往下靠近数量整数倍
统保模式的市价单(用户输入order_type = market
)会被转换为 banded-market
订单.
banded-market
订单的行为与 Limit IOC 订单相同
banded-market 订单买单价格 = max-buy.
banded-market 订单卖单价格 = min-sell.
max-buy/min-sell 公式:
max buy = roundup{max[currency index*(1+trading band),min_price],price_step}
min sell = rounddown{max[currency index*(1-trading band),min_price],price_step}
统保模式现货buy-market数量
统保模式现货buy-market单的数量, 用户仍然是输入quote_qty
, 但是因为转化成banded-market
单 (实际是Limit IOC),所以内部的数量还是使用
base ccy qty = qoute_qty / max_buy, 如果这个数量小于min_qty, 订单会被拒绝.
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
pair | string | true | "" | 币对名称 |
qty | string | true | "" | 订单数量(限价单和市价单卖单必填) |
quote_qty | string | true | "" | 计价币种订单数量(市价单买单必填) |
side | string | true | "" | 订单方向 |
price | string | false | "0.0" | 订单价格(限价单必填,市价单不填) |
order_type | string | false | "limit" | 订单类型 |
time_in_force | string | false | "gtc" | 生效时间 |
label | string | false | "" | 用户方唯一订单Label,由用户方维护 |
post_only | bool | false | false | 是否post only单 如果 reject_post_only = true, post only单进不了orderbook就会被撤销. 如果 reject_post_only = false, post only单进不了orderbook就会被修改价格。 |
reject_post_only | bool | false | false | 作为maker挂单时不支持改价。当"post_only"为'是'时,该字段有效。 |
mmp | bool | false | false | 是否为mmp单。 |
self_trading_mode | int | false | 0 | 自成交模式 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
order_id | string | 订单ID |
created_at | integer | 创建时间戳 |
updated_at | integer | 更新时间戳 |
user_id | string | 用户ID |
pair | string | 币对名称 |
order_type | string | 订单类型 |
side | string | 订单方向 |
price | string | 订单价格 |
qty | string | 订单数量 |
quote_qty | string | 计价币种订单数量(仅对经典模式市价单买单有效) |
time_in_force | string | 生效时间 |
avg_price | string | 平均成交价 |
filled_qty | string | 成交数量 |
status | string | 订单状态 |
taker_fee_rate | string | Taker手续费率 |
maker_fee_rate | string | Maker手续费率 |
cancel_reason | string | Order cancel reason |
label | string | 用户方唯一订单ID,由用户方维护 |
post_only | bool | 是否为post only单。post_only单则支持仅作为maker挂单,不立即成交。限价单且生效时间类型为'gtc'时该字段有效。 |
reject_post_only | bool | 仅post_only单时该设置生效。若是reject单,作为maker挂单时不支持改价,反之支持改价。 |
source | string | 订单来源 |
mmp | bool | 是否为mmp单 |
is_liquidation | bool | 是否强平单 |
is_um | bool | 是否Um模式订单 |
fee | string | 手续费 |
fee_ccy | string | 手续费单位 |
fee_deduction_enabled | bool | 是否启用手续费抵扣 |
fee_in_deduction_ccy | string | 手续费,以抵扣币种计 |
fee_deduction_ccy | string | 手续费抵扣币种 |
fee_deduction_rate | string | 手续费抵扣减免比例 |
批量下单
POST /spot/v1/batchorders
curl -X POST "https://betaapi.bitexch.dev/spot/v1/batchorders" -H "Content-Type: application/json" -H "X-Bit-Access-Key: ak-96cc0cbd-c501-448f-a32d-21228bc9648f" -d '{"orders_data": [{"pair": "BTC-USDT", "price": "50000", "qty": "0.1", "side": "buy"}, {"pair": "ETH-USDT", "price": "4000", "qty": "2", "side": "sell"}], "timestamp": 1596782252388, "signature": "0b8b64d2f35f9742a17af4ee0b993d0248a27a98f320abbfe8e7316f184e30d5"}'
返回数据
{
"code": 0,
"message": "",
"data": {
"orders": [
{
"order_id": "175523432",
"created_at": 1589523803017,
"updated_at": 1589523803017,
"user_id": "51140",
"pair": "BTC-USDT",
"order_type": "limit",
"side": "buy",
"price": "50000.10000000",
"qty": "0.10000000",
"quote_qty": "0.00000000",
"time_in_force": "gtc",
"avg_price": "0.00000000",
"filled_qty": "0.00000000",
"status": "open",
"taker_fee_rate": "0.00050000",
"maker_fee_rate": "0.00020000",
"cancel_reason": "",
"label":"hedge",
"source": "api",
"post_only": false,
"reject_post_only": false,
"mmp": false,
"is_liquidation": false,
"is_um": true,
"fee": "0.000000000000",
"fee_ccy": "BTC",
"fee_deduction_enabled": true,
"fee_in_deduction_ccy": "3.000000000000",
"fee_deduction_ccy": "TONCOIN",
"fee_deduction_rate": "0.101100000000",
"error_code": 0,
"error_msg": ""
},
{
"order_id": "175523436",
"created_at": 1589523803038,
"updated_at": 1589523803038,
"user_id": "51140",
"pair": "ETH-USDT",
"order_type": "limit",
"side": "buy",
"price": "4000.00000000",
"qty": "0.10000000",
"quote_qty": "0.00000000",
"time_in_force": "gtc",
"avg_price": "0.00000000",
"filled_qty": "0.00000000",
"status": "open",
"taker_fee_rate": "0.00050000",
"maker_fee_rate": "0.00020000",
"cancel_reason": "",
"label":"",
"source": "api",
"post_only": false,
"reject_post_only": false,
"mmp": false,
"is_liquidation": false,
"is_um": true,
"fee": "0.000000000000",
"fee_ccy": "BTC",
"fee_deduction_enabled": true,
"fee_in_deduction_ccy": "3.000000000000",
"fee_deduction_ccy": "TONCOIN",
"fee_deduction_rate": "0.101100000000",
"error_code": 0,
"error_msg": ""
}
]
}
}
批量下单。
提供订单数组,订单信息同下单接口POST /spot/v1/orders。
批量下单最大下单数为10。
用户输入orders_data
数组
如果 resp['code'] != 0, 代表orders_data里面的全部请求都失败
如果 resp['code'] == 0, 用户得到返回数组 resp['data']['orders']
- size(
resp['data']['orders']
) == size(orders_data
) resp['data']['orders']
[i] 与 orders_data[i] 是一一对应的- 要得到orders_data[i]的处理结果, 检查
resp['data']['orders']
[i].error_code (0 代表成功,否则就是失败)
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
orders_data | array | true | Order request list(see below) |
- 订单请求
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
pair | string | true | "" | 币对名称 |
qty | string | true | "" | 订单数量(限价单和市价单卖单必填) |
quote_qty | string | true | "" | 计价币种订单数量(市价单买单必填) |
side | string | true | "" | 订单方向 |
price | string | false | "0.0" | 订单价格(限价单必填,市价单不填) |
order_type | string | false | "limit" | 订单类型 |
time_in_force | string | false | "gtc" | 生效时间 |
label | string | false | "" | 用户方唯一订单ID,由用户方维护 |
post_only | bool | false | false | 是否为post only单。post_only单则支持仅作为maker挂单,不立即成交。限价单且生效时间类型为'gtc'时该字段有效。 |
reject_post_only | bool | false | false | 仅post_only单时该设置生效。若是reject单,作为maker挂单时不支持改价,反之支持改价。 |
mmp | bool | false | false | 是否为mmp单。 |
self_trading_mode | int | false | 0 | 自成交模式 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
order_id | string | 订单ID |
created_at | integer | 创建时间戳 |
updated_at | integer | 更新时间戳 |
user_id | string | 用户ID |
pair | string | 币对名称 |
order_type | string | 订单类型 |
side | string | 订单方向 |
price | string | 订单价格 |
qty | string | 订单数量 |
quote_qty | string | 计价币种订单数量(仅对经典模式市价单买单有效) |
time_in_force | string | 生效时间 |
avg_price | string | 平均成交价 |
filled_qty | string | 成交数量 |
status | string | 订单状态 |
taker_fee_rate | string | Taker手续费率 |
maker_fee_rate | string | Maker手续费率 |
cancel_reason | string | Order cancel reason |
label | string | 用户方唯一订单ID,由用户方维护 |
post_only | bool | 是否为post only单。post_only单则支持仅作为maker挂单,不立即成交。限价单且生效时间类型为'gtc'时该字段有效。 |
reject_post_only | bool | 仅post_only单时该设置生效。若是reject单,作为maker挂单时不支持改价,反之支持改价。 |
source | string | 订单来源 |
mmp | bool | 是否为mmp单 |
is_liquidation | bool | 是否强平单 |
is_um | bool | 是否Um模式订单 |
fee | string | 手续费 |
fee_ccy | string | 手续费单位 |
fee_deduction_enabled | bool | 是否启用手续费抵扣 |
fee_in_deduction_ccy | string | 手续费,以抵扣币种计 |
fee_deduction_ccy | string | 手续费抵扣币种 |
fee_deduction_rate | string | 手续费抵扣减免比例 |
撤销订单
POST /spot/v1/cancel_orders
curl -X POST "https://betaspot-api.bitexch.dev/spot/v1/cancel_orders" -H "Content-Type: application/json" -H "X-Bit-Access-Key: ak-ba3bd026-29e6-443b-8eb6-d2ea3b607113" -d '{"order_id": "44092860", "timestamp": 1590572422557, "signature": "3c8c2271a58e3d11dfbd262a6be40ebdd07e8f394a002db0065068b36bc66d5a"}'
返回数据
{
"code": 0,
"message": "",
"data":{
"num_cancelled": 1,
"order_ids": [44092860]
}
}
取消订单参数规则:
* 只输入order_id:支持输入一个订单号,只支持撤销指定订单
* 只输入pair:支持输入币对名称,可撤销该币对所有挂单
* 只输入label:支持输入label,可同时撤销label对应的所有订单
* 3个参数均为空:撤销该用户所有挂单
* 只能输入0或者1个参数, 同时输入多个参数会返回错误
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
order_id | string | false | "" | 订单ID |
pair | string | false | "" | 币对名称 |
label | string | false | "" | 用户方唯一订单ID,由用户方维护 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
num_cancelled | integer | 成功撤销订单数 |
order_ids | array | 撤单成功的订单ID |
修改订单
POST /spot/v1/amend_orders
curl -X POST "https://betaspot-api.bitexch.dev/spot/v1/amend_orders" -H "Content-Type: application/json" -H "X-Bit-Access-Key: ak-ba3bd026-29e6-443b-8eb6-d2ea3b607113" -d '{"order_id": "1206764", "price": "60010", "timestamp": 1590760362688, "signature": "a74dda0f2bdaf1e1587a5e7577a281497cb66607166bd3b7e0cc4c805c750bf1"}'
返回数据
{
"code": 0,
"message": "",
"data": {
"order_id": "1206764",
"created_at": 1589523803017,
"updated_at": 1589523803017,
"user_id": "51140",
"pair": "BTC-USDT",
"order_type": "limit",
"side": "buy",
"price": "60010",
"qty": "3.00000000",
"quote_qty": "0.00000000",
"time_in_force": "gtc",
"avg_price": "0.00000000",
"filled_qty": "0.00000000",
"status": "open",
"taker_fee_rate": "0.00050000",
"maker_fee_rate": "0.00020000",
"cancel_reason": "",
"label":"hedge",
"source": "api",
"post_only": false,
"reject_post_only": false,
"mmp": false,
"is_liquidation": false,
"is_um": false,
"fee": "0.000000000000",
"fee_ccy": "BTC",
"fee_deduction_enabled": true,
"fee_in_deduction_ccy": "3.000000000000",
"fee_deduction_ccy": "TONCOIN",
"fee_deduction_rate": "0.101100000000"
}
}
支持修改订单的价格、数量、MMP。
订单ID为必填参数。
以下参数必须至少提供一个: 价格,数量,MMP。
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
order_id | string | true | "" | 订单 |
price | string | false | "" | 新的订单价格 |
qty | string | false | "" | 新的订单数量 |
mmp | boolean | false | "" | 订单是否在MMP机制下处理 |
self_trading_mode | int | false | 0 | 自成交模式 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
order_id | string | 订单ID |
created_at | integer | 创建时间戳 |
updated_at | integer | 更新时间戳 |
user_id | string | 用户ID |
pair | string | 币对名称 |
order_type | string | 订单类型 |
side | string | 订单方向 |
price | string | 订单价格 |
qty | string | 订单数量 |
quote_qty | string | 计价币种订单数量(仅对经典模式市价单买单有效) |
time_in_force | string | 生效时间 |
avg_price | string | 平均成交价 |
filled_qty | string | 成交数量 |
status | string | 订单状态 |
taker_fee_rate | string | Taker手续费率 |
maker_fee_rate | string | Maker手续费率 |
cancel_reason | string | Order cancel reason |
label | string | 用户方唯一订单ID,由用户方维护 |
post_only | bool | 是否为post only单。post_only单则支持仅作为maker挂单,不立即成交。限价单且生效时间类型为'gtc'时该字段有效。 |
reject_post_only | bool | 仅post_only单时该设置生效。若是reject单,作为maker挂单时不支持改价,反之支持改价。 |
source | string | 订单来源 |
mmp | bool | 是否为mmp单 |
is_liquidation | bool | 是否强平单 |
is_um | bool | 是否Um模式订单 |
fee | string | 手续费 |
fee_ccy | string | 手续费单位 |
fee_deduction_enabled | bool | 是否启用手续费抵扣 |
fee_in_deduction_ccy | string | 手续费,以抵扣币种计 |
fee_deduction_ccy | string | 手续费抵扣币种 |
fee_deduction_rate | string | 手续费抵扣减免比例 |
批量修改订单
POST /spot/v1/amend_batchorders
curl -X POST "https://betaapi.bitexch.dev/spot/v1/amend_batchorders" -H "Content-Type: application/json" -H "X-Bit-Access-Key: ak-96cc0cbd-c501-448f-a32d-21228bc9648f" -d '{"orders_data": [{"order_id": "572083", "price": "14000", "qty": "1.1"}, {"order_id": "invalid-order-id", "price": "15000", "qty": "0.2"}], "timestamp": 1597313835731, "signature": "c8b5fddd5f2cfa1517854dc54c51e7c3b79af91f0927ea1389ba43dbeee45652"}'
返回数据
{
"code": 0,
"message": "",
"data": {
"orders": [
{
"order_id": "572083",
"created_at": 1589523803017,
"updated_at": 1589523803017,
"user_id": "51140",
"pair": "BTC-USDT",
"order_type": "limit",
"side": "buy",
"price": "14000.00000000",
"qty": "1.10000000",
"quote_qty": "0.00000000",
"time_in_force": "gtc",
"avg_price": "0.00000000",
"filled_qty": "0.00000000",
"status": "open",
"taker_fee_rate": "0.00050000",
"maker_fee_rate": "0.00020000",
"cancel_reason": "",
"label":"hedge",
"source": "api",
"post_only": false,
"reject_post_only": false,
"mmp": false,
"is_liquidation": false,
"is_um": false,
"fee": "0.000000000000",
"fee_ccy": "BTC",
"fee_deduction_enabled": true,
"fee_in_deduction_ccy": "3.000000000000",
"fee_deduction_ccy": "TONCOIN",
"fee_deduction_rate": "0.101100000000",
"error_code": 0,
"error_msg": ""
},
{
"order_id": "",
"created_at": 0,
"updated_at": 0,
"user_id": "",
"pair": "",
"order_type": "",
"side": "",
"price": "",
"qty": "",
"quote_qty": "",
"time_in_force": "",
"avg_price": "",
"filled_qty": "",
"status": "",
"taker_fee_rate": "",
"maker_fee_rate": "",
"cancel_reason": "",
"label":"",
"source": "",
"post_only": false,
"reject_post_only": false,
"mmp": false,
"is_liquidation": false,
"is_um": false,
"fee": "0.000000000000",
"fee_ccy": "BTC",
"fee_deduction_enabled": true,
"fee_in_deduction_ccy": "3.000000000000",
"fee_deduction_ccy": "TONCOIN",
"fee_deduction_rate": "0.101100000000",
"error_code": 18100113,
"error_msg": "order id is invalid : invalid-order-id"
}
]
}
}
批量修改订单。
对每一个请求:
订单ID为必填参数。
以下参数必须至少提供一个: price,qty.mmp, 同时需要指定 self_trading_mode
(默认0)
批量改单最大订单数为10。
用户输入orders_data
数组
如果 resp['code'] != 0, 代表orders_data里面的全部请求都失败
如果 resp['code'] == 0, 用户得到返回数组 resp['data']['orders']
- size(
resp['data']['orders']
) == size(orders_data
) resp['data']['orders']
[i] 与 orders_data[i] 是一一对应的- 要得到orders_data[i]的处理结果, 检查
resp['data']['orders']
[i].error_code (0 代表成功,否则就是失败)
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
orders_data | array | true | Amend request list(see below) |
- 订单修改请求
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
order_id | string | true | "" | 订单 |
price | string | false | "" | 新的订单价格 |
qty | string | false | "" | 新的订单数量 |
mmp | boolean | false | "" | 订单是否在MMP机制下处理 |
self_trading_mode | int | false | 0 | 自成交模式 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
order_id | string | 订单ID |
created_at | integer | 创建时间戳 |
updated_at | integer | 更新时间戳 |
user_id | string | 用户ID |
pair | string | 币对名称 |
order_type | string | 订单类型 |
side | string | 订单方向 |
price | string | 订单价格 |
qty | string | 订单数量 |
quote_qty | string | 计价币种订单数量(仅对经典模式市价单买单有效) |
time_in_force | string | 生效时间 |
avg_price | string | 平均成交价 |
filled_qty | string | 成交数量 |
status | string | 订单状态 |
taker_fee_rate | string | Taker手续费率 |
maker_fee_rate | string | Maker手续费率 |
cancel_reason | string | Order cancel reason |
label | string | 用户方唯一订单ID,由用户方维护 |
post_only | bool | 是否为post only单。post_only单则支持仅作为maker挂单,不立即成交。限价单且生效时间类型为'gtc'时该字段有效。 |
reject_post_only | bool | 仅post_only单时该设置生效。若是reject单,作为maker挂单时不支持改价,反之支持改价。 |
source | string | 订单来源 |
mmp | bool | 是否为mmp单 |
is_liquidation | bool | 是否强平单 |
is_um | bool | 是否Um模式订单 |
fee | string | 手续费 |
fee_ccy | string | 手续费单位 |
fee_deduction_enabled | bool | 是否启用手续费抵扣 |
fee_in_deduction_ccy | string | 手续费,以抵扣币种计 |
fee_deduction_ccy | string | 手续费抵扣币种 |
fee_deduction_rate | string | 手续费抵扣减免比例 |
error_code | int | 订单请求错误码: 0为成功,否则为失败 |
error_msg | string | 订单请求错误信息 |
查询未结订单
GET /spot/v1/open_orders
curl -H "X-Bit-Access-Key: ak-ba3bd026-29e6-443b-8eb6-d2ea3b607113" "https://betaspot-api.bitexch.dev/spot/v1/open_orders?pair=BTC-USDT&i×tamp=1589523178651&signature=2092cebba4f082f9c8718344cdad9bed83950b5fe90b3a875b708898bfd89b20"
返回数据
{
"code": 0,
"message": "",
"data": [{
"order_id": "7718222",
"created_at": 1589202185000,
"updated_at": 1589460149000,
"user_id": "51140",
"pair": "BTC-USDT",
"order_type": "limit",
"side": "buy",
"price": "60000",
"qty": "3.00000000",
"quote_qty": "0.00000000",
"time_in_force": "gtc",
"avg_price": "0.00000000",
"filled_qty": "0.00000000",
"status": "open",
"taker_fee_rate": "0.00050000",
"maker_fee_rate": "0.00020000",
"cancel_reason": "",
"label":"hedge",
"source": "api",
"post_only": false,
"reject_post_only": false,
"mmp": false,
"is_liquidation": false,
"is_um": true,
"fee": "0.000000000000",
"fee_ccy": "BTC",
"fee_deduction_enabled": true,
"fee_in_deduction_ccy": "3.000000000000",
"fee_deduction_ccy": "TONCOIN",
"fee_deduction_rate": "0.101100000000"
}]
}
获取未结订单。
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
pair | string | false | "" | 币对名称 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
order_id | string | 订单ID |
created_at | integer | 创建时间戳 |
updated_at | integer | 更新时间戳 |
user_id | string | 用户ID |
pair | string | 币对名称 |
order_type | string | 订单类型 |
side | string | 订单方向 |
price | string | 订单价格 |
qty | string | 订单数量 |
quote_qty | string | 计价币种订单数量(仅对经典模式市价单买单有效) |
time_in_force | string | 生效时间 |
avg_price | string | 平均成交价 |
filled_qty | string | 成交数量 |
status | string | 订单状态 |
taker_fee_rate | string | Taker 手续费率 |
maker_fee_rate | string | Maker 手续费率 |
cancel_reason | string | Order cancel reason |
label | string | 用户方唯一订单ID,由用户方维护 |
post_only | bool | 是否为post only单。post_only单则支持仅作为maker挂单,不立即成交。限价单且生效时间类型为'gtc'时该字段有效。 |
reject_post_only | bool | 仅post_only单时该设置生效。若是reject单,作为maker挂单时不支持改价,反之支持改价。 |
source | string | 订单来源 |
mmp | bool | 是否为mmp单 |
is_liquidation | bool | 是否强平单 |
is_um | bool | 是否Um模式订单 |
fee | string | 手续费 |
fee_ccy | string | 手续费单位 |
fee_deduction_enabled | bool | 是否启用手续费抵扣 |
fee_in_deduction_ccy | string | 手续费,以抵扣币种计 |
fee_deduction_ccy | string | 手续费抵扣币种 |
fee_deduction_rate | string | 手续费抵扣减免比例 |
查询订单记录
GET /spot/v1/orders
curl -H "X-Bit-Access-Key: ak-ba3bd026-29e6-443b-8eb6-d2ea3b607113" "https://betaspot-api.bitexch.dev/spot/v1/orders?pair=BTC-USDT&order_id=7718222&start_time=1585270800000&end_time=1589522084000&i×tamp=1589523178651&signature=2092cebba4f082f9c8718344cdad9bed83950b5fe90b3a875b708898bfd89b20"
返回数据
{
"code": 0,
"message": "",
"data": [{
"order_id": "7718222",
"created_at": 1589202185000,
"updated_at": 1589460149000,
"user_id": "51140",
"pair": "BTC-USDT",
"order_type": "limit",
"side": "buy",
"price": "60000",
"qty": "3.00000000",
"quote_qty": "0.00000000",
"time_in_force": "gtc",
"avg_price": "0.00000000",
"filled_qty": "0.00000000",
"status": "cancelled",
"taker_fee_rate": "0.00050000",
"maker_fee_rate": "0.00020000",
"cancel_reason": "",
"label":"hedge",
"source": "api",
"post_only": false,
"reject_post_only": false,
"mmp": false,
"is_liquidation": false,
"is_um": true,
"fee": "0.000000000000",
"fee_ccy": "BTC",
"fee_deduction_enabled": true,
"fee_in_deduction_ccy": "3.000000000000",
"fee_deduction_ccy": "TONCOIN",
"fee_deduction_rate": "0.101100000000"
}],
"page_info": {
"has_more": false
}
}
查询用户订单记录。
查询参数优先级:订单ID>订单起始ID>查询起始时间
输入订单ID时,则忽略其他参数;同时输入订单起始ID和起始时间时,则忽略查询时间。
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
pair | string | false | "" | 币对名称 |
order_id | string | false | "" | 订单ID |
label | string | false | "" | 订单label |
start_time | integer | false | one month ago | 查询时间段起始时间戳 |
end_time | integer | false | now | 查询时间段结束时间戳 |
start_id | integer | false | 起始订单ID | |
end_id | integer | false | 结束订单ID | |
offset | int | false | 1 | 分页偏移(第一页为1) |
limit | int | false | 100 | 分页大小 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
order_id | string | 订单ID |
created_at | integer | 创建时间戳 |
updated_at | integer | 更新时间戳 |
user_id | string | 用户ID |
pair | string | 币对名称 |
order_type | string | 订单类型 |
side | string | 订单方向 |
price | string | 订单价格 |
qty | string | 订单数量 |
qquote_qty | string | 计价币种订单数量(仅对经典模式市价单买单有效) |
time_in_force | string | 生效时间 |
avg_price | string | 平均成交价 |
filled_qty | string | 成交数量 |
status | string | 订单状态 |
taker_fee_rate | string | Taker 手续费率 |
maker_fee_rate | string | Maker 手续费率 |
cancel_reason | string | Order cancel reason |
label | string | 用户方唯一订单ID,由用户方维护 |
post_only | bool | 是否为post only单。post_only单则支持仅作为maker挂单,不立即成交。限价单且生效时间类型为'gtc'时该字段有效。 |
reject_post_only | bool | 仅post_only单时该设置生效。若是reject单,作为maker挂单时不支持改价,反之支持改价。 |
source | string | 订单来源 |
mmp | bool | 是否为mmp单 |
is_liquidation | bool | 是否强平单 |
is_um | bool | 是否Um模式订单 |
fee | string | 手续费 |
fee_ccy | string | 手续费单位 |
fee_deduction_enabled | bool | 是否启用手续费抵扣 |
fee_in_deduction_ccy | string | 手续费,以抵扣币种计 |
fee_deduction_ccy | string | 手续费抵扣币种 |
fee_deduction_rate | string | 手续费抵扣减免比例 |
查询用户交易记录
GET /spot/v1/user/trades
curl -H "X-Bit-Access-Key: ak-ba3bd026-29e6-443b-8eb6-d2ea3b607113" "https://betaspot-api.bitexch.dev/spot/v1/user/trades?pair=BTC-USDT&order_id=17551020&start_time=1585270800000&end_time=1589522084000&count=10×tamp=1589523590679&signature=c4788e3a77b6000424b55067f9ba38009b34d12e482b1c80186756857c869bb5"
返回数据
{
"code": 0,
"message": "",
"data": [{
"user_id": 51130,
"trade_id": "23210268",
"order_id": "17551020",
"pair": "BTC-USDT",
"qty": "2.00000000",
"price": "60000",
"fee_rate": "0.00050000",
"side": "buy",
"created_at": 1589521371000,
"order_type": "limit",
"is_taker": true,
"label": "",
"fee": "0.00100000",
"fee_ccy": "TONCOIN",
"is_fee_deducted": true,
"fee_deduction_ccy": "TONCOIN",
"fee_deduction_rate": "0.101100000000",
"fee_deduction_ccy_index": "1.372980000000"
}]
}
查询用户交易记录。
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
pair | string | false | "" | 币对名称 |
order_id | string | false | "" | 订单ID |
start_time | integer | false | one month ago | 起始时间戳 |
end_time | integer | false | now | 结束时间戳 |
start_id | integer | false | 起始Trade ID | |
end_id | integer | false | 结束Trade ID | |
count | int | false | 100 | 返回记录条数,最大1000 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
user_id | integer | 用户 ID |
order_id | string | 订单ID |
trade_id | string | 交易ID |
pair | string | 币对名称 |
created_at | integer | 创建时间戳 |
order_type | string | 订单类型 |
side | string | 订单方向 |
price | string | 成交价格 |
qty | string | 成交数量 |
fee_rate | string | 手续费率 |
is_taker | boolean | 是否taker |
label | string | 这笔交易记录的订单label |
fee | string | 手续费 |
fee_ccy | string | 手续费单位 |
is_fee_deducted | bool | 是否启用手续费抵扣 |
fee_deduction_ccy | string | 手续费抵扣币种 |
fee_deduction_rate | string | 手续费抵扣减免比例 |
fee_deduction_ccy_index | string | 手续费抵扣币种的指数价格 |
查询聚合用户交易记录
GET /spot/v1/aggregated/trades
curl -H "X-Bit-Access-Key: ak-ba3bd026-29e6-443b-8eb6-d2ea3b607113" "https://betaspot-api.bitexch.dev/spot/v1/aggregated/trades?pair=BTC-USDT&order_id=17551020&start_time=1585270800000&end_time=1589522084000&count=10×tamp=1589523590679&signature=c4788e3a77b6000424b55067f9ba38009b34d12e482b1c80186756857c869bb5"
返回数据
{
"code": 0,
"message": "",
"data": [{
"user_id": 51130,
"trade_id": "23210268",
"order_id": "17551020",
"pair": "BTC-USDT",
"qty": "2.00000000",
"price": "60000",
"fee_rate": "0.00050000",
"side": "buy",
"created_at": 1589521371000,
"order_type": "limit",
"is_taker": true,
"label": "",
"fee": "0.00100000",
"fee_ccy": "TONCOIN",
"is_fee_deducted": true,
"fee_deduction_ccy": "TONCOIN",
"fee_deduction_rate": "0.101100000000",
"fee_deduction_ccy_index": "1.372980000000"
}]
}
查询当前用户和所有子账户的交易记录。
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
pair | string | false | "" | 币对名称 |
start_time | integer | false | one month ago | 起始时间戳 |
end_time | integer | false | now | 结束时间戳 |
start_id | integer | false | 起始Trade ID | |
end_id | integer | false | 结束Trade ID | |
count | int | false | 100 | 返回记录条数,最大1000 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
user_id | integer | 用户 ID |
order_id | string | 订单ID |
trade_id | string | 交易ID |
pair | string | 币对名称 |
created_at | integer | 创建时间戳 |
order_type | string | 订单类型 |
side | string | 订单方向 |
price | string | 成交价格 |
qty | string | 成交数量 |
fee_rate | string | 手续费率 |
is_taker | boolean | 是否taker |
label | string | 这笔交易记录的订单label |
fee | string | 手续费 |
fee_ccy | string | 手续费单位 |
is_fee_deducted | bool | 是否启用手续费抵扣 |
fee_deduction_ccy | string | 手续费抵扣币种 |
fee_deduction_rate | string | 手续费抵扣减免比例 |
fee_deduction_ccy_index | string | 手续费抵扣币种的指数价格 |
钱包
Bit.com有三种类型的账户:现货账户,合约账户和余额账户。三种账户可使用API进行互相划转,余额账户和合约账户可通过API进行提现,余额账户只能通过页面提现。子账户不能通过API进行转账,只能通过WEB页面进行转账,子母账户之间的转账只能由母账户发起,子账户不可发起提现。
提现
POST /v1/wallet/spot-withdraw
curl -X POST "https://betaapi.bitexch.dev/v1/wallet/spot-withdraw" -H "Content-Type: application/json" -H "X-Bit-Access-Key: Your Access Key" -d '{"currency": "BTC", "address": "Your address", "amount": "1.2", "pwd": "Your password", "timestamp": 1589523989378, "signature": "signature"}'
返回数据
{
"code": 0,
"message": "",
"data": {
"withdraw_id": "b61c2b93-8a25-44d4-9715-023cce61dc50"
}
}
从现货账户向外提取资金。提现地址首先要在bit.com网站的提现页面 设置为白名单地址。资金密码pwd字段需要通过base64(sha256(pwd))进行编码。例如,假设密码是123456,编码后的密码为“jZae727K08KaOmKSgOaGzww/XVqGr/PKEgIMkjrcbJI=”
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
currency | string | true | "" | 币种, BTC |
address | string | true | "" | 提现的目标地址 |
amount | string | true | "" | 提现金额 |
pwd | string | true | "" | 资金密码 |
chain | string | false | "" | 链名 提现USDT时,要提到USDTERC应填ETH,要提到USDTTRE应填TRX |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
withdraw_id | string | 提现订单ID, 可用于后续的查询 |
查询提现记录
GET /v1/wallet/spot-withdrawals
curl -H "X-Bit-Access-Key: Your Access Key" "https://betaapi.bitexch.dev/v1/wallet/spot-withdrawals?currency=BTC&limit=10&offset=0×tamp=1589522687689&signature=signature"
返回数据
{
"code": 0,
"data": {
"items": [{
"address": "mfaFpdVCb6UFS5AXUhC8VGXgj9dnJ37nLP",
"amount": "0.001",
"code": 0,
"confirmations": 0,
"currency": "BTC",
"fee": "0.00001",
"state": "confirmed",
"transaction_id": "52e1537002f51acbf5f52b9dfeab6a9e7cc185a669cda2573e768420b0839523",
"created_at": 1608606000000,
"updated_at": 1608606000000,
"is_onchain": true
}, {
"address": "mfaFpdVCb6UFS5AXUhC8VGXgj9dnJ37nLP",
"amount": "0.11",
"code": 13100100,
"confirmations": 0,
"currency": "BTC",
"fee": "0.00001",
"state": "rejected",
"transaction_id": "",
"created_at": 1608606000000,
"updated_at": 1608606000000,
"is_onchain": false
}]
}
}
指定币种,查询现货账户的提现记录。
请求参数
字段名称 | 数据类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
currency | String | true | "" | 币种名称 |
limit | int | false | 10 | 分页大小,最大50 |
offset | int | false | 1 | 分页偏移 |
withdraw_id | string | false | "" | 提现订单ID |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
code | int | 错误码,0代表正常,其他值代表失败 |
state | string | 提现状态 |
address | string | 提现目标地址 |
amount | string | 提现金额 |
confirmations | int | 确认数,如果是内部地址,由于不会上链,一直为0 |
currency | string | 币种 |
fee | string | 提现手续费 |
transaction_id | string | 链上交易哈希 |
created_at | int | 订单创建时间戳 |
updated_at | int | 订单更新时间戳 |
is_onchain | bool | 订单是否上链(内部地址提现不上链) |
查询充值记录
GET /v1/wallet/spot-deposits
curl -H "X-Bit-Access-Key: Your Access Key" "https://betaapi.bitexch.dev/v1/wallet/spot-deposits?currency=BTC&limit=10&offset=0×tamp=1589522687689&signature=signature"
返回数据
{
"code": 0,
"data": {
"items": [{
"address": "mfaFpdVCb6UFS5AXUhC8VGXgj9dnJ37nLP",
"amount": "0.001",
"code": 0,
"confirmations": 0,
"currency": "BTC",
"state": "confirmed",
"transaction_id": "52e1537002f51acbf5f52b9dfeab6a9e7cc185a669cda2573e768420b0839523",
"created_at": 1608606000000,
"updated_at": 1608606000000,
"is_onchain": true
}]
}
}
指定币种,查询现货账户的充值记录。
请求参数
字段名 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
currency | String | true | "" | 币种名称 |
limit | int | false | 10 | 分页大小,最大50 |
offset | int | false | 1 | 分页偏移 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
code | int | 错误码,0代表正常,其他值代表失败 |
state | string | 充值状态 |
address | string | 充值来源地址 |
amount | string | 充值金额 |
confirmations | int | 确认数,如果是内部地址,由于不会上链,一直为0 |
currency | string | 币种 |
transaction_id | string | 链上交易哈希 |
created_at | int | 订单创建时间戳 |
updated_at | int | 订单更新时间戳 |
is_onchain | bool | 订单是否上链(内部地址充值不上链) |
转账
POST /v1/wallet/transfer
curl -X POST "https://betaapi.bitexch.dev/v1/wallet/transfer" -H "Content-Type: application/json" -H "X-Bit-Access-Key: Your Access Key" -d '{"currency": "BTC", "amount": "1.2", "type": 1, "timestamp": 1589523989378, "signature": "signature"}'
返回数据
{
"code": 0,
"message": ""
}
Bit.com有三种类型的账户:现货账户,合约账户和余额账户。三种账户可使用API进行互相划转。子母账户之间转账只可由母账户发起,子账户不能通过API进行转账,只能通过WEB页面进行转账。
请求参数
字段名 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
currency | string | true | 币种名称 | |
amount | string | true | 转账金额 | |
type | int | true | 转账类型 1.现货到合约,2.合约到现货,3.现货到余额, 4.余额到现货,5.余额到现货,6.余额到合约 |
转账记录查询
GET /v1/wallet/transfer
curl -H "X-Bit-Access-Key: Your Access Key" "https://betaapi.bitexch.dev/v1/wallet/transfer?currency=BTC&count=10&offset=0×tamp=1589522687689&signature=signature"
返回数据
{
"code": 0,
"data": {
"items": [{
"status": "done",
"currency": "BTC",
"amount": "1.2",
"type": 1,
"created_at": 1608606000000,
"id": "123"
}, {
"status": "done",
"currency": "ETH",
"amount": "1.2",
"type": 2,
"created_at": 1608606000000,
"id": "124"
}]
}
}
### 请求参数
字段名 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
currency | string | false | 币种名称 | |
limit | int | false | 10 | 分页大小,最大50 |
offset | int | false | 1 | 分页偏移 |
返回数据
字段名称 | 数据类型 | 说明 |
---|---|---|
status | string | 转账状态 失败/成功/处理中 |
type | int | 转账类型 |
currency | string | 币种名称 |
amount | string | 转账金额 |
created_at | int | 转账创建时间戳 |
order_id | string | 转账订单ID |
Websocket 数据订阅
数据订阅基于websocket协议。用户可以在建立websocket连接后发送请求订阅数据。
连接建立后如果30秒内没有订阅任何数据,系统将关闭该连接。
所有订阅数据按以下结构返回。
字段名称 | 类型 | 说明 |
---|---|---|
channel | string | 频道名称 |
timestamp | integer | 时间戳(服务器返回时间) |
data | object | 数据内容 |
module | string | [spot , um ] 订阅数据所属模块 |
订阅管理
Request
{
"type":"subscribe",
"pairs":[
"BTC-USDT",
],
"channels":[
"depth",
"ticker",
"kline.5",
"order",
"account"
],
"interval": "100ms",
"token":"be4ffcc9-2b2b-4c3e-9d47-68bf062cf651"
}
Response (success)
{
"channel":"subscription",
"timestamp":1587921122970,
"data":{
"code":0,
"subscription":[
"depth",
"ticker",
"kline.5"
]
}
}
Response (failure)
{
"channel":"subscription",
"timestamp":1587921122970,
"data":{
"code":13200302,
"message":"auth failed: invalid token"
}
}
websocket连接建立后,用户可以发送请求订阅频道以获取相应的数据推送。频道分为公共频道和私有频道,私有频道首次订阅前需要先获取认证token,填入订阅请求,鉴权通过后就能收到数据推送。
每个频道有不同的订阅参数,订阅时需根据频道订阅要求填写相应的参数,详情参考后面的频道说明。
用户可以通过设置参数interval
控制推送频率。当设置为raw时,频道有数据更新立刻就会推送。当设置为100ms时,则会把该频道100ms内的更新聚合后推送。当设置为fixed100ms时,按100ms固定时间间隔进行推送(仅部分频道支持)。
订阅后会收到订阅结果。当订阅请求包含多个频道,而其中部分订阅失败时,将返回两条消息:一条是订阅失败的原因,一条是成功订阅的频道列表。
当不再需要订阅某个频道数据时,用户可以发送取消订阅请求来实现。
查询参数
字段名称 | 类型 | 说明 |
---|---|---|
type | string | 订阅/取消订阅[subscribe , unsubscribe ] |
channels | string[] | 频道列表 |
pairs | string[] | 币种列表 |
interval | string | [raw , 100ms , fixed100ms ] 默认为raw |
token | string | 订阅私有频道的认证token |
关于interval
参数设置
- 所有频道都支持
interval
设置为raw
或100ms
- 仅部分频道支持
interval
设置为fixed100ms
,目前支持的频道包括:order_book
Response
字段名称 | 类型 | 说明 |
---|---|---|
code | integer | 0表示成功, 非0表示失败 |
message | string | 错误消息,订阅失败时返回 |
subscription | string[] | 订阅成功的频道列表 |
获取认证Token
GET /spot/v1/ws/auth
Request
curl -H "X-Bit-Access-Key: ak-ba3bd026-29e6-443b-8eb6-d2ea3b607113" "https://betaspot-api.bitexch.dev/spot/v1/ws/auth?timestamp=1588996062516&signature=9ed1dd821cc6464d2cfc5bf9614df1f22611c977b513e1ffde864a673b6915f0"
Response
{
"code":0,
"message":"",
"data":{
"token":"be4ffcc9-2b2b-4c3e-9d47-68bf062cf651"
}
}
订阅私有频道需要先通过本接口GET /spot/v1/ws/auth
(REST)获取认证token,然后将其填入websocket的订阅请求。
token只能使用一次,服务器验证后即丢弃,所以没有被盗用风险,重连需要重新申请token。
每个连接只需要鉴权一次,鉴权通过后新的订阅请求无需再填写token(后续private请求中的token会被丢弃,因此不同用户不能共享同一个private websocket连接)。
查询参数
None
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
token | string | 私有频道认证token |
心跳
协议标准
根据RFC 6455, websocket协议实现了PING/PONG消息,用以确认websocket连接保持活动状态。
服务器每分钟通过websocket连接向客户端发送PING消息,客户端收到后应答PONG。如果服务器在一分钟内没收到PONG,则认为连接不正常将连接关闭。
客户端也可向服务器发送PING消息,通过检测是否收到PONG,确认该连接数据收发正常。
PING或者PONG都是控制帧。PING消息的opcode为0x9,PONG消息的opcode为0xA。可参考Websocket协议说明。
自定义PING/PONG
由于部分客户端封装所限不支持按需发送控制帧,因此在协议标准外提供了一套自定义基于payload的PING/PONG。详细参考“Websocket RPC - PING”。
频道目录
频道名称 | 范围 | 订阅参数 | 说明 |
---|---|---|---|
depth | public | pairs | 市场深度数据的快照和增量变化 |
order_book.{group}.{depth} | public | pairs | 指定层数的订单簿快照 |
depth1 | public | pairs | 订单簿的第一层价格 |
ticker | public | pairs | 市场最新成交价格和最近24小时交易统计信息 |
kline.{resolution} | public | pairs | K线数据 |
trade | public | pairs | 指定币对的最新成交信息 |
market_trade | public | 市场上所有币对的最新成交信息 | |
index_price | public | pairs | 指定币对的指数价格 |
account | private | 用户的账户信息 | |
um_account | private | UM账户信息 | |
order | private | 用户的订单信息 | |
user_trade | private | 用户的交易信息 | |
mmp_frozen | private | MMP冻结事件 |
市场深度频道(depth)
Request
{
"type":"subscribe",
"pairs":[
"BTC-USDT"
],
"channels":[
"depth"
],
"interval": "100ms"
}
Response (snapshot)
{
"channel":"depth",
"timestamp":1587929552250,
"module":"spot",
"data":{
"type":"snapshot",
"pair":"BTC-USDT",
"sequence":9,
"bids":[
[
"0.08000000",
"0.10000000"
]
],
"asks":[
[
"0.09000000",
"0.20000000"
]
]
}
}
Response (update)
{
"channel":"depth",
"timestamp":1587930311331,
"module":"spot",
"data":{
"type":"update",
"pair":"BTC-USDT",
"sequence":10,
"prev_sequence":9,
"changes":[
[
"sell",
"0.08500000",
"0.10000000"
]
]
}
}
depth
频道推送市场深度的快照和增量变化,包括snapshot
和update
两种类型的消息。snapshot
类型表示当前订单簿的快照,update
类型表示深度变更信息。
订阅成功后将首先发送一个快照消息,再发送深度变更消息。当出现异常时会重新发送快照消息。
快照消息包括买价和卖价价格深度,每一层深度由价格和数量组成。
更新消息包含sequence
和prev_sequence
,sequence
表示本次更新序号,prev_sequence
表示前一次更新序号。如果前一次更新序号等于上一条消息的本次更新序号,则意味着没有消息丢失。
更新消息的变更列表,每一个变更都由方向、价格和数量组成。当数量为0时表示从订单簿中删除该层。
频道信息
频道名称 | 权限 | 订阅参数 | 推送频率 |
---|---|---|---|
depth | public | pairs | [raw , 100ms ] |
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
type | string | [snapshot , update ]两种类型:快照、深度变更 |
pair | string | 币种名称 |
sequence | integer | 订单簿更新序号 |
asks | array of [price, quantity] | 卖价, price(价格)和quantity(数量)都是string类型。仅快照类型消息返回 |
bids | array of [price, quantity] | 买价, price(价格)和quantity(数量)都是string类型。仅快照类型消息返回 |
prev_sequence | integer | 前1次消息的更新序号。仅更新类型消息返回 |
changes | array of [side, price, quantity] | 深度更新列表。side(方向)、price(价格)、quantity(数量)都是string类型。数量为0表示删除该层。仅更新类型消息返回 |
订单簿频道(order_book)
Request
{
"type":"subscribe",
"pairs":[
"BTC-USDT"
],
"channels":[
"order_book.1.10"
],
"interval": "100ms"
}
Response
{
"channel":"order_book.1.10",
"timestamp":1587930311331,
"module":"spot",
"data":{
"pair":"BTC-USDT",
"sequence":3,
"timestamp":1587930311330,
"asks":[
[
"37557.59000000",
"0.00052800"
]
],
"bids":[
[
"37553.49000000",
"1.22120100"
],
[
"37553.48000000",
"0.21730000"
]
]
}
}
order_book
频道根据指定的聚合倍数和深度层数,按价格聚合后,推送指定层数的订单簿快照。
订单簿包括买价和卖价深度,每一层深度由价格和数量组成。
频道信息
频道名称 | 权限 | 订阅参数 | 推送频率 |
---|---|---|---|
order_book.{group}.{depth} | public | pairs | [raw , 100ms , fixed100ms ] |
订阅order_book
频道需要在频道名称中指定聚合倍数group
和深度层数depth
。
group:表示按最小价格步长聚合的倍数。通过REST接口
/spot/v1/instruments
可获取币对支持的group取值。group aggregation price=group
*price_step
表示加倍后的价格步长,group取值1
即不聚合,group取值为10则按10倍步长聚合。例如:BTC/USDT币对,价格步长price_step为0.01,设置聚合倍数group为10,那么聚合后价格步长为0.1。depth取值:
1
,10
,20
,100
。depth表示返回订单簿的层数。如果不填写聚合倍数和深度层数,则默认返回不聚合、10层的订单簿,即默认group=1、depth=10。
订单薄聚合实例
假设价格步长 price_step = 0.01
原始深度:
bids: [[0.13, 3], [0.19, 7], [0.26, 5], [0.77, 12.3]]
订单频道信息为 orderbook.10.5, 聚合后价格步长aggregation price level = 0.01 * 10 = 0.1
聚合后深度:
bids: [[0.1, 10], [0.2, 5], [0.7, 12.3]]
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
pair | string | 币对名称 |
sequence | integer | 订单簿更新序号 |
timestamp | integer | 订单簿更新时间戳 |
asks | array of [price, quantity] | 卖价, price(价格)和quantity(数量)都是string类型 |
bids | array of [price, quantity] | 买价, price(价格)和quantity(数量)都是string类型 |
一层价格频道(depth1)
Request
{
"type":"subscribe",
"pairs":[
"BTC-USDT"
],
"channels":[
"depth1"
],
"interval": "100ms"
}
Response
{
"channel":"depth1",
"timestamp":1587932635873,
"module":"spot",
"data":{
"pair":"BTC-USDT",
"best_ask":"37557.59000000",
"best_ask_qty":"0.00052800",
"best_bid":"37553.49000000",
"best_bid_qty":"0.22120100",
}
}
depth1
频道推送1层的买价/卖价信息。
频道信息
频道名称 | 权限 | 订阅参数 | 推送频率 |
---|---|---|---|
depth1 | public | pairs | [raw , 100ms ] |
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
pair | string | 币对名称 |
best_ask | string | 最优卖价,如果为空则说明无卖单 |
best_ask_qty | string | 最优卖价数量 |
best_bid | string | 最优买价,如果为空则说明无买单 |
best_ask_qty | string | 最优买价数量 |
市场交易信息统计频道(ticker)
Request
{
"type":"subscribe",
"pairs":[
"BTC-USDT"
],
"channels":[
"ticker"
],
"interval": "100ms"
}
Response
{
"channel":"ticker",
"timestamp":1589126498813,
"module":"spot",
"data":{
"time":1589126498800,
"pair":"BTC-USDT",
"best_bid":"50200.50000000",
"best_ask":"50201.00000000",
"best_bid_qty":"2.30000000",
"best_ask_qty":"0.80000000",
"last_price":"50200.80000000",
"last_qty":"0.10000000",
"open24h":"50500.00000000",
"high24h":"50500.00000000",
"low24h":"50100.00000000",
"price_change24h":"-0.00592475",
"volume24h":"0.10000000",
"quote_volume24h":"5020.08000000"
}
}
ticker
频道推送市场最新成交价格和最近24小时交易统计信息。
频道信息
频道名称 | 权限 | 订阅参数 | 推送频率 |
---|---|---|---|
ticker | public | pairs | [raw , 100ms ] |
返回数据
Name | Type | Description |
---|---|---|
pair | string | 币对名称 |
last_price | string | 最新成交价 |
last_qty | string | 最新成交量 |
open24h | string | 24小时开盘价 |
high24h | string | 24小时最高价 |
low24h | string | 24小时最低价 |
volume24h | string | 24小时交易量 |
quote_volume24h | string | 报价币种 24小时交易量 |
price_change24h | string | 24小时价格变动量 |
best_bid | string | 最优买价 |
best_ask | string | 最优卖价 |
best_bid_qty | string | 最优买入数量 |
best_ask_qty | string | 最优卖出数量 |
time | integer | 时间戳 |
K线频道(kline)
Request
{
"type":"subscribe",
"pairs":[
"BTC-USDT"
],
"channels":[
"kline.5"
],
"interval": "100ms"
}
Response
{
"channel":"kline.5",
"timestamp":1587979850118,
"module":"spot",
"data":{
"pair":"BTC-USDT",
"tick":1587979800000,
"open":"37737.50000000",
"low":"37737.50000000",
"high":"37737.50000000",
"close":"37737.50000000",
"volume":"0.00000000"
}
}
kline
频道推送K线数据。如果在当前周期内没有发生过交易,则开盘价、收盘价、最高价、最低价会以前一个周期的收盘价填充。
频道信息
频道名称 | 权限 | 订阅参数 | 推送频率 |
---|---|---|---|
kline.{timeframe} | public | pairs | [raw , 100ms ] |
订阅K线频道需要在频道名称中指定K线时间周期timeframe
.
支持的K线周期:
时间周期 | 类型 |
---|---|
1 | 1 分钟 |
3 | 3 分钟 |
5 | 5 分钟 |
15 | 15 分钟 |
30 | 30 分钟 |
60 | 60 分钟 |
240 | 240 分钟 |
360 | 360 分钟 |
720 | 720 分钟 |
1d | 1天 |
1w | 1周(自然周) |
1m | 1月(自然月) |
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
pair | string | 币对名称 |
tick | integer | 统计周期开始时间 |
open | string | 开盘价 |
close | string | 收盘价 |
high | string | 最高价 |
low | string | 最低价 |
volume | string | 成交量 |
交易频道(trade)
Request
{
"type":"subscribe",
"pairs":[
"BTC-USDT"
],
"channels":[
"trade"
],
"interval": "100ms"
}
Response
{
"channel":"trade",
"timestamp":1588997059735,
"module":"spot",
"data":[
{
"trade_id":"2388418",
"pair":"BTC-USDT",
"price":"37557.01800000",
"qty":"0.10000000",
"side":"buy",
"created_at":1588997060000
}
]
}
trade
频道推送指定产品的最新成交信息。
频道信息
频道名称 | 权限 | 订阅参数 | 推送频率 |
---|---|---|---|
trade | public | pairs | [raw , 100ms ] |
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
pair | string | 币对名称 |
trade_id | string | 交易ID |
price | string | 成交价 |
qty | string | 成交数量 |
side | string | Taker交易方向 |
created_at | integer | 成交时间戳 |
市场交易频道(market_trade)
Request
{
"type":"subscribe",
"channels":[
"market_trade"
],
"interval": "100ms"
}
Response
{
"channel":"market_trade",
"timestamp":1588997059735,
"module":"spot",
"data":[
{
"trade_id":"2388418",
"pair":"BTC-USDT",
"price":"37557.01800000",
"qty":"0.10000000",
"side":"buy",
"created_at":1588997060000
}
]
}
market_trade
频道推送市场上所有产品的最新成交信息。
频道信息
频道名称 | 权限 | 订阅参数 | 推送频率 |
---|---|---|---|
market_trade | public | [raw , 100ms ] |
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
pair | string | 币对名称 |
trade_id | string | 交易ID |
price | string | 成交价格 |
qty | string | 成交数量 |
side | string | Taker交易方向 |
created_at | integer | 成交时间戳 |
指数价格频道(index_price)
Request
{
"type":"subscribe",
"pairs":[
"BTC-USDT"
],
"channels":[
"index_price"
],
"interval": "100ms"
}
Response
{
"channel":"index_price",
"timestamp":1644462011011,
"module":"spot",
"data":{
"index_name":"BTC-USDT",
"index_price":"43789.28666667"
}
}
index_price
频道推送指定币对的指数价格。
频道信息
频道名称 | 权限 | 订阅参数 | 推送频率 |
---|---|---|---|
index_price | public | pairs | [raw , 100ms ] |
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
index_name | string | 币对名称 |
index_price | string | 指数价格 |
账户信息频道(account)
Request
{
"type":"subscribe",
"channels":[
"account"
],
"interval": "100ms",
"token":"6d501ded-3c40-4697-b390-218a54b9de19"
}
Response
{
"channel":"account",
"timestamp":1589031930115,
"module":"spot",
"data":{
"user_id": "1001",
"balances": [
{
"currency": "BTC",
"available":"99.59591877",
"frozen":"0.00000000"
}
]
}
}
经典用户,订阅account
频道接收推送用户的账户信息。
频道信息
频道名称 | 权限 | 订阅参数 | 推送频率 |
---|---|---|---|
account | private | [raw , 100ms ] |
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
user_id | string | 用户ID |
balances | array of Balance |
余额列表 |
Balance
结构
名称 | 类型 | 说明 |
---|---|---|
currency | string | 币种 |
available | string | 可用余额 |
frozen | string | 冻结余额 |
统一UM账户信息频道(um_account)
Request
{
"type":"subscribe",
"channels":[
"um_account"
],
"interval": "100ms",
"token":"6d501ded-3c40-4697-b390-218a54b9de19"
}
Response
{
"channel":"um_account",
"timestamp":1632439007081,
"module":"um",
"data": {
"user_id": 1,
"created_at": 1632642549581,
"usdt_total_collateral": "200.00000000",
"usdt_total_margin_balance": "190.00000000",
"usdt_total_available": "80.00000000",
"usdt_total_initial_margin": "90.00000000",
"usdt_total_maintenance_margin": "120.00000000",
"usdt_total_initial_margin_ratio": "0.60000000",
"usdt_total_maintenance_margin_ratio": "0.60000000",
"usdt_total_liability": "8060000.00000000",
"usdt_total_unsettled_amount": "322143.95604395",
"spot_orders_hc_loss": "30.00000000",
"details": [
{
"currency": "BTC",
"equity": "100.00000000",
"liability": "0.00000000",
"usdt_index_price": "40000.00000000",
"cash_balance": "100.00000000",
"margin_balance": "100.00000000",
"available_balance": "50.00000000",
"initial_margin": "20.00000000",
"spot_margin": "30.00000000",
"maintenance_margin": "80.00000000",
"potential_liability": "0.00000000",
"interest": "1.00000000",
"interest_rate": "0.01000000",
"pnl": "0.11538462",
"total_delta": "0.38461538",
"session_rpl": "10.00000000",
"session_upl": "0.11538462",
"option_value": "0.00000000",
"option_pnl": "0.00000000",
"option_session_rpl": "0.00000000",
"option_session_upl": "0.00000000",
"option_delta": "0.00000000",
"option_gamma": "0.00000000",
"option_vega": "0.00000000",
"option_theta": "0.00000000",
"future_pnl": "0.11538462",
"future_session_rpl": "10.00000000",
"future_session_upl": "0.11538462",
"future_session_funding": "10.00000000",
"future_delta": "0.38461538",
"future_available_balance": "0.00200000",
"option_available_balance": "0.00200000",
"unsettled_amount": "9.11538462"
},
{
"currency": "USDT",
"equity": "-8000000.00000000",
"liability": "8000000.00000000",
"usdt_index_price": "1.00000000",
"cash_balance": "-8000000.00000000",
"margin_balance": "-8000000.00000000",
"available_balance": "0.00000000",
"initial_margin": "0.00000000",
"spot_margin": "0.00000000",
"maintenance_margin": "0.00000000",
"potential_liability": "8000000.00000000",
"interest": "300.00000000",
"interest_rate": "0.00500000",
"pnl": "0.00000000",
"total_delta": "0.00000000",
"session_rpl": "0.00000000",
"session_upl": "0.00000000",
"option_value": "0.00000000",
"option_pnl": "0.00000000",
"option_session_rpl": "0.00000000",
"option_session_upl": "0.00000000",
"option_delta": "0.00000000",
"option_gamma": "0.00000000",
"option_vega": "0.00000000",
"option_theta": "0.00000000",
"future_pnl": "0.00000000",
"future_session_rpl": "0.00000000",
"future_session_upl": "0.00000000",
"future_session_funding": "0.00000000",
"future_delta": "0.00000000",
"future_available_balance": "0.00000000",
"option_available_balance": "0.00000000",
"unsettled_amount": "-300.00000000"
}
]
}
}
统一UM用户,订阅um_account
频道推送统一保证金用户的账户信息。
频道信息
频道名称 | 权限 | 订阅参数 | 推送频率 |
---|---|---|---|
um_account | private | [raw , 100ms ] |
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
user_id | int | 用户ID |
created_at | int | 时间戳(查询时刻) |
usdt_total_collateral | string | 账户维度USDT总担保品金额 |
usdt_total_margin_balance | string | 账户维度USDT总保证金余额 |
usdt_total_available | string | 账户维度USDT总可用余额 |
usdt_total_initial_margin | string | 账户维度USDT总初始保证金 |
usdt_total_maintenance_margin | string | 账户维度USDT总维持保证金 |
usdt_total_initial_margin_ratio | string | 账户维度USDT总初始保证金率,可能会返回"infinity" |
usdt_total_maintenance_margin_ratio | string | 账户维度USDT总维持保证金率,可能会返回"infinity" |
usdt_total_liability | string | 账户维度USDT总负债 |
usdt_total_unsettled_amount | string | 账户维度USDT总待结金额 |
spot_orders_hc_loss | string | 现货挂单损失 |
details | array of Detail |
分币种账户信息 |
Detail
结构
字段名称 | 类型 | 说明 |
---|---|---|
currency | string | 币种 |
equity | string | 权益 |
liability | string | 负债 |
usdt_index_price | string | USDT指数价格 |
cash_balance | string | 现金余额 |
margin_balance | string | 保证金余额 |
available_balance | string | 可用余额 |
initial_margin | string | 始初保证金 |
spot_margin | string | 现货冻结金额 |
maintenance_margin | string | 维持保证金 |
potential_liability | string | 潜在负债 |
interest | string | 借币利息 |
interest_rate | string | 借币利率 |
pnl | string | 总损益 |
total_delta | string | 账户delta总值 |
session_rpl | string | 已实现损益 |
session_upl | string | 未实现损益 |
option_value | string | 期权市值 |
option_pnl | string | 期权损益 |
option_session_rpl | string | 期权已实现损益 |
option_session_upl | string | 期权未实现损益 |
option_delta | string | 期权delta |
option_gamma | string | 期权gamma |
option_vega | string | 期权vega |
option_theta | string | 期权theta |
future_pnl | string | 期货损益 |
future_session_rpl | string | 期货已实现损益 |
future_session_upl | string | 期货未实现损益 |
future_session_funding | string | 期货funding |
future_delta | string | 期货delta |
future_available_balance | string | 期货最大可用余余额 |
option_available_balance | string | 期权最大可用余额 |
unsettled_amount | string | 待结金额 |
用户订单频道(order)
Request
{
"type":"subscribe",
"channels":[
"order"
],
"interval": "100ms",
"token":"6d501ded-3c40-4697-b390-218a54b9de19"
}
Response
{
"channel":"order",
"timestamp":1587994934089,
"module":"spot",
"data":[
{
"order_id":"1590",
"created_at":1587870609000,
"updated_at":1587870609000,
"user_id":"51140",
"pair":"BTC-USDT",
"order_type":"limit",
"side":"buy",
"price":"0.16000000",
"qty":"0.50000000",
"time_in_force":"gtc",
"avg_price":"0.16000000",
"filled_qty":"0.10000000",
"status":"open",
"taker_fee_rate":"0.00050000",
"maker_fee_rate":"0.00020000",
"label":"hedge",
"mmp": false,
"fee": "0.000000000000",
"fee_ccy": "BTC",
"fee_deduction_enabled": true,
"fee_in_deduction_ccy": "3.000000000000",
"fee_deduction_ccy": "TONCOIN",
"fee_deduction_rate": "0.101100000000"
}
]
}
order
频道推送用户的订单信息。
频道信息
频道名称 | 权限 | 订阅参数 | 推送频率 |
---|---|---|---|
order | private | [raw , 100ms ] |
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
pair | string | 币对名称 |
order_id | string | 订单ID |
created_at | integer | 创建时间戳 |
updated_at | integer | 更新时间戳 |
user_id | string | 用户ID |
qty | string | 订单数量 |
filled_qty | string | 成交数量 |
price | string | 订单价格 |
avg_price | string | 平均成交价 |
side | string | 订单方向 |
order_type | string | 订单类型 |
time_in_force | string | 生效时间 |
status | string | 订单状态 |
taker_fee_rate | string | Taker 手续费率 |
maker_fee_rate | string | Maker 手续费率 |
label | string | 用户侧自定义订单ID |
mmp | bool | 是否 mmp 订单 |
fee | string | 手续费 |
fee_ccy | string | 手续费单位 |
fee_deduction_enabled | bool | 是否启用手续费抵扣 |
fee_in_deduction_ccy | string | 手续费,以抵扣币种计 |
fee_deduction_ccy | string | 手续费抵扣币种 |
fee_deduction_rate | string | 手续费抵扣减免比例 |
用户交易频道(user_trade)
Request
{
"type":"subscribe",
"channels":[
"user_trade"
],
"interval": "100ms",
"token":"6d501ded-3c40-4697-b390-218a54b9de19"
}
Response
{
"channel":"user_trade",
"timestamp":1588997059737,
"module":"spot",
"data":[
{
"trade_id":"2388418",
"order_id":"1384232",
"pair":"BTC-USDT",
"qty":"0.10000000",
"price":"0.01800000",
"fee_rate":"0.00050000",
"side":"buy",
"created_at":1588997060000,
"is_taker":true,
"order_type":"limit",
"label": "",
"fee": "0.00100000",
"fee_ccy": "TONCOIN",
"is_fee_deducted": true,
"fee_deduction_ccy": "TONCOIN",
"fee_deduction_rate": "0.101100000000",
"fee_deduction_ccy_index": "1.372980000000"
}
]
}
user_trade
频道推送用户的交易信息。
频道信息
频道名称 | 权限 | 订阅参数 | 推送频率 |
---|---|---|---|
user_trade | private | [raw , 100ms ] |
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
order_id | string | 订单 ID |
trade_id | string | 交易 ID |
pair | string | 币对名称 |
order_type | string | 订单类型 |
side | string | 订单方向 |
price | string | 订单价格 |
qty | string | 订单数量 |
fee_rate | string | 手续费率 |
is_taker | boolean | 是否为taker |
created_at | integer | 创建时间戳 |
label | string | 订单Label |
fee | string | 手续费 |
fee_ccy | string | 手续费单位 |
is_fee_deducted | bool | 是否启用手续费抵扣 |
fee_deduction_ccy | string | 手续费抵扣币种 |
fee_deduction_rate | string | 手续费抵扣减免比例 |
fee_deduction_ccy_index | string | 手续费抵扣币种的指数价格 |
MMP冻结事件频道(mmp_frozen)
Request
{
"type":"subscribe",
"channels":[
"mmp_frozen"
],
"interval": "100ms",
"token":"6d501ded-3c40-4697-b390-218a54b9de19"
}
Response
{
"channel":"mmp_frozen",
"timestamp":1599277666000,
"module":"spot",
"data":{
"pair":"BTC-USDT",
"frozen_until_ms":1599277929000
}
}
mmp_frozen
频道推送MMP冻结事件。
frozen_until_ms
显示冻结状态。
frozen_until_ms > 0: 冻结到指定时间戳,或者手动reset MMP解冻
frozen_until_ms = 0: 冻结直到reset MMP解冻
频道信息
频道名称 | 权限 | 订阅参数 | 推送频率 |
---|---|---|---|
mmp_frozen | private | [raw , 100ms ] |
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
pair | string | 币对名称 |
frozen_until_ms | integer | MMP冻结时间戳 |
Websocket RPC
公共数据结构
Request
{
"type":"RPC_name",
"token":"If3Fy-o5TiOOTfvlmtryR0MTiziutYaYFkH3aRovJWWEXqCAD7CIdnbhGG5bwRqLRrGkOFEOjh0L",
"params":{
"param1":"hello"
}
}
Response
{
"type":"RPC_name",
"result":{
"code":0,
"message":"",
"data":{
"field1":"world"
}
}
}
建立websocket连接后,除了数据订阅,还支持发送JSON格式的RPC请求。
首次发送私有请求需要先通过rest接口获取认证token,然后将token作为请求参数填入进行鉴权,详细参考“Websocket 数据订阅 - 获取认证Token”。
请求参数
字段名称 | 类型 | 说明 |
---|---|---|
type | string | 请求类型 |
token | string | 私有请求认证token |
params | object | 请求参数 |
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
type | string | 请求类型 |
result | object | 返回结果 |
result结构
字段名称 | 类型 | 说明 |
---|---|---|
code | integer | 错误码 |
message | string | 错误信息 |
data | object | 返回数据 |
PING
Request
{
"type":"ping",
"params":{
"id":123
}
}
Response
{
"type":"pong",
"result":{
"code":0,
"message":"",
"data":{
"id":123,
"timestamp":1632295288253
}
}
}
用于检测连接收发数据是否正常。客户端每隔一段时间发送一次PING请求,服务器收到后回复PONG和收到PING时的时间戳。若设定时间内未收到服务端的返回,可能是网络异常。
请求信息
名称 | 访问范围 |
---|---|
ping | public |
请求参数
字段名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
id | integer | 可选 | 客户端自定义的请求ID,服务器回复时将ID回填到PONG消息中 |
返回数据
字段名称 | 类型 | 说明 |
---|---|---|
id | integer | 客户端自定义请求ID |
timestamp | integer | 服务器收到PING时的时间戳 |
设置COD (cancel_on_disconnect)
Request
{
"type":"cancel_on_disconnect",
"token":"If3Fy-o5TiOOTfvlmtryR0MTiziutYaYFkH3aRovJWWEXqCAD7CIdnbhGG5bwRqLRrGkOFEOjh0L",
"params":{
"scope":"connection",
"enable":true
}
}
Response
{
"type":"cancel_on_disconnect",
"result":{
"code":0,
"message":"",
"data":""
}
}
基于连接设置开启/关闭COD (Cancel On Disconnect)。开启COD后,当websocket连接断开时,取消用户所有订单。
与rest接口 POST /v1/account_configs/cod 的差异说明:
- rest接口设置COD是用户配置,当用户所有私有连接都断开时才会撤单
- 本接口基于当前连接设置,只要当前连接断开就会撤单
- 两个接口独立配置,相互间无影响
请求信息
名称 | 访问范围 |
---|---|
cancel_on_disconnect | private |
请求参数
字段名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
scope | string | 可选 | COD生效范围,目前只支持connection |
enable | bool | 必须 | true表示开启,false表示关闭 |
返回数据
None
常量定义
Account Mode
账户模式 | 描述 |
---|---|
classic | 经典模式 |
um | 统一保证金模式 |
migrating-to-um | 模式迁移中: 经典到统保 |
migrating-to-classic | 模式迁移中: 统保到经典 |
Risk mode
风控模式 | 描述 |
---|---|
regular | 普通模式 |
portfolio_margin | PM模式(期权/期货组合保证金模式) |
Order side
订单方向 | 描述 |
---|---|
buy | 买 |
sell | 卖 |
Order Type
- 客户下市价单, order_type 填
market
- 由于市价单在系统内部转换为特殊带价格区间的市价单,客户会在订单查询返回看到市价单的order type为
banded-market
。
订单类型 | 描述 |
---|---|
limit | 限价单 |
market | 市价单 |
Order status
订单状态 | 描述 |
---|---|
pending | 订单初始状态 |
open | 订单活跃状态 |
filled | 订单全部成交状态 |
cancelled | 订单撤销状态 |
Order time in force
生效时间 | 描述 |
---|---|
gtc | 一直有效 |
fok | 全部成交否则被取消 |
ioc | 立即成交可成交部分,剩余部分取消 |
Transaction log type
交易日志类型 | 描述 |
---|---|
trade-pay | 交易-支付 |
trade-recv | 交易-收入 |
fee-collection | 收费 |
deposit | 充值 |
bad-deposit | 充值失败 |
withdraw | 提币 |
withdraw-revert | 撤销提币 |
transfer-in | 账户-转入 |
transfer-out | 账户-转出 |
invite-rebate | 邀请返佣 |
invite-rebate-refund | 撤销邀请返佣 |
Order source
订单来源 | 描述 |
---|---|
api | 来自API |
web | 来自WEB端网站 |
app | 来自APP端网站 |
Self trading mode
Self-trading mode | Description |
---|---|
0 | 撤销taker单(默认) |
1 | 撤销maker单 |
2 | 允许成交 |
Account Mode
账户模式 | 描述 |
---|---|
classic | 经典模式 |
um | 统一保证金模式 |
migrating-to-um | 模式迁移中: 经典到统保 |
migrating-to-classic | 模式迁移中: 统保到经典 |
UM transaction log type
UM交易日志类型 | 描述 |
---|---|
spot-trade-pay | 现货交易-支付 |
spot-trade-recv | 现货交易-收入 |
deri-trade | 币本位期权/期货交易 |
deri-delivery | 币本位期权/期货交割 |
deri-settlement | 币本位期权/期货结算 |
deri-socialized-fund | 币本位期权/期货分摊 |
usdx-trade | U本位期权/期货交易 |
usdx-delivery | U本位期权/期货交割 |
usdx-settlement | U本位期权/期货结算 |
usdx-socialized-fund | U本位期权/期货分摊 |
pay-accrued-interest | 支付利息 |
um-pex-trade-pay | 自动卖币 |
um-pex-trade-recv | 自动买币 |
deposit | 充值 |
bad-deposit | 充值失败 |
withdraw | 提币 |
withdraw-revert | 撤销提币 |
transfer-in | 账户-转入 |
transfer-out | 账户-转出 |
Feerate source
费率来源 | 描述 |
---|---|
user_defined | 定制(优先级最高) |
vip | VIP等级(成交量) |
vip_manual | VIP等级(手动) |
错误码
错误处理
bit.com trading API 说明:
当调用bit.com的交易API时,例如 下单,编辑订单,取消订单,调用者将获得以下四种结果之一:
- 调用成功
- 调用失败
- 接收到响应,但是不能确定操作是成功还是失败
- 不能接收到响应
类型3的结果发生在bit.com的前端Web服务器未能及时从撮合引擎收到响应(由于网络问题或超时)时。 响应的形式可以为
- HTTP 响应"504 - Gateway Timeout": 表示故障发生在API网关层面
- HTTP 响应"200 - OK", 但是 JSON error code =
18500000
: 表示 RPC timeout - 其他形式的网络错误(如果故障发生在到达bit.com的网关之前).
当类型3的结果发生时,调用方将无法确定撮合引擎是否已接收/处理/拒绝了所发送的请求。 因此, 调用方必须发起另一个查询请求,以确认订单或帐户的状态。
Bit.com API 错误码列表:
错误码 | 描述 |
---|---|
0 | 成功(无错误) |
18100100 | 一般错误 |
18100101 | 不合法订单请求 |
18100102 | 不合法订单方向 |
18100103 | 不合法订单价格 |
18100104 | 不合法订单数量 |
18100105 | 不合法订单类型 |
18100106 | 不合法订单时效 |
18100107 | 获取仓位错误 |
18100109 | 获取Underlying价格失败 |
18100110 | 下单错误 |
18100111 | 序列化错误 |
18100112 | 提交创建订单请求出错 |
18100113 | 不合法订单id |
18100114 | 获取订单错误 |
18100115 | 订单没有找到 |
18100116 | 提交撤销订单请求出错 |
18100117 | 不合法订单状态参数 |
18100119 | 获取交易记录错误 |
18100120 | 不合法创建期权请求 |
18100121 | 计算行权价错误 |
18100122 | 创建期权错误 |
18100123 | 不合法更新期权请求 |
18100124 | 不合法到期日 |
18100125 | 获取期权错误 |
18100126 | 不合法期权状态 |
18100127 | 更新期权错误 |
18100128 | 获取到期日错误 |
18100129 | 不合法交割价 |
18100130 | 期权包含有未结订单 |
18100131 | 不合法转账请求 |
18100132 | 不合法转账数量 |
18100133 | 创建转账请求错误 |
18100134 | 获取用户交易记录错误 |
18100135 | 获取转账错误 |
18100137 | 获取账户错误 |
18100138 | 获取交易记录错误 |
18100139 | 不合法的期权类型 |
18100141 | 不合法的货币 |
18100142 | 获取Underlying错误 |
18100143 | 获取Ticks错误 |
18100144 | 获取标记价格错误 |
18100145 | 获取Portfolio Margin错误 |
18100146 | 更新账户出错 |
18100147 | 获取交易日志错误 |
18100148 | 审核账户错误 |
18100149 | 交割信息错误 |
18100150 | 超过账户最大未结订单数目 |
18100151 | 超过品种最大未结订单数目 |
18100152 | 获取未结订单数目错误 |
18100153 | 创建到期日错误 |
18100154 | 更新存取Token出错 |
18100155 | 不合法的删除期权请求 |
18100156 | 删除期权出错 |
18100157 | 不合法的配置 |
18100158 | 更新配置错误 |
18100159 | 获取手续费率出错 |
18100160 | 不合法的参数 |
18100161 | 获取Orderbook出错 |
18100162 | 获取Index错误 |
18100163 | 账户信息错误 |
18100164 | 获取用户中心转账出错 |
18100165 | 不合法的用户 |
18100166 | 风险基金账户出错 |
18100167 | 风险日志错误 |
18100168 | 费用账户错误 |
18100169 | 费用日志错误 |
18100170 | 获取交割记录出错 |
18100171 | 获取风险数据出错 |
18100172 | 不合法的市场深度 |
18100173 | 到期错误 |
18100174 | 获取Orderbook统计出错 |
18100175 | 获取结算记录错误 |
18100176 | 获取Trading View数据出错 |
18100177 | 获取用户出错 |
18100178 | 保存数据出错 |
18100179 | 获取Funding图表出错 |
18100180 | 不合法的撤销订单请求 |
18100181 | 获取产品出错 |
18100183 | 获取期货产品出错 |
18100185 | 不合法的产品 |
18100186 | 平仓请求出错 |
18100187 | 获取订单保证金出错 |
18100188 | 获取限价价格出错 |
18100189 | 不合法的stop价格 |
18100190 | 获取未结stop order数目出错 |
18100191 | 超过最大stop order数目 |
18100192 | 不合法的stop价格 |
18100193 | 不合法的stop order触发类型 |
18100194 | 保存stop order失败 |
18100195 | 删除到期日出错 |
18100196 | 获取Funding Rate出错 |
18100197 | 不合法的更新到期日请求 |
18100198 | 更新到期日出错 |
18100199 | 余额不足 |
18100200 | 不合法的交易类型 |
18100201 | 获取指数数据出错 |
18100202 | 不合法的参数 |
18100204 | 不合法的分页参数 |
18100205 | 获取市场统计量出错 |
18100206 | 系统账户错误 |
18100210 | 不合法的操作员 |
18100211 | 获取接管记录出错 |
18100212 | 不合法的操作员用户id |
18100213 | 开始接管 |
18100214 | 不合法的账户id |
18100215 | 推出接管 |
18100216 | 绑定管理员到账户 |
18100217 | 解除绑定管理员到账户 |
18100218 | 计算组合保证金 |
18100223 | 获取接管订单出错 |
18100224 | 不合法的修改订单请求 |
18100225 | 自动价格错误 |
18100226 | 接管切换用户出错 |
18100227 | 账户被锁定 |
18100228 | 获取爆仓信息出错 |
18100229 | 记录爆仓请求出错 |
18100230 | 超过最大stop order数目 |
18100231 | 不合法的stop order状态 |
18100232 | 邮件验证码错误 |
18100233 | 电话验证码错误 |
18100234 | Rpc错误: 修改订单失败 |
18100235 | 记录爆仓信息出错 |
18100236 | 不合法的订单角色 |
18100237 | 没有 Block Order 权限 |
18100238 | 自成交错误 |
18100239 | 不合法的时间 |
18100240 | 不合法的 Block Order 请求 |
18100241 | 接受 Block Order 出错 |
18100242 | 拒绝 Block Order 出错 |
18100243 | 计算期权维持保证金出错 |
18100244 | 减仓单错误 |
18100245 | Block Trade 服务停止运行 |
18100246 | 获取触发价出错 |
18100247 | 获取未结订单挂单量出错 |
18100248 | 获取仓位出错 |
18100249 | 超过期权最大未结订单数目 |
18100250 | 超过期货最大未结订单数目 |
18100251 | 体验金请求出错 |
18100252 | 体验金错误 |
18100253 | 获取体验金出错 |
18100254 | 抵扣金请求出错 |
18100255 | 抵扣金错误 |
18100256 | 获取体验金活跃状态出错 |
18100257 | 获取账户配置出错 |
18100258 | 不合法的用户KYC水平 |
18100259 | 体验金重复 |
18100260 | 计算仓位出错 |
18100261 | 超过账户delta |
18100262 | 不合法的提币请求 |
18100263 | 提币出错 |
18100264 | 不合法的用户自定义字符串 |
18100265 | 不合法的block trade来源 |
18100266 | 发送校验码出错 |
18100267 | 不合法的校验码 |
18100268 | 不合法的数字字符串 |
18100269 | 超过最大仓位 |
18100270 | 超过最大未结订单总数量 |
18100271 | 获取 Block Order出错 |
18100272 | 重复的 Blocktrade Key |
18100273 | 创建体验金活跃记录出错 |
18100274 | 体验金超额 |
18100275 | 不合法的批量下单请求 |
18100276 | 批量订单数目错误 |
18100277 | Rpc 批量下单出错 |
18100278 | 数据库超时 |
18100279 | 不允许接管 |
18100280 | 不合法的批量改单请求 |
18100281 | 不在未结订单列表 |
18100282 | Rpc 批量改单出错 |
18100285 | Mmp 错误 |
18100304 | 不合法的频道 |
18100305 | 不合法的类别 |
18100306 | 不合法的推送频率 |
18100314 | 账户模式正在迁移到Um模式 |
18100315 | 账户模式正在迁移到经典模式 |
18100401 | 不合法的地址 |
18100402 | 不是白名单地址 |
18100403 | 资金秘密错误 |
18100404 | 提币订单不存在 |
18100405 | KYT 拒绝 |
18100406 | 提币太频繁 |
18100407 | 超过提币额度 |
18100408 | 提币金额小于最小金额 |
18100800 | 查询UserConfig错误 |
18200300 | 超过API调用限额 |
18200301 | 登陆错误 |
18200302 | 鉴权错误, 鉴权码: 17002012: 无访问此api权限 17002011: IP地址错误 17002010: 签名错误 17002014: 时间戳过期 17002006: 内部错误 |
18200303 | 超过最大连接数 |
18300300 | 无参赛 |
18300301 | 报名参赛失败 |
18300302 | 已报名参赛 |
18400300 | 只撤单阶段 |
18400301 | 正在结算中 |
18500000 | Rpc timeout (需要调用方发查询请求确认结果,见上文) |