USDT合約API User Data Stream 接口推送規則更新

发布于 2020-10-20 12:24

WSS優化和更新:

注意:幣安即將對USDT合約API的User Data Stream 推送規則進行優化與更新,預計將於2020年11月09日完成優化與更新。

Websocket USER-DATA-STREAM 中的事件`ACCOUNT_UPDATE`推送規則作出了以下更新和優化:

  • 當用戶某項資產發生變化時:
    • 資產項目"B"中僅會推送本次發生變化的資產及其餘額
    • 其他資產不會被推送,即便資產不爲0
    • 如果資產變化不涉及持倉變化,持倉項目"P"將僅返回空 []
  • 當合約某symbol的持倉或全逐倉配置發生變動時
    • "P"中會推送該symbol對應的"BOTH"方向上的持倉詳情
    • 如果是多空方向上發生持倉變動, "P"中也會包含該symbol發生持倉變動的對應"LONG"或"SHORT"方向上的持倉詳情
    • 該symbol上被初始化過的"LONG"或"SHORT"方向逐倉持倉, 也會被推送
    • 其他symbol的所有持倉信息都不會被推送,即使其持倉不爲0
  • 簡言之,您僅應該更新從`ACCOUNT_UPDATE`推送獲得的資產或頭寸信息,而其他資產和頭寸信息應與您本地記錄中的值或更新前通過rest接口獲取的數據一致。

在這項優化發佈之後,用戶需要在本地維護一份資產和持倉記錄,並通過結合WS `ACCOUNT_UPDATE` 事件及時更新自己的準確資產和持倉數據。

舉例:

用戶當前擁有資產 USDT: 94.89888561, BNB: 0.01575839;

用戶當前持倉情況爲:BTCUSDT LONG: 0.01,  ETHUSDT SHORT: 0.01

場景一:用戶向合約賬戶劃轉 0.01 BNB

ACCOUNT_UPDATE之前的邏輯推送ACCOUNT_UPDATE新的邏輯推送

{

  "e":"ACCOUNT_UPDATE",

  "T":1603093193280,

  "E":1603093193284,

  "a":{

    "B":[

      {

        "a":"USDT",

        "wb":"94.91018561",

        "cw":"93.70831461"

      },

      {

        "a":"BNB",

        "wb":"0.02575839",

        "cw":"0"

      }

    ],

    "P":[

      {

        "s":"BTCUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-147.28880096",

        "up":"0",

        "mt":"isolated",

        "iw":"0",

        "ps":"BOTH"

      },

      {

        "s":"BTCUSDT",

        "pa":"0.010",

        "ep":"11445.71000",

        "cr":"-23.20024001",

        "up":"0.17770",

        "mt":"isolated",

        "iw":"1.20187100",

        "ps":"LONG"

      },

      {

        "s":"BTCUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-6.04296000",

        "up":"0",

        "mt":"isolated",

        "iw":"0",

        "ps":"SHORT"

      },

      {

        "s":"ETHUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-0.00057000",

        "up":"0",

        "mt":"cross",

        "iw":"0",

        "ps":"BOTH"

      },

      {

        "s":"ETHUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-385.79173997",

        "up":"0",

        "mt":"cross",

        "iw":"0",

        "ps":"LONG"

      },

      {

        "s":"ETHUSDT",

        "pa":"-0.010",

        "ep":"375.74000",

        "cr":"-0.19160000",

        "up":"0.00149",

        "mt":"cross",

        "iw":"0",

        "ps":"SHORT"

      }

    ],

    "m":"DEPOSIT"

  }

}

{

  "e":"ACCOUNT_UPDATE",

  "T":1603093193280,

  "E":1603093193284,

  "a":{

    "B":[

        // USDT資產沒有發生變化不會推出

       {

        "a":"BNB", // BNB作爲因充值發生變化的資產被推出

        "wb":"0.02575839",

        "cw":"0"

      }    

    ],

    "P":[], // 充值沒有導致任何持倉變化,沒有合約持倉會被推出

    "m":"DEPOSIT"

  }

}

     

場景二:用戶將其ETHUSDT SHORT 方向上的空頭合約平倉

ACCOUNT_UPDATE之前的邏輯推送ACCOUNT_UPDATE新的邏輯推送

