跳转至

WebSocket 账户信息推送

概览

  • 本篇所列出REST接口的baseurl https://fapi.asterdex.com
  • 用于订阅账户数据的 listenKey 从创建时刻起有效期为60分钟
  • 可以通过PUT一个listenKey延长60分钟有效期
  • 可以通过DELETE一个 listenKey 立即关闭当前数据流,并使该listenKey 无效
  • 在具有有效listenKey的帐户上执行POST将返回当前有效的listenKey并将其有效期延长60分钟
  • 本篇所列出的websocket接口baseurl: wss://fstream.asterdex.com
  • 订阅账户数据流的stream名称为 /ws/\<listenKey>
  • 每个链接有效期不超过24小时,请妥善处理断线重连。
  • 账户数据流的消息不保证严格时间序; 请使用 E 字段进行排序
  • 考虑到剧烈行情下, RESTful接口可能存在查询延迟,我们强烈建议您优先从Websocket user data stream推送的消息来获取订单,仓位等信息。

生成listenKey (USER_STREAM)

响应:

{
  "listenKey": "pqia91ma19a5s61cv6a81va65sdf19v8a65a1a5s61cv6a81va65sdf19v8a65a1"
}

POST /fapi/v1/listenKey

创建一个新的user data stream,返回值为一个listenKey,即websocket订阅的stream名称。如果该帐户具有有效的listenKey,则将返回该listenKey并将其有效期延长60分钟。

权重: 1

参数:

None

延长listenKey有效期 (USER_STREAM)

响应:

{}

PUT /fapi/v1/listenKey

有效期延长至本次调用后60分钟

权重: 1

参数:

None

关闭listenKey (USER_STREAM)

响应:

{}

DELETE /fapi/v1/listenKey

关闭某账户数据流

权重: 1

参数:

None

listenKey 过期推送

Payload:

{
    'e': 'listenKeyExpired',      // 事件类型
    'E': 1576653824250              // 事件时间
}

当前连接使用的有效listenKey过期时,user data stream 将会推送此事件。

注意:

  • 此事件与websocket连接中断没有必然联系
  • 只有正在连接中的有效listenKey过期时才会收到此消息
  • 收到此消息后user data stream将不再更新,直到用户使用新的有效的listenKey

追加保证金通知

Payload:

{
    "e":"MARGIN_CALL",      // 事件类型
    "E":1587727187525,      // 事件时间
    "cw":"3.16812045",      // 除去逐仓仓位保证金的钱包余额, 仅在全仓 margin call 情况下推送此字段
    "p":[                   // 涉及持仓
      {
        "s":"ETHUSDT",      // symbol
        "ps":"LONG",        // 持仓方向
        "pa":"1.327",       // 仓位
        "mt":"CROSSED",     // 保证金模式
        "iw":"0",           // 若为逐仓,仓位保证金
        "mp":"187.17127",   // 标记价格
        "up":"-1.166074",   // 未实现盈亏
        "mm":"1.614445"     // 持仓需要的维持保证金
      }
    ]
}  
  • 当用户持仓风险过高,会推送此消息。
  • 此消息仅作为风险指导信息,不建议用于投资策略。
  • 在大波动市场行情下,不排除此消息发出的同时用户仓位已被强平的可能。

Balance和Position更新推送

Payload:

{
  "e": "ACCOUNT_UPDATE",                // 事件类型
  "E": 1564745798939,                   // 事件时间
  "T": 1564745798938 ,                  // 撮合时间
  "a":                                  // 账户更新事件
    {
      "m":"ORDER",                      // 事件推出原因 
      "B":[                             // 余额信息
        {
          "a":"USDT",                   // 资产名称
          "wb":"122624.12345678",       // 钱包余额
          "cw":"100.12345678",          // 除去逐仓仓位保证金的钱包余额
          "bc":"50.12345678"            // 除去盈亏与交易手续费以外的钱包余额改变量
        },
        {
          "a":"BUSD",           
          "wb":"1.00000000",
          "cw":"0.00000000",         
          "bc":"-49.12345678"
        }
      ],
      "P":[
       {
          "s":"BTCUSDT",            // 交易对
          "pa":"0",                 // 仓位
          "ep":"0.00000",            // 入仓价格
          "cr":"200",               // (费前)累计实现损益
          "up":"0",                     // 持仓未实现盈亏
          "mt":"isolated",              // 保证金模式
          "iw":"0.00000000",            // 若为逐仓,仓位保证金
          "ps":"BOTH"                   // 持仓方向
       }
       {
            "s":"BTCUSDT",
            "pa":"20",
            "ep":"6563.66500",
            "cr":"0",
            "up":"2850.21200",
            "mt":"isolated",
            "iw":"13200.70726908",
            "ps":"LONG"
         },
       {
            "s":"BTCUSDT",
            "pa":"-10",
            "ep":"6563.86000",
            "cr":"-45.04000000",
            "up":"-1423.15600",
            "mt":"isolated",
            "iw":"6570.42511771",
            "ps":"SHORT"
       }
      ]
    }
}

