BBX合约交易Open API

1.测试环境的restapi地址:https://devapi.bbx.com
2.正式环境的restapi地址:https://api.bbx.com
签名方法说明:
注:公共信息接口不需要签名
Header:

1. access_key,sercet_key:从bbx系统申请而来
2.发送的BODY数据格式是json,必须在json格式中添加”nonce”字段(表示时间戳)。将添加了nonce字段的json序列化成字符串作为发送消息body。
3.在请求头中添加“Bbx-Ts” 字段,值为:当前UTC时间的时间戳,单位微秒
4.在请求头中添加“Bbx-Sign” 字段,值为:md5(body+ sercet_key+ts(字符串));
5.在请求中添加“Bbx-Accesskey”字段,值位bbx系统提供的access_key

Python 例子

def api_key_get(url, access_key, secret_key, params=''):
    param_data = urllib.parse.urlencode(params)

    _headers = headers.copy()
    ts = int64(time.time()*1000000)
    // 1541044393000000 当前UTC时间的时间戳,单位微秒
    bbx_sign = secret_key+ts
    _headers['Bbx-Ts'] = ts
    _headers["Bbx-Sign"] = get_md5_value(_str=bbx_sign)
    _headers['Bbx-Accesskey'] = access_key
    _headers['Bbx-ExpiredTs'] = 合约云才需要,是对合约云的apiKey对应的apiSecrect加密后的超时时间,单位是微秒

    response = None
    try:
        response = requests.get(url, param_data, headers=_headers, timeout=5, verify=False)
        if response.status_code == 200:
            return response.json()
        else:
            return
    except BaseException as e:
        if response:
            print("httpGet failed, detail is:%s,%s" % (response.text, e))
        else:
            print("httpGet failed, detail is:%s" % e)
        return


def api_key_post(url, access_key, sercet_key, params):
    params['nonce'] = int(time.time())
    post_data = json.dumps(params)

    _headers = headers.copy()
    ts = int64(time.time()*1000000)
    // 1541044393000000 当前UTC时间的时间戳,单位微秒
    bbx_sign = json.dumps(params) + sercet_key + ts
    _headers['Bbx-Ts'] = ts
    _headers["Bbx-Sign"] = get_md5_value(_str=bbx_sign)
    _headers['Bbx-Accesskey'] = access_key
    _headers['Bbx-ExpiredTs'] = 合约云才需要,是对合约云的apiKey对应的apiSecrect加密后的超时时间,单位是微秒
    response = None
    try:
        response = requests.post(url, post_data, headers=_headers, timeout=30, verify=False)
        if response.status_code == 200:
            return response.json()
        else:
            return
    except BaseException as e:
        if response:
            print("httpGet failed, detail is:%s,%s" % (response.text, e))
        else:
            print("httpGet failed, detail is:%s" % e)
        return


def get_md5_value(_str):
    file_md5 = hashlib.md5()
    file_md5.update(_str.encode(encoding="utf-8"))
    md5value = file_md5.hexdigest()
    return md5value

合约公共信息接口

无需身份验证即可获取合约公共信息

GET 获取合约列表
https://api.bbx.com/v1/ifcontract/contracts?contractID=1

https://api.bbx.com/v1/ifcontract/contracts?contractID=1

Request

Header:

Body:

Response

说明

  1. settle_type 1:自动,2:手动

  2. compensate_type 1:ADL方式,2:盈利均摊方式

  3. contract_type 1:永续,2:期货

  4. 怎么判断合约是正向合约还是反向合约

    如果quote_coin和price_coin是一致的是反向合约,反之是正向合约. 附上简易代码:

     func IsReverse(contract) {
         if contract.QuoteCoin == contract.PriceCoin {
             return true
         }
         return false
     }
    
  5. 怎么获取合约的保证金币

    如果合约是反向合约,合约的BaseCoin是合约的保证金币; 如果合约是正向合约,合约的QuoteCoin是合约的保证金币; 附上简易代码:

     func MarginCoin(contract) string {
         if IsReverse(contract) {
             return contract.BaseCoin
         }
         return contract.QuoteCoin
     }
    
PARAMS

contractID
1

合约ID 如果合约ID参数为空或为0,标识获取所有合约



Example Request
获取合约列表
curl --location --request GET "https://api.bbx.com/v1/ifcontract/contracts?contractID=1"
GET 获取合约的最新行情
https://api.bbx.com/v1/ifcontract/tickers?contractID=1

https://api.bbx.com/v1/ifcontract/tickers?contractID=1

Request

Header:

Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": {
        "tickers": [
            {
                "last_price": "6277.5", // 最后成交价
                "open": "6074.5", // 当天的开盘价
                "close": "6277.5", // 当前的收盘价
                "low": "6261.3", // 当天的最低价
                "high": "6279", // 当天的最高加
                "avg_price": "6274.67",// 均价
                "volume": "20000", // 最后一笔交易量,单位张数,如果要显示btc的交易量,需要volume乘以合约的大小(获取合约信息接口的contract_size固定的)
                "total_volume": "45462", // 24小时总量,单位张数
                "base_coin_volume":"163.9", // 基础币的交易量(币值对前面的币为基础币)
                "quote_coin_volume":"34555.38199999999999998882", // 计价币的交易量(币值对后面的币为计价币)
                "timestamp": 1534315695, // 时间戳
                "rise_fall_rate": "0.033", // 涨幅比例
                "rise_fall_value": "203", // 涨幅值
                "contract_id": 1, // 合约id
                "position_size": "374266", // 未平仓位量
                "volume_day": "45270", // 当天交易量
                "amount24":"28520.77363", // 24小时交易额
                "index_price": "6406.53", // 指数价格
                "fair_basis": "0.000000690", // 基差率
                "fair_value": "0.00442673", // 基差
                "fair_price": "6406.5344267", // 标记价
                "rate": {
                    "quote_rate": "0.0003", // 计价币借贷利率
                    "base_rate": "0.0006", // 基础币借贷利率
                    "interest_rate": "-0.00009999" // 利率
                },
                "premium_index": "-0.0309530479798782534", // 溢价指数
                "funding_rate": "0.0001", // 当前资金费率
                "next_funding_rate": "-0.0304530", // 下一个预计资金费率
                "next_funding_at": "2018-08-15T08:00:01Z" // 下一个结算时间(UTC时间)
            }
        ]
    }
}

说明

PARAMS

contractID
1

合约ID,如果不传该参数,表示请求所有合约的tickers



Example Request
获取合约的最新行情
curl --location --request GET "https://api.bbx.com/v1/ifcontract/tickers?contractID=1"
GET 获取K线行情数据
https://api.bbx.com/v1/ifcontract/quote?contractID=1&startTime=1532610072&endTime=1532656524&unit=5&resolution=M

https://api.bbx.com/v1/ifcontract/quote?contractID=1&startTime=1532610072&endTime=1532656524&unit=5&resolution=M

Request

