Обновление потока данных в Websocket API для фьючерсов USDT-Margined

2020-10-20 12:24

ПОТОК ДАННЫХ В WEB SOCKET

Важное примечание: с целью обеспечения качественного сервиса для наших пользователей Binance Futures проведет обновление и оптимизацию потока пользовательских данных в Websocket для API фьючерсного контракта USDT-margin. Предполагаемая дата завершения обновления: 09.11.2020.

Обращаем ваше внимание на то, что для события ACCOUNT_UPDATE в USER-DATA-STREAM появились новые удобные оптимизированные правила push-уведомлений.

1. При изменении актива пользователя:

  • Будет отправлена информация только об этом активе и о его балансе.
  • Информация о других активах больше не будет передаваться, даже если остаток балансов больше 0.
  • Если изменение актива не связано с изменением позиции, для позиции «P» будет возвращаться только пустое значение []

2. При изменении позиции символа или типа маржи символа:

  • «P» выдаст детали в позиции «BOTH» этого символа
  • Если изменение происходит в позиции «LONG» или «SHORT», то будет отправлена соответственно измененная позиция «LONG» или «SHORT» данного символа
  • Также будет отправлена инициализированная «LONG»- или «SHORT»- изолированная позиция этого символа
  • Информация о положении других символов больше не будет передаваться, даже если их позиция не равна 0.

3. Полную информацию об активах и позициях необходимо получать через соответствующие конечные точки REST (GET /fapi/v2/account и GET /fapi/v2/positionRisk), а информацию об измененном активе или позиции для локально кешированных данных актива/позиции можно обновить через событие ACCOUNT_UPDATE в Websocket USER-DATA-STREAM.

Ниже приводится несколько различных примеров возможных сценариев, которые помогут лучше понять изменения после обновления:

Например, на фьючерсном кошельке пользователя находятся 94,89888561 USDT и 0,01575839 BNB, а также открыты позиция LONG на 0,01 BTCUSDT и позиция SHORT на -0,01 ETHUSDT. Предположим, пользователь:

  1. переводит 0,01 BNB на фьючерсный счет.

Перед обновлением

После обновления

{

"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 is not pushed as there is not balance change

{

"a":"BNB", // BNB is pushed as the balance is updated.

"wb":"0.02575839",

"cw":"0"

}

],

«P»:[], // данные о позиции не передаются, так как в позиции нет изменений.

"m":"DEPOSIT"

}

}

2. закрывает короткую (SHORT) позицию ETHUSDT

Перед обновлением

После обновления

{

"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":[

{

«а»:«USDT», // USDT передается, потому что в нем появляются изменения из-за реализованного PNL.

"wb":"94.91428561",

"cw":"93.71241461"

},

{

«a»: «BNB», // 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"

}

}

3. изменяет режим ETHUSDT из CROSS в ISOLATED

Перед обновлением

После обновления

{

"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":[

{

«а»:«USDT», // USDT передается, потому что это маржинальный актив.

"wb":"94.90282656",

"cw":"93.71241461"

}

],

«P»:[ // только ETHUSDT передается, так как есть изменение режима (CROSS на ISOLATED).

{

"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 передается по мере инициализации.

}

],

"m":"MARGIN_TYPE_CHANGE"

}

}

Зарегистрируйтесь сейчас — получите скидку до 100 USDT на торговую комиссию (для верифицированных пользователей)