unicex 0.14.2__py3-none-any.whl → 0.14.5__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.
unicex/_abc/uni_client.py CHANGED
@@ -1,5 +1,6 @@
1
1
  __all__ = ["IUniClient"]
2
2
 
3
+ import time
3
4
  from abc import ABC, abstractmethod
4
5
  from typing import Generic, Self, TypeVar, overload
5
6
 
@@ -175,6 +176,35 @@ class IUniClient(ABC, Generic[TClient]):
175
176
  tickers = await self.tickers(only_usdt)
176
177
  return batched_list(tickers, batch_size)
177
178
 
179
+ @staticmethod
180
+ def limit_to_start_and_end_time(
181
+ interval: Timeframe, limit: int, use_milliseconds: bool = True
182
+ ) -> tuple[int, int]:
183
+ """Преобразует `limit` в `start_time` и `end_time`.
184
+
185
+ Параметры:
186
+ interval (`Timeframe`): Интервал времени.
187
+ limit (`int`): Количество элементов.
188
+ use_milliseconds (`bool`): Использовать миллисекунды.
189
+
190
+ Нужен, потому что на некоторых биржах параметр `limit` не принимается напрямую.
191
+ """
192
+ end_time = int(time.time())
193
+ start_time = end_time - (limit * interval.to_seconds) # type: ignore[reportOptionalOperand]
194
+ if use_milliseconds:
195
+ start_time *= 1000
196
+ end_time *= 1000
197
+ return start_time, end_time
198
+
199
+ @staticmethod
200
+ def to_seconds(value: int | None) -> int | None:
201
+ """Преобразует значение из миллисекунд в секунды для передачи в API."""
202
+ if value is None:
203
+ return None
204
+ if value >= 1_000_000_000_000:
205
+ return value // 1000
206
+ return value
207
+
178
208
  @abstractmethod
179
209
  async def futures_tickers(self, only_usdt: bool = True) -> list[str]:
180
210
  """Возвращает список тикеров.
unicex/binance/client.py CHANGED
@@ -7,7 +7,7 @@ from typing import Any
7
7
 
8
8
  from unicex._base import BaseClient
9
9
  from unicex.exceptions import NotAuthorized
10
- from unicex.types import RequestMethod
10
+ from unicex.types import NumberLike, RequestMethod
11
11
  from unicex.utils import dict_to_query_string, filter_params, generate_hmac_sha256_signature
12
12
 
13
13
 
@@ -367,13 +367,13 @@ class Client(BaseClient):
367
367
  symbol: str,
368
368
  side: str,
369
369
  type: str,
370
- quantity: float | None = None,
371
- quote_order_qty: float | None = None,
372
- price: float | None = None,
373
- stop_price: float | None = None,
370
+ quantity: NumberLike | None = None,
371
+ quote_order_qty: NumberLike | None = None,
372
+ price: NumberLike | None = None,
373
+ stop_price: NumberLike | None = None,
374
374
  time_in_force: str | None = None,
375
375
  new_client_order_id: str | None = None,
376
- iceberg_qty: float | None = None,
376
+ iceberg_qty: NumberLike | None = None,
377
377
  new_order_resp_type: str | None = None,
378
378
  self_trade_prevention_mode: str | None = None,
379
379
  ) -> dict:
@@ -405,13 +405,13 @@ class Client(BaseClient):
405
405
  symbol: str,
406
406
  side: str,
407
407
  type: str,
408
- quantity: float | None = None,
409
- quote_order_qty: float | None = None,
410
- price: float | None = None,
411
- stop_price: float | None = None,
408
+ quantity: NumberLike | None = None,
409
+ quote_order_qty: NumberLike | None = None,
410
+ price: NumberLike | None = None,
411
+ stop_price: NumberLike | None = None,
412
412
  time_in_force: str | None = None,
413
413
  new_client_order_id: str | None = None,
414
- iceberg_qty: float | None = None,
414
+ iceberg_qty: NumberLike | None = None,
415
415
  new_order_resp_type: str | None = None,
416
416
  self_trade_prevention_mode: str | None = None,
417
417
  ) -> dict:
@@ -482,26 +482,26 @@ class Client(BaseClient):
482
482
  self,
483
483
  symbol: str,
484
484
  side: str,
485
- quantity: str,
485
+ quantity: NumberLike,
486
486
  list_client_order_id: str | None = None,
487
487
  # ABOVE ORDER
488
488
  above_type: str = "TAKE_PROFIT_LIMIT",
489
489
  above_client_order_id: str | None = None,
490
- above_price: str | None = None,
491
- above_stop_price: str | None = None,
490
+ above_price: NumberLike | None = None,
491
+ above_stop_price: NumberLike | None = None,
492
492
  above_trailing_delta: int | None = None,
493
493
  above_time_in_force: str | None = None,
494
- above_iceberg_qty: str | None = None,
494
+ above_iceberg_qty: NumberLike | None = None,
495
495
  above_strategy_id: int | None = None,
496
496
  above_strategy_type: int | None = None,
497
497
  # BELOW ORDER
498
498
  below_type: str = "STOP_LOSS_LIMIT",
499
499
  below_client_order_id: str | None = None,
500
- below_price: str | None = None,
501
- below_stop_price: str | None = None,
500
+ below_price: NumberLike | None = None,
501
+ below_stop_price: NumberLike | None = None,
502
502
  below_trailing_delta: int | None = None,
503
503
  below_time_in_force: str | None = None,
504
- below_iceberg_qty: str | None = None,
504
+ below_iceberg_qty: NumberLike | None = None,
505
505
  below_strategy_id: int | None = None,
506
506
  below_strategy_type: int | None = None,
507
507
  # EXTRA
@@ -1126,13 +1126,13 @@ class Client(BaseClient):
1126
1126
  symbol: str,
1127
1127
  side: str,
1128
1128
  type: str,
1129
- quantity: float | None = None,
1129
+ quantity: NumberLike | None = None,
1130
1130
  reduce_only: bool | None = None,
1131
- price: float | None = None,
1131
+ price: NumberLike | None = None,
1132
1132
  new_client_order_id: str | None = None,
1133
- stop_price: float | None = None,
1133
+ stop_price: NumberLike | None = None,
1134
1134
  close_position: bool | None = None,
1135
- activation_price: float | None = None,
1135
+ activation_price: NumberLike | None = None,
1136
1136
  callback_rate: float | None = None,
1137
1137
  time_in_force: str | None = None,
1138
1138
  working_type: str | None = None,
@@ -1176,8 +1176,8 @@ class Client(BaseClient):
1176
1176
  orig_client_order_id: str | None = None,
1177
1177
  symbol: str | None = None,
1178
1178
  side: str | None = None,
1179
- quantity: float | None = None,
1180
- price: float | None = None,
1179
+ quantity: NumberLike | None = None,
1180
+ price: NumberLike | None = None,
1181
1181
  price_match: str | None = None,
1182
1182
  ) -> dict:
1183
1183
  """Изменение ордера на фьючерсах.
@@ -1356,7 +1356,7 @@ class Client(BaseClient):
1356
1356
  self,
1357
1357
  symbol: str,
1358
1358
  position_side: str,
1359
- amount: float,
1359
+ amount: NumberLike,
1360
1360
  type: int,
1361
1361
  ) -> dict:
1362
1362
  """Изменение изолированной маржи позиции.
@@ -20,16 +20,20 @@ class UniWebsocketManager(IUniWebsocketManager):
20
20
  """Реализация менеджера асинхронных унифицированных вебсокетов для биржи Binance."""
21
21
 
22
22
  def __init__(
23
- self, client: Client | UniClient | None = None, logger: LoggerLike | None = None
23
+ self,
24
+ client: Client | UniClient | None = None,
25
+ logger: LoggerLike | None = None,
26
+ **ws_kwargs: Any,
24
27
  ) -> None:
25
28
  """Инициализирует унифицированный менеджер вебсокетов.