Header:

Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": [
        {
            "low": "130", // 最低价
            "high": "130", // 最高价
            "open": "130", // 开盘价
            "close": "130", // 收盘价
            "last_price": "130", // 最后一次交易价
            "avg_price": "130", // 均价
            "volume": "10", // 交易量,单位张数
            "base_coin_volume":"163.9", // 基础币的交易量(币值对前面的币为基础币)
                "quote_coin_volume":"34555.38199999999999998882", // 计价币的交易量(币值对后面的币为计价币)
            "timestamp": 1532610000, // 时间戳,单位秒
            "rise_fall_rate": "0", // 涨跌幅比例
            "rise_fall_value": "0" // 涨跌幅值
        }
    ]
}

说明

1.resolution表示获取K线数据的频率类型,M:分钟,H:小时;D:天 2.返回的数据,是根据请求中unit参数,对数据进行了合并,每条数据表示每个unit周期内的行情数据

PARAMS

contractID
1

合约ID

startTime
1532610072

开始时间

endTime
1532656524

结束时间

unit
5

频率

resolution
M

频率单位,M:分钟,H:小时,D:天



Example Request
获取K线行情数据
curl --location --request GET "https://api.bbx.com/v1/ifcontract/quote?contractID=1&startTime=1532610072&endTime=1532656524&unit=5&resolution=M"
GET 获取指数K线数据
http://devapi.bbx.com/v1/ifcontract/indexquote?indexID=1&startTime=1533686400&endTime=1533688400&unit=5&resolution=M

https://api.bbx.com/v1/ifcontract/quote?indexID=1&startTime=1532610072&endTime=1532656524&unit=5&resolution=M

Request

Header:

Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": [
        {
            "low": "130", // 最低价
            "high": "130", // 最高价
            "open": "130", // 开盘价
            "close": "130", // 收盘价
            "last_price": "130", // 最后一次交易价
            "avg_price": "130", // 均价
            "volume": "0", // 交易量
            "timestamp": 1532610000, // 时间戳,单位秒
            "rise_fall_rate": "0", // 涨跌幅比例
            "rise_fall_value": "0" // 涨跌幅值
        }
    ]
}

说明

1.resolution表示获取K线数据的频率类型,M:分钟,H:小时;D:天 2.返回的数据,是根据请求中unit参数,对数据进行了合并,每条数据表示每个unit周期内的行情数据

PARAMS

indexID
1
startTime
1533686400

开始时间

endTime
1533688400

结束时间

unit
5

频率

resolution
M

频率单位,M:分钟,H:小时,D:天



Example Request
获取指数K线数据
curl --location --request GET "http://devapi.bbx.com/v1/ifcontract/indexquote?indexID=1&startTime=1533686400&endTime=1533688400&unit=5&resolution=M"
GET 获取合约的交易记录
https://api.bbx.com/v1/ifcontract/trades?contractID=1

https://api.bbx.com/v1/ifcontract/trades?contractID=1

Request

Header:

Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": {
        // 交易记录列表,按创建时间由近及远排序
        "trades": [
            {
                "order_id": 10116361, // taker order id
                "trade_id": 10116363, // trade id
                "contract_id": 1,     // 合约ID
                "deal_price": "16",   // 成交价
                "deal_vol": "10",     // 成交的合约张数
                "make_fee": "0.04",   // make fee
                "take_fee": "0.12",   // take fee
                "created_at": null,   // 创建时间
                "way": 5,             // 交易方向
                "fluctuation": "0"    // 对行情的影响
            }
        ]
    }
}

说明

  1. way 交易方向

CONTRACT_TRADE_WAY_BUY_OLOS 1 //买为taker,开多买开空卖

CONTRACT_TRADE_WAY_BUY_OLCL 2 //买为taker,开多买平多卖

CONTRACT_TRADE_WAY_BUY_CSOS 3 //买为taker,平空买开空卖

CONTRACT_TRADE_WAY_BUY_CSCL 4 //买为taker,平空买平多卖

CONTRACT_TRADE_WAY_SELL_OSOL 5 //卖为taker,开空卖,开多买

CONTRACT_TRADE_WAY_SELL_OSCS 6 //卖为taker,开空卖,平空买

CONTRACT_TRADE_WAY_SELL_CLOL 7 //卖为taker,平多卖,开多买

CONTRACT_TRADE_WAY_SELL_CLCS 8 //卖为taker,平多卖,平空买

1~4都是买为taker

5~8都是卖为taker

  1. fluctuation,对行情的影响,如本次交易前的最新交易价是10,本次交易的交易价是11,则fluctuation为"1"
PARAMS

contractID
1

合约ID



Example Request
获取合约的交易记录
curl --location --request GET "https://api.bbx.com/v1/ifcontract/trades?contractID=1"
GET 获取合约的深度
https://api.bbx.com/v1/ifcontract/depth?contractID=1&count=10

https://api.bbx.com/v1/ifcontract/depth?contractID=1&count=10

Request

contractID int // 合约id,必须传

count int // 获取数量,不传表示获取全部

Header:

Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": {
        "sells": [   // 卖方列表
            {
                "price": "60", // 价格
                "vol": "20" // 合约的张数
            }
        ],
        "buys": [] // 买方列表
    }
}

说明

  1. 深度列表的数据已经按照价格由高到低做完排序了.
PARAMS

contractID
1

合约ID,必须传

count
10

获取深度数量,不传数量表示获取全部



Example Request
获取合约的深度
curl --location --request GET "https://api.bbx.com/v1/ifcontract/depth?contractID=1&count=10"
GET 获取合约仓位的自动减仓排序表
http://devapi.bbx.com/v1/ifcontract/pnls?contractID=1

http://api.bbx.com/v1/ifcontract/pnls?contractID=1

Request

Header:

Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": {
// 合约自动减仓排序表
"pnls": [
{
"contract_id": 1,
// 合约看多仓位自动减仓排序表
"long_pnls": [
    {
        // 该分位的仓位pnl范围min~max
        "min_pnl": "-0.0379107725788900979",
        "max_pnl": "-0.0103298131866111136",
        "quan_tile": 40 // 五分位值
    },
    {
        "min_pnl": "-0.0103298131866111136",
        "max_pnl": "0",
        "quan_tile": 60 // 五分位值
    }
],
 // 合约看空仓位自动减仓排序表
"short_pnls": [
    {
        "min_pnl": "-49962.3980439671407168788",
        "max_pnl": "0",
        "quan_tile": 20
    }
]
            }
        ]
    }
}

说明

  1. quan_tile:五分位,分别有20,40,60,80,100,quan_tile值越大,说明仓位发生自动减仓的可能性越大.可以用这些值表示自动减仓警示灯的个数,20:1个灯,40:2个灯,,,,100:5个灯

2.

PARAMS

contractID
1

合约ID



Example Request
获取合约仓位的自动减仓排序表
curl --location --request GET "http://devapi.bbx.com/v1/ifcontract/pnls?contractID=1"
GET 获取指数列表
http://devapi.bbx.com/v1/ifcontract/indexes

https://api.bbx.com/v1/ifcontract/indexes

Request

