简介
API 简介
欢迎使用 BFX API! 你可以使用此 API 获得市场行情数据,进行交易,并且管理你的账户。
在文档的右侧是代码示例,目前我们仅提供针对 shell
的代码示例。
你可以通过下面的链接来切换旧版API文档:
https://www.bfxnu.com/news/other.do
更新日志
生效时间(北京时间 UTC+8) | 接口 | 新增 / 修改 | 摘要 |
---|---|---|---|
2020.07.10 16:00 | 域名修改为bfxnu.com | 修改 | 更换 域名链接 |
2019.12.20 16:00 | BFX 现货 API 英文 文档 | 新增 | 添加 现货 API 英文 文档 |
2019.12.03 16:50 | Websocket market.$type.$symbol.trade | 修改 | 推送消息添加订阅地址和时间戳 |
2019.11.01 19:00 | GET /v1/history/orders.do | 修改 | 添加“state”返回字段,表示订单状态 |
2019.10.11 18:00 | BFX 现货 API 中文 文档 | 新增 | 添加 现货 API 中文 文档 |
接入说明
接入 URLs
正式版 REST API
https://api.bfxnu.com/
Websocket Feed(行情)
wss://api.bfxnu.com/v1/ws
限频规则
- 现货:10秒100次
签名认证
签名说明
API 请求在通过 internet 传输的过程中极有可能被篡改,为了确保请求未被更改,除公共API接口和行情API数据接口外,其余接口均必须使用您的 API Key 做签名认证,以校验参数或参数值在传输途中是否发生了更改。
一个合法的请求由以下几部分组成:
方法请求地址:即访问服务器地址 https://api.bfxnu.com,比如 https://api.bfxnu.com/v1/account/accounts.do。
API 访问密钥(AppKey):您申请的 AppKey 和 AppSecret。
时间戳(Timestamp):秒级时间戳,请保证时间戳与Internet时间不会相差太多。
必选和可选参数:每一个请求都有必选和可选参数,请参考API接口说明。
签名(Signature):签名计算得出的值,用于确保签名有效和未被篡改。
传参方式:请使用FormData方式传参,并在Header设置User-Agent。
Header 中 User-Agent设置:
"Content-Type": "application/x-www-form-urlencoded",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.0.1471.813 Safari/537.36"
创建 API Key
您可以在 这里 https://www.bfxnu.com/center/bindAppKey.do 创建 API Key。
API Key 包括以下两部分
AppKey:
API 访问密钥AppSecret:
签名认证加密所使用的密钥(仅申请时可见)
签名步骤
规范要计算签名的请求 因为使用 MD5 进行签名计算时,使用不同内容计算得到的结果会完全不同。所以在进行签名计算前,请先对请求进行规范化处理。下面以查询某订单详情请求为例进行说明:
查询某订单详情
https://api.bfxnu.com/v1/trade/order.do?
AppKey=8e9e4b10413f49f682001c530beea232
&Timestamp=1568189479
&orderId=1082752
&symbol=bfxusdt
&Signature=a49c6053d05826f29356b189e1200f2a
1. Signature参数的生成:按照ASCII码的顺序对其余所有参数名称进行排序,并将参数值和参数名拼接在一起,例如,下面是请求参数的原始顺序,进行过编码后:
Timestamp=1568189479
symbol=bfxusdt
orderId=1082752
AppKey=8e9e4b10413f49f682001c530beea232
2. 按参数名称排序后为:
AppKey=8e9e4b10413f49f682001c530beea232
Timestamp=1568189479
orderId=1082752
symbol=bfxusdt
3. 按照以上顺序,将参数名和参数值拼接后为:
AppKey8e9e4b10413f49f682001c530beea232Timestamp1568189479orderId1082752symbolbfxusdt
4. 把上面这个拼装好的字符串,在前面和后面,都加上AppSecret(例如,AppSecret:7c304b6b86f8403abc8091720a2415f2),并进行utf-8编码,使用MD5算法对编码后的字节流进行摘要,则:
MD5(7c304b6b86f8403abc8091720a2415f2AppKey8e9e4b10413f49f682001c530beea232
Timestamp1568189479orderId1082752symbolbfxusdt7c304b6b86f8403abc8091720a2415f2)
得到的十六进制字符串签名结果为:a49c6053d05826f29356b189e1200f2a
5. 将上述签名值作为参数Signature的取值添加到 API 请求中:
最终,发送到服务器的 API 请求应该为
https://api.bfxnu.com/v1/trade/order.do?AppKey=8e9e4b10413f49f682001c530beea232&Timestamp=1568189479&orderId=1082752&symbol=bfxusdt&Signature=a49c6053d05826f29356b189e1200f2a
把所有必须的认证参数添加到接口调用的路径参数里
把数字签名在URL编码后加入到路径参数里,参数名为“Signature”。
请求格式
所有的API请求都以GET或者POST形式发出。
传参方式请使用FormData方式传参,并在Header设置User-Agent:
"Content-Type": "application/x-www-form-urlencoded",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.0.1471.813 Safari/537.36"
返回格式
所有的接口返回都是JSON格式。在JSON最上层有几个表示请求状态和属性的字段:"code", "data", 和 "msg"。实际的接口返回内容在"data"字段里。
返回内容格式
返回内容将会是以下格式:
{
"code": 0,
"msg": "",
"data": // per API response data in nested JSON object
}
参数名称 | 数据类型 | 描述 |
---|---|---|
code | int | 错误码(0-成功,其他-失败) |
msg | string | 错误信息(code=0成功时,此参数为"") |
data | array | 接口返回数据主体(失败时无此值) |
错误信息
通用状态码说明
错误码 | 描述 |
---|---|
Code:10000 | 其他错误(msg返回具体错误信息) |
Code:10001 | 提交的参数错误 |
Code:10020 | token失效或者错误,需要重新登录 |
Code:其他错误码(msg返回具体错误信息)
基础信息
获取所有现货交易对及精度
此接口返回所有平台支持的现货交易对以及精度。
HTTP 请求
- GET
/v1/common/symbols.do
curl "https://api.bfxnu.com/v1/common/symbols.do?type=spot"
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
Response:
{
"code": 0,
"msg": "",
"data": [
{
"symbol":"btcusdt",
"coin":"btc",
"market":"usdt",
"pricePrecision":2,
"amountPrecision":4
},
{
"symbol":"ethusdt",
"coin":"eth",
"market":"usdt",
"pricePrecision":2,
"amountPrecision":4
},
...
]
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
symbol | string | 交易对名称 |
coin | string | 交易对中的基础币种 |
market | string | 交易对中的报价币种 |
pricePrecision | integer | 价格精度位数 |
amountPrecision | integer | 数量精度位数 |
获取平台支持的币种
此接口返回平台支持的币种。
HTTP 请求
- GET
/v1/common/currencys.do
curl "https://api.bfxnu.com/v1/common/currencys.do"
请求参数
无
Response:
{
"code": 0,
"msg": "",
"data": [
"btc",
"usdt",
"eth",
"bfx",
...
]
}
响应数据
行情数据
K 线数据(蜡烛图)
此接口返回历史K线数据。
HTTP 请求
- GET
/v1/market/kline.do
curl "https://api.bfxnu.com/v1/market/kline.do?symbol=btcusdt&interval=15min&type=spot"
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
interval | string | true | NA | 时间类型 | 1min,3min,5min,具体说明见下方 |
Response:
{
"code": 0,
"msg": "",
"data": [
{
"code":"btcusdt",
"first":10205.58,
"high":10210.01,
"last":10192.18,
"low":10190.28,
"time":1568705400,
"vol":23.23
},
...
]
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
code | string | 交易对名称 |
first | float | 开盘价 |
high | float | 最高价 |
last | float | 收盘价 |
low | float | 最低价 |
time | long | 时间 |
vol | float | 以报价币种计量的交易量 |
获取市场行情(Ticker)
此接口返回市场行情(Ticker),最新价,最高价,最低价,成交量,买一价和卖一价。
HTTP 请求
- GET
/v1/market/ticker.do
curl "https://api.bfxnu.com/v1/market/ticker.do?symbol=btcusdt&type=spot"
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
Response:
{
"code": 0,
"msg": "",
"data": {
"symbol":"btcusdt",
"buy":10191.65,
"sell":10193.72,
"high":10268.48,
"last":10192.5,
"low":10141.53,
"trades":50584730.78,
"vol":4954.56
}
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
symbol | string | 交易对名称 |
buy | float | 买一价 |
sell | float | 卖一价 |
high | float | 最高价 |
last | float | 最新成交价 |
low | float | 最低价 |
trades | float | 成交额 |
vol | float | 成交价 |
获取所有市场行情(Tickers)
此接口返回所有市场行情(Tickers),最新价,最高价,最低价,成交量,买一价和卖一价。
HTTP 请求
- GET
/v1/market/tickers.do
curl "https://api.bfxnu.com/v1/market/tickers.do?type=spot"
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
Response:
{
"code": 0,
"msg": "",
"data": [
{
"symbol":"btcusdt",
"buy":10195.79,
"sell":10197.88,
"high":10268.48,
"last":10196.55,
"low":10141.53,
"trades":50445638.61,
"vol":4940.96
},
{
"symbol":"ethusdt",
"buy":214.09,
"sell":214.38,
"high":214.92,
"last":214.23,
"low":196.78,
"trades":8222181.8,
"vol":39749.57
},
...
]
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
symbol | string | 交易对名称 |
buy | float | 买一价 |
sell | float | 卖一价 |
high | float | 最高价 |
last | float | 最新成交价 |
low | float | 最低价 |
trades | float | 成交额 |
vol | float | 成交价 |
市场深度数据
此接口返回指定交易对的当前市场深度数据(委托挂单),数量:20。
HTTP 请求
- GET
/v1/market/depth.do
curl "https://api.bfxnu.com/v1/market/depth.do?symbol=btcusdt&type=spot"
请求参数
参数 | 数据类型 | 必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
bfx | string | false | "" | 是否返回精度 | ""、任意字符串 |
Response:
{
"code": 0,
"msg": "",
"amountDigits": 4,
"digits": 2,
"data": {
"bids": [
[7964.12, 0.0678], // [price, amount]
[7963.4, 0.9162],
[7961, 0.1],
[7960.6, 12.8898],
[7958, 1.2],
...
],
"asks": [
[7979.55, 0.0736],
[7980.6, 1.0292],
[7981, 5.5652],
[7986.1, 0.2416],
[7990.66, 1.9970],
...
]
}
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
amountDigits | integer | 数量保留小数位数 |
digits | integer | 价格保留小数位数 |
bids | object | 当前的所有买单, [price(成交价), amount(成交量)], 按price降序 |
asks | object | 当前的所有卖单, [price(成交价), amount(成交量)], 按price降序 |
获取历史成交记录
此接口返回交易记录,获取历史成交记录,数量:50。
HTTP 请求
- GET
/v1/market/trades.do
curl "https://api.bfxnu.com/v1/market/trades.do?symbol=btcusdt&type=spot"
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
bfx | string | false | "" | 是否返回精度 | ""、任意字符串 |
Response:
{
"code": 0,
"msg": "",
"amountDigits": 4,
"digits": 2,
"data": [
{
"type":"buy",
"amount":0.47,
"date":1568876917,
"price":9862.44,
"vol":4635.3468
},
{
"type":"sell",
"amount":0.07,
"date":1568876900,
"price":9861.47,
"vol":690.3029
},
...
]
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
amountDigits | integer | 数量保留小数位数 |
digits | integer | 价格保留小数位数 |
type | string | 成交方向(buy或sell) |
amount | float | 成交量 |
date | long | 成交时间 |
price | float | 成交价 |
vol | float | 以报价币种计量的交易量 |
账户相关
查询所有币种资产
此接口返回查询所有币种资产。
HTTP 请求
- GET
/v1/account/accounts.do
curl "https://api.bfxnu.com/v1/account/accounts.do?AppKey=b779e1982b77478d8d23e69f7e7df10f&Timestamp=1570601407&type=spot&Signature=4469ee0fef8a34161956c42ce29746d7"
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
AppKey | string | true | NA | API 访问密钥 | 申请到的AppKey |
Timestamp | long | true | NA | 时间戳 | 秒级时间戳 |
Signature | string | true | NA | 签名 | 通过签名计算得出的值 |
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
Response:
{
"code": 0,
"msg": "",
"data": [
{
"symbol":"btc",
"available":0,
"frozen":0
},
{
"symbol":"usdt",
"available":214,
"frozen":0
},
...
]
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
symbol | string | 币种名称 |
available | float | 可用资金 |
frozen | float | 冻结资金 |
查询单个币种资产
此接口返回查询单个币种资产。
HTTP 请求
- GET
/v1/account/account.do
curl "https://api.bfxnu.com/v1/account/account.do?AppKey=284e7228ab324e1f82a13faada3cf431&Timestamp=1571388790&symbol=btc&type=spot&Signature=bbad4f07325803bcfd44c29f09552442"
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
AppKey | string | true | NA | API 访问密钥 | 申请到的AppKey |
Timestamp | long | true | NA | 时间戳 | 秒级时间戳 |
Signature | string | true | NA | 签名 | 通过签名计算得出的值 |
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 币种名称 | btc, eth, ht... |
Response:
{
"code": 0,
"msg": "",
"data": {
"symbol":"btc",
"available":1.64916,
"frozen":0
}
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
symbol | string | 币种名称 |
available | float | 可用资金 |
frozen | float | 冻结资金 |
稳定币兑换
兑换稳定币
发送一个兑换下单请求到BFX。
HTTP 请求
- POST
/v1/exchange/orders/place.do
{
"AppKey": "284e7228ab324e1f82a13faada3cf431",
"Timestamp": 1570777192,
"Signature": "bad4d08be4cf4ce62bd45f7fffa80e73",
"originCoinName": "btc",
"targetCoinName": "usdt",
"quantity": "100"
}
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
AppKey | string | true | NA | API 访问密钥 | 申请到的AppKey |
Timestamp | long | true | NA | 时间戳 | 秒级时间戳 |
Signature | string | true | NA | 签名 | 通过签名计算得出的值 |
originCoinName | string | true | NA | 源币种名称 | btc, eth, usdt... |
targetCoinName | string | true | NA | 目标币种名称 | btc, eth, usdt... |
quantity | string | true | NA | 数量 |
Response:
{
"code": 0,
"msg": "",
"data": 4
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
data | long | 记录id |
稳定币单个兑换记录查询
此接口查询稳定币单个兑换记录。
HTTP 请求
- GET
/v1/exchange/record.do
curl "https://api.bfxnu.com/v1/exchange/record.do?AppKey=284e7228ab324e1f82a13faada3cf431&Timestamp=1570779234&recordId=4&Signature=7d0429244626cbdf179110e78d30f10e"
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
AppKey | string | true | NA | API 访问密钥 | 申请到的AppKey |
Timestamp | long | true | NA | 时间戳 | 秒级时间戳 |
Signature | string | true | NA | 签名 | 通过签名计算得出的值 |
recordId | long | true | NA | 记录id |
Response:
{
"code": 0,
"msg": "",
"data": {
"avgPrice":0,
"obtainAmount":0,
"oriAmount":0.0139,
"originCoinName":"btc",
"presentPrice":7200,
"recordId":4,
"recordTime":1570777192,
"state":"processing",
"targetAmount":100,
"targetCoinName":"usdt"
}
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
avgPrice | float | 成交价格 |
obtainAmount | float | 实际所得数量 |
oriAmount | float | 兑换金额 |
originCoinName | string | 源币种名称 |
presentPrice | float | 兑换价格 |
recordId | long | 记录id |
recordTime | long | 记录时间 |
state | string | 状态,processing处理中,success兑换成功,canceled已取消 |
targetAmount | float | 兑换数量 |
targetCoinName | string | 目标币种名称 |
稳定币多个兑换记录查询
此接口查询稳定币多个兑换记录。
HTTP 请求
- GET
/v1/exchange/records.do
curl "https://api.bfxnu.com/v1/exchange/records.do?AppKey=284e7228ab324e1f82a13faada3cf431&Timestamp=1570783684&direct=next&endTime=1570783588&from=20&originCoinName=btc&size=100&startTime=1557543620&targetCoinName=usdt&Signature=be90eb75537fe8ff8edc5155a3f7eed5"
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
AppKey | string | true | NA | API 访问密钥 | 申请到的AppKey |
Timestamp | long | true | NA | 时间戳 | 秒级时间戳 |
Signature | string | true | NA | 签名 | 通过签名计算得出的值 |
originCoinName | string | true | NA | 源币种名称 | btc, eth, usdt... |
targetCoinName | string | true | NA | 目标币种名称 | btc, eth, usdt... |
size | integer | false | 10 | 订单数 | [1-100] |
from | long | false | NA | 起始id | 需与direct参数同时搭配使用 |
direct | string | false | NA | 查询方向 | prev向前,next向后(需与from参数同时搭配使用) | startTime | long | false | NA | 开始时间戳(s) | 秒级时间戳 |
endTime | long | false | NA | 结束时间戳(s) | 秒级时间戳 |
Response:
{
"code": 0,
"msg": "",
"data": [
{
"avgPrice":0,
"obtainAmount":0,
"oriAmount":0.0327,
"originCoinName":"btc",
"presentPrice":7200,
"recordId":5,
"recordTime":1570782620,
"state":"processing",
"targetAmount":235,
"targetCoinName":"usdt"
},
{
"avgPrice":0,
"obtainAmount":0,
"oriAmount":0.0139,
"originCoinName":"btc",
"presentPrice":7200,
"recordId":4,
"recordTime":1570777192,
"state":"processing",
"targetAmount":100,
"targetCoinName":"usdt"
},
...
]
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
avgPrice | float | 成交价格 |
obtainAmount | float | 实际所得数量 |
oriAmount | float | 兑换金额 |
originCoinName | string | 源币种名称 |
presentPrice | float | 兑换价格 |
recordId | long | 记录id |
recordTime | long | 记录时间 |
state | string | 状态,processing处理中,success兑换成功,canceled已取消 |
targetAmount | float | 兑换数量 |
targetCoinName | string | 目标币种名称 |
现货交易
下单
发送一个新订单到BFX以进行撮合。
HTTP 请求
- POST
/v1/trade/orders/place.do
{
"AppKey": "284e7228ab324e1f82a13faada3cf431",
"Timestamp": 1570612482,
"Signature": "8c7f41c192a0ae564a5972ee18482fe0",
"type": "spot",
"symbol": "btcusdt",
"price": "14000",
"amount": "0.01",
"operation": "sell"
}
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
AppKey | string | true | NA | API 访问密钥 | 申请到的AppKey |
Timestamp | long | true | NA | 时间戳 | 秒级时间戳 |
Signature | string | true | NA | 签名 | 通过签名计算得出的值 |
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
price | string | true | NA | 下单价格 | |
amount | string | true | NA | 下单数量 | |
operation | string | true | NA | 下单方向 | buy-买入,sell-卖空 |
Response:
{
"code": 0,
"msg": "",
"data": "1562141102549109"
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
data | string | 订单id |
撤销订单
此接口发送一个撤销订单的请求。
HTTP 请求
- POST
/v1/trade/orders/cancel.do
{
"AppKey": "284e7228ab324e1f82a13faada3cf431",
"Timestamp": 1570678375,
"Signature": "2a2596461b75a85278c86fe3960ca4d8",
"type": "spot",
"symbol": "btcusdt",
"orderId": "1570612201371537"
}
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
AppKey | string | true | NA | API 访问密钥 | 申请到的AppKey |
Timestamp | long | true | NA | 时间戳 | 秒级时间戳 |
Signature | string | true | NA | 签名 | 通过签名计算得出的值 |
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
orderId | string | true | NA | 订单id |
Response:
{
"code": 0,
"msg": "",
"data": "1570612201371537"
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
data | string | 订单id |
批量撤销订单
此接口发送批量撤销订单的请求。
HTTP 请求
- POST
/v1/trade/orders/batchCancel.do
{
"AppKey": "284e7228ab324e1f82a13faada3cf431",
"Timestamp": 1570678375,
"Signature": "2a2596461b75a85278c86fe3960ca4d8",
"type": "spot",
"symbol": "btcusdt",
"side": "sell"
}
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
AppKey | string | true | NA | API 访问密钥 | 申请到的AppKey |
Timestamp | long | true | NA | 时间戳 | 秒级时间戳 |
Signature | string | true | NA | 签名 | 通过签名计算得出的值 |
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
side | string | true | NA | 订单类型 | all所有, buy买单, sell卖单 |
Response:
{
"code": 0,
"msg": "",
"data": {
"successCount":4,
"failedCount":0
}
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
successCount | integer | 取消成功订单数 |
failedCount | integer | 取消失败订单数 |
查询单个订单详情
此接口返回指定单个订单的最新状态和详情。
HTTP 请求
- GET
/v1/trade/order.do
curl "https://api.bfxnu.com/v1/trade/order.do?AppKey=284e7228ab324e1f82a13faada3cf431&Timestamp=1570699502&orderId=1570612201371537&symbol=btcusdt&type=spot&Signature=5db1d808593145f45af05c97ce5300ad"
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
AppKey | string | true | NA | API 访问密钥 | 申请到的AppKey |
Timestamp | long | true | NA | 时间戳 | 秒级时间戳 |
Signature | string | true | NA | 签名 | 通过签名计算得出的值 |
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
orderId | string | true | NA | 订单id |
Response:
{
"code": 0,
"msg": "",
"data": {
"amount":0.01,
"createTime":1570612201,
"dealAmount":0,
"delegation_id":0,
"deposit":0,
"direction":2,
"multiple":0,
"orderId":"1570612201371537",
"price":14000,
"priority":0,
"state":"canceled",
"symbol":"btcusdt",
"undealAmount":0.01
}
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
amount | float | 下单数量 |
createTime | long | 下单时间 |
dealAmount | float | 已成交数量 |
delegation_id | long | 委托编号 |
deposit | float | 保证金(合约交易才有,现货为0) |
direction | integer | 下单方向,1-买入,2-卖空 |
multiple | integer | 杆杠倍数(合约交易才有,现货为0) |
orderId | string | 订单id |
price | float | 下单价格 |
priority | integer | 订单类型,1-开仓,2-平仓(合约交易才有,现货为0) |
state | string | 订单状态,submitting提交中,submitted已提交,filled已成交,canceled已撤销 |
symbol | string | 交易对名称 |
undealAmount | float | 未成交数量 |
查询当前未成交订单
此接口基于搜索条件查询当前未成交订单。
HTTP 请求
- GET
/v1/trade/orders.do
curl "https://api.bfxnu.com/v1/trade/orders.do?AppKey=284e7228ab324e1f82a13faada3cf431&Timestamp=1570765354&endTime=1570762820&size=100&startTime=1557543620&states=submitted%2Csubmitting&symbol=btcusdt&type=spot&Signature=0d8a6517077bae18b9c0576571496f3f"
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
AppKey | string | true | NA | API 访问密钥 | 申请到的AppKey |
Timestamp | long | true | NA | 时间戳 | 秒级时间戳 |
Signature | string | true | NA | 签名 | 通过签名计算得出的值 |
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
size | integer | false | 10 | 订单数 | [1-100] |
states | string | false | submitted | 订单状态集合(用”,”号分开) | submitting提交中, submitted已提交 |
startTime | long | false | NA | 开始时间戳(s) | 秒级时间戳 |
endTime | long | false | NA | 结束时间戳(s) | 秒级时间戳 |
Response:
{
"code": 0,
"msg": "",
"data": [
{
"amount":0.01,
"createTime":1570762591,
"dealAmount":0,
"delegation_id":8917995,
"deposit":0,
"direction":2,
"multiple":0,
"orderId":"1570762591618249",
"price":14000,
"priority":0,
"state":"submitted",
"symbol":"btcusdt",
"undealAmount":0.01
},
{
"amount":0.01,
"createTime":1570762579,
"dealAmount":0,
"delegation_id":8917994,
"deposit":0,
"direction":2,
"multiple":0,
"orderId":"1570762579853648",
"price":14000,
"priority":0,
"state":"submitted",
"symbol":"btcusdt",
"undealAmount":0.01
},
...
]
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
amount | float | 下单数量 |
createTime | long | 下单时间 |
dealAmount | float | 已成交数量 |
delegation_id | long | 委托编号 |
deposit | float | 保证金(合约交易才有,现货为0) |
direction | integer | 下单方向,1-买入,2-卖空 |
multiple | integer | 杆杠倍数(合约交易才有,现货为0) |
orderId | string | 订单id |
price | float | 下单价格 |
priority | integer | 订单类型,1-开仓,2-平仓(合约交易才有,现货为0) |
state | string | 订单状态,submitting提交中,submitted已提交,filled已成交,canceled已撤销 |
symbol | string | 交易对名称 |
undealAmount | float | 未成交数量 |
查询历史订单
此接口基于搜索条件查询历史订单。
HTTP 请求
- GET
/v1/trade/history/orders.do
curl "https://api.bfxnu.com/v1/trade/history/orders.do?AppKey=284e7228ab324e1f82a13faada3cf431&Timestamp=1571390736&direct=prev&endTime=1571389895&from=20&size=100&startTime=1557543620&symbol=btcusdt&type=spot&Signature=e7e486f20c36d5070c54f7c262905fd5"
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
AppKey | string | true | NA | API 访问密钥 | 申请到的AppKey |
Timestamp | long | true | NA | 时间戳 | 秒级时间戳 |
Signature | string | true | NA | 签名 | 通过签名计算得出的值 |
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
size | integer | false | 10 | 订单数 | [1-100] |
from | long | false | NA | 起始id | 需与direct参数同时搭配使用 |
direct | string | false | NA | 查询方向 | prev向前,next向后(需与from参数同时搭配使用) | startTime | long | false | NA | 开始时间戳(s) | 秒级时间戳 |
endTime | long | false | NA | 结束时间戳(s) | 秒级时间戳 |
Response:
{
"code": 0,
"msg": "",
"data": [
{
"amount":0.01,
"dealAmount":0.01,
"deposit":0,
"direction":1,
"multiple":0,
"price":10685.35,
"recordId":156,
"tradeAvgPrice":10685.35,
"undealAmount":0,
"orderId":"1570771804268987",
"symbol":"btcusdt",
"createTime":1570771804,
"updateTime":1570771804,
"tradeType":0
},
{
"amount":0.01,
"dealAmount":0,
"deposit":0,
"direction":2,
"multiple":0,
"price":14000,
"recordId":148,
"tradeAvgPrice":0,
"undealAmount":0.01,
"orderId":"1570612201371537",
"symbol":"btcusdt",
"createTime":1570612201,
"updateTime":1570678375,
"tradeType":0
},
...
]
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
amount | float | 委托数量 |
dealAmount | float | 委托数量 |
deposit | float | 保证金(合约交易才有,现货为0) |
direction | integer | 方向,1-买,2-卖 |
multiple | integer | 杆杠倍数(合约交易才有,现货为0) |
price | float | 委托价格 |
recordId | integer | 委托挂单id |
tradeAvgPrice | float | 成交均价 |
undealAmount | float | 未成交数量 |
orderId | string | 挂单流水号 |
symbol | string | 交易对名称 |
createTime | long | 委托时间,unix时间格式 |
updateTime | long | 操作时间,unix时间格式 |
tradeType | integer | 交易类型,1-多单开仓,2-多单平仓,3-空单开仓,4-空单平仓(合约交易才有,现货为0) |
state | string | 订单状态,submitting提交中,submitted已提交,filled已成交,canceled已撤销 |
查询交易记录
此接口基于搜索条件查询交易记录。
HTTP 请求
- GET
/v1/trade/history/trades.do
curl "https://api.bfxnu.com/v1/trade/history/trades.do?AppKey=284e7228ab324e1f82a13faada3cf431&Timestamp=1570774448&direct=prev&from=20&size=100&symbol=btcusdt&type=spot&Signature=6dc09282a1d9eb8a20c45557e0a27956"
请求参数
参数 | 数据类型 | 是否必须 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
AppKey | string | true | NA | API 访问密钥 | 申请到的AppKey |
Timestamp | long | true | NA | 时间戳 | 秒级时间戳 |
Signature | string | true | NA | 签名 | 通过签名计算得出的值 |
type | string | false | contract | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
size | integer | false | 10 | 订单数 | [1-100] |
from | long | false | NA | 起始id | 需与direct参数同时搭配使用 |
direct | string | false | NA | 查询方向 | prev向前,next向后(需与from参数同时搭配使用) | startTime | long | false | NA | 开始时间戳(s) | 秒级时间戳 |
endTime | long | false | NA | 结束时间戳(s) | 秒级时间戳 |
Response:
{
"code": 0,
"msg": "",
"data": [
{
"direction":1,
"holdPrice":0,
"multiple":0,
"symbol":"btcusdt",
"tradeBfxFee":0,
"tradeCount":0.01,
"tradeDeposit":0,
"tradeFee":0.0002,
"tradeId":86,
"tradeIncome":0,
"tradePrice":10685.35,
"tradeTime":1570771804,
"tradeType":0
},
{
"direction":2,
"holdPrice":0,
"multiple":0,
"symbol":"btcusdt",
"tradeBfxFee":0,
"tradeCount":0.1,
"tradeDeposit":0,
"tradeFee":21.37026,
"tradeId":84,
"tradeIncome":0,
"tradePrice":10685.13,
"tradeTime":1570771031,
"tradeType":0
},
...
]
}
响应数据
字段名称 | 数据类型 | 描述 |
---|---|---|
direction | integer | 方向,1-买,2-卖 |
holdPrice | float | 持仓价(合约交易才有,现货为0) |
multiple | integer | 杆杠倍数(合约交易才有,现货为0) |
symbol | string | 交易对名称 |
tradeBfxFee | float | BFX平台币抵扣交易手续费 |
tradeCount | float | 成交数量 |
tradeDeposit | float | 成交保证金(合约交易才有,现货为0) |
tradeFee | float | 交易手续费 |
tradeId | long | 交易id |
tradeIncome | float | 盈亏额(合约交易才有,现货为0) |
tradePrice | float | 成交价 |
tradeTime | long | 成交时间 |
tradeType | integer | 交易类型,1-多单开仓,2-多单平仓,3-空单开仓,4-空单平仓(合约交易才有,现货为0) |
Websocket行情数据
简介
接入URL
行情请求地址
wss://api.bfxnu.com/v1/ws
心跳消息
Response
{
"ping": 1570697959
}
当用户的Websocket客户端连接到BFX的Websocket服务器后,服务器会定期(当前设为5秒)向其发送ping
消息并包含一整数值如下:
{
"ping": 1570697959
}
Subscribe request
{
"pong": 1570697959
}
当用户的Websocket客户端接收到此心跳消息后,应返回pong
消息并包含同一整数值:
{
"pong": 1570697959
}
订阅主题
{
"sub": "kline.spot.btcusdt.15min"
}
成功建立与Websocket服务器的连接后,Websocket客户端发送如下请求以订阅特定主题:
{
"sub": "订阅地址"
}
{
"code": 10000,
"msg": "订阅失败,不支持的类型: kline.spot.btcusdtcccc.15min",
"ts": 1571378705
}
订阅失败后,Websocket客户端将收到:
{
"code": "错误码(0-成功,其他-失败)",
"msg": "错误信息(code=0成功时,此参数为"")",
"ts": "秒级时间戳"
}
{
"code": 0,
"msg": "ok",
"subbed": "kline.spot.btcusdt.15min",
"ts": 1571373335
}
成功订阅后,Websocket客户端将收到确认:
{
"code": "错误码(0-成功,其他-失败)",
"msg": "错误信息(code=0成功时,此参数为"")",
"subbed": "订阅地址",
"ts": "秒级时间戳"
}
{
"ch": "kline.spot.btcusdt.15min",
"ts": 1571373361,
"tick": [
{
"code": "btcusdt",
"first": 8070.65,
"high": 8072.18,
"id": 3453,
"last": 8068.52,
"low": 8068.52,
"time": 1571373900,
"vol": 3.56
}
]
}
之后, 一旦所订阅的主题有更新,Websocket客户端将收到服务器推送的更新消息(push),例如:
{
"ch": "订阅地址",
"ts": "秒级时间戳",
"tick": "市场行情数据"
}
取消订阅
{
"unsub": "kline.spot.btcusdt.15min"
}
取消订阅的格式如下(取消订阅成功无返回值):
{
"unsub": "取消订阅地址"
}
请求数据
Websocket服务器同时支持一次性请求数据(pull)。
{
"req": "kline.spot.btcusdt.15min"
}
请求数据的格式如下:
{
"req": "请求地址"
}
{
"code": 0,
"msg": "",
"rep": "kline.spot.btcusdt.15min",
"ts": 1571377747,
"tick": [
{
"code": "btcusdt",
"first": 3600,
"high": 3900,
"last": 3900,
"low": 3600,
"time": 1551685500,
"vol": 3.5
},
{
"code": "btcusdt",
"first": 3894.47,
"high": 3926.1,
"last": 3918.01,
"low": 3870.9,
"time": 1552024800,
"vol": 53.28
}
]
}
一次性返回的数据:
{
"code": "错误码(0-成功,其他-失败)",
"msg": "错误信息(code=0成功时,此参数为"")",
"rep": "订阅地址",
"ts": "秒级时间戳"
"tick": "市场行情数据"
}
K线数据
主题订阅
一旦K线数据产生,Websocket服务器将通过此订阅主题接口推送至客户端:
kline.$type.$symbol.$interval
Subscribe request
{
"sub": "kline.spot.btcusdt.15min"
}
参数
参数 | 数据类型 | 是否必需 | 描述 | 取值范围 | |
---|---|---|---|---|---|
type | string | true | NA | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
interval | string | true | NA | K线周期 | 1min,3min,5min,具体说明见下方 |
Response
{
"code": 0,
"msg": "",
"subbed": "kline.spot.btcusdt.15min",
"ts": 1571392927
}
响应数据
字段 | 数据类型 | 描述 |
---|---|---|
subbed | string | 订阅地址 |
ts | long | 秒级时间戳 |
Update example
{
"ch": "kline.spot.btcusdt.15min",
"tick": [
{
"code": "btcusdt",
"first": 8070.65,
"high": 8072.18,
"id": 3453,
"last": 8068.52,
"low": 8068.52,
"time": 1571373900,
"vol": 3.56
}
]
}
数据更新字段列表
字段 | 数据类型 | 描述 |
---|---|---|
code | string | 合约名称 |
first | float | 开盘价 |
high | float | 最高价 |
id | long | 记录id |
last | float | 收盘价 |
low | float | 最低价 |
time | long | 时间 |
vol | float | 以报价币种计量的交易量 |
Req request
{
"req": "kline.spot.btcusdt.15min"
}
数据请求
用请求方式一次性获取K线数据:
{
"req": "kline.$type.$symbol.$interval"
}
市场深度行情数据
当市场深度发生变化时,此主题发送最新市场深度更新数据。
主题订阅
market.$type.$symbol.depth
Subscribe request
{
"sub": "market.spot.btcusdt.depth"
}
参数
参数 | 数据类型 | 是否必需 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
type | string | true | NA | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
Response
{
"code": 0,
"msg": "",
"subbed": "market.spot.btcusdt.depth",
"ts": 1571379519
}
响应数据
字段 | 数据类型 | 描述 |
---|---|---|
subbed | string | 订阅地址 |
ts | long | 秒级时间戳 |
Update example
{
"ch": "market.spot.btcusdt.depth",
"ts": 1571379520,
"tick": {
"bids": [
[7897.38,0.02], // [price, amount]
[7897.18,0.13]
// more Market Depth data here
],
"asks": [
[7901.37,0.2],
[7901.16,0.05]
// more Market Depth data here
]
}
}
数据更新字段列表
字段 | 数据类型 | 描述 |
---|---|---|
bids | object | 当前的所有买单, [price(成交价), amount(成交量)], 按price降序 |
asks | object | 当前的所有卖单, [price(成交价), amount(成交量)], 按price降序 |
Req request
{
"req": "market.spot.btcusdt.depth"
}
数据请求
支持数据请求方式一次性获取市场深度数据:
{
"req": "market.$type.$symbol.depth"
}
成交明细
此主题提供市场最新成交明细。
主题订阅
market.$type.$symbol.trade
Subscribe request
{
"sub": "market.spot.btcusdt.trade"
}
参数
参数 | 数据类型 | 是否必需 | 默认值 | 描述 | 取值范围 |
---|---|---|---|---|---|
type | string | true | NA | 市场类型 | contract: 合约, spot: 现货, vcontract: 模拟 |
symbol | string | true | NA | 交易对名称 | btcusdt, ethusdt, htusdt... |
Response
{
"code": 0,
"msg": "",
"subbed": "market.spot.btcusdt.trade",
"ts": 1571383431
}
响应数据
字段 | 数据类型 | 描述 |
---|---|---|
subbed | string | 订阅地址 |
ts | long | 秒级时间戳 |
Update example
{
"ch": "market.spot.btcusdt.trade",
"ts": 1571379520,
"tick": [
{
"amount": 0.85,
"date": 1571383457,
"price": 7895.59,
"tid": 114202,
"type": "buy"
}
]
}
数据更新字段列表
字段 | 数据类型 | 描述 |
---|---|---|
amount | float | 成交量 |
date | long | 成交时间 |
price | float | 成交价 |
tid | long | id |
type | string | 成交方向(buy或sell) |
Req request
{
"req": "market.spot.btcusdt.trade"
}
数据请求
支持数据请求方式一次性获取成交明细数据:
{
"req": "market.$type.$symbol.trade"
}