交易API

来源: bfx 发布时间: 2019-10-23 11:20:30

(2019年10月23日更新)

新版API文档,请参考 https://bfxapi.github.io/docs/v1/contract.html


访问地址:https://www.bfx.nu

 

安全认证

请在“个人中心”-“API申请”页面申请密钥,其中API公钥(AppKey)为访问密钥,API私钥(AppSecret)为用户对请求进行签名的密钥(仅申请时可见)。

 

请求结构

除行情API和公共API外,其余请求必须进行签名,一个合法的请求由以下几部分组成:

API访问密钥(AppKey),为您申请的API公钥。

时间戳(Timestamp),秒级时间戳,请保证时间戳与Internet时间不会相差太多。

必选和可选参数,每一个请求都有必选和可选参数,请参考API接口说明。

签名(Signature),使用签名计算得出的值。

 请使用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" 


签名运算

1、按照ASCII码的顺序对所有参数名称(Signature参数)进行排序,并将参数值和参数名拼接在一起,例如,请求参数:

AppKey=2a188eee1eb043f5a4c596a25146f6a8

Timestamp=1542872151

symbol=btc

orderId=123456

按参数名称排序后为:

AppKey=2a188eee1eb043f5a4c596a25146f6a8

Timestamp=1542872151

orderId=123456

symbol=btc

参数名和参数值拼接后为:

AppKey2a188eee1eb043f5a4c596a25146f6a8Timestamp1542872151orderId123456symbolbtc

2、把拼装好的字符串前后加上AppSecret,并进行utf-8编码,使用MD5算法对编码后的字节流进行摘要,例如,AppSecret为6c2de5eaf7b64fcb9392c65efbbc8df8,则

MD5(6c2de5eaf7b64fcb9392c65efbbc8df8AppKey2a188eee1eb043f5a4c596a25146f6a8Timestamp1542872151orderId123456symbolbtc6c2de5eaf7b64fcb9392c65efbbc8df8)得到的十六进制字符串签名结果为:8320a457eb5addf81461a0342e1b71c6

3、将上述签名值作为参数Signature的取值添加到 API 请求中,最终发送到服务器的API请求为:

https://www.bfx.nu/tradeApi/order.do?AppKey=2a188eee1eb043f5a4c596a25146f6a8&Timestamp=1542872151&symbol=btc&orderId=123456&Signature=8320a457eb5addf81461a0342e1b71c6

 

公共API

GET /commonApi/symbols.do 查询平台支持的合约名称或现货交易对

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

type

false

string

市场类型

contract

contract合约交易, spot现货交易

响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

array

持仓集合

失败时无此值

data说明:

"data": [

{

"symbol": 合约名称或现货交易对

"pricePrecision": 价格精度位数

"amountPrecision": 数量精度位数

"multiples": 支持的杆杠,","号分隔

}

]

 

GET /commonApi/currencys.do 查询平台支持的币种

请求参数:无

响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

array

持仓集合

失败时无此值

data说明:

"data": [

{

"btc",

"eth",

...

}

]

 

用户资产API

GET /userApi/accounts.do 用户资产查询

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

type

false

string

市场类型

contract

contract, spot

响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

array

持仓集合

失败时无此值

data说明:

"data": [

{

"symbol": 合约名称或现货币种

"available": 可用资金

"frozen": 冻结资金

}

]

 

交易API

POST /tradeApi/orders/place.do 下单(开仓)

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

type

false

string

市场类型

contract

contract, spot

symbol

true

string

合约名称或交易对


btc, eth, eos...

amount

true

string

下单数量



price

true

string

下单价格



multiple

true

int

杆杠倍数



operation

true

string

下单方向


buy买,sell卖空

响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

string

订单id

失败时无此值

data说明:

"data": 订单id

 

POST /tradeApi/positions/close.do 平仓

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

type

false

string

市场类型

contract

contract, spot

symbol

true

string

合约名称


btc, eth, eos...

amount

true

string

平仓数量



price

true

string

平仓价格



positionId

true

long

持仓id



响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

string

订单id