Header:

Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": [
        {
            "index_id": 1, // 指数ID
            "name": "BTC", // 指数名称
            "base_coin": "BTC", // 指数基础币
            "quote_coin": "USDT", // 指数计价币
            "brief_en": "", // 英文简称
            "brief_zh": "", // 中文简称
            "price_unit": "0.000001", // 价格精度
            "created_at": "2018-07-30T16:04:08Z",
            "contract": [
                {
                    // 跟指数关联的合约对象
                    // 数据与获取合约接口的结构一致
                },
                {

                },
                {

                }
            ]
        }
    ]
}

说明



Example Request
获取指数列表
curl --location --request GET "http://devapi.bbx.com/v1/ifcontract/indexes"
GET 获取资金费率
http://devapi.bbx.com/v1/ifcontract/fundingrate?contractID=2

https://api.bbx.com/v1/ifcontract/fundingrate?contractID=2

Request

Header:

Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": [
        {
            "rate": "-0.0060483184843194741", // 资金费率
            "timestamp": 1534320000 // 时间戳
        },
        {
            "rate": "0.1041766553400505803",
            "timestamp": 1534291200
        },
        {
            "rate": "-0.0000075208676062097",
            "timestamp": 1534233600
        },
        {
            "rate": "0.0000055544951485125",
            "timestamp": 1534204800
        },
        {
            "rate": "-0.0000055752719675812",
            "timestamp": 1534176000
        },
        {
            "rate": "-0.0000050117480324386",
            "timestamp": 1534147200
        },
        {
            "rate": "-0.0000028117663433602",
            "timestamp": 1534118400
        },
        {
            "rate": "-0.0000028677962672775",
            "timestamp": 1534089600
        },
        {
            "rate": "-0.0000024207065189834",
            "timestamp": 1534060800
        },
        {
            "rate": "-0.0000033174090593948",
            "timestamp": 1534032000
        },
        {
            "rate": "-0.0000713580166664452",
            "timestamp": 1534003200
        },
        {
            "rate": "0.000001700893846421",
            "timestamp": 1533974400
        },
        {
            "rate": "-0.0000028811048580683",
            "timestamp": 1533945600
        },
        {
            "rate": "-0.0000014765150285557",
            "timestamp": 1533916800
        },
        {
            "rate": "0.0000000201923644428",
            "timestamp": 1533888000
        },
        {
            "rate": "-0.0000028934701223295",
            "timestamp": 1533859200
        }
    ]
}

说明

PARAMS

contractID
2


Example Request
获取资金费率
curl --location --request GET "http://devapi.bbx.com/v1/ifcontract/fundingrate?contractID=2"
GET 实时数据(WebSocket)
ws://devapi.bbx.com/v1/ifcontract/realTime

地址

  • 测试环境 ws://devapi.bbx.com/v1/ifcontract/realTime

  • 生产环境 wss://api.bbx.com/v1/ifcontract/realTime

命令

  • 基本命令格式发送格式 {"action":"<command>","args":["arg1", "arg2", "arg3"]}

  • 命令返回格式

    {
      "action":"<command>",
      "success":true,         // 成功-true, 失败-false
      "group":"<group>",
      "request":{
          // 原始请求
      },
      "error":""  // 失败时有这个字段返回具体错误原因
    }
    
  • 支持命令列表

    subscribe   // 订阅
    unsubscribe //取消订阅
    

主题

  • 主题列表

  • 说明

  1. 除Ticker之外目前所有主题都跟合约ID相关
  2. 请求订阅命令,主题列表主题的构成方式为<主题:合约ID>,例如需要订阅合约(2)的实时深度和5分钟行情的命令为 {"action":"subscribe","args":["Depth:2","QuoteBin5m:2"]}

订阅数据格式

  • 基本格式如下
    {
      "group":"",
      "data":{
      }
    }
    // 订阅主题不同,data字段格式不同。data的具体以接口返回为准,请求输入对应主题的订阅命令获取
    

认证

订阅私有数据

心跳

  • 服务端会每隔10秒发送一个PingFrame到客户端,正常情况下客户端均会回复一个PongFrame。如果服务端连续5个PingFrame均没有收到应答。并且在此期间没有收到客户端的其他数据,服务端会主动断开链接。大部分浏览器收到PingFrame后均会自动给以PongFrame应答,不需要业务层实现。
  • 服务端在业务层实现了一个PingMessage Handle,收到PingMessage后会自动回复一个PongMessage,客户端底层如果没有办法处理websocket协议层的ping/pong frame可以通过业务层的ping/pong message判断链接是否健康。具体消息如下
    // ping
    {"action":"ping"}
    // pong
    {"group":"System","data":"pong"}
    

测试

  • 任何标准的Websocket客户端都可以用来测试
  • Chrome websocket测试插件
    https://chrome.google.com/webstore/search/WebSocket%20Test%20Client?utm_source=chrome-ntp-icon
    


Example Request
实时数据(WebSocket)
curl --location --request GET "ws://devapi.bbx.com/v1/ifcontract/realTime"

合约交易相关接口

POST消息特别说明

  • 发送的数据格式是json
  • 必须在json格式中添加”nonce”字段(表示时间戳)。将添加了nonce字段的json序列化成字符串作为发送消息body。

签名验证方式

格式说明

  • access_key,secret_key:从bbx系统申请而来
  • 在请求头添加下表的字段:
Header Name Description
Bbx-Ver 1.0
Bbx-Dev API
Bbx-Accesskey 申请得到的access_key。
Bbx-Ts 请求方生成的当前UTC时间的时间戳(单位:微秒
Bbx-Sign MD5(PostData+secret_key+Bbx-Ts),其中PostData为POST请求时的body数据,GET请求时为空。

Python 例子

def api_key_get(url, access_key, secret_key, params=''):
    param_data = urllib.parse.urlencode(params)

    _headers = headers.copy()
    ts = int64(time.time()*1000000)
    // 1541044393000000 当前UTC时间的时间戳,单位微秒
    bbx_sign = secret_key+ts
    _headers['Bbx-Ts'] = ts
    _headers["Bbx-Sign"] = get_md5_value(_str=bbx_sign)
    _headers['Bbx-Accesskey'] = access_key
    _headers['Bbx-ExpiredTs'] = 合约云才需要,是对合约云的apiKey对应的apiSecrect加密后的超时时间,单位是微秒

    response = None
    try:
        response = requests.get(url, param_data, headers=_headers, timeout=5, verify=False)
        if response.status_code == 200:
            return response.json()
        else:
            return
    except BaseException as e:
        if response:
            print("httpGet failed, detail is:%s,%s" % (response.text, e))
        else:
            print("httpGet failed, detail is:%s" % e)
        return


def api_key_post(url, access_key, sercet_key, params):
    params['nonce'] = int(time.time())
    post_data = json.dumps(params)

    _headers = headers.copy()
    ts = int64(time.time()*1000000)
    // 1541044393000000 当前UTC时间的时间戳,单位微秒
    bbx_sign = post_data + sercet_key + ts
    _headers['Bbx-Ts'] = ts
    _headers["Bbx-Sign"] = get_md5_value(_str=bbx_sign)
    _headers['Bbx-Accesskey'] = access_key
    _headers['Bbx-ExpiredTs'] = 合约云才需要,是对合约云的apiKey对应的apiSecrect加密后的超时时间,单位是微秒
    response = None
    try:
        response = requests.post(url, post_data, headers=_headers, timeout=30, verify=False)
        if response.status_code == 200:
            return response.json()
        else:
            return
    except BaseException as e:
        if response:
            print("httpGet failed, detail is:%s,%s" % (response.text, e))
        else:
            print("httpGet failed, detail is:%s" % e)
        return


def get_md5_value(_str):
    file_md5 = hashlib.md5()
    file_md5.update(_str.encode(encoding="utf-8"))
    md5_val = file_md5.hexdigest()
    return md5_val

POST 批量提交订单
https://api.bbx.com/v1/ifcontract/batchOrders

https://api.bbx.com/v1/ifcontract/batchOrders

  1. access_key,sercet_key:从bbx系统申请而来
  2. 发送的BODY数据格式是json,必须在json格式中添加”nonce”字段(表示时间戳)。将添加了nonce字段的json序列化成字符串作为发送消息body。
  3. 在请求头中添加“Bbx-Ts” 字段,值为:当前UTC时间的时间戳,单位微秒
  4. 在请求头中添加“Bbx-Sign” 字段,值为:md5(body+ sercet_key+ts(字符串));
  5. 在请求中添加“Bbx-Accesskey”字段,值位bbx系统提供的access_key

Python 例子

def api_key_get(url, access_key, secret_key, params=''):
    param_data = urllib.parse.urlencode(params)

    _headers = headers.copy()
    ts = int64(time.time()*1000000)
    // 1541044393000000 当前UTC时间的时间戳,单位微秒
    bbx_sign = secret_key+ts
    _headers['Bbx-Ts'] = ts
    _headers["Bbx-Sign"] = get_md5_value(_str=bbx_sign)
    _headers['Bbx-Accesskey'] = access_key
    _headers['Bbx-ExpiredTs'] = 合约云才需要,是对合约云的apiKey对应的apiSecrect加密后的超时时间,单位是微秒

    response = None
    try:
        response = requests.get(url, param_data, headers=_headers, timeout=5, verify=False)
        if response.status_code == 200:
            return response.json()
        else:
            return
    except BaseException as e:
        if response:
            print("httpGet failed, detail is:%s,%s" % (response.text, e))
        else:
            print("httpGet failed, detail is:%s" % e)
        return


def api_key_post(url, access_key, sercet_key, params):
    params['nonce'] = int(time.time())
    post_data = json.dumps(params)

    _headers = headers.copy()
    ts = int64(time.time()*1000000)
    // 1541044393000000 当前UTC时间的时间戳,单位微秒
    bbx_sign = json.dumps(params) + sercet_key + ts
    _headers['Bbx-Ts'] = ts
    _headers["Bbx-Sign"] = get_md5_value(_str=bbx_sign)
    _headers['Bbx-Accesskey'] = access_key
    _headers['Bbx-ExpiredTs'] = 合约云才需要,是对合约云的apiKey对应的apiSecrect加密后的超时时间,单位是微秒
    response = None
    try:
        response = requests.post(url, post_data, headers=_headers, timeout=30, verify=False)
        if response.status_code == 200:
            return response.json()
        else:
            return
    except BaseException as e:
        if response:
            print("httpGet failed, detail is:%s,%s" % (response.text, e))
        else:
            print("httpGet failed, detail is:%s" % e)
        return


def get_md5_value(_str):
    file_md5 = hashlib.md5()
    file_md5.update(_str.encode(encoding="utf-8"))
    md5value = file_md5.hexdigest()
    return md5value

Body示例:

{
    "orders":[
        {
           "contract_id":3,
           "category":1,
           "custom_id":1, // 客户端自定义ID
           "way":4,
           "open_type":1,
           "leverage":100,
           "price":998,
           "vol":10
        },
        {
           "contract_id":3,
           "category":1,
           "custom_id":2,
           "way":4,
           "open_type":1,
           "leverage":100,
           "price":998,
           "vol":10
        }
    ],
   "nonce":1533876299 // 时间戳
}

开仓订单消息的body

   "contract_id":1, // 合约ID
   "category":1,  // 订单类型,只能是1,2,7三种类型,否则返回无效参数
   "way":4,  // 订单方向,必须传,否则返回无效参数
   "open_type":1, // 开仓方式,必须传,否则返回无效参数
   "custom_id":1, // 客户端自定义ID,必须传,否则返回无效参数
   "leverage":10, // 杠杆,必须满足合约配置的杠杆有效范围,否则返回无效参数
   "price":16,  // 价格,必须满足合约配置的价格精度要求,精度是合约配置价精度乘以10,否则返回无效请求
   "vol":10,  // 量,必须满足合约配置的量精度,否则返回无效请求


平仓订单消息的body

   "contract_id":1, // 合约ID
   "category":1,  // 订单类型,只能是1,2,7三种类型,否则返回无效参数
   "position_id":12121,  // 仓位ID,必须带仓位ID,否则返回无效参数
   "way":3,  // 订单方向,订单方向必须和合约方向保持一致,否则返回无效请求
   "custom_id":1, // 客户端自定义ID,必须传,否则返回无效参数
   "price":16,  // 价格,必须满足合约配置的价格精度要求,精度是合约配置价精度乘以10,否则返回无效请求
   "vol":10,  // 量,必须满足合约配置的量精度,否则返回无效请求

注意:平仓订单不能传open_type,否则返回无效参数

Response

  • 成功:

    {
      "errno": "OK",
      "message": "Success",
      "data": {
          "orders": [
              {
                  "custom_id": 1,
                  "order_id": 10540013
              },
              {
                  "custom_id": 2,
                  "order_id": 10540014
              }
          ]
      }
    }
    
  • 失败:

    {
      "errno": "OK",
      "message": "Success",
      "data": {
          "orders": [
              {
                  "custom_id": 1,
                  "err": {
                      "http_err":405,
                      "err_code":"LIQUIDATE_ORDER",
                      "err_msg":"订单将触发强平"
                  }
              },
              {
                  "custom_id": 2,
                  "order_id": 10540014
              }
          ]
      }
    }
    

说明

  1. category 订单类型 1:限价单,2:市价单,7:被动委托限价单
  2. way 订单方向 1:开多,2:平空,3:平多,4:开空
  3. open_type 开仓方式 1:逐仓,2:全仓
HEADERS

Content-Type
application/json
Bbx-Accesskey
123123123213

在合约云中是apiKey

Bbx-Sign
MD5(postdata+secretKey+Bbx-Ts)

如果是get方法,sign = MD5(secretKey+Bbx-Ts).在合约云中secretKey是apiKey对应apiSecrect加密后生成的token.

Bbx-Ver
1008
Bbx-Dev
WEB
Bbx-Ts
1541044393000000

微秒

Bbx-ExpiredTs
44393000000

微秒,合约云才需要,apiKey对应apiSecrect加密后生成的token的过期时间

BODY raw



Example Request
批量提交订单
curl --location --request POST "https://api.bbx.com/v1/ifcontract/batchOrders" \
  --header "Bbx-Accesskey: 123123123213" \
  --header "Bbx-Sign: MD5(postdata+secretKey+Bbx-Ts)" \
  --header "Bbx-Ver: 1008" \
  --header "Bbx-Dev: WEB" \
  --header "Bbx-Ts: 1541044393000000" \
  --header "Bbx-ExpiredTs: 44393000000" \
  --data "{
	\"orders\":[
		{
		   \"contract_id\":3,
		   \"category\":1,
		   \"custom_id\":1,
		   \"way\":4,
		   \"open_type\":1,
		   \"leverage\":100,
		   \"price\":998,
		   \"vol\":10
		},
		{
		   \"contract_id\":3,
		   \"category\":1,
		   \"custom_id\":2,
		   \"way\":4,
		   \"open_type\":1,
		   \"leverage\":100,
		   \"price\":998,
		   \"vol\":10
		}
	],
   \"nonce\":1533876299
}"
POST 单次提交订单
https://api.bbx.com/v1/ifcontract/submitOrder