26
29
 
27
30
  Параметры:
28
31
  client (`Client | UniClient | None`): Клиент Binance или унифицированный клиент. Нужен для подключения к приватным топикам.
29
32
  logger (`LoggerLike | None`): Логгер для записи логов.
33
+ ws_kwargs (`dict[str, Any]`): Дополнительные параметры инициализации, которые будут переданы WebsocketManager/Websocket.
30
34
  """
31
35
  super().__init__(client=client, logger=logger)
32
- self._websocket_manager = WebsocketManager(self._client) # type: ignore
36
+ self._websocket_manager = WebsocketManager(self._client, **ws_kwargs) # type: ignore
33
37
  self._adapter = Adapter()
34
38
 
35
39
  def klines(
unicex/bitget/client.py CHANGED
@@ -6,7 +6,7 @@ from typing import Any, Literal
6
6
 
7
7
  from unicex._base import BaseClient
8
8
  from unicex.exceptions import NotAuthorized
9
- from unicex.types import RequestMethod
9
+ from unicex.types import NumberLike, RequestMethod
10
10
  from unicex.utils import (
11
11
  dict_to_query_string,
12
12
  filter_params,
@@ -434,18 +434,18 @@ class Client(BaseClient):
434
434
  side: str,
435
435
  order_type: str,
436
436
  force: str | None = None,
437
- price: str | None = None,
438
- size: str | None = None,
437
+ price: NumberLike | None = None,
438
+ size: NumberLike | None = None,
439
439
  client_oid: str | None = None,
440
- trigger_price: str | None = None,
440
+ trigger_price: NumberLike | None = None,
441
441
  tpsl_type: str | None = None,
442
442
  request_time: str | None = None,
443
443
  receive_window: str | None = None,
444
444
  stp_mode: str | None = None,
445
- preset_take_profit_price: str | None = None,
446
- execute_take_profit_price: str | None = None,
447
- preset_stop_loss_price: str | None = None,
448
- execute_stop_loss_price: str | None = None,
445
+ preset_take_profit_price: NumberLike | None = None,
446
+ execute_take_profit_price: NumberLike | None = None,
447
+ preset_stop_loss_price: NumberLike | None = None,
448
+ execute_stop_loss_price: NumberLike | None = None,
449
449
  ) -> dict:
450
450
  """Размещение спотового ордера.
451
451
 
@@ -479,15 +479,15 @@ class Client(BaseClient):
479
479
  async def cancel_an_existing_order_and_send_a_new_order(
480
480
  self,
481
481
  symbol: str,
482
- price: str,
483
- size: str,
482
+ price: NumberLike,
483
+ size: NumberLike,
484
484
  order_id: str | None = None,
485
485
  client_oid: str | None = None,
486
486
  new_client_oid: str | None = None,
487
- preset_take_profit_price: str | None = None,
488
- execute_take_profit_price: str | None = None,
489
- preset_stop_loss_price: str | None = None,
490
- execute_stop_loss_price: str | None = None,
487
+ preset_take_profit_price: NumberLike | None = None,
488
+ execute_take_profit_price: NumberLike | None = None,
489
+ preset_stop_loss_price: NumberLike | None = None,
490
+ execute_stop_loss_price: NumberLike | None = None,
491
491
  ) -> dict:
492
492
  """Отмена существующего ордера и размещение нового.
493
493
 
@@ -716,11 +716,11 @@ class Client(BaseClient):
716
716
  self,
717
717
  symbol: str,
718
718
  side: str,
719
- trigger_price: str,
719
+ trigger_price: NumberLike,
720
720
  order_type: str,
721
- size: str | float,
721
+ size: NumberLike,
722
722
  trigger_type: str,
723
- execute_price: str | None = None,
723
+ execute_price: NumberLike | None = None,
724
724
  plan_type: str | None = None,
725
725
  client_oid: str | None = None,
726
726
  stp_mode: str | None = None,
@@ -748,12 +748,12 @@ class Client(BaseClient):
748
748
 
749
749
  async def modify_plan_order(
750
750
  self,
751
- trigger_price: str,
752
- size: str | float,
751
+ trigger_price: NumberLike,
752
+ size: NumberLike,
753
753
  order_type: str,
754
754
  order_id: str | None = None,
755
755
  client_oid: str | None = None,
756
- execute_price: str | None = None,
756
+ execute_price: NumberLike | None = None,
757
757
  ) -> dict:
758
758
  """Изменение планового ордера (trigger order).