失败时无此值

data说明:

"data": 订单id

 

POST /tradeApi/positions.do 合约持仓查询

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

type

false

string

市场类型

contract

contract, vcontract

symbol

true

string

合约名称


btc, eth, eos...

响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

array

持仓集合

失败时无此值

data说明:

"data": [

{

"symbol": 合约名称或币币交易对

"positionId": 持仓id

"direction": 方向,1-多仓,2-空仓

"multiple": 杆杠倍数

"allCount": 持仓总数量 

"holdCount": 可用持仓数量 

"lockCount": 冻结持仓数量 

"avgPrice": 持仓均价

"deposit": 保证金

"floatingProfitLoss": 浮动盈亏

"profitLossRatio": 盈亏比

"forcedLiquidationPrice": 强平价格

}

]

 

POST /tradeApi/orders/cancel.do 撤销订单

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

type

false

string

市场类型

contract

contract, spot

symbol

true

string

合约名称或交易对


btc, eth, eos...

orderId

true

string

订单id



响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

array

订单id

失败时无此值

data说明:

"data": 订单id

 

POST /tradeApi/orders/batchCancel.do 按条件批量撤销订单

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

type

false

string

市场类型

contract

contract, spot

symbol

true

string

合约名称或交易对


btc, eth, eos...

side

True

string

订单类型


all所有, buy买单, sell卖单

响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

array

订单id

失败时无此值

data说明:

"data": {

"successCount": 取消成功订单数

"failedCount": 取消失败订单数

 

}

 

GET /tradeApi/orders.do 按条件查询订单

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

type

false

string

市场类型

contract

contract, spot

symbol

true

string

合约名称或交易对


btc, eth, eos...

states

true

string

订单状态集合用”,”号分开

submitted

submitting提交中,submitted已提交

startTime

false

long

开始时间戳(s)



endTime

false

long

结束时间戳(s)



size

false

int

订单数

10

[1-100]

响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

array

订单集合

失败时无此值

data说明:

"data": [

{

"symbol": 合约名称或币币交易对

"orderId": 订单id

"state": 订单状态,submitting提交中,submitted已提交,filled已成交,canceled已撤销

"amount": 下单数量

"dealAmount": 已成交数量 

"undealAmount": 未成交数量 

"price": 下单价格

"createTime": 下单时间

"direction": 下单方向,1-买入,2-卖空

"priority": 订单类型,1-开仓,2-平仓(合约交易)

"multiple": 杆杠倍数(合约交易)

"deposit": 保证金(合约交易)

}

]

 

GET /tradeApi/order.do 查询单个订单信息

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

type

false

string

市场类型

contract

contract, spot

symbol

true

string

合约名称或交易对


btc, eth, eos...

orderId

true

string

订单id



响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

array

订单集合

失败时无此值

data说明:

"data": {

"symbol": 合约名称或币币交易对

"orderId": 订单id

"state": 订单状态

"amount": 下单数量

"dealAmount": 已成交数量 

"undealAmount": 未成交数量 

"price": 下单价格

"createTime": 下单时间

"direction": 下单方向,1-买入,2-卖空

"priority": 订单类型,1-开仓,2-平仓(合约交易)

"multiple": 杆杠倍数(合约交易)

"deposit": 保证金(合约交易)

}

 

POST /tradeApi/trades.do 交易记录查询

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

type

false

string

市场类型

contract

contract, vcontract

symbol

true

string

合约名称


btc, eth, eos...

startTime

false

long

开始时间戳(s)



endTime

false

long

结束时间戳(s)



from

false

long

起始id



direct

false

string

查询方向


prev向前,next向后;与from搭配

size

false

int

订单数

10

[1-100]

响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

array

交易记录集合

失败时无此值

data说明:

"data": [

{

"symbol": 合约名称或币币交易对

"tradeId": 交易id

"tradeType": 交易类型,1-多单开仓,2-多单平仓,3-空单开仓,4-空单平仓

"direction": 方向,1-买,2-卖

"multiple": 杆杠倍数

"holdPrice": 持仓价 

"tradePrice": 成交价

"tradeCount": 成交数量

"tradeDeposit": 成交保证金

"tradeIncome": 盈亏额

"tradeFee": 交易手续费

"tradeTime": 成交时间

}

]

 