https://api.bbx.com/v1/ifcontract/submitOrder

Response

NULL

说明

  1. category 订单类型 1:限价单,2:市价单
  2. way 订单方向 1:开多,2:平空,3:平多,4:开空
  3. open_type 开仓方式 1:逐仓,2:全仓
HEADERS

Bbx-Ver
1.0.0
Bbx-Dev
web
Bbx-Sign
d1701e739a359ee4c7a5003fe39ef27065c019f687b982a6e98bd375a673ec42
Bbx-Ts
1532428054000000
Bbx-Uid
100039428965
BODY raw



Example Request
单次提交订单
curl --location --request POST "https://api.bbx.com/v1/ifcontract/submitOrder" \
  --header "Bbx-Ver: 1.0.0" \
  --header "Bbx-Dev: web" \
  --header "Bbx-Sign: d1701e739a359ee4c7a5003fe39ef27065c019f687b982a6e98bd375a673ec42" \
  --header "Bbx-Ts: 1532428054000000" \
  --header "Bbx-Uid: 100039428965" \
  --data "{
   \"contract_id\":3,
   \"category\":1,
   \"way\":4,
   \"open_type\":1,
   \"leverage\":100,
   \"price\":998,
   \"vol\":10,
   \"nonce\":1533873979
}"
POST 取消订单
https://api.bbx.com/v1/ifcontract/cancelOrders

https://api.bbx.com/v1/ifcontract/cancelOrders

Header:
    AuthApiHeader (同批量提交订单接口)
Body:
{
    "orders":[
        {
           "contract_id":1,  // 合约ID
           "orders":[
                10116356, // 订单ID
                10116357
            ]
        }
     ],
    "nonce":1531809458  // 时间戳(单位秒)
}

Response

{
    "errno": "OK",
    "message": "Success",
    "data": {
        // 取消成功的列表
        "succeed": [
            10116356,
            10116357
        ],
        // 取消失败的列表
        "failed": null
    }
}

说明

HEADERS

Content-Type
application/json
Bbx-Accesskey
123123123213
Bbx-Sign
MD5(postdata+secretKey+Bbx-Ts)
Bbx-Ver
1008
Bbx-Dev
WEB
Bbx-Ts
1541044393000000
BODY raw

{
    "orders":[
		{
		   "contract_id":1,
		   "orders":[
				   10116356,
				   10116357
		    ]
		}
     ],
    "nonce":1531968125
}


Example Request
取消订单
GET 获取用户仓位
https://api.bbx.com/v1/ifcontract/userPositions?coinCode=USDT&status=3&offset=1&size=0

https://api.bbx.com/v1/ifcontract/userPositions?contractID=1&status=3&offset=0&size=0

Header:
    AuthApiHeader(同批量提交订单接口)
Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": {
        "positions": [
            {
                "position_id": 10116365,
                "account_id": 10,
                "contract_id": 1,
                "hold_vol": "10",
                "freeze_vol": "0",
                "close_vol": "0",
                "hold_avg_price": "16",
                "close_avg_price": "0",
                "liquidate_price": "20.99",
                "im": "100.075",
                "mm": "50",
                "realised_profit": "-0.075",
                "earnings": "-0.075",
                "hold_fee": "0",
                "open_type": 1,
                "position_type": 2,
                "status": 1,
                "errno": 0,
                "created_at": "2018-07-17T03:04:26.108983Z",
                "updated_at": "2018-07-17T03:04:26.098404Z"
            }
        ]
    }
}
"position_id": 10116365, // 仓位ID

"account_id": 10,  // 用户ID

"contract_id": 1,  // 合约ID

"hold_vol": "10",  // 当前持有量

"freeze_vol": "0", // 冻结量

"close_vol": "0",  // 已平仓量

"hold_avg_price": "16", // 开仓均价

"close_avg_price": "0", // 已平仓,平仓均价

"liquidate_price": "20.99", // 强平价

"im": "100.075", // 开仓保证金

"mm": "50", // 维持保证金

"realised_profit": "-0.075", // 以实现盈亏

"earnings": "-0.075", // 已结算收益

"hold_fee": "0",  // 持仓产生的资金费用

"open_type": 1,  // 开仓方式,1:逐仓,2:全仓

"position_type": 2, // 仓位类型,1:开多,2:开空

"status": 1, // 状态,1:持仓中,2:系统托管中,4:已平仓

"errno": 0, // 平仓原因,

"created_at": "2018-07-17T03:04:26.108983Z",

"updated_at": "2018-07-17T03:04:26.098404Z"

errno 平仓原因有以下几种

1:平仓委托中

2:破产委托中

3:平仓委托结束

4:破产委托结束

5:爆仓

6:自动减仓(主动发起方)

7:自动减仓(被动接收方)

