ccxt 4.1.47__py2.py3-none-any.whl → 4.1.49__py2.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.

Potentially problematic release.


This version of ccxt might be problematic. Click here for more details.

Files changed (166) hide show
  1. ccxt/__init__.py +3 -1
  2. ccxt/abstract/binance.py +2 -0
  3. ccxt/abstract/binancecoinm.py +2 -0
  4. ccxt/abstract/binanceus.py +2 -0
  5. ccxt/abstract/binanceusdm.py +2 -0
  6. ccxt/abstract/htx.py +541 -0
  7. ccxt/ace.py +2 -2
  8. ccxt/ascendex.py +2 -2
  9. ccxt/async_support/__init__.py +3 -1
  10. ccxt/async_support/ace.py +2 -2
  11. ccxt/async_support/ascendex.py +2 -2
  12. ccxt/async_support/base/exchange.py +1 -1
  13. ccxt/async_support/bigone.py +2 -2
  14. ccxt/async_support/binance.py +5 -3
  15. ccxt/async_support/bingx.py +3 -3
  16. ccxt/async_support/bitbns.py +2 -2
  17. ccxt/async_support/bitfinex.py +2 -2
  18. ccxt/async_support/bitfinex2.py +2 -2
  19. ccxt/async_support/bitget.py +3 -3
  20. ccxt/async_support/bithumb.py +2 -2
  21. ccxt/async_support/bitmart.py +157 -53
  22. ccxt/async_support/bitmex.py +2 -2
  23. ccxt/async_support/bitopro.py +2 -2
  24. ccxt/async_support/bitpanda.py +2 -2
  25. ccxt/async_support/bitrue.py +2 -2
  26. ccxt/async_support/bitstamp.py +2 -2
  27. ccxt/async_support/bittrex.py +2 -2
  28. ccxt/async_support/bitvavo.py +2 -2
  29. ccxt/async_support/blockchaincom.py +2 -2
  30. ccxt/async_support/btcalpha.py +2 -2
  31. ccxt/async_support/btcturk.py +2 -2
  32. ccxt/async_support/bybit.py +2 -2
  33. ccxt/async_support/cex.py +2 -2
  34. ccxt/async_support/coinbase.py +2 -2
  35. ccxt/async_support/coinbasepro.py +2 -2
  36. ccxt/async_support/coinex.py +63 -20
  37. ccxt/async_support/coinfalcon.py +2 -2
  38. ccxt/async_support/coinlist.py +2 -2
  39. ccxt/async_support/coinone.py +2 -2
  40. ccxt/async_support/coinsph.py +2 -2
  41. ccxt/async_support/coinspot.py +2 -2
  42. ccxt/async_support/cryptocom.py +2 -2
  43. ccxt/async_support/currencycom.py +2 -2
  44. ccxt/async_support/delta.py +2 -2
  45. ccxt/async_support/deribit.py +2 -2
  46. ccxt/async_support/digifinex.py +2 -2
  47. ccxt/async_support/exmo.py +2 -2
  48. ccxt/async_support/gate.py +2 -2
  49. ccxt/async_support/gemini.py +3 -3
  50. ccxt/async_support/hitbtc.py +2 -2
  51. ccxt/async_support/hollaex.py +2 -2
  52. ccxt/async_support/htx.py +7853 -0
  53. ccxt/async_support/huobi.py +3 -7846
  54. ccxt/async_support/huobijp.py +2 -2
  55. ccxt/async_support/idex.py +2 -2
  56. ccxt/async_support/indodax.py +2 -2
  57. ccxt/async_support/kraken.py +2 -6
  58. ccxt/async_support/krakenfutures.py +2 -2
  59. ccxt/async_support/kucoin.py +2 -2
  60. ccxt/async_support/kuna.py +2 -2
  61. ccxt/async_support/latoken.py +2 -2
  62. ccxt/async_support/lbank.py +2 -2
  63. ccxt/async_support/lbank2.py +2 -2
  64. ccxt/async_support/luno.py +2 -2
  65. ccxt/async_support/lykke.py +2 -2
  66. ccxt/async_support/mexc.py +23 -23
  67. ccxt/async_support/novadax.py +2 -2
  68. ccxt/async_support/oceanex.py +2 -2
  69. ccxt/async_support/okcoin.py +3 -3
  70. ccxt/async_support/okx.py +3 -3
  71. ccxt/async_support/phemex.py +2 -2
  72. ccxt/async_support/poloniex.py +2 -2
  73. ccxt/async_support/poloniexfutures.py +2 -2
  74. ccxt/async_support/probit.py +2 -2
  75. ccxt/async_support/tidex.py +2 -2
  76. ccxt/async_support/timex.py +4 -4
  77. ccxt/async_support/tokocrypto.py +2 -2
  78. ccxt/async_support/upbit.py +2 -2
  79. ccxt/async_support/wavesexchange.py +2 -2
  80. ccxt/async_support/wazirx.py +2 -2
  81. ccxt/async_support/whitebit.py +2 -2
  82. ccxt/async_support/yobit.py +2 -2
  83. ccxt/async_support/zonda.py +2 -2
  84. ccxt/base/exchange.py +1 -1
  85. ccxt/base/types.py +43 -4
  86. ccxt/bigone.py +2 -2
  87. ccxt/binance.py +5 -3
  88. ccxt/bingx.py +3 -3
  89. ccxt/bitbns.py +2 -2
  90. ccxt/bitfinex.py +2 -2
  91. ccxt/bitfinex2.py +2 -2
  92. ccxt/bitget.py +3 -3
  93. ccxt/bithumb.py +2 -2
  94. ccxt/bitmart.py +157 -53
  95. ccxt/bitmex.py +2 -2
  96. ccxt/bitopro.py +2 -2
  97. ccxt/bitpanda.py +2 -2
  98. ccxt/bitrue.py +2 -2
  99. ccxt/bitstamp.py +2 -2
  100. ccxt/bittrex.py +2 -2
  101. ccxt/bitvavo.py +2 -2
  102. ccxt/blockchaincom.py +2 -2
  103. ccxt/btcalpha.py +2 -2
  104. ccxt/btcturk.py +2 -2
  105. ccxt/bybit.py +2 -2
  106. ccxt/cex.py +2 -2
  107. ccxt/coinbase.py +2 -2
  108. ccxt/coinbasepro.py +2 -2
  109. ccxt/coinex.py +63 -20
  110. ccxt/coinfalcon.py +2 -2
  111. ccxt/coinlist.py +2 -2
  112. ccxt/coinone.py +2 -2
  113. ccxt/coinsph.py +2 -2
  114. ccxt/coinspot.py +2 -2
  115. ccxt/cryptocom.py +2 -2
  116. ccxt/currencycom.py +2 -2
  117. ccxt/delta.py +2 -2
  118. ccxt/deribit.py +2 -2
  119. ccxt/digifinex.py +2 -2
  120. ccxt/exmo.py +2 -2
  121. ccxt/gate.py +2 -2
  122. ccxt/gemini.py +3 -3
  123. ccxt/hitbtc.py +2 -2
  124. ccxt/hollaex.py +2 -2
  125. ccxt/htx.py +7852 -0
  126. ccxt/huobi.py +3 -7845
  127. ccxt/huobijp.py +2 -2
  128. ccxt/idex.py +2 -2
  129. ccxt/indodax.py +2 -2
  130. ccxt/kraken.py +2 -6
  131. ccxt/krakenfutures.py +2 -2
  132. ccxt/kucoin.py +2 -2
  133. ccxt/kuna.py +2 -2
  134. ccxt/latoken.py +2 -2
  135. ccxt/lbank.py +2 -2
  136. ccxt/lbank2.py +2 -2
  137. ccxt/luno.py +2 -2
  138. ccxt/lykke.py +2 -2
  139. ccxt/mexc.py +23 -23
  140. ccxt/novadax.py +2 -2
  141. ccxt/oceanex.py +2 -2
  142. ccxt/okcoin.py +3 -3
  143. ccxt/okx.py +3 -3
  144. ccxt/phemex.py +2 -2
  145. ccxt/poloniex.py +2 -2
  146. ccxt/poloniexfutures.py +2 -2
  147. ccxt/pro/__init__.py +3 -1
  148. ccxt/pro/htx.py +2177 -0
  149. ccxt/pro/huobi.py +4 -2166
  150. ccxt/probit.py +2 -2
  151. ccxt/test/test_async.py +15 -1
  152. ccxt/test/test_sync.py +15 -1
  153. ccxt/tidex.py +2 -2
  154. ccxt/timex.py +4 -4
  155. ccxt/tokocrypto.py +2 -2
  156. ccxt/upbit.py +2 -2
  157. ccxt/wavesexchange.py +2 -2
  158. ccxt/wazirx.py +2 -2
  159. ccxt/whitebit.py +2 -2
  160. ccxt/yobit.py +2 -2
  161. ccxt/zonda.py +2 -2
  162. ccxt-4.1.49.dist-info/METADATA +624 -0
  163. {ccxt-4.1.47.dist-info → ccxt-4.1.49.dist-info}/RECORD +165 -161
  164. ccxt-4.1.47.dist-info/METADATA +0 -624
  165. {ccxt-4.1.47.dist-info → ccxt-4.1.49.dist-info}/WHEEL +0 -0
  166. {ccxt-4.1.47.dist-info → ccxt-4.1.49.dist-info}/top_level.txt +0 -0