759
759
 
@@ -950,7 +950,7 @@ class Client(BaseClient):
950
950
  self,
951
951
  from_type: str,
952
952
  to_type: str,
953
- amount: str | float,
953
+ amount: NumberLike,
954
954
  coin: str,
955
955
  symbol: str,
956
956
  client_oid: str | None = None,
@@ -992,7 +992,7 @@ class Client(BaseClient):
992
992
  self,
993
993
  from_type: str,
994
994
  to_type: str,
995
- amount: float,
995
+ amount: NumberLike,
996
996
  coin: str,
997
997
  symbol: str | None = None,
998
998
  client_oid: str | None = None,
@@ -1026,7 +1026,7 @@ class Client(BaseClient):
1026
1026
  inner_to_type: str | None = None,
1027
1027
  area_code: str | None = None,
1028
1028
  tag: str | None = None,
1029
- size: str | float | None = None,
1029
+ size: NumberLike | None = None,
1030
1030
  remark: str | None = None,
1031
1031
  client_oid: str | None = None,
1032
1032
  member_code: str | None = None,
@@ -1480,8 +1480,8 @@ class Client(BaseClient):
1480
1480
  self,
1481
1481
  symbol: str,
1482
1482
  margin_coin: str,
1483
- open_amount: float,
1484
- open_price: float,
1483
+ open_amount: NumberLike,
1484
+ open_price: NumberLike,
1485
1485
  product_type: Literal["USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES"] = "USDT-FUTURES",
1486
1486
  leverage: int | None = 20,
1487
1487
  ) -> dict:
@@ -1575,7 +1575,7 @@ class Client(BaseClient):
1575
1575
  symbol: str,
1576
1576
  margin_coin: str,
1577
1577
  hold_side: str,
1578
- amount: str,
1578
+ amount: NumberLike,
1579
1579
  product_type: Literal["USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES"] = "USDT-FUTURES",
1580
1580
  ) -> dict:
1581
1581
  """Добавить или уменьшить маржу для позиции (только для изолированной маржи).
@@ -1637,7 +1637,7 @@ class Client(BaseClient):
1637
1637
  async def futures_union_convert(
1638
1638
  self,
1639
1639
  coin: str,
1640
- amount: str,
1640
+ amount: NumberLike,
1641
1641
  ) -> dict:
1642
1642
  """Конвертация активов в режиме объединенной маржи.
1643
1643
 
@@ -1826,19 +1826,19 @@ class Client(BaseClient):
1826
1826
  symbol: str,
1827
1827
  margin_mode: str,
1828
1828
  margin_coin: str,
1829
- size: str,
1829
+ size: NumberLike,
1830
1830
  side: str,
1831
1831
  order_type: str,
1832
1832
  product_type: Literal["USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES"] = "USDT-FUTURES",
1833
- price: str | None = None,
1833
+ price: NumberLike | None = None,
1834
1834
  trade_side: str | None = None,
1835
1835
  force: str | None = "gtc",
1836
1836
  client_oid: str | None = None,
1837
1837
  reduce_only: str | None = "NO",
1838
- preset_stop_surplus_price: str | None = None,
1839
- preset_stop_loss_price: str | None = None,
1840
- preset_stop_surplus_execute_price: str | None = None,
1841
- preset_stop_loss_execute_price: str | None = None,
1838
+ preset_stop_surplus_price: NumberLike | None = None,
1839
+ preset_stop_loss_price: NumberLike | None = None,
1840
+ preset_stop_surplus_execute_price: NumberLike | None = None,
1841
+ preset_stop_loss_execute_price: NumberLike | None = None,
1842
1842
  stp_mode: str | None = "none",