说明

  1. 仓位价值的计算:

    a.如果是正向合约,仓位价值 = 持仓量 * 合约大小 * 开仓均价

    b.如果是反向合约,仓位价值 = 持仓量*合约大小/开仓均价

    附上简易代码:

    vol:持仓量;
    
    price:开仓均价;
    
    contractSize:合约大小;
    
    isReverse:是否是反向合约,见:[合约公共信息]的[获取合约列表];
    
     func calculatePV(
         vol,price,contractSize,isReverse bool) {
         if isReverse {
             pv = vol*contractSize/price
             return pv
         }
         pv = vol*contractSize*price
         return pv
     }
    
  2. 仓位的逻辑开仓方向

     func PositionLogicType(position,isReverse) POSITION_TYPE {
         if !isReverse {
             return position.PositionType
         }
         if position.PositionType == POSITION_TYPE_LONG {
             return POSITION_TYPE_SHORT
         }
         return POSITION_TYPE_LONG
     }
    
  3. 仓位强平价的计算:

     // position:仓位对象
    
     // availableAssetsVol:合约资产的有效可用余额,如果仓位是逐仓,不需要考虑余额,该值为零;只有当仓位是全仓时才需要;
    
     // contractSize:合约大小
    
     // takeFeeRatio:合约配置的take fee 手续费比例
    
     // isReverse:是否是反向合约
    
     func CalculateLiquidatePrice(
         position,
         availableAssetsVol,
         contractSize,
         takeFeeRatio,
         isReverse) {
         S = contractSize
         T = takeFeeRatio
         HV = position.HoldVol
         HP = position.HoldAvgPrice
         // 计算仓位价值
         PV = calculatePV(
             HV,
             HP,
             S,
             isReverse)
         // 当前仓位剩余的保证金
         IM = position.IM.Add(availableAssetsVol)
         // restM:达到强平线时,仓位出现的亏损
         restM = IM.Sub(position.MM)
         D = 0
         M = 0
         if PositionLogicType(position,isReverse) == POSITION_TYPE_LONG {
             M = PV - restM
             D = HV*S*(1-T)
         } else {
             M = PV+restM
             D = HV*S*(1+T)
         }
         if D <= 0 {
             if position.PositionType == POSITION_TYPE_LONG {
                 return 10000000000000000
             } else {
                 return 0
             }
         }
         LP = M.Div(D)
         // 反向合约价格是1/P
         if isReverse {
             LP = 1/LP
         }
         return LP
     }
    
  4. 按合理价格计算仓位的未实现盈亏:

     // CalculatePositionUnrealizedProfit 未实现盈亏
     func CalculatePositionUnrealizedProfit(
         position,
         fairPrice,
         contractSize,
         isReverse)  {
         if position.PositionType == POSITION_TYPE_LONG {
             return CalculateLongPositionUnrealizedProfit(
                 position,
                 fairPrice,
                 contractSize,
                 isReverse)
         } else{
             return CalculateShortPositionUnrealizedProfit(
                 position,
                 fairPrice,
                 contractSize,
                 isReverse)
         }
     }
    
     // CalculateLongPositionUnrealizedProfit 计算多仓未实现盈亏
     func CalculateLongPositionUnrealizedProfit(
         position,
         fairPrice,
         contractSize,
         isReverse) {
         if isReverse {
             openValue := position.HoldVol*contractSize/(position.HoldAvgPrice)
             closeValue := position.HoldVol*contractSize/(fairPrice)
             return openValue - (closeValue)
         }
         openValue := position.HoldVol*(contractSize)*(position.HoldAvgPrice)
         closeValue := position.HoldVol*(contractSize)*(fairPrice)
         return closeValue - (openValue)
     }
    
     // CalculateShortPositionUnrealizedProfit 计算空仓未实现盈亏
     func CalculateShortPositionUnrealizedProfit(
         position,
         fairPrice,
         contractSize,
         isReverse) {
         if isReverse {
             openValue := position.HoldVol*(contractSize)/(position.HoldAvgPrice)
             closeValue := position.HoldVol*(contractSize)/(fairPrice)
             return closeValue - (openValue)
         }
         openValue := position.HoldVol*(contractSize)*(position.HoldAvgPrice)
         closeValue := position.HoldVol*(contractSize)*(fairPrice)
         return openValue- (closeValue)
     }
    
HEADERS

Content-Type
application/json
Bbx-Accesskey
123123123213
Bbx-Sign
MD5(secretKey+Bbx-Ts)
Bbx-Ver
1008
Bbx-Dev
WEB
Bbx-Ts
1541044393000000
PARAMS

coinCode
USDT

合约账号的coinCode, 也可以不传coinCode,传contractID,只查询某个合约的仓位信息

status
3

仓位状态 1:持仓中 2:系统委托中 4:已平仓 如果请求参数中的status值为3,标识同时请求持仓中和系统委托中的仓位 如果请求参数中的status值为0或者7,标识同时请求所有状态的仓位

offset
1
size
0


Example Request
获取用户仓位
curl --location --request GET "https://api.bbx.com/v1/ifcontract/userPositions?coinCode=USDT&status=3&offset=1&size=0" \
  --header "Bbx-Accesskey: 123123123213" \
  --header "Bbx-Sign: MD5(secretKey+Bbx-Ts)" \
  --header "Bbx-Ver: 1008" \
  --header "Bbx-Dev: WEB" \
  --header "Bbx-Ts: 1541044393000000"
GET 获取用户订单记录
https://api.bbx.com/v1/ifcontract/userOrders?contractID=1&offset=0&size=0&status=0

https://api.bbx.com/v1/ifcontract/userOrders?contractID=1&offset=0&size=0&status=0

Header:
    AuthApiHeader (同批量提交订单接口)
Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": {
        "orders": [
            {
                "order_id": 10284160,
                "contract_id": 1,
                "price": "8",
                "vol": "4",
                "done_avg_price": "0",
                "done_vol": "0",
                "way": 1,
                "category": 1,
                "open_type": 2,
                "make_fee": "0",
                "take_fee": "0",
                "origin": "", // 来源
                "created_at": "2018-07-17T07:24:13.410507Z",
                "finished_at": null,
                "status": 2,
                "errno": 0
            }
        ]
    }
}

说明

"order_id": 10284160, // 订单ID

"contract_id": 1, // 合约ID

"price": "8", // 订单价格

"vol": "4", // 订单量

"done_avg_price": "0", // 成交均价

"done_vol": "0", // 成交量

"way": 1, // 订单方向

"category": 1, // 订单类型

"make_fee": "0", // make fee

"take_fee": "0", // take fee

"origin": "", // 来源

"created_at": "2018-07-17T07:24:13.410507Z",

"finished_at": null, // 结束时间

"status": 2, // 状态

"errno": 0 // 订单结束的原因

category,订单类型

该字段采用二进制按位表示法

0~5位表示订单的基本类型,第6位预留,

第7位为1表示:强平委托单

第8位为1表示:爆仓委托单

第9位为1表示:自动减仓委托单

订单的基本类型有:

1:限价委托

2:市价委托

7:被动委托

status,订单状态有以下几种

1:申报中

2:委托中,表示订单已经进撮合队列,订单信息中的done_vol表示订单成交部分,只要done_vol不为0就表示订单有成交.

4:完成

errno,订单结束的原因

1:用户取消

2:超时,(暂时没有用)

3:用户资产不够,转撤销

4:用户冻结资产不够

5:系统部分转撤销

6:部分平仓导致的部分转撤销

7:自动减仓导致的部分转撤销

8:盈利补偿导致的部分转撤销(暂时没有用)

9:仓位错误导致的部分转撤销

10:类型非法

11:反方向订单存在

HEADERS

Content-Type
application/json
Bbx-Accesskey
123123123213
Bbx-Sign
MD5(secretKey+Bbx-Ts)
Bbx-Ver
1008
Bbx-Dev
WEB
Bbx-Ts
1541044393000000
PARAMS

contractID
1

合约ID

offset
0

offset

size
0

size

status
0

订单状态 1:申报中 2:委托中 4:完成 如果请求参数status=3,标识同时请求申报中和委托中的订单,如果请求参数status=0或者7,标识同时请求所有状态的订单



Example Request
获取用户订单记录
curl --location --request GET "https://api.bbx.com/v1/ifcontract/userOrders?contractID=1&offset=0&size=0&status=0" \
  --header "Bbx-Accesskey: 123123123213" \
  --header "Bbx-Sign: MD5(secretKey+Bbx-Ts)" \
  --header "Bbx-Ver: 1008" \
  --header "Bbx-Dev: WEB" \
  --header "Bbx-Ts: 1541044393000000"
GET 查询订单详情
https://api.bbx.com/v1/ifcontract/userOrderInfo?contractID=1&orderID=10539098

https://api.bbx.com/v1/ifcontract/userOrderInfo?contractID=1&orderID=10539098

Header:
     AuthApiHeader (同批量提交订单接口)
Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": {
        // 订单信息
        "orders": [
            {
                "order_id": 10539098,
                "contract_id": 1,
                "position_id": 10539088,
                "account_id": 10,
                "price": "16",
                "vol": "1",
                "done_avg_price": "16",
                "done_vol": "1",
                "way": 3,
                "category": 1,
                "make_fee": "0.00025",
                "take_fee": "0.012",
                "origin": "", // 来源
                "created_at": "2018-07-23T11:55:56.715305Z",
                "finished_at": "2018-07-23T11:55:56.763941Z",
                "status": 4,
                "errno": 0
            }
        ]
    }
}

说明

HEADERS

Content-Type
application/json
Bbx-Accesskey
123123123213
Bbx-Sign
MD5(secretKey+Bbx-Ts)
Bbx-Ver
1008
Bbx-Dev
WEB
Bbx-Ts
1541044393000000
PARAMS

contractID
1

合约ID

orderID
10539098

订单ID



Example Request
查询订单详情
curl --location --request GET "https://api.bbx.com/v1/ifcontract/userOrderInfo?contractID=1&orderID=10539098" \
  --header "Bbx-Accesskey: 123123123213" \
  --header "Bbx-Sign: MD5(secretKey+Bbx-Ts)" \
  --header "Bbx-Ver: 1008" \
  --header "Bbx-Dev: WEB" \
  --header "Bbx-Ts: 1541044393000000"
GET 获取合约账户信息
https://api.bbx.com/v1/ifcontract/accounts?coinCode=USDT

http://devapi.bbx.com/v1/ifcontract/accounts?coinCode=USDT

Header:
    AuthApiHeader (同批量提交订单接口)
Body:

Response

合约账号列表
"accounts": [
            {
                "account_id": 10, // 账号ID
                "coin_code": "USDT", // 代币名称
                "freeze_vol": "1201.8", // 冻结量
                "available_vol": "8397.65", // 可用余额
                "cash_vol": "0", // 净现金余额
                "realised_vol": "-0.5", // 已实现盈亏
                "earnings_vol": "-0.5", // 已结算收益
                "created_at":  // 创建时间 "2018-07-13T16:48:49+08:00",
                "updated_at":  // 修改时间 "2018-07-13T18:34:45.900387+08:00"
            }
        ]

说明

  1. 必须在币币系统登录成功后,才能获取用户的合约账号信息
  2. 请求参数有contractID和coinCode.由于系统设计的是多个相同保证金code的合约共用一个合约账号,所以该接口既可以通过合约ID查询合约账号,也可以通过coinCode查询合约账号.如果请求都不传,则返回用户的所有合约账号
HEADERS

Content-Type
application/json
Bbx-Accesskey
123123123213
Bbx-Sign
MD5(secretKey+Bbx-Ts)
Bbx-Ver
1008
Bbx-Dev
WEB
Bbx-Ts
1541044393000000
PARAMS

coinCode
USDT

合约账号的coinCode



Example Request
获取合约账户信息
curl --location --request GET "https://api.bbx.com/v1/ifcontract/accounts?coinCode=USDT" \
  --header "Bbx-Accesskey: 123123123213" \
  --header "Bbx-Sign: MD5(secretKey+Bbx-Ts)" \
  --header "Bbx-Ver: 1008" \
  --header "Bbx-Dev: WEB" \
  --header "Bbx-Ts: 1541044393000000"
GET 获取用户的交易记录
https://api.bbx.com/v1/ifcontract/userTrades?contractID=1&offset=0&size=100

https://api.bbx.com/v1/ifcontract/userTrades?contractID=1

Header:
    AuthApiHeader (同批量提交订单接口)
Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": {
        // 交易记录列表,按创建时间由近及远排序
        "trades": [
            {
                "order_id": 10116361, // taker order id
                "trade_id": 10116363, // trade id
                "contract_id": 1,     // 合约ID
                "deal_price": "16",   // 成交价
                "deal_vol": "10",     // 成交量
                "make_fee": "0.04",   // make fee
                "take_fee": "0.12",   // take fee
                "created_at": null,   // 创建时间
                "way": 5,             // 交易方向
                "fluctuation": "0"    // 对行情的影响
            }
        ]
    }
}

说明

  1. way 交易方向

CONTRACT_ORDER_WAY_BUY_OPEN_LONG 1 // 开多 买 CONTRACT_ORDER_WAY_BUY_CLOSE_SHORT 2 // 平空 买 CONTRACT_ORDER_WAY_SELL_CLOSE_LONG 3 // 平多 卖 CONTRACT_ORDER_WAY_SELL_OPEN_SHORT 4 // 开空 卖

  1. fluctuation,对行情的影响,如本次交易前的最新交易价是10,本次交易的交易价是11,则fluctuation为"1"
HEADERS

Content-Type
application/json
Bbx-Accesskey
123123123213
Bbx-Sign
MD5(secretKey+Bbx-Ts)
Bbx-Ver
1008
Bbx-Dev
WEB
Bbx-Ts
1541044393000000
PARAMS

contractID
1

合约ID

offset
0

偏移量

size
100

请求数量,如果size不传或size为0,系统最多返回60条



Example Request
获取用户的交易记录
curl --location --request GET "https://api.bbx.com/v1/ifcontract/userTrades?contractID=1&offset=0&size=100" \
  --header "Bbx-Accesskey: 123123123213" \
  --header "Bbx-Sign: MD5(secretKey+Bbx-Ts)" \
  --header "Bbx-Ver: 1008" \
  --header "Bbx-Dev: WEB" \
  --header "Bbx-Ts: 1541044393000000"
GET 获取用户的爆仓记录
http://192.168.3.216:9095/userLiqRecords?contractID=1&orderID=1000232

https://api.bbx.com/v1/ifcontract/userLiqRecords?contractID=1

Request

Header:

Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": {
"records": [
    {
    "order_id": 10539098,
    "contract_id": 1,
    "position_id": 10539088,
    "account_id": 10,
    "type":1, // 爆仓类型,1:部分强平,2:破产,3:ADL主动发起,4:ADL被动发起
    "trigger_price":"16", // 触发价
    "order_price":"16", // 委托价
    "mmr":"0.0013", // 爆仓时的维持保证金率
    "subsidies":"0.018", // 破产系统补贴额度
    "created_at": "2018-07-23T11:55:56.715305Z"
    }
]
    }
}

说明

1.该请求的参数组合有以下几种: a.不传参数,表示获取用户所有的爆仓记录 b.只传contractID,表示获取用户该合约的爆仓记录 c.只传orderID,表示获取用户该订单的爆仓记录

PARAMS

contractID
1

合约ID

orderID
1000232

订单ID



Example Request
获取用户的爆仓记录
curl --location --request GET "http://192.168.3.216:9095/userLiqRecords?contractID=1&orderID=1000232"
GET 获取用户订单的交易记录
https://api.bbx.com/v1/ifcontract/orderTrades?contractID=1&orderID=2064344648

https://api.bbx.com/v1/ifcontract/orderTrades?contractID=1&orderID=2064344648

Header:

Body:

Response

{
    "errno": "OK",
    "message": "Success",
    "data": {
        // 交易记录列表,按创建时间由近及远排序
        "trades": [
            {
                "order_id": 10116361, // taker order id
                "trade_id": 10116363, // trade id
                "contract_id": 1,     // 合约ID
                "deal_price": "16",   // 成交价
                "deal_vol": "10",     // 成交量
                "make_fee": "0.04",   // make fee
                "take_fee": "0.12",   // take fee
                "created_at": null,   // 创建时间
                "way": 5,             // 交易方向
                "fluctuation": "0"    // 对行情的影响
            }
        ]
    }
}

说明

  1. way 交易方向

CONTRACT_ORDER_WAY_BUY_OPEN_LONG 1 // 开多 买 CONTRACT_ORDER_WAY_BUY_CLOSE_SHORT 2 // 平空 买 CONTRACT_ORDER_WAY_SELL_CLOSE_LONG 3 // 平多 卖 CONTRACT_ORDER_WAY_SELL_OPEN_SHORT 4 // 开空 卖

  1. fluctuation,对行情的影响,如本次交易前的最新交易价是10,本次交易的交易价是11,则fluctuation为"1"
  2. 用户必须登录后,才能查询到自己订单的交易记录
PARAMS

contractID
1

合约ID

orderID
2064344648

订单ID



Example Request
获取用户订单的交易记录
curl --location --request GET "https://api.bbx.com/v1/ifcontract/orderTrades?contractID=1&orderID=2064344648"
GET 获取仓位资金费用
https://api.bbx.com/v1/ifcontract/positionFee?contractID=32785&positionID=2154205116

https://api.bbx.com/v1/ifcontract/positionFee?contractID=32785&positionID=2154205116

Header:
    AuthApiHeader (同批量提交订单接口)
Body:

Response

{
    "errno": "OK",
    "message": "Success",
    // 记录数组按照时间由近及远排序
    "data": [
        {
            "contract_id": 32785, // 合约ID
            "account_id": 2071026819, // 用户ID
            "position_id": 2154205116, // 仓位ID
            "fair_price": "0.849940605285", // 产生仓位费用时的合理价格
            "funding_rate": "0", // 产生仓位费用时的资金费率
            "fee": "-149.8912195248", // 手续费,负数表示赚的,正数表示付出费
            "vol": "1053468", // 产生仓位费用时的仓位持仓量
            "created_at": "2019-01-15T00:00:00.708979Z" // 产生仓位费用的时间,UTC时间
        },
        {
            "contract_id": 32785,
            "account_id": 2071026819,
            "position_id": 2154205116,
            "fair_price": "0.849940605285",
            "funding_rate": "0",
            "fee": "-261.432832752",
            "vol": "1053468",
            "created_at": "2019-01-14T16:00:01.183355Z"
        }
    ]
}

说明

HEADERS

Bbx-Accesskey
a3f056e5-0041-43c3-a9df-574b25a2ab03
Bbx-Dev
api
Bbx-Ts
1547626071000000
Bbx-Ver
1008
Bbx-Sign
56ea9ec5355d1dde381e1296bda42db0
PARAMS

contractID
32785

合约ID

positionID
2154205116

仓位ID



Example Request
获取仓位资金费用
curl --location --request GET "https://api.bbx.com/v1/ifcontract/positionFee?contractID=32785&positionID=2154205116" \
  --header "Bbx-Accesskey:  a3f056e5-0041-43c3-a9df-574b25a2ab03" \
  --header "Bbx-Dev: api" \
  --header "Bbx-Ts: 1547626071000000" \
  --header "Bbx-Ver: 1008" \
  --header "Bbx-Sign: 56ea9ec5355d1dde381e1296bda42db0"
GET 创建合约账号
https://api.bbx.com/v1/ifcontract/createContractAccount?contractID=1

https://api.bbx.com/v1/ifcontract/createContractAccount?contractID=1

Header:
    AuthApiHeader (同批量提交订单接口)
Body:

Response

{
    "errno": "OK",  // 创建成功
    "message": "Success"
}

说明

HEADERS

Bbx-Accesskey
a3f056e5-0041-43c3-a9df-574b25a2ab03
Bbx-Dev
api
Bbx-Ts
1547626071000000
Bbx-Ver
1008
Bbx-Sign
56ea9ec5355d1dde381e1296bda42db0
PARAMS

contractID
1

合约ID



Example Request
创建合约账号
curl --location --request GET "https://api.bbx.com/v1/ifcontract/createContractAccount?contractID=1" \
  --header "Bbx-Accesskey:  a3f056e5-0041-43c3-a9df-574b25a2ab03" \
  --header "Bbx-Dev: api" \
  --header "Bbx-Ts: 1547626071000000" \
  --header "Bbx-Ver: 1008" \
  --header "Bbx-Sign: 56ea9ec5355d1dde381e1296bda42db0"
POST 给逐仓仓位追加或减少保证金
https://api.bbx.com/v1/ifcontract/marginOper

https://api.bbx.com/v1/ifcontract/marginOper

Header:

Body:
{
   "contract_id":3,  // 仓位的合约ID
   "position_id":10539974, // 仓位ID
   "vol":10,   // 保证金数额
   "oper_type":1, // 操作类型,1:追加保证金,2:减少保证金
   "nonce":1533871871 // 时间戳,单位秒
}

Response


说明

HEADERS

Bbx-Accesskey
a3f056e5-0041-43c3-a9df-574b25a2ab03
Bbx-Dev
api
Bbx-Ts
1547626071000000
Bbx-Ver
1008
Bbx-Sign
56ea9ec5355d1dde381e1296bda42db0
BODY raw

{
   "contract_id":3,
   "position_id":10539974,
   "vol":10,
   "oper_type":1,
   "nonce":1533871871
}


Example Request
给逐仓仓位追加或减少保证金
curl --location --request POST "https://api.bbx.com/v1/ifcontract/marginOper" \
  --header "Bbx-Accesskey:  a3f056e5-0041-43c3-a9df-574b25a2ab03" \
  --header "Bbx-Dev: api" \
  --header "Bbx-Ts: 1547626071000000" \
  --header "Bbx-Ver: 1008" \
  --header "Bbx-Sign: 56ea9ec5355d1dde381e1296bda42db0" \
  --data "{
   \"contract_id\":3,
   \"position_id\":10539974,
   \"vol\":10,
   \"oper_type\":1,
   \"nonce\":1533871871
}"