合约账户转入转出API

POST /transferApi/transfer.do 合约账户转入转出

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

type

false

string

市场类型

contract

contract, vcontract

symbol

true

string

合约名称


btc, eth, eos...

amount

true

string

数量



operation

true

string

操作方向


in转入,out转出

响应数据:

参数名称

是否必须

描述

取值范围

code

true

错误码

0-成功,其他-失败

msg

false

错误信息


data

false

记录id

失败时无此值

data说明:

"data": 记录id

 

GET /transferApi/records.do 按条件获取合约多个转入转出记录

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

type

false

string

市场类型

contract

contract, vcontract

symbol

true

string

合约名称


btc, eth, eos...

side

true

string

转入或转出数据


all所有, in转入, out转出

startTime

false

long

开始时间戳(s)



endTime

false

long

结束时间戳(s)



from

false

long

起始id



direct

false

string

查询方向


prev向前,next向后;与from搭配

size

false

int

记录数

10

[1-100]

响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

array

记录数据

失败时无此值

data说明:

"data": [

{

"symbol": 合约名称或币币交易对

"recordId": 记录id

"amount": 转账数量

"operation": 操作方向,1-转入,2-转出

"recordTime": 操作时间

}

]

 

GET /transferApi/record.do 获取单个转入转出记录

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

type

false

string

市场类型

contract

contract, spot

symbol

true

string

合约名称


btc, eth, eos...

recordId

true

long

记录id



响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

object

记录数据

失败时无此值

data说明:

"data": {

"symbol": 合约名称或币币交易对

"recordId": 记录id

"amount": 转账数量

"operation": 操作方向,1-转入,2-转出

"createTime": 操作时间

}

 

兑换API(只能是USD到币,或币到USD)

POST /exchangeApi/exchange.do 兑换下单

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

originCoinName

true

string

源币种名称


btc, eth, eos...

targetCoinName

true

string

目标币种名称


btc, eth, eos..

quantity

true

string

数量



响应数据:

参数名称

是否必须

描述

取值范围

code

true

错误码

0-成功,其他-失败

msg

false

错误信息


data

false

记录id

失败时无此值

data说明:

"data": 记录id

 

GET /exchangeApi/records.do 按条件获取多个兑换记录

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

originCoinName

true

string

源币种名称


btc, eth, eos...

targetCoinName

true

string

目标币种名称


btc, eth, eos...

startTime

false

long

开始时间戳(s)



endTime

false

long

结束时间戳(s)



from

false

long

起始id



direct

false

string

查询方向


prev向前,next向后;与from搭配

size

false

int

记录数

10

[1-100]

响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

array

记录数据

失败时无此值

data说明:

"data": [

{

"recordId": 记录id

"originCoinName": 源币种名称

"targetCoinName": 目标币种名称

"oriAmount": 兑换金额

"targetAmount": 兑换数量

"presentPrice": 兑换价格

"obtainAmount": 实际所得数量

"state": 状态,processing处理中,success兑换成功,canceled已取消

"avgPrice": 成交价格

"recordTime": 时间

}

]

 

GET /exchangeApi/record.do 获取单个兑换记录

请求参数:

参数名称

是否必须

类型

描述

默认值

取值范围

recordId

true

long

记录id



响应数据:

参数名称

是否必须

类型

描述

取值范围

code

true

int

错误码

0-成功,其他-失败

msg

false

string

错误信息


data

false

object

记录数据

失败时无此值

data说明:

"data": {

"recordId": 记录id

"originCoinName": 源币种名称

"targetCoinName": 目标币种名称

"oriAmount": 兑换金额

"targetAmount": 兑换数量

"presentPrice": 兑换价格

"obtainAmount": 实际所得数量

"state": 状态,processing处理中,success兑换成功,canceled已取消

"avgPrice": 成交价格

"recordTime": 时间

}