账户更新事件的 event type 固定为 ACCOUNT_UPDATE

  • 当账户信息有变动时,会推送此事件:

    • 仅当账户信息有变动时(包括资金、仓位、保证金模式等发生变化),才会推送此事件;
    • 订单状态变化没有引起账户和持仓变化的,不会推送此事件;
    • 每次因持仓变动推送的position 信息,仅包含当前持仓不为0或逐仓仓位保证金不为0的symbol position。
  • "FUNDING FEE" 引起的资金余额变化,仅推送简略事件:

    • 当用户某全仓持仓发生"FUNDING FEE"时,事件ACCOUNT_UPDATE将只会推送相关的用户资产余额信息B(仅推送FUNDING FEE 发生相关的资产余额信息),而不会推送任何持仓信息P
    • 当用户某逐仓仓持仓发生"FUNDING FEE"时,事件ACCOUNT_UPDATE将只会推送相关的用户资产余额信息B(仅推送"FUNDING FEE"所使用的资产余额信息),和相关的持仓信息P(仅推送这笔"FUNDING FEE"发生所在的持仓信息),其余持仓信息不会被推送。
  • 字段"m"代表了事件推出的原因,包含了以下可能类型:

    • DEPOSIT
    • WITHDRAW
    • ORDER
    • FUNDING_FEE
    • WITHDRAW_REJECT
    • ADJUSTMENT
    • INSURANCE_CLEAR
    • ADMIN_DEPOSIT
    • ADMIN_WITHDRAW
    • MARGIN_TRANSFER
    • MARGIN_TYPE_CHANGE
    • ASSET_TRANSFER
    • OPTIONS_PREMIUM_FEE
    • OPTIONS_SETTLE_PROFIT
    • AUTO_EXCHANGE
  • 字段"bc"代表了钱包余额的改变量,即 balance change,但注意其不包含仓位盈亏及交易手续费。

订单/交易 更新推送

Payload:

{

  "e":"ORDER_TRADE_UPDATE",         // 事件类型
  "E":1568879465651,                // 事件时间
  "T":1568879465650,                // 撮合时间
  "o":{                             
    "s":"BTCUSDT",                  // 交易对
    "c":"TEST",                     // 客户端自定订单ID
      // 特殊的自定义订单ID:
      // "autoclose-"开头的字符串: 系统强平订单
      // "adl_autoclose": ADL自动减仓订单
    "S":"SELL",                     // 订单方向
    "o":"TRAILING_STOP_MARKET", // 订单类型
    "f":"GTC",                      // 有效方式
    "q":"0.001",                    // 订单原始数量
    "p":"0",                        // 订单原始价格
    "ap":"0",                       // 订单平均价格
    "sp":"7103.04",                 // 条件订单触发价格,对追踪止损单无效
    "x":"NEW",                      // 本次事件的具体执行类型
    "X":"NEW",                      // 订单的当前状态
    "i":8886774,                    // 订单ID
    "l":"0",                        // 订单末次成交量
    "z":"0",                        // 订单累计已成交量
    "L":"0",                        // 订单末次成交价格
    "N": "USDT",                    // 手续费资产类型
    "n": "0",                       // 手续费数量
    "T":1568879465651,              // 成交时间
    "t":0,                          // 成交ID
    "b":"0",                        // 买单净值
    "a":"9.91",                     // 卖单净值
    "m": false,                     // 该成交是作为挂单成交吗?
    "R":false   ,                   // 是否是只减仓单
    "wt": "CONTRACT_PRICE",         // 触发价类型
    "ot": "TRAILING_STOP_MARKET",   // 原始订单类型
    "ps":"LONG"                     // 持仓方向
    "cp":false,                     // 是否为触发平仓单; 仅在条件订单情况下会推送此字段
    "AP":"7476.89",                 // 追踪止损激活价格, 仅在追踪止损单时会推送此字段
    "cr":"5.0",                     // 追踪止损回调比例, 仅在追踪止损单时会推送此字段
    "rp":"0"                            // 该交易实现盈亏

  }

}

当有新订单创建、订单有新成交或者新的状态变化时会推送此类事件 事件类型统一为 ORDER_TRADE_UPDATE

订单方向

  • BUY 买入
  • SELL 卖出

订单类型

  • MARKET 市价单
  • LIMIT 限价单
  • STOP 止损单
  • TAKE_PROFIT 止盈单
  • LIQUIDATION 强平单

本次事件的具体执行类型

  • NEW
  • CANCELED 已撤
  • CALCULATED
  • EXPIRED 订单失效
  • TRADE 交易

订单状态

  • NEW
  • PARTIALLY_FILLED
  • FILLED
  • CANCELED
  • EXPIRED
  • NEW_INSURANCE 风险保障基金(强平)
  • NEW_ADL 自动减仓序列(强平)

有效方式:

  • GTC
  • IOC
  • FOK
  • GTX
  • HIDDEN

杠杆倍数等账户配置 更新推送

Payload:

{
    "e":"ACCOUNT_CONFIG_UPDATE",       // 事件类型
    "E":1611646737479,                 // 事件时间
    "T":1611646737476,                 // 撮合时间
    "ac":{                              
    "s":"BTCUSDT",                     // 交易对
    "l":25                             // 杠杆倍数

    }
}  

Or

{
    "e":"ACCOUNT_CONFIG_UPDATE",       // 事件类型
    "E":1611646737479,                 // 事件时间
    "T":1611646737476,                 // 撮合时间
    "ai":{                             // 用户账户配置
    "j":true,                          // 联合保证金状态
    "f":true,                          // 指定币种抵扣手续费
    "d":true                           // 持仓模式 true 为双向持仓模式, false为单向持仓模式
    }
}  

当账户配置发生变化时会推送此类事件类型统一为ACCOUNT_CONFIG_UPDATE

当交易对杠杆倍数发生变化时推送消息体会包含对象ac表示交易对账户配置,其中s代表具体的交易对,l代表杠杆倍数

当用户联合保证金状态发生变化时推送消息体会包含对象ai表示用户账户配置,其中j代表用户联合保证金状态