ccxt/probit.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.probit import ImplicitAPI
8
8
  import math
9
- from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Trade, Transaction
9
+ from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Tickers, Trade, Transaction
10
10
  from typing import Optional
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
@@ -577,7 +577,7 @@ class probit(Exchange, ImplicitAPI):
577
577
  dataBySide = self.group_by(data, 'side')
578
578
  return self.parse_order_book(dataBySide, market['symbol'], None, 'buy', 'sell', 'price', 'quantity')
579
579
 
580
- def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}):
580
+ def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}) -> Tickers:
581
581
  """
582
582
  :see: https://docs-en.probit.com/reference/ticker
583
583
  fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market
ccxt/test/test_async.py CHANGED
@@ -989,7 +989,8 @@ class testMainClass(baseMainTestClass):
989
989
  self.test_bitget(),
990
990
  self.test_mexc(),
991
991
  self.test_huobi(),
992
- self.test_woo()
992
+ self.test_woo(),
993
+ self.test_bitmart()
993
994
  ]
994
995
  await asyncio.gather(*promises)
995
996
  successMessage = '[' + self.lang + '][TEST_SUCCESS] brokerId tests passed.'
@@ -1170,6 +1171,19 @@ class testMainClass(baseMainTestClass):
1170
1171
  assert clientOrderIdSpot.startswith(id), 'brokerId does not start with id'
1171
1172
  await close(woo)
1172
1173
 
1174
+ async def test_bitmart(self):
1175
+ bitmart = self.init_offline_exchange('bitmart')
1176
+ reqHeaders = None
1177
+ id = 'CCXTxBitmart000'
1178
+ assert bitmart.options['brokerId'] == id, 'id not in options'
1179
+ await bitmart.load_markets()
1180
+ try:
1181
+ await bitmart.create_order('BTC/USDT', 'limit', 'buy', 1, 20000)
1182
+ except Exception as e:
1183
+ reqHeaders = bitmart.last_request_headers
1184
+ assert reqHeaders['X-BM-BROKER-ID'] == id, 'id not in headers'
1185
+ await close(bitmart)
1186
+
1173
1187
  # ***** AUTO-TRANSPILER-END *****
1174
1188
  # *******************************
1175
1189
 
ccxt/test/test_sync.py CHANGED
@@ -988,7 +988,8 @@ class testMainClass(baseMainTestClass):
988
988
  self.test_bitget(),
989
989
  self.test_mexc(),
990
990
  self.test_huobi(),
991
- self.test_woo()
991
+ self.test_woo(),
992
+ self.test_bitmart()
992
993
  ]
993
994
  (promises)
994
995
  successMessage = '[' + self.lang + '][TEST_SUCCESS] brokerId tests passed.'
@@ -1169,6 +1170,19 @@ class testMainClass(baseMainTestClass):
1169
1170
  assert clientOrderIdSpot.startswith(id), 'brokerId does not start with id'
1170
1171
  close(woo)
1171
1172
 
1173
+ def test_bitmart(self):
1174
+ bitmart = self.init_offline_exchange('bitmart')
1175
+ reqHeaders = None
1176
+ id = 'CCXTxBitmart000'
1177
+ assert bitmart.options['brokerId'] == id, 'id not in options'
1178
+ bitmart.load_markets()
1179
+ try:
1180
+ bitmart.create_order('BTC/USDT', 'limit', 'buy', 1, 20000)
1181
+ except Exception as e:
1182
+ reqHeaders = bitmart.last_request_headers
1183
+ assert reqHeaders['X-BM-BROKER-ID'] == id, 'id not in headers'
1184
+ close(bitmart)
1185
+
1172
1186
  # ***** AUTO-TRANSPILER-END *****
1173
1187
  # *******************************
1174
1188
 
ccxt/tidex.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.tidex import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Trade, Transaction
9
+ from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Tickers, Trade, Transaction
10
10
  from typing import Optional
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
@@ -497,7 +497,7 @@ class tidex(Exchange, ImplicitAPI):
497
497
  'info': ticker,
498
498
  }, market)
499
499
 
500
- def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}):
500
+ def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}) -> Tickers:
501
501
  """