1843
1843
  ) -> dict:
1844
1844
  """Разместить ордер на фьючерсном рынке.
@@ -1875,7 +1875,7 @@ class Client(BaseClient):
1875
1875
  margin_coin: str,
1876
1876
  side: str,
1877
1877
  product_type: Literal["USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES"] = "USDT-FUTURES",
1878
- size: str | None = None,
1878
+ size: NumberLike | None = None,
1879
1879
  trade_side: str | None = None,
1880
1880
  client_oid: str | None = None,
1881
1881
  ) -> dict:
@@ -1929,10 +1929,10 @@ class Client(BaseClient):
1929
1929
  product_type: Literal["USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES"] = "USDT-FUTURES",
1930
1930
  order_id: str | None = None,
1931
1931
  client_oid: str | None = None,
1932
- new_size: str | None = None,
1933
- new_price: str | None = None,
1934
- new_preset_stop_surplus_price: str | None = None,
1935
- new_preset_stop_loss_price: str | None = None,
1932
+ new_size: NumberLike | None = None,
1933
+ new_price: NumberLike | None = None,
1934
+ new_preset_stop_surplus_price: NumberLike | None = None,
1935
+ new_preset_stop_loss_price: NumberLike | None = None,
1936
1936
  ) -> dict:
1937
1937
  """Модифицировать существующий ордер: цену, размер и/или TP/SL.
1938
1938
 
@@ -2212,12 +2212,12 @@ class Client(BaseClient):
2212
2212
  margin_coin: str,
2213
2213
  symbol: str,
2214
2214
  plan_type: str,
2215
- trigger_price: str,
2215
+ trigger_price: NumberLike,
2216
2216
  hold_side: str,
2217
- size: str,
2217
+ size: NumberLike,
2218
2218
  product_type: Literal["USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES"] = "USDT-FUTURES",
2219
2219
  trigger_type: str | None = None,
2220
- execute_price: str | None = None,
2220
+ execute_price: NumberLike | None = None,
2221
2221
  range_rate: str | None = None,
2222
2222
  client_oid: str | None = None,
2223
2223
  stp_mode: str | None = None,
@@ -2251,14 +2251,14 @@ class Client(BaseClient):
2251
2251
  symbol: str,
2252
2252
  hold_side: str,
2253
2253
  product_type: Literal["USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES"] = "USDT-FUTURES",
2254
- stop_surplus_trigger_price: str | None = None,
2255
- stop_surplus_size: str | None = None,
2254
+ stop_surplus_trigger_price: NumberLike | None = None,
2255
+ stop_surplus_size: NumberLike | None = None,
2256
2256
  stop_surplus_trigger_type: str | None = None,
2257
- stop_surplus_execute_price: str | None = None,
2258
- stop_loss_trigger_price: str | None = None,
2259
- stop_loss_size: str | None = None,
2257
+ stop_surplus_execute_price: NumberLike | None = None,
2258
+ stop_loss_trigger_price: NumberLike | None = None,
2259
+ stop_loss_size: NumberLike | None = None,
2260
2260
  stop_loss_trigger_type: str | None = None,
2261
- stop_loss_execute_price: str | None = None,
2261
+ stop_loss_execute_price: NumberLike | None = None,
2262
2262
  stp_mode: str | None = None,
2263
2263
  stop_surplus_client_oid: str | None = None,
2264
2264
  stop_loss_client_oid: str | None = None,
@@ -2295,22 +2295,22 @@ class Client(BaseClient):
2295
2295
  symbol: str,
2296
2296
  margin_mode: str,
2297
2297
  margin_coin: str,
2298
- size: str,
2298
+ size: NumberLike,
2299
2299
  side: str,
2300
2300
  order_type: str,
2301
- trigger_price: str,
2301
+ trigger_price: NumberLike,
2302
2302
  trigger_type: str,
2303
2303
  product_type: Literal["USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES"] = "USDT-FUTURES",