{

  "e":"ACCOUNT_UPDATE",

  "T":1603093588546,

  "E":1603093588553,

  "a":{

    "B":[

      {

        "a":"USDT",

        "wb":"94.91428561",

        "cw":"93.71241461"

      },

      {

        "a":"BNB",

        "wb":"0.02571331",

        "cw":"0"

      }

    ],

    "P":[

      {

        "s":"BTCUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-147.28880096",

        "up":"0",

        "mt":"isolated",

        "iw":"0",

        "ps":"BOTH"

      },

      {

        "s":"BTCUSDT",

        "pa":"0.010",

        "ep":"11445.71000",

        "cr":"-23.20024001",

        "up":"0.13910",

        "mt":"isolated",

        "iw":"1.20187100",

        "ps":"LONG"

      },

      {

        "s":"BTCUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-6.04296000",

        "up":"0",

        "mt":"isolated",

        "iw":"0",

        "ps":"SHORT"

      },

      {

        "s":"ETHUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-0.00057000",

        "up":"0",

        "mt":"cross",

        "iw":"0",

        "ps":"BOTH"

      },

      {

        "s":"ETHUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-385.79173997",

        "up":"0",

        "mt":"cross",

        "iw":"0",

        "ps":"LONG"

      },

      {

        "s":"ETHUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-0.18750000",

        "up":"0",

        "mt":"cross",

        "iw":"0",

        "ps":"SHORT"

      }

    ],

    "m":"ORDER"

  }

}

{

  "e":"ACCOUNT_UPDATE",

  "T":1603093588546,

  "E":1603093588553,

  "a":{

    "B":[

      {

        "a":"USDT", // USDT作爲因實現盈虧發生變化的資產被推出

        "wb":"94.91428561",

        "cw":"93.71241461"

      },

      {

        "a":"BNB",  // BNB作爲因抵扣手續費發生變化的資產被推出

        "wb":"0.02571331",

        "cw":"0"

      }

    ],

    "P":[  // 僅推出發生變化的ETHUSDT合約

      {

        "s":"ETHUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-0.00057000",

        "up":"0",

        "mt":"cross",

        "iw":"0",

        "ps":"BOTH"  // BOTH方向一定會被推送

      },

      // LONG方向因之前沒有被初始化過不會被推出

      {

        "s":"ETHUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-0.18750000",

        "up":"0",

        "mt":"cross",

        "iw":"0",

        "ps":"SHORT" // SHORT方向作爲本次變化的持倉方向會被推送出來

      }

    ],

    "m":"ORDER"

  }

}

場景三:用戶將ETHUSDT合約從全倉模式調整爲逐倉模式

ACCOUNT_UPDATE之前的邏輯推送ACCOUNT_UPDATE新的邏輯推送

{

  "e":"ACCOUNT_UPDATE",

  "T":1603094890011,

  "E":1603094890017,

  "a":{

    "B":[

      {

        "a":"USDT",

        "wb":"94.90282656",

        "cw":"93.71241461"

      },

      {

        "a":"BNB",

        "wb":"0.02571331",

        "cw":"0"

      }

    ],

    "P":[

      {

        "s":"BTCUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-147.28880096",

        "up":"0",

        "mt":"isolated",

        "iw":"0",

        "ps":"BOTH"

      },

      {

        "s":"BTCUSDT",

        "pa":"0.010",

        "ep":"11445.71000",

        "cr":"-23.20024001",

        "up":"0.03240",

        "mt":"isolated",

        "iw":"1.19041195",

        "ps":"LONG"

      },

      {

        "s":"BTCUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-6.04296000",

        "up":"0",

        "mt":"isolated",

        "iw":"0",

        "ps":"SHORT"

      },

      {

        "s":"ETHUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-0.00057000",

        "up":"0",

        "mt":"isolated",

        "iw":"0",

        "ps":"BOTH"

      },

      {

        "s":"ETHUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-385.79173997",

        "up":"0",

        "mt":"isolated",

        "iw":"0",

        "ps":"LONG"

      },

      {

        "s":"ETHUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-0.18750000",

        "up":"0",

        "mt":"isolated",

        "iw":"0",

        "ps":"SHORT"

      }

    ],

    "m":"MARGIN_TYPE_CHANGE"

  }

}

{

  "e":"ACCOUNT_UPDATE",

  "T":1603094890011,

  "E":1603094890017,

  "a":{

    "B":[

      {

        "a":"USDT", // USDT作爲保證金資產在全逐倉變換時會被推出

        "wb":"94.90282656",

        "cw":"93.71241461"

      }

    ],

    "P":[  // 僅推出發生變化的ETHUSDT合約

      {

        "s":"ETHUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-0.00057000",

        "up":"0",

        "mt":"isolated",

        "iw":"0",

        "ps":"BOTH" // BOTH方向一定會被推送

      },

      // LONG方向因之前沒有被初始化過不會被推出

      {

        "s":"ETHUSDT",

        "pa":"0",

        "ep":"0.00000",

        "cr":"-0.18750000",

        "up":"0",

        "mt":"isolated",

        "iw":"0",

        "ps":"SHORT" // SHORT方向作爲初始化過的position被推送出來

      }

    ],

    "m":"MARGIN_TYPE_CHANGE"

  }

}

立即注册,最高可获 100 USDT 的交易手续费返还(仅限认证用户)