502
502
  fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market
503
503
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
ccxt/timex.py CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.timex import ImplicitAPI
8
- from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Trade, Transaction
8
+ from ccxt.base.types import Balances, Market, Order, OrderBook, OrderSide, OrderType, Ticker, Tickers, Trade, Transaction
9
9
  from typing import Optional
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
@@ -456,7 +456,7 @@ class timex(Exchange, ImplicitAPI):
456
456
  'fee': None,
457
457
  }
458
458
 
459
- def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}):
459
+ def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}) -> Tickers:
460
460
  """
461
461
  fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market
462
462
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
@@ -1104,7 +1104,7 @@ class timex(Exchange, ImplicitAPI):
1104
1104
  result = self.safe_value(response, 0, {})
1105
1105
  return self.parse_trading_fee(result, market)
1106
1106
 
1107
- def parse_market(self, market):
1107
+ def parse_market(self, market) -> Market:
1108
1108
  #
1109
1109
  # {
1110
1110
  # "symbol": "ETHBTC",
@@ -1134,7 +1134,7 @@ class timex(Exchange, ImplicitAPI):
1134
1134
  minBase = self.safe_string(market, 'baseMinSize')
1135
1135
  minAmount = Precise.string_max(amountIncrement, minBase)
1136
1136
  priceIncrement = self.safe_string(market, 'tickSize')
1137
- minCost = self.safe_string(market, 'quoteMinSize')
1137
+ minCost = self.safe_number(market, 'quoteMinSize')
1138
1138
  return {
1139
1139
  'id': id,
1140
1140
  'symbol': base + '/' + quote,
ccxt/tokocrypto.py CHANGED
@@ -7,7 +7,7 @@ from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.tokocrypto import ImplicitAPI
8
8
  import hashlib
9
9
  import json
10
- from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Trade, Transaction
10
+ from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Tickers, Trade, Transaction
11
11
  from typing import Optional
12
12
  from typing import List
13
13
  from ccxt.base.errors import ExchangeError
@@ -1143,7 +1143,7 @@ class tokocrypto(Exchange, ImplicitAPI):
1143
1143
  'info': ticker,
1144
1144
  }, market)
1145
1145
 
1146
- def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}):
1146
+ def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}) -> Tickers:
1147
1147
  """
1148
1148
  :see: https://binance-docs.github.io/apidocs/spot/en/#24hr-ticker-price-change-statistics
1149
1149
  fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market
ccxt/upbit.py CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.upbit import ImplicitAPI
8
- from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Trade, Transaction
8
+ from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Tickers, Trade, Transaction
9
9
  from typing import Optional
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
@@ -650,7 +650,7 @@ class upbit(Exchange, ImplicitAPI):
650
650
  'info': ticker,
651
651
  }, market)
652
652
 
653
- def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}):
653
+ def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}) -> Tickers:
654
654
  """
655
655
  :see: https://docs.upbit.com/reference/ticker%ED%98%84%EC%9E%AC%EA%B0%80-%EC%A0%95%EB%B3%B4
656
656
  fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market
ccxt/wavesexchange.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.wavesexchange import ImplicitAPI
8
8
  import json
9
- from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Trade, Transaction
9
+ from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Tickers, Trade, Transaction
10
10
  from typing import Optional
11
11
  from typing import List
12
12
  from typing import Any
@@ -860,7 +860,7 @@ class wavesexchange(Exchange, ImplicitAPI):
860
860
  dataTicker = self.safe_value(ticker, 'data', {})
861
861
  return self.parse_ticker(dataTicker, market)
862
862
 
863
- def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}):
863
+ def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}) -> Tickers:
864
864
  """
865
865
  fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market
866
866
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
ccxt/wazirx.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.wazirx import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Trade
9
+ from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Tickers, Trade
10
10
  from typing import Optional
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
@@ -407,7 +407,7 @@ class wazirx(Exchange, ImplicitAPI):
407
407
  #
408
408
  return self.parse_ticker(ticker, market)
409
409
 
410
- def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}):
410
+ def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}) -> Tickers:
411
411
  """
412
412
  :see: https://docs.wazirx.com/#24hr-tickers-price-change-statistics
413
413
  fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market
ccxt/whitebit.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.whitebit import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Trade, Transaction
9
+ from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Tickers, Trade, Transaction
10
10
  from typing import Optional
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
@@ -778,7 +778,7 @@ class whitebit(Exchange, ImplicitAPI):
778
778
  'info': ticker,
779
779
  }, market)
780
780
 
781
- def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}):
781
+ def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}) -> Tickers:
782
782
  """
783
783
  fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market
784
784
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
ccxt/yobit.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.yobit import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Trade
9
+ from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Tickers, Trade
10
10
  from typing import Optional
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
@@ -536,7 +536,7 @@ class yobit(Exchange, ImplicitAPI):
536
536
  'info': ticker,
537
537
  }, market)
538
538
 
539
- def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}):
539
+ def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}) -> Tickers:
540
540
  """
541
541
  :see: https://yobit.net/en/api
542
542
  fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market
ccxt/zonda.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.zonda import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Trade, Transaction
9
+ from ccxt.base.types import Balances, Order, OrderBook, OrderSide, OrderType, Ticker, Tickers, Trade, Transaction
10
10
  from typing import Optional
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
@@ -721,7 +721,7 @@ class zonda(Exchange, ImplicitAPI):
721
721
  stats = self.safe_value_2(response, 'ticker', 'stats')
722
722
  return self.parse_ticker(stats, market)
723
723
 
724
- def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}):
724
+ def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}) -> Tickers:
725
725
  """
726
726
  * @ignore
727
727
  v1_01PublicGetTradingTicker retrieves timestamp, datetime, bid, ask, close, last, previousClose for each market, v1_01PublicGetTradingStats retrieves high, low, volume and opening price of each market