2304
2304
  trade_side: str | None = None,
2305
- price: str | None = None,
2305
+ price: NumberLike | None = None,
2306
2306
  callback_ratio: str | None = None,
2307
2307
  client_oid: str | None = None,
2308
2308
  reduce_only: str | None = None,
2309
- stop_surplus_trigger_price: str | None = None,
2310
- stop_surplus_execute_price: str | None = None,
2309
+ stop_surplus_trigger_price: NumberLike | None = None,
2310
+ stop_surplus_execute_price: NumberLike | None = None,
2311
2311
  stop_surplus_trigger_type: str | None = None,
2312
- stop_loss_trigger_price: str | None = None,
2313
- stop_loss_execute_price: str | None = None,
2312
+ stop_loss_trigger_price: NumberLike | None = None,
2313
+ stop_loss_execute_price: NumberLike | None = None,
2314
2314
  stop_loss_trigger_type: str | None = None,
2315
2315
  stp_mode: str | None = None,
2316
2316
  ) -> dict:
@@ -2351,13 +2351,13 @@ class Client(BaseClient):
2351
2351
  self,
2352
2352
  margin_coin: str,
2353
2353
  symbol: str,
2354
- trigger_price: str,
2355
- size: str,
2354
+ trigger_price: NumberLike,
2355
+ size: NumberLike,
2356
2356
  product_type: Literal["USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES"] = "USDT-FUTURES",
2357
2357
  order_id: str | None = None,
2358
2358
  client_oid: str | None = None,
2359
2359
  trigger_type: str | None = None,
2360
- execute_price: str | None = None,
2360
+ execute_price: NumberLike | None = None,
2361
2361
  range_rate: str | None = None,
2362
2362
  ) -> dict:
2363
2363
  """Изменить TP/SL ордер.
@@ -2386,16 +2386,16 @@ class Client(BaseClient):
2386
2386
  product_type: Literal["USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES"] = "USDT-FUTURES",
2387
2387
  order_id: str | None = None,
2388
2388
  client_oid: str | None = None,
2389
- new_size: str | None = None,
2390
- new_price: str | None = None,
2389
+ new_size: NumberLike | None = None,
2390
+ new_price: NumberLike | None = None,
2391
2391
  new_callback_ratio: str | None = None,
2392
- new_trigger_price: str | None = None,
2392
+ new_trigger_price: NumberLike | None = None,
2393
2393
  new_trigger_type: str | None = None,
2394
- new_stop_surplus_trigger_price: str | None = None,
2395
- new_stop_surplus_execute_price: str | None = None,
2394
+ new_stop_surplus_trigger_price: NumberLike | None = None,
2395
+ new_stop_surplus_execute_price: NumberLike | None = None,
2396
2396
  new_stop_surplus_trigger_type: str | None = None,
2397
- new_stop_loss_trigger_price: str | None = None,
2398
- new_stop_loss_execute_price: str | None = None,
2397
+ new_stop_loss_trigger_price: NumberLike | None = None,
2398
+ new_stop_loss_execute_price: NumberLike | None = None,
2399
2399
  new_stop_loss_trigger_type: str | None = None,
2400
2400
  ) -> dict:
2401
2401
  """Изменить триггерный или трейлинг ордер, включая TP/SL.
@@ -20,16 +20,20 @@ class UniWebsocketManager(IUniWebsocketManager):
20
20
  """Реализация менеджера асинхронных унифицированных вебсокетов для биржи Bitget."""
21
21
 
22
22
  def __init__(
23
- self, client: Client | UniClient | None = None, logger: LoggerLike | None = None
23
+ self,
24
+ client: Client | UniClient | None = None,
25
+ logger: LoggerLike | None = None,
26
+ **ws_kwargs: Any,
24
27
  ) -> None:
25
28
  """Инициализирует унифицированный менеджер вебсокетов.
26
29
 
27
30
  Параметры:
28
31
  client (`Client | UniClient | None`): Клиент Bitget или унифицированный клиент. Нужен для подключения к приватным топикам.
29
32
  logger (`LoggerLike | None`): Логгер для записи логов.
33
+ ws_kwargs (`dict[str, Any]`): Дополнительные параметры инициализации, которые будут переданы WebsocketManager/Websocket.
30
34
  """
31
35
  super().__init__(client=client, logger=logger)
32
- self._websocket_manager = WebsocketManager(self._client) # type: ignore
36
+ self._websocket_manager = WebsocketManager(self._client, **ws_kwargs) # type: ignore
33
37
  self._adapter = Adapter()
34
38
 
35
39
  @overload
unicex/bybit/client.py CHANGED
@@ -6,7 +6,7 @@ from typing import Any, Literal
6
6
 
7
7
  from unicex._base import BaseClient
8
8
  from unicex.exceptions import NotAuthorized
9
- from unicex.types import RequestMethod
9
+ from unicex.types import NumberLike, RequestMethod
10
10
  from unicex.utils import dict_to_query_string, filter_params, generate_hmac_sha256_signature
11
11
 
12
12
 
@@ -588,22 +588,22 @@ class Client(BaseClient):
588
588
  symbol: str,
589
589
  side: Literal["Buy", "Sell"],
590
590
  order_type: Literal["Market", "Limit"],
591
- qty: str,
591
+ qty: NumberLike,
592
592
  is_leverage: int | None = None,
593
593
  market_unit: str | None = None,
594
594
  slippage_tolerance_type: str | None = None,
595
595
  slippage_tolerance: str | None = None,
596
- price: str | None = None,
596
+ price: NumberLike | None = None,
597
597
  trigger_direction: int | None = None,
598
598
  order_filter: str | None = None,
599
- trigger_price: str | None = None,
599
+ trigger_price: NumberLike | None = None,
600
600
  trigger_by: str | None = None,
601
601
  order_iv: str | None = None,
602
602
  time_in_force: str | None = None,
603
603
  position_idx: int | None = None,
604
604
  order_link_id: str | None = None,
605
- take_profit: str | None = None,
606
- stop_loss: str | None = None,
605
+ take_profit: NumberLike | None = None,
606
+ stop_loss: NumberLike | None = None,
607
607
  tp_trigger_by: str | None = None,
608
608
  sl_trigger_by: str | None = None,
609
609
  reduce_only: bool | None = None,
@@ -611,8 +611,8 @@ class Client(BaseClient):
611
611
  smp_type: str | None = None,
612
612
  mmp: bool | None = None,
613
613
  tpsl_mode: str | None = None,
614
- tp_limit_price: str | None = None,
615
- sl_limit_price: str | None = None,
614
+ tp_limit_price: NumberLike | None = None,
615
+ sl_limit_price: NumberLike | None = None,
616
616
  tp_order_type: str | None = None,
617
617
  sl_order_type: str | None = None,
618
618
  ) -> dict:
@@ -663,17 +663,17 @@ class Client(BaseClient):
663
663
  order_id: str | None = None,
664
664
  order_link_id: str | None = None,
665
665
  order_iv: str | None = None,
666
- trigger_price: str | None = None,
667
- qty: str | None = None,
668
- price: str | None = None,
666
+ trigger_price: NumberLike | None = None,
667
+ qty: NumberLike | None = None,
668
+ price: NumberLike | None = None,
669
669
  tpsl_mode: str | None = None,
670
- take_profit: str | None = None,
671
- stop_loss: str | None = None,
670
+ take_profit: NumberLike | None = None,
671
+ stop_loss: NumberLike | None = None,
672
672
  tp_trigger_by: str | None = None,
673
673
  sl_trigger_by: str | None = None,
674
674
  trigger_by: str | None = None,
675
- tp_limit_price: str | None = None,
676
- sl_limit_price: str | None = None,
675
+ tp_limit_price: NumberLike | None = None,
676
+ sl_limit_price: NumberLike | None = None,
677
677
  ) -> dict:
678
678
  """Изменение параметров ордера.
679
679
 
@@ -942,17 +942,17 @@ class Client(BaseClient):
942
942
  symbol: str,
943
943
  side: str,
944
944
  order_type: str,
945
- qty: str,
946
- price: str | None = None,
945
+ qty: NumberLike,
946
+ price: NumberLike | None = None,
947
947
  trigger_direction: int | None = None,
948
- trigger_price: str | None = None,
948
+ trigger_price: NumberLike | None = None,
949
949
  trigger_by: str | None = None,
950
950
  order_iv: str | None = None,
951
951
  time_in_force: str | None = None,
952
952
  position_idx: int | None = None,
953
953
  order_link_id: str | None = None,
954
- take_profit: str | None = None,
955
- stop_loss: str | None = None,
954
+ take_profit: NumberLike | None = None,
955
+ stop_loss: NumberLike | None = None,
956
956
  tp_trigger_by: str | None = None,
957
957
  sl_trigger_by: str | None = None,
958
958
  reduce_only: bool | None = None,
@@ -960,8 +960,8 @@ class Client(BaseClient):
960
960
  smp_type: str | None = None,
961
961
  mmp: bool | None = None,
962
962
  tpsl_mode: str | None = None,
963
- tp_limit_price: str | None = None,
964
- sl_limit_price: str | None = None,
963
+ tp_limit_price: NumberLike | None = None,
964
+ sl_limit_price: NumberLike | None = None,
965
965
  tp_order_type: str | None = None,
966
966
  sl_order_type: str | None = None,
967
967
  ) -> dict:
@@ -1100,16 +1100,16 @@ class Client(BaseClient):
1100
1100
  symbol: str,
1101
1101
  tpsl_mode: str,
1102
1102
  position_idx: int,
1103
- take_profit: str | None = None,
1104
- stop_loss: str | None = None,
1103
+ take_profit: NumberLike | None = None,
1104
+ stop_loss: NumberLike | None = None,
1105
1105
  trailing_stop: str | None = None,
1106
1106
  tp_trigger_by: str | None = None,
1107
1107
  sl_trigger_by: str | None = None,
1108
- active_price: str | None = None,
1109
- tp_size: str | None = None,
1110
- sl_size: str | None = None,
1111
- tp_limit_price: str | None = None,
1112
- sl_limit_price: str | None = None,
1108
+ active_price: NumberLike | None = None,
1109
+ tp_size: NumberLike | None = None,
1110
+ sl_size: NumberLike | None = None,
1111
+ tp_limit_price: NumberLike | None = None,
1112
+ sl_limit_price: NumberLike | None = None,
1113
1113
  tp_order_type: str | None = None,
1114
1114
  sl_order_type: str | None = None,
1115
1115
  ) -> dict:
@@ -20,16 +20,20 @@ class UniWebsocketManager(IUniWebsocketManager):
20
20
  """Реализация менеджера асинхронных унифицированных вебсокетов."""
21
21
 
22
22
  def __init__(
23
- self, client: Client | UniClient | None = None, logger: LoggerLike | None = None
23
+ self,
24
+ client: Client | UniClient | None = None,
25
+ logger: LoggerLike | None = None,
26
+ **ws_kwargs: Any,
24
27
  ) -> None:
25
28
  """Инициализирует унифицированный менеджер вебсокетов.
26
29
 
27
30
  Параметры:
28
31
  client (`Client | UniClient | None`): Клиент Bybit или унифицированный клиент. Нужен для подключения к приватным топикам.
29
32
  logger (`LoggerLike | None`): Логгер для записи логов.
33
+ ws_kwargs (`dict[str, Any]`): Дополнительные параметры инициализации, которые будут переданы WebsocketManager/Websocket.
30
34
  """
31
35
  super().__init__(client=client, logger=logger)
32
- self._websocket_manager = WebsocketManager(self._client) # type: ignore
36
+ self._websocket_manager = WebsocketManager(self._client, **ws_kwargs) # type: ignore
33
37
  self._adapter = Adapter()
34
38
 
35
39
  @overload