Upgrade do fluxo de dados do utilizador do Websocket da interface de programação de aplicações (API) de futuros com margem em USDT

2020-10-20 12:24

1. Quando um ativo de um utilizador é alterado:

  • Apenas este ativo e as respetivas informações de saldo serão enviadas
  • Outros ativos e informações deixarão de ser enviadas mesmo que os saldos não sejam 0
  • Se a mudança de ativos não vier com nenhuma mudança de posição, a posição "P" retornará apenas uns [] vazios

2. Quando uma posição de um símbolo é alterada ou o tipo de margem de um símbolo é alterado:

  • "P" enviará os detalhes na posição "BOTH" deste símbolo
  • Se a mudança acontecer na posição "LONG" ou "SHORT", a posição "LONG" ou "SHORT" alterada deste símbolo será enviada
  • A posição isolada "LONG" ou "SHORT" inicializada deste símbolo também será enviada
  • As informações de posição de outros símbolos já não serão enviadas, e as suas posições podem não ser 0

3. Em suma, as informações completas de ativos e posições devem ser obtidas através dos endpoints rest relacionados (GET /fapi/v2/account e GET /fapi/v2/positionRisk), e os dados de ativos ou posições armazenados em cache localmente podem ser atualizados através do evento ACCOUNT_UPDATE no Websocket USER-DATA-STREAM com as informações do ativo ou posição alterada.

Para entenderes melhor o upgrade, podes encontrar alguns exemplos de cenários diferentes abaixo:

Considera que um utilizador detém 94,89888561 USDT e 0,01575839 BNB na sua carteira de futuros e 0,01 BTCUSDT na posição LONG e -0,01 ETHUSDT na posição SHORT. Se o utilizador:

  1. Transferir 0,01 BNB para a conta de futuros

Antes da atualização

Após a atualização

{

"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 não é enviado, pois não há alteração de saldo

{

"a":"BNB", // BNB é enviado à medida que o saldo é atualizado.

"wb":"0.02575839",

"cw":"0"

}

],

"P":[], // Nenhum dado de posição é enviado, pois não há mudança de posição.

"m":"DEPOSIT"

}

}

2. Fecha a posição curta ETHUSDT

Antes da atualização

Após a atualização

{

"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 é enviado porque é alterado pelos Ganhos e perdas realizados.

"wb":"94.91428561",

"cw":"93.71241461"

},

{

"a":"BNB", // BNB é enviado porque é alterado pela queima da taxa de trading de BNB.

"wb":"0.02571331",

"cw":"0"

}

],

"P":[ // Apenas a posição alterada de ETHUSDT é enviada.

{

"s":"ETHUSDT",

"pa":"0",

"ep":"0.00000",

"cr":"-0.00057000",

"up":"0",

"mt":"cross",

"iw":"0",

"ps":"BOTH" // As posições BOTH serão sempre enviadas.

},

// A posição LONG não é enviada porque ainda não foi inicializada.

{

"s":"ETHUSDT",

"pa":"0",

"ep":"0.00000",

"cr":"-0.18750000",

"up":"0",

"mt":"cross",

"iw":"0",

"ps":"SHORT" // A posição SHORT é enviada à medida que é alterada a partir deste evento.

}

],

"m":"ORDER"

}

}

3. Altera o ETHUSDT do modo CROSS para o modo ISOLATED

Antes da atualização

Após a atualização

{

"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 é enviado porque é um ativo de margem.

"wb":"94.90282656",

"cw":"93.71241461"

}

],

"P":[ // apenas ETHUSDT é enviado, pois tem mudança de modo ( CROSS para ISOLATED).

{

"s":"ETHUSDT",

"pa":"0",

"ep":"0.00000",

"cr":"-0.00057000",

"up":"0",

"mt":"isolated",

"iw":"0",

"ps":"BOTH" // As posições BOTH serão sempre enviadas.

},

// A posição LONG não é enviada porque ainda não foi inicializada.

{

"s":"ETHUSDT",

"pa":"0",

"ep":"0.00000",

"cr":"-0.18750000",

"up":"0",

"mt":"isolated",

"iw":"0",

"ps":"SHORT" // SHORT é enviado à medida que é inicializado.

}

],

"m":"MARGIN_TYPE_CHANGE"

}

}

Regista-te já — Recebe até 100 USDT de devolução em taxas de trading (para utilizadores verificados)