unicex 0.13.17__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. unicex/__init__.py +200 -0
  2. unicex/_abc/__init__.py +11 -0
  3. unicex/_abc/exchange_info.py +216 -0
  4. unicex/_abc/uni_client.py +329 -0
  5. unicex/_abc/uni_websocket_manager.py +294 -0
  6. unicex/_base/__init__.py +9 -0
  7. unicex/_base/client.py +214 -0
  8. unicex/_base/websocket.py +261 -0
  9. unicex/binance/__init__.py +27 -0
  10. unicex/binance/adapter.py +202 -0
  11. unicex/binance/client.py +1577 -0
  12. unicex/binance/exchange_info.py +62 -0
  13. unicex/binance/uni_client.py +188 -0
  14. unicex/binance/uni_websocket_manager.py +166 -0
  15. unicex/binance/user_websocket.py +186 -0
  16. unicex/binance/websocket_manager.py +912 -0
  17. unicex/bitget/__init__.py +27 -0
  18. unicex/bitget/adapter.py +188 -0
  19. unicex/bitget/client.py +2514 -0
  20. unicex/bitget/exchange_info.py +48 -0
  21. unicex/bitget/uni_client.py +198 -0
  22. unicex/bitget/uni_websocket_manager.py +275 -0
  23. unicex/bitget/user_websocket.py +7 -0
  24. unicex/bitget/websocket_manager.py +232 -0
  25. unicex/bybit/__init__.py +27 -0
  26. unicex/bybit/adapter.py +208 -0
  27. unicex/bybit/client.py +1876 -0
  28. unicex/bybit/exchange_info.py +53 -0
  29. unicex/bybit/uni_client.py +200 -0
  30. unicex/bybit/uni_websocket_manager.py +291 -0
  31. unicex/bybit/user_websocket.py +7 -0
  32. unicex/bybit/websocket_manager.py +339 -0
  33. unicex/enums.py +273 -0
  34. unicex/exceptions.py +64 -0
  35. unicex/extra.py +335 -0
  36. unicex/gate/__init__.py +27 -0
  37. unicex/gate/adapter.py +178 -0
  38. unicex/gate/client.py +1667 -0
  39. unicex/gate/exchange_info.py +55 -0
  40. unicex/gate/uni_client.py +214 -0
  41. unicex/gate/uni_websocket_manager.py +269 -0
  42. unicex/gate/user_websocket.py +7 -0
  43. unicex/gate/websocket_manager.py +513 -0
  44. unicex/hyperliquid/__init__.py +27 -0
  45. unicex/hyperliquid/adapter.py +261 -0
  46. unicex/hyperliquid/client.py +2315 -0
  47. unicex/hyperliquid/exchange_info.py +119 -0
  48. unicex/hyperliquid/uni_client.py +325 -0
  49. unicex/hyperliquid/uni_websocket_manager.py +269 -0
  50. unicex/hyperliquid/user_websocket.py +7 -0
  51. unicex/hyperliquid/websocket_manager.py +393 -0
  52. unicex/mapper.py +111 -0
  53. unicex/mexc/__init__.py +27 -0
  54. unicex/mexc/_spot_ws_proto/PrivateAccountV3Api_pb2.py +38 -0
  55. unicex/mexc/_spot_ws_proto/PrivateDealsV3Api_pb2.py +38 -0
  56. unicex/mexc/_spot_ws_proto/PrivateOrdersV3Api_pb2.py +38 -0
  57. unicex/mexc/_spot_ws_proto/PublicAggreBookTickerV3Api_pb2.py +38 -0
  58. unicex/mexc/_spot_ws_proto/PublicAggreDealsV3Api_pb2.py +40 -0
  59. unicex/mexc/_spot_ws_proto/PublicAggreDepthsV3Api_pb2.py +40 -0
  60. unicex/mexc/_spot_ws_proto/PublicBookTickerBatchV3Api_pb2.py +38 -0
  61. unicex/mexc/_spot_ws_proto/PublicBookTickerV3Api_pb2.py +38 -0
  62. unicex/mexc/_spot_ws_proto/PublicDealsV3Api_pb2.py +40 -0
  63. unicex/mexc/_spot_ws_proto/PublicFuture_pb2.py +103 -0
  64. unicex/mexc/_spot_ws_proto/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
  65. unicex/mexc/_spot_ws_proto/PublicIncreaseDepthsV3Api_pb2.py +40 -0
  66. unicex/mexc/_spot_ws_proto/PublicLimitDepthsV3Api_pb2.py +40 -0
  67. unicex/mexc/_spot_ws_proto/PublicMiniTickerV3Api_pb2.py +38 -0
  68. unicex/mexc/_spot_ws_proto/PublicMiniTickersV3Api_pb2.py +38 -0
  69. unicex/mexc/_spot_ws_proto/PublicSpotKlineV3Api_pb2.py +38 -0
  70. unicex/mexc/_spot_ws_proto/PushDataV3ApiWrapper_pb2.py +38 -0
  71. unicex/mexc/_spot_ws_proto/__init__.py +335 -0
  72. unicex/mexc/adapter.py +239 -0
  73. unicex/mexc/client.py +846 -0
  74. unicex/mexc/exchange_info.py +47 -0
  75. unicex/mexc/uni_client.py +211 -0
  76. unicex/mexc/uni_websocket_manager.py +269 -0
  77. unicex/mexc/user_websocket.py +7 -0
  78. unicex/mexc/websocket_manager.py +456 -0
  79. unicex/okx/__init__.py +27 -0
  80. unicex/okx/adapter.py +150 -0
  81. unicex/okx/client.py +2864 -0
  82. unicex/okx/exchange_info.py +47 -0
  83. unicex/okx/uni_client.py +202 -0
  84. unicex/okx/uni_websocket_manager.py +269 -0
  85. unicex/okx/user_websocket.py +7 -0
  86. unicex/okx/websocket_manager.py +743 -0
  87. unicex/types.py +164 -0
  88. unicex/utils.py +218 -0
  89. unicex-0.13.17.dist-info/METADATA +243 -0
  90. unicex-0.13.17.dist-info/RECORD +93 -0
  91. unicex-0.13.17.dist-info/WHEEL +5 -0
  92. unicex-0.13.17.dist-info/licenses/LICENSE +28 -0
  93. unicex-0.13.17.dist-info/top_level.txt +1 -0
@@ -0,0 +1,912 @@
1
+ __all__ = ["WebsocketManager"]
2
+
3
+ from collections.abc import Awaitable, Callable, Sequence
4
+ from typing import Any
5
+
6
+ from unicex._base import Websocket
7
+ from unicex.exceptions import NotAuthorized
8
+
9
+ from .client import Client
10
+ from .user_websocket import UserWebsocket
11
+
12
+ type CallbackType = Callable[[Any], Awaitable[None]]
13
+
14
+
15
+ class WebsocketManager:
16
+ """Менеджер асинхронных вебсокетов для Binance."""
17
+
18
+ _BASE_SPOT_URL: str = "wss://stream.binance.com:9443"
19
+ """Базовый URL для вебсокета на спот."""
20
+
21
+ _BASE_FUTURES_URL: str = "wss://fstream.binance.com"
22
+ """Базовый URL для вебсокета на фьючерсы."""
23
+
24
+ def __init__(self, client: Client | None = None, **ws_kwargs: Any) -> None:
25
+ """Инициализирует менеджер вебсокетов для Binance.
26
+
27
+ Параметры:
28
+ client (`Client | None`): Клиент для выполнения запросов. Нужен, чтобы открыть приватные вебсокеты.
29
+ ws_kwargs (`dict[str, Any]`): Дополнительные аргументы, котоыре прокидываются в `Websocket`.
30
+ """
31
+ self.client = client
32
+ self._ws_kwargs = ws_kwargs
33
+
34
+ def _generate_stream_url(
35
+ self,
36
+ type: str,
37
+ url: str,
38
+ symbol: str | None = None,
39
+ symbols: Sequence[str] | None = None,
40
+ require_symbol: bool = False,
41
+ ) -> str:
42
+ """Генерирует URL для вебсокета Binance. Параметры symbol и symbols не могут быть использованы вместе.
43
+
44
+ Параметры:
45
+ type (`str`): Тип вебсокета.
46
+ url (`str`): Базовый URL для вебсокета.
47
+ symbol (`str | None`): Символ для подписки.
48
+ symbols (`Sequence[str] | None`): Список символов для подписки.
49
+ require_symbol (`bool`): Требуется ли символ для подписки.
50
+
51
+ Возвращает:
52
+ str: URL для вебсокета.
53
+ """
54
+ if symbol and symbols:
55
+ raise ValueError("Parameters symbol and symbols cannot be used together")
56
+ if require_symbol and not (symbol or symbols):
57
+ raise ValueError("Either symbol or symbols must be provided")
58
+ if symbol:
59
+ return f"{url}/ws/{symbol.lower()}@{type}"
60
+ if symbols:
61
+ streams = "/".join(f"{s.lower()}@{type}" for s in symbols)
62
+ return f"{url}/stream?streams={streams}"
63
+ return f"{url}/ws/{type}"
64
+
65
+ def trade(
66
+ self,
67
+ callback: CallbackType,
68
+ symbol: str | None = None,
69
+ symbols: Sequence[str] | None = None,
70
+ ) -> Websocket:
71
+ """Создает вебсокет для получения сделок.
72
+
73
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#trade-streams
74
+
75
+ Параметры:
76
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
77
+ symbol (`str | None`): Один символ для подписки.
78
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
79
+
80
+ Возвращает:
81
+ `Websocket`: Объект для управления вебсокет соединением.
82
+ """
83
+ url = self._generate_stream_url(
84
+ type="trade",
85
+ url=self._BASE_SPOT_URL,
86
+ symbol=symbol,
87
+ symbols=symbols,
88
+ require_symbol=True,
89
+ )
90
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
91
+
92
+ def agg_trade(
93
+ self,
94
+ callback: CallbackType,
95
+ symbol: str | None = None,
96
+ symbols: Sequence[str] | None = None,
97
+ ) -> Websocket:
98
+ """Создает вебсокет для получения агрегированных сделок.
99
+
100
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#aggregate-trade-streams
101
+
102
+ Параметры:
103
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
104
+ symbol (`str | None`): Один символ для подписки.
105
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
106
+
107
+ Возвращает:
108
+ `Websocket`: Объект для управления вебсокет соединением.
109
+ """
110
+ url = self._generate_stream_url(
111
+ type="aggTrade",
112
+ url=self._BASE_SPOT_URL,
113
+ symbol=symbol,
114
+ symbols=symbols,
115
+ require_symbol=True,
116
+ )
117
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
118
+
119
+ def klines(
120
+ self,
121
+ callback: CallbackType,
122
+ interval: str,
123
+ symbol: str | None = None,
124
+ symbols: Sequence[str] | None = None,
125
+ ) -> Websocket:
126
+ """Создает вебсокет для получения свечей.
127
+
128
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#klinecandlestick-streams-for-utc
129
+
130
+ Параметры:
131
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
132
+ symbol (`str | None`): Один символ для подписки.
133
+ interval (`str`): Временной интервал свечей.
134
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
135
+
136
+ Возвращает:
137
+ `Websocket`: Объект для управления вебсокет соединением.
138
+ """
139
+ url = self._generate_stream_url(
140
+ type=f"kline_{interval}",
141
+ url=self._BASE_SPOT_URL,
142
+ symbol=symbol,
143
+ symbols=symbols,
144
+ require_symbol=True,
145
+ )
146
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
147
+
148
+ def depth_stream(
149
+ self,
150
+ callback: CallbackType,
151
+ update_speed: str | None = None,
152
+ symbol: str | None = None,
153
+ symbols: Sequence[str] | None = None,
154
+ ) -> Websocket:
155
+ """Создает вебсокет для получения событий изменения стакана (без лимита глубины).
156
+
157
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#diff-depth-stream
158
+
159
+ Параметры:
160
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
161
+ update_speed (`str | None`): Скорость обновления стакана ("1000ms" | "100ms"). По умолчанию "1000ms".
162
+ symbol (`str | None`): Один символ для подписки.
163
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
164
+
165
+ Возвращает:
166
+ `Websocket`: Объект для управления вебсокет соединением.
167
+ """
168
+ url = self._generate_stream_url(
169
+ type="depth" + f"@{update_speed}" if update_speed == "100ms" else "",
170
+ url=self._BASE_SPOT_URL,
171
+ symbol=symbol,
172
+ symbols=symbols,
173
+ require_symbol=True,
174
+ )
175
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
176
+
177
+ def symbol_mini_ticker(
178
+ self,
179
+ callback: CallbackType,
180
+ symbol: str | None = None,
181
+ symbols: Sequence[str] | None = None,
182
+ ) -> Websocket:
183
+ """Создает вебсокет для мини‑статистики тикера за последние 24 часа.
184
+
185
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-mini-ticker-stream
186
+
187
+ Параметры:
188
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
189
+ symbol (`str | None`): Один символ для подписки.
190
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
191
+
192
+ Возвращает:
193
+ `Websocket`: Объект для управления вебсокет соединением.
194
+ """
195
+ url = self._generate_stream_url(
196
+ type="miniTicker",
197
+ url=self._BASE_SPOT_URL,
198
+ symbol=symbol,
199
+ symbols=symbols,
200
+ require_symbol=True,
201
+ )
202
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
203
+
204
+ def mini_ticker(self, callback: CallbackType) -> Websocket:
205
+ """Создает вебсокет для получения мини-статистики всех тикеров за последние 24 ч.
206
+
207
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-mini-ticker-stream
208
+
209
+ Параметры:
210
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
211
+
212
+ Возвращает:
213
+ `Websocket`: Объект для управления вебсокет соединением.
214
+ """
215
+ url = self._generate_stream_url(type="!miniTicker@arr", url=self._BASE_SPOT_URL)
216
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
217
+
218
+ def symbol_ticker(
219
+ self,
220
+ callback: CallbackType,
221
+ symbol: str | None = None,
222
+ symbols: Sequence[str] | None = None,
223
+ ) -> Websocket:
224
+ """Создает вебсокет для расширенной статистики тикера за последние 24 часа.
225
+
226
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-ticker-streams
227
+
228
+ Параметры:
229
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
230
+ symbol (`str | None`): Один символ для подписки.
231
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
232
+
233
+ Возвращает:
234
+ `Websocket`: Объект для управления вебсокет соединением.
235
+ """
236
+ url = self._generate_stream_url(
237
+ type="ticker",
238
+ url=self._BASE_SPOT_URL,
239
+ symbol=symbol,
240
+ symbols=symbols,
241
+ require_symbol=True,
242
+ )
243
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
244
+
245
+ def ticker(self, callback: CallbackType) -> Websocket:
246
+ """Создает вебсокет для получения расширенной статистики всех тикеров за последние 24 ч.
247
+
248
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#all-market-tickers-stream
249
+
250
+ Параметры:
251
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
252
+
253
+ Возвращает:
254
+ `Websocket`: Объект для управления вебсокет соединением.
255
+ """
256
+ url = self._generate_stream_url(type="!ticker@arr", url=self._BASE_SPOT_URL)
257
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
258
+
259
+ def symbol_rolling_window_ticker(
260
+ self,
261
+ callback: CallbackType,
262
+ window: str,
263
+ symbol: str | None = None,
264
+ symbols: Sequence[str] | None = None,
265
+ ) -> Websocket:
266
+ """Создает вебсокет для получения статистики тикера за указанное окно времени.
267
+
268
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-rolling-window-statistics-streams
269
+
270
+ Параметры:
271
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
272
+ window (`str`): Размер окна статистики.
273
+ symbol (`str | None`): Один символ для подписки.
274
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
275
+
276
+ Возвращает:
277
+ `Websocket`: Объект для управления вебсокет соединением.
278
+ """
279
+ url = self._generate_stream_url(
280
+ type=f"ticker_{window}",
281
+ url=self._BASE_SPOT_URL,
282
+ symbol=symbol,
283
+ symbols=symbols,
284
+ require_symbol=True,
285
+ )
286
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
287
+
288
+ def rolling_window_ticker(self, callback: CallbackType, window: str) -> Websocket:
289
+ """Создает вебсокет для получения статистики всех тикеров за указанное окно времени.
290
+
291
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#all-market-rolling-window-statistics-streams
292
+
293
+ Параметры:
294
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
295
+ window (`str`): Размер окна статистики.
296
+
297
+ Возвращает:
298
+ `Websocket`: Объект для управления вебсокет соединением.
299
+ """
300
+ url = self._generate_stream_url(type=f"!ticker_{window}@arr", url=self._BASE_SPOT_URL)
301
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
302
+
303
+ def avg_price(
304
+ self,
305
+ callback: CallbackType,
306
+ symbol: str | None = None,
307
+ symbols: Sequence[str] | None = None,
308
+ ) -> Websocket:
309
+ """Создает вебсокет для получения среднего прайса (Average Price).
310
+
311
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#average-price
312
+
313
+ Параметры:
314
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
315
+ symbol (`str | None`): Один символ для подписки.
316
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
317
+
318
+ Возвращает:
319
+ `Websocket`: Объект для управления вебсокет соединением.
320
+ """
321
+ url = self._generate_stream_url(
322
+ type="avgPrice",
323
+ url=self._BASE_SPOT_URL,
324
+ symbol=symbol,
325
+ symbols=symbols,
326
+ require_symbol=True,
327
+ )
328
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
329
+
330
+ def book_ticker(
331
+ self,
332
+ callback: CallbackType,
333
+ symbol: str | None = None,
334
+ symbols: Sequence[str] | None = None,
335
+ ) -> Websocket:
336
+ """Создает вебсокет для получения лучших бид/аск по символам.
337
+
338
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-book-ticker-streams
339
+
340
+ Параметры:
341
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
342
+ symbol (`str | None`): Один символ для подписки.
343
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
344
+
345
+ Возвращает:
346
+ `Websocket`: Объект для управления вебсокет соединением.
347
+ """
348
+ url = self._generate_stream_url(
349
+ type="bookTicker",
350
+ url=self._BASE_SPOT_URL,
351
+ symbol=symbol,
352
+ symbols=symbols,
353
+ require_symbol=True,
354
+ )
355
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
356
+
357
+ def partial_book_depth(
358
+ self,
359
+ callback: CallbackType,
360
+ levels: str,
361
+ update_speed: str | None = None,
362
+ symbol: str | None = None,
363
+ symbols: Sequence[str] | None = None,
364
+ ) -> Websocket:
365
+ """Создает вебсокет для получения стакана глубиной N уровней.
366
+
367
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#partial-book-depth-streams
368
+
369
+ Параметры:
370
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
371
+ levels (`str`): Глубина стакана (уровни).
372
+ update_speed (`str | None`): Скорость обновления стакана ("100ms" | "1000ms"). По умолчанию: "1000ms".
373
+ symbol (`str | None`): Один символ для подписки.
374
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
375
+
376
+ Возвращает:
377
+ `Websocket`: Объект для управления вебсокет соединением.
378
+ """
379
+ url = self._generate_stream_url(
380
+ type=f"depth{levels}" + f"@{update_speed}" if update_speed else "",
381
+ url=self._BASE_SPOT_URL,
382
+ symbol=symbol,
383
+ symbols=symbols,
384
+ require_symbol=True,
385
+ )
386
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
387
+
388
+ def diff_depth(
389
+ self,
390
+ callback: CallbackType,
391
+ update_speed: str | None = None,
392
+ symbol: str | None = None,
393
+ symbols: Sequence[str] | None = None,
394
+ ) -> Websocket:
395
+ """Создает вебсокет для получения событий изменения стакана (без лимита глубины).
396
+
397
+ https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#diff-depth-stream
398
+
399
+ Параметры:
400
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
401
+ update_speed (`str | None`): Скорость обновления стакана ("100ms" | "1000ms"). По умолчанию: "1000ms".
402
+ symbol (`str | None`): Один символ для подписки.
403
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
404
+
405
+ Возвращает:
406
+ `Websocket`: Объект для управления вебсокет соединением.
407
+ """
408
+ url = self._generate_stream_url(
409
+ type="depth" + f"@{update_speed}" if update_speed else "",
410
+ url=self._BASE_SPOT_URL,
411
+ symbol=symbol,
412
+ symbols=symbols,
413
+ require_symbol=True,
414
+ )
415
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
416
+
417
+ def user_data_stream(self, callback: CallbackType) -> UserWebsocket:
418
+ """Создает вебсокет для получения информации о пользовательских данных.
419
+
420
+ https://developers.binance.com/docs/binance-spot-api-docs/user-data-stream
421
+
422
+ Параметры:
423
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
424
+
425
+ Возвращает:
426
+ `UserWebsocket`: Объект для управления вебсокет соединением.
427
+ """
428
+ if not self.client or not self.client.is_authorized():
429
+ raise NotAuthorized("You must provide authorized client.")
430
+ return UserWebsocket(callback=callback, client=self.client, type="SPOT", **self._ws_kwargs)
431
+
432
+ def multiplex_socket(self, callback: CallbackType, streams: str) -> Websocket:
433
+ """Создает вебсокет для мультиплексирования нескольких стримов в один.
434
+
435
+ Параметры:
436
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
437
+ streams (`str`): Строка с перечислением стримов.
438
+
439
+ Возвращает:
440
+ `Websocket`: Объект для управления вебсокет соединением.
441
+ """
442
+ return Websocket(
443
+ callback=callback, url=self._BASE_SPOT_URL + "?" + streams, **self._ws_kwargs
444
+ )
445
+
446
+ def futures_trade(
447
+ self,
448
+ callback: CallbackType,
449
+ symbol: str | None = None,
450
+ symbols: Sequence[str] | None = None,
451
+ ) -> Websocket:
452
+ """Создает вебсокет для получения сделок.
453
+
454
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Aggregate-Trade-Streams
455
+
456
+ Параметры:
457
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
458
+ symbol (`str | None`): Один символ для подписки.
459
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
460
+
461
+ Возвращает:
462
+ `Websocket`: Объект для управления вебсокет соединением.
463
+ """
464
+ url = self._generate_stream_url(
465
+ type="trade",
466
+ url=self._BASE_FUTURES_URL,
467
+ symbol=symbol,
468
+ symbols=symbols,
469
+ require_symbol=True,
470
+ )
471
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
472
+
473
+ def futures_agg_trade(
474
+ self,
475
+ callback: CallbackType,
476
+ symbol: str | None = None,
477
+ symbols: Sequence[str] | None = None,
478
+ ) -> Websocket:
479
+ """Создает вебсокет для получения агрегированных сделок.
480
+
481
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Aggregate-Trade-Streams
482
+
483
+ Параметры:
484
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
485
+ symbol (`str | None`): Один символ для подписки.
486
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
487
+
488
+ Возвращает:
489
+ `Websocket`: Объект для управления вебсокет соединением.
490
+ """
491
+ url = self._generate_stream_url(
492
+ type="aggTrade",
493
+ url=self._BASE_FUTURES_URL,
494
+ symbol=symbol,
495
+ symbols=symbols,
496
+ require_symbol=True,
497
+ )
498
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
499
+
500
+ def futures_klines(
501
+ self,
502
+ callback: CallbackType,
503
+ interval: str,
504
+ symbol: str | None = None,
505
+ symbols: Sequence[str] | None = None,
506
+ ) -> Websocket:
507
+ """Создает вебсокет для получения свечей.
508
+
509
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Kline-Candlestick-Streams
510
+
511
+ Параметры:
512
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
513
+ interval (`str`): Временной интервал свечей.
514
+ symbol (`str | None`): Один символ для подписки.
515
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
516
+
517
+ Возвращает:
518
+ `Websocket`: Объект для управления вебсокет соединением.
519
+ """
520
+ url = self._generate_stream_url(
521
+ type=f"kline_{interval}",
522
+ url=self._BASE_FUTURES_URL,
523
+ symbol=symbol,
524
+ symbols=symbols,
525
+ require_symbol=True,
526
+ )
527
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
528
+
529
+ def futures_symbol_mini_ticker(
530
+ self,
531
+ callback: CallbackType,
532
+ symbol: str | None = None,
533
+ symbols: Sequence[str] | None = None,
534
+ ) -> Websocket:
535
+ """Создает вебсокет для мини‑статистики тикера за последние 24 часа.
536
+
537
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Individual-Symbol-Mini-Ticker-Stream
538
+
539
+ Параметры:
540
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
541
+ symbol (`str | None`): Один символ для подписки.
542
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
543
+
544
+ Возвращает:
545
+ `Websocket`: Объект для управления вебсокет соединением.
546
+ """
547
+ url = self._generate_stream_url(
548
+ type="miniTicker",
549
+ url=self._BASE_FUTURES_URL,
550
+ symbol=symbol,
551
+ symbols=symbols,
552
+ require_symbol=True,
553
+ )
554
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
555
+
556
+ def futures_mini_ticker(self, callback: CallbackType) -> Websocket:
557
+ """Создает вебсокет для получения мини-статистики всех тикеров за последние 24 ч.
558
+
559
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/All-Market-Mini-Tickers-Stream
560
+
561
+ Параметры:
562
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
563
+
564
+ Возвращает:
565
+ `Websocket`: Объект для управления вебсокет соединением.
566
+ """
567
+ url = self._generate_stream_url(type="!miniTicker@arr", url=self._BASE_FUTURES_URL)
568
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
569
+
570
+ def futures_symbol_ticker(
571
+ self,
572
+ callback: CallbackType,
573
+ symbol: str | None = None,
574
+ symbols: Sequence[str] | None = None,
575
+ ) -> Websocket:
576
+ """Создает вебсокет для расширенной статистики тикера за последние 24 часа.
577
+
578
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Individual-Symbol-Ticker-Streams
579
+
580
+ Параметры:
581
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
582
+ symbol (`str | None`): Один символ для подписки.
583
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
584
+
585
+ Возвращает:
586
+ `Websocket`: Объект для управления вебсокет соединением.
587
+ """
588
+ url = self._generate_stream_url(
589
+ type="ticker",
590
+ url=self._BASE_FUTURES_URL,
591
+ symbol=symbol,
592
+ symbols=symbols,
593
+ require_symbol=True,
594
+ )
595
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
596
+
597
+ def futures_ticker(self, callback: CallbackType) -> Websocket:
598
+ """Создает вебсокет для получения расширенной статистики всех тикеров за последние 24 ч.
599
+
600
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/All-Market-Tickers-Streams
601
+
602
+ Параметры:
603
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
604
+
605
+ Возвращает:
606
+ `Websocket`: Объект для управления вебсокет соединением.
607
+ """
608
+ url = self._generate_stream_url(type="!ticker@arr", url=self._BASE_FUTURES_URL)
609
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
610
+
611
+ def futures_symbol_book_ticker(
612
+ self,
613
+ callback: CallbackType,
614
+ symbol: str | None = None,
615
+ symbols: Sequence[str] | None = None,
616
+ ) -> Websocket:
617
+ """Создает вебсокет для получения лучших бид/аск по символам.
618
+
619
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Individual-Symbol-Book-Ticker-Streams
620
+
621
+ Параметры:
622
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
623
+ symbol (`str | None`): Один символ для подписки.
624
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
625
+
626
+ Возвращает:
627
+ `Websocket`: Объект для управления вебсокет соединением.
628
+ """
629
+ url = self._generate_stream_url(
630
+ type="bookTicker",
631
+ url=self._BASE_FUTURES_URL,
632
+ symbol=symbol,
633
+ symbols=symbols,
634
+ require_symbol=True,
635
+ )
636
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
637
+
638
+ def futures_book_ticker(self, callback: CallbackType) -> Websocket:
639
+ """Создает вебсокет для получения лучших бид/аск по символам.
640
+
641
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/All-Book-Tickers-Stream
642
+
643
+ Параметры:
644
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
645
+
646
+ Возвращает:
647
+ `Websocket`: Объект для управления вебсокет соединением.
648
+ """
649
+ url = self._generate_stream_url(type="!bookTicker", url=self._BASE_FUTURES_URL)
650
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
651
+
652
+ def futures_partial_book_depth(
653
+ self,
654
+ callback: CallbackType,
655
+ symbol: str | None,
656
+ levels: str,
657
+ update_speed: str | None = None,
658
+ symbols: Sequence[str] | None = None,
659
+ ) -> Websocket:
660
+ """Создает вебсокет для получения стакана глубиной N уровней.
661
+
662
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Partial-Book-Depth-Streams
663
+
664
+ Параметры:
665
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
666
+ symbol (`str | None`): Один символ для подписки.
667
+ levels (`str`): Глубина стакана (уровни).
668
+ update_speed (`str`): Скорость обновления стакана (100ms | 500ms | None). По умолчанию - 250ms.
669
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
670
+
671
+ Возвращает:
672
+ `Websocket`: Объект для управления вебсокет соединением.
673
+ """
674
+ url = self._generate_stream_url(
675
+ type=f"depth{levels}" + f"@{update_speed}" if update_speed else "",
676
+ url=self._BASE_FUTURES_URL,
677
+ symbol=symbol,
678
+ symbols=symbols,
679
+ require_symbol=True,
680
+ )
681
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
682
+
683
+ def futures_diff_depth(
684
+ self,
685
+ callback: CallbackType,
686
+ update_speed: str | None = None,
687
+ symbol: str | None = None,
688
+ symbols: Sequence[str] | None = None,
689
+ ) -> Websocket:
690
+ """Создает вебсокет для получения событий изменения стакана (без лимита глубины).
691
+
692
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Diff-Book-Depth-Streams
693
+
694
+ Параметры:
695
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
696
+ update_speed (`str`): Скорость обновления стакана (100ms | 500ms | None). По умолчанию - 250ms.
697
+ symbol (`str | None`): Один символ для подписки.
698
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
699
+
700
+ Возвращает:
701
+ `Websocket`: Объект для управления вебсокет соединением.
702
+ """
703
+ url = self._generate_stream_url(
704
+ type="depth" + f"@{update_speed}" if update_speed else "",
705
+ url=self._BASE_FUTURES_URL,
706
+ symbol=symbol,
707
+ symbols=symbols,
708
+ require_symbol=True,
709
+ )
710
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
711
+
712
+ def futures_mark_price(
713
+ self, callback: CallbackType, update_speed: str | None = None
714
+ ) -> Websocket:
715
+ """Создает вебсокет для получения mark price и funding rate для всех тикеров.
716
+
717
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Mark-Price-Stream-for-All-market
718
+
719
+ Параметры:
720
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
721
+ update_speed (`str`): Частота обновления ("1s" или пусто). По умолчанию "3s".
722
+
723
+ Возвращает:
724
+ `Websocket`: Объект для управления вебсокет соединением.
725
+ """
726
+ url = self._generate_stream_url(
727
+ type="!markPrice" + f"@{update_speed}" if update_speed else "",
728
+ url=self._BASE_FUTURES_URL,
729
+ )
730
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
731
+
732
+ def futures_symbol_mark_price(
733
+ self,
734
+ callback: CallbackType,
735
+ update_speed: str | None = None,
736
+ symbol: str | None = None,
737
+ symbols: Sequence[str] | None = None,
738
+ ) -> Websocket:
739
+ """Создает вебсокет для получения mark price и funding rate по символам.
740
+
741
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Mark-Price-Stream
742
+
743
+ Параметры:
744
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
745
+ update_speed (`str`): Частота обновления ("1s" или пусто). По умолчанию "3s".
746
+ symbol (`str | None`): Один символ для подписки.
747
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
748
+
749
+ Возвращает:
750
+ `Websocket`: Объект для управления вебсокет соединением.
751
+ """
752
+ url = self._generate_stream_url(
753
+ type="markPrice" + f"@{update_speed}" if update_speed else "",
754
+ url=self._BASE_FUTURES_URL,
755
+ symbol=symbol,
756
+ symbols=symbols,
757
+ require_symbol=True,
758
+ )
759
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
760
+
761
+ def futures_continuous_klines(
762
+ self,
763
+ callback: CallbackType,
764
+ pair: str,
765
+ contract_type: str,
766
+ interval: str,
767
+ ) -> Websocket:
768
+ """Создает вебсокет для получения свечей по непрерывным контрактам (continuous contract).
769
+
770
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Continuous-Contract-Kline-Candlestick-Streams
771
+
772
+ Параметры:
773
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
774
+ pair (`str`): Название пары.
775
+ contract_type (`str`): Тип контракта.
776
+ interval (`str`): Временной интервал свечей..
777
+
778
+ Возвращает:
779
+ `Websocket`: Объект для управления вебсокет соединением.
780
+ """
781
+ url = self._generate_stream_url(
782
+ type=f"{pair.lower()}_{contract_type}@continuousKline_{interval}",
783
+ url=self._BASE_FUTURES_URL,
784
+ )
785
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
786
+
787
+ def liquidation_order(
788
+ self,
789
+ callback: CallbackType,
790
+ symbol: str | None = None,
791
+ symbols: Sequence[str] | None = None,
792
+ ) -> Websocket:
793
+ """Создает вебсокет для получения ликвидационных ордеров по символам.
794
+
795
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Liquidation-Order-Streams
796
+
797
+ Параметры:
798
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
799
+ symbol (`str | None`): Один символ для подписки.
800
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
801
+
802
+ Возвращает:
803
+ `Websocket`: Объект для управления вебсокет соединением.
804
+ """
805
+ url = self._generate_stream_url(
806
+ type="forceOrder",
807
+ url=self._BASE_FUTURES_URL,
808
+ symbol=symbol,
809
+ symbols=symbols,
810
+ require_symbol=True,
811
+ )
812
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
813
+
814
+ def all_liquidation_orders(self, callback: CallbackType) -> Websocket:
815
+ """Создает вебсокет для получения всех ликвидационных ордеров по рынку.
816
+
817
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/All-Market-Liquidation-Order-Streams
818
+
819
+ Параметры:
820
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
821
+
822
+ Возвращает:
823
+ `Websocket`: Объект для управления вебсокет соединением.
824
+ """
825
+ url = self._generate_stream_url(type="!forceOrder@arr", url=self._BASE_FUTURES_URL)
826
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
827
+
828
+ def futures_composite_index(
829
+ self,
830
+ callback: CallbackType,
831
+ symbol: str | None = None,
832
+ symbols: Sequence[str] | None = None,
833
+ ) -> Websocket:
834
+ """Создает вебсокет для получения информации по композитному индексу.
835
+
836
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Composite-Index-Symbol-Information-Streams
837
+
838
+ Параметры:
839
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
840
+ symbol (`str | None`): Один символ для подписки.
841
+ symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
842
+
843
+ Возвращает:
844
+ `Websocket`: Объект для управления вебсокет соединением.
845
+ """
846
+ url = self._generate_stream_url(
847
+ type="compositeIndex",
848
+ url=self._BASE_FUTURES_URL,
849
+ symbol=symbol,
850
+ symbols=symbols,
851
+ require_symbol=True,
852
+ )
853
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
854
+
855
+ def futures_contract_info(self, callback: CallbackType) -> Websocket:
856
+ """Создает вебсокет для получения информации о контрактах (Contract Info Stream).
857
+
858
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Contract-Info-Stream
859
+
860
+ Параметры:
861
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
862
+
863
+ Возвращает:
864
+ `Websocket`: Объект для управления вебсокет соединением.
865
+ """
866
+ url = self._generate_stream_url(type="!contractInfo", url=self._BASE_FUTURES_URL)
867
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
868
+
869
+ def futures_multi_assets_index(self, callback: CallbackType) -> Websocket:
870
+ """Создает вебсокет для получения индекса активов в режиме Multi-Assets Mode.
871
+
872
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/Multi-Assets-Mode-Asset-Index
873
+
874
+ Параметры:
875
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
876
+
877
+ Возвращает:
878
+ `Websocket`: Объект для управления вебсокет соединением.
879
+ """
880
+ url = self._generate_stream_url(type="!assetIndex@arr", url=self._BASE_FUTURES_URL)
881
+ return Websocket(callback=callback, url=url, **self._ws_kwargs)
882
+
883
+ def futures_user_data_stream(self, callback: CallbackType) -> UserWebsocket:
884
+ """Создает вебсокет для получения информации о пользовательских данных.
885
+
886
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/user-data-streams
887
+
888
+ Параметры:
889
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
890
+
891
+ Возвращает:
892
+ `UserWebsocket`: Вебсокет для получения информации о пользовательских данных.
893
+ """
894
+ if not self.client or not self.client.is_authorized():
895
+ raise NotAuthorized("You must provide authorized client.")
896
+ return UserWebsocket(
897
+ callback=callback, client=self.client, type="FUTURES", **self._ws_kwargs
898
+ )
899
+
900
+ def futures_multiplex_socket(self, callback: CallbackType, streams: str) -> Websocket:
901
+ """Создает вебсокет для мультиплексирования нескольких стримов в один.
902
+
903
+ Параметры:
904
+ callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
905
+ streams (`str`): Строка с перечислением стримов.
906
+
907
+ Возвращает:
908
+ `Websocket`: Вебсокет для получения информации о пользовательских данных.
909
+ """
910
+ return Websocket(
911
+ callback=callback, url=self._BASE_FUTURES_URL + "?" + streams, **self._ws_kwargs
912
+ )