获取用户仓位

请求格式说明

GET ifcontract/userPositions

请求示例

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

请求Headers

详情见签名方式

请求参数

参数名 参数类型 是否必填 描述
coinCode int 合约账号coinCode,可以不传coinCode,传contractID,只查询某个合约仓位信息
status int 仓位状态
offset int offset
size int size 请求数量,如果size不传或size为0,系统最多返回60条

返回格式说明

参数名 参数类型 描述
position_id long 仓位ID
account_id int 用户ID
contract_id int 合约ID
hold_vol string 当前持有量
freeze_vol string 冻结量
close_vol string 已平仓量
hold_avg_price string 开仓均价
close_avg_price string 已平仓,平仓均价
liquidate_price string 强平价
im string 开仓保证金
mm string 维持保证金
realised_profit string 以实现盈亏
earnings string 已结算收益
hold_fee string 持仓产生的资金费用
open_type int 开仓方式,1:逐仓,2:全仓
position_type int 仓位类型,1:开多,2:开空
status int 状态,1:持仓中,2:系统托管中,4:已平仓 如果请求参数中的status值为3,标识同时请求持仓中和系统委托中的仓位,如果请求参数中的status值为0或者7,标识同时请求所有状态的仓位
errno int 平仓原因 1 平仓委托中 2 破产委托中 3 平仓委托结束 4 破产委托结束 5 爆仓 6 自动减仓(主动发起方) 7 自动减仓(被动接收方)
created_at string created_at
updated_at string updated_at

返回示例

{
    "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"
            }
        ]
    }
}

备注

**仓位价值的计算:

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
 }

** 仓位的逻辑开仓方向

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
 }

** 仓位强平价的计算:

// 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
 }

** 按合理价格计算仓位的未实现盈亏:

// 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)
 }

获取用户订单记录

请求格式说明

GET ifcontract/userOrders

请求示例

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

请求Headers

详情见签名方式

请求参数

参数名 参数类型 是否必填 描述
contractID int 合约ID
offset int offset
size int size 请求数量,如果size不传或size为0,系统最多返回60条
status int 订单状态 1:申报中 2:委托中 4:完成 如果请求参数status=3,标识同时请求申报中和委托中的订单,如果请求参数status=0或者7,标识同时请求所有状态的订单

返回格式说明

参数名 参数类型 描述
order_id long 订单ID
contract_id int 合约ID
price string 订单价格
vol string 订单量
done_avg_price string 成交均价
done_vol string 成交量
way int 订单方向
category int 订单类型 1:限价委托 2:市价委托 7:被动委托 category,订单类型 该字段采用二进制按位表示法 0~5位表示订单的基本类型,第6位预留,第7位为1表示:强平委托单,第8位为1表示:爆仓委托单,第9位为1表示:自动减仓委托单
make_fee string make fee
take_fee string take fee
origin string 来源
created_at string created_at
finished_at string 结束时间
status int 状态 1:申报中 2:委托中,表示订单已经进撮合队列,订单信息中的done_vol表示订单成交部分,只要done_vol不为0就表示订单有成交. 4:完成
errno int 订单结束的原因 1 用户取消 2 超时,(暂时没有用) 3 用户资产不够,转撤销 4 破产委托结束 5 系统部分转撤销 6 部分平仓导致的部分转撤销 7 自动减仓导致的部分转撤销 8 盈利补偿导致的部分转撤销(暂时没有用) 9 仓位错误导致的部分转撤销 10 类型非法 11 反方向订单存在

返回示例

{
    "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
            }
        ]
    }
}

备注

查询订单详情

请求格式说明

GET ifcontract/userOrderInfo

请求示例

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

请求Headers

详情见签名方式

请求参数

参数名 参数类型 是否必填 描述
contractID int 合约ID
orderID int 订单ID

返回格式说明

参数名 参数类型 描述
order_id long 订单ID
contract_id int 合约ID
position_id long 仓位ID
account_id long 账号ID
price string 价格
vol string 成交量
done_avg_price string 已完成均价
done_vol string 已完成量
way int 方式
category int 类别
make_fee string make_fee
take_fee string take_fee
origin string 来源
created_at string 创建时间
finished_at string 完成时间
status int 状态
errno int 错误码

返回示例

{
    "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
            }
        ]
    }
}

备注

获取合约账户信息

请求格式说明

GET ifcontract/accounts

请求示例

https://api.bbx.com/v1/ifcontract/accounts?coinCode=USDT

请求Headers

详情见签名方式

请求参数

参数名 参数类型 是否必填 描述
coinCode string USDT 合约账号的coinCode

返回格式说明

参数名 参数类型 描述
account_id int 账号ID
coin_code string 代币名称
freeze_vol string 冻结量
available_vol string 可用余额
cash_vol string 净现金余额
realised_vol string 已实现盈亏
unrealised_vol string 未实现盈亏
created_at string created_at
updated_at string updated_at

返回示例

"accounts": [
            {
                "account_id": 10, // 账号ID
                "coin_code": "USDT", // 代币名称
                "freeze_vol": "1201.8", // 冻结量
                "available_vol": "8397.65", // 可用余额
                "cash_vol": "0", // 净现金余额
                "realised_vol": "-0.5", // 已实现盈亏
                "unrealised_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"
            }
        ]

备注

必须在币币系统登录成功后,才能获取用户的合约账号信息

请求参数有contractID和coinCode.由于系统设计的是多个相同保证金code的合约共用一个合约账号,

所以该接口既可以通过合约ID查询合约账号,也可以通过coinCode查询合约账号.如果请求都不传,则返回用户的所有合约账号

获取用户的交易记录

请求格式说明

GET ifcontract/userTrades

请求示例

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

请求Headers

详情见签名方式

请求参数

参数名 参数类型 是否必填 描述
contractID int 合约ID
offset int 偏移量
size int 请求数量,如果size不传或size为0,系统最多返回60条

返回格式说明

参数名 参数类型 描述
order_id int taker order id
trade_id string trade id
contract_id string 合约ID
deal_price string 成交价
deal_vol string 成交量
make_fee string make fee
take_fee string take fee
created_at string 创建时间
way string 交易方向 1: 开多 买 2: 平空 买 3:平多 卖 4:开空 卖
fluctuation string 对行情的影响

返回示例

{
    "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"    // 对行情的影响
            }
        ]
    }
}

备注

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

获取用户的爆仓记录

请求格式说明

GET ifcontract/userLiqRecords

请求示例

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

请求Headers

详情见签名方式

请求参数

参数名 参数类型 是否必填 描述
contractID int 合约ID
orderID int 订单ID

返回格式说明

参数名 参数类型 描述
order_id long 订单ID
contract_id int 合约ID
position_id long 仓位id
account_id int 账号ID
type int 爆仓类型,1:部分强平,2:破产,3:ADL主动发起,4:ADL被动发起
trigger_price string 触发价
order_price string 委托价
mmr string 爆仓时的维持保证金率
subsidies string 破产系统补贴额度
created_at string created_at

返回示例

{
    "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,表示获取用户该订单的爆仓记录

获取用户订单的交易记录

请求格式说明

GET ifcontract/orderTrades

请求示例

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

请求Headers

详情见签名方式

请求参数

参数名 参数类型 是否必填 描述
contractID int 合约ID
orderID int 订单ID

返回格式说明

参数名 参数类型 描述
order_id long taker order id
trade_id long trade id
contract_id ing 合约ID
deal_price string 成交价
deal_vol string 成交量
make_fee string make fee
take_fee string take fee
created_at string 创建时间
way int 交易方向 1 : 开多 买 2 : 平空 买 3 : 平多 卖 4 : 开空 卖
created_at string created_at
fluctuation string 对行情的影响

返回示例

{
    "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"    // 对行情的影响
            }
        ]
    }
}

备注

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

用户必须登录后,才能查询到自己订单的交易记录

获取仓位资金费用

请求格式说明

GET ifcontract/positionFee

请求示例

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

请求Headers

详情见签名方式

请求参数

参数名 参数类型 是否必填 描述
contractID int 合约ID
positionID int 仓位ID

返回格式说明

参数名 参数类型 描述
contract_id ing 合约ID
account_id long 用户ID
position_id long 仓位ID
fair_price string 产生仓位费用时的合理价格
funding_rate string 产生仓位费用时的资金费率
fee string 手续费,负数表示赚的,正数表示付出费
vol int 产生仓位费用时的仓位持仓量
created_at string 产生仓位费用的时间,UTC时间

返回示例

{
    "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"
        }
    ]
}

备注

记录数组按照时间由近及远排序

创建合约账号

请求格式说明

GET ifcontract/createContractAccount

请求示例

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

请求Headers

详情见签名方式

请求参数

参数名 参数类型 是否必填 描述
contractID int 1 合约ID

返回格式说明

参数名 参数类型 描述
errno int errno
message int 错误原因

返回示例

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

备注

批量提交订单

请求格式说明

POST ifcontract/batchOrders

请求示例

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

请求Headers

详情见签名方式

请求参数Body

开仓订单消息的body

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

平仓订单消息的body

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

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 // 时间戳
}

返回格式说明

参数名 参数类型 描述
custom_id int 客户端自定义ID
order_id int 订单ID

返回示例


成功:
{
  "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
          }
      ]
  }
}

备注

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

category 订单类型 1:限价单,2:市价单,7:被动委托限价单

way 订单方向 1:开多,2:平空,3:平多,4:开空

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

单次提交订单

请求格式说明

POST ifcontract/submitOrder

请求示例

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

请求Headers

详情见签名方式

请求参数Body

开仓订单消息的body

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

平仓订单消息的body

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

BODY示例:

开仓订单消息的body

{
   "contract_id":1, // 合约ID
   "category":1,  // 订单类型
   "way":4,  // 订单方向
   "open_type":1, // 开仓方式
   "leverage":10, // 杠杆
   "price":16,  // 价格
   "vol":10,  // 量
   "nonce":1531796011 // 时间戳
}

平仓订单消息的body

{
   "contract_id":1, // 合约ID
   "category":1,  // 订单类型
   "position_id":12121,  // 仓位ID
   "way":3,  // 订单方向
   "price":16,  // 价格
   "vol":10,  // 量
   "nonce":1531796011 // 时间戳
}

返回格式说明

备注

category 订单类型 1:限价单,2:市价单

way 订单方向 1:开多,2:平空,3:平多,4:开空

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

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

取消订单

请求格式说明

POST ifcontract/cancelOrders

请求示例

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

请求Headers

详情见签名方式

请求参数Body

开仓订单消息的body

参数名 参数类型 是否必填 描述
contract_id int 合约ID
orders array 订单ID 数组

BODY示例:

{
    "orders":[
        {
           "contract_id":1,  // 合约ID
           "orders":[
                10116356, // 订单ID
                10116357
            ]
        }
     ],
    "nonce":1531809458  // 时间戳(单位秒)
}

返回格式说明

备注

给逐仓仓位追加或减少保证金

请求格式说明

POST ifcontract/marginOper

请求示例

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

请求Headers

详情见签名方式

请求参数Body

参数名 参数类型 是否必填 描述
contract_id long 仓位的合约ID
position_id long 仓位ID
vol int 保证金数额
oper_type int 操作类型,1:追加保证金,2:减少保证金
nonce long 时间戳,单位秒

BODY示例

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

返回格式说明

备注

results matching ""

    No results matching ""