ccxt 4.4.52__py2.py3-none-any.whl → 4.4.57__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.
Files changed (223) hide show
  1. ccxt/__init__.py +1 -3
  2. ccxt/abstract/binance.py +0 -1
  3. ccxt/abstract/binancecoinm.py +0 -1
  4. ccxt/abstract/binanceus.py +0 -1
  5. ccxt/abstract/binanceusdm.py +0 -1
  6. ccxt/ace.py +3 -0
  7. ccxt/alpaca.py +5 -0
  8. ccxt/ascendex.py +2 -1
  9. ccxt/async_support/__init__.py +1 -3
  10. ccxt/async_support/ace.py +3 -0
  11. ccxt/async_support/alpaca.py +5 -0
  12. ccxt/async_support/ascendex.py +2 -1
  13. ccxt/async_support/base/exchange.py +24 -7
  14. ccxt/async_support/bigone.py +5 -0
  15. ccxt/async_support/binance.py +54 -54
  16. ccxt/async_support/bingx.py +25 -29
  17. ccxt/async_support/bit2c.py +3 -0
  18. ccxt/async_support/bitbank.py +3 -0
  19. ccxt/async_support/bitbns.py +3 -0
  20. ccxt/async_support/bitfinex.py +6 -1
  21. ccxt/async_support/bitflyer.py +6 -1
  22. ccxt/async_support/bitget.py +9 -5
  23. ccxt/async_support/bithumb.py +3 -1
  24. ccxt/async_support/bitmart.py +22 -12
  25. ccxt/async_support/bitmex.py +99 -93
  26. ccxt/async_support/bitopro.py +7 -2
  27. ccxt/async_support/bitrue.py +4 -0
  28. ccxt/async_support/bitso.py +5 -2
  29. ccxt/async_support/bitstamp.py +3 -0
  30. ccxt/async_support/bitteam.py +5 -0
  31. ccxt/async_support/bitvavo.py +4 -0
  32. ccxt/async_support/blockchaincom.py +4 -0
  33. ccxt/async_support/blofin.py +3 -0
  34. ccxt/async_support/btcalpha.py +5 -0
  35. ccxt/async_support/btcbox.py +3 -2
  36. ccxt/async_support/btcmarkets.py +5 -0
  37. ccxt/async_support/btcturk.py +3 -0
  38. ccxt/async_support/bybit.py +13 -5
  39. ccxt/async_support/cex.py +2 -0
  40. ccxt/async_support/coinbase.py +20 -13
  41. ccxt/async_support/coinbaseexchange.py +5 -0
  42. ccxt/async_support/coinbaseinternational.py +23 -4
  43. ccxt/async_support/coincatch.py +3 -0
  44. ccxt/async_support/coincheck.py +2 -0
  45. ccxt/async_support/coinex.py +6 -2
  46. ccxt/async_support/coinlist.py +5 -0
  47. ccxt/async_support/coinmate.py +4 -0
  48. ccxt/async_support/coinmetro.py +9 -5
  49. ccxt/async_support/coinone.py +3 -0
  50. ccxt/async_support/coinsph.py +4 -0
  51. ccxt/async_support/coinspot.py +1 -0
  52. ccxt/async_support/cryptocom.py +5 -0
  53. ccxt/async_support/currencycom.py +3 -0
  54. ccxt/async_support/defx.py +5 -0
  55. ccxt/async_support/delta.py +4 -1
  56. ccxt/async_support/deribit.py +15 -28
  57. ccxt/async_support/digifinex.py +10 -5
  58. ccxt/async_support/ellipx.py +9 -5
  59. ccxt/async_support/exmo.py +7 -4
  60. ccxt/async_support/gate.py +5 -1
  61. ccxt/async_support/gemini.py +3 -0
  62. ccxt/async_support/hashkey.py +5 -4
  63. ccxt/async_support/hitbtc.py +6 -2
  64. ccxt/async_support/hollaex.py +7 -2
  65. ccxt/async_support/htx.py +8 -1
  66. ccxt/async_support/huobijp.py +5 -0
  67. ccxt/async_support/hyperliquid.py +9 -4
  68. ccxt/async_support/idex.py +5 -1
  69. ccxt/async_support/independentreserve.py +4 -0
  70. ccxt/async_support/indodax.py +3 -0
  71. ccxt/async_support/kraken.py +7 -5
  72. ccxt/async_support/krakenfutures.py +5 -2
  73. ccxt/async_support/kucoin.py +13 -6
  74. ccxt/async_support/kucoinfutures.py +5 -1
  75. ccxt/async_support/kuna.py +3 -0
  76. ccxt/async_support/latoken.py +4 -0
  77. ccxt/async_support/lbank.py +6 -1
  78. ccxt/async_support/luno.py +6 -1
  79. ccxt/async_support/mercado.py +4 -0
  80. ccxt/async_support/mexc.py +10 -9
  81. ccxt/async_support/ndax.py +6 -1
  82. ccxt/async_support/novadax.py +5 -0
  83. ccxt/async_support/oceanex.py +6 -2
  84. ccxt/async_support/okcoin.py +4 -0
  85. ccxt/async_support/okx.py +17 -5
  86. ccxt/async_support/onetrading.py +4 -0
  87. ccxt/async_support/oxfun.py +3 -0
  88. ccxt/async_support/p2b.py +3 -0
  89. ccxt/async_support/paradex.py +8 -2
  90. ccxt/async_support/phemex.py +10 -4
  91. ccxt/async_support/poloniex.py +6 -3
  92. ccxt/async_support/poloniexfutures.py +5 -1
  93. ccxt/async_support/probit.py +4 -0
  94. ccxt/async_support/timex.py +4 -0
  95. ccxt/async_support/tokocrypto.py +5 -0
  96. ccxt/async_support/tradeogre.py +2 -0
  97. ccxt/async_support/upbit.py +5 -2
  98. ccxt/async_support/vertex.py +6 -2
  99. ccxt/async_support/wavesexchange.py +20 -3
  100. ccxt/async_support/wazirx.py +2 -0
  101. ccxt/async_support/whitebit.py +5 -4
  102. ccxt/async_support/woo.py +15 -5
  103. ccxt/async_support/woofipro.py +23 -9
  104. ccxt/async_support/xt.py +5 -0
  105. ccxt/async_support/yobit.py +5 -2
  106. ccxt/async_support/zaif.py +2 -0
  107. ccxt/async_support/zonda.py +2 -0
  108. ccxt/base/exchange.py +96 -54
  109. ccxt/base/types.py +1 -1
  110. ccxt/bigone.py +5 -0
  111. ccxt/binance.py +54 -54
  112. ccxt/bingx.py +25 -29
  113. ccxt/bit2c.py +3 -0
  114. ccxt/bitbank.py +3 -0
  115. ccxt/bitbns.py +3 -0
  116. ccxt/bitfinex.py +6 -1
  117. ccxt/bitflyer.py +6 -1
  118. ccxt/bitget.py +9 -5
  119. ccxt/bithumb.py +3 -1
  120. ccxt/bitmart.py +22 -12
  121. ccxt/bitmex.py +99 -93
  122. ccxt/bitopro.py +7 -2
  123. ccxt/bitrue.py +4 -0
  124. ccxt/bitso.py +5 -2
  125. ccxt/bitstamp.py +3 -0
  126. ccxt/bitteam.py +5 -0
  127. ccxt/bitvavo.py +4 -0
  128. ccxt/blockchaincom.py +4 -0
  129. ccxt/blofin.py +3 -0
  130. ccxt/btcalpha.py +5 -0
  131. ccxt/btcbox.py +3 -2
  132. ccxt/btcmarkets.py +5 -0
  133. ccxt/btcturk.py +3 -0
  134. ccxt/bybit.py +13 -5
  135. ccxt/cex.py +2 -0
  136. ccxt/coinbase.py +20 -13
  137. ccxt/coinbaseexchange.py +5 -0
  138. ccxt/coinbaseinternational.py +23 -4
  139. ccxt/coincatch.py +3 -0
  140. ccxt/coincheck.py +2 -0
  141. ccxt/coinex.py +6 -2
  142. ccxt/coinlist.py +5 -0
  143. ccxt/coinmate.py +4 -0
  144. ccxt/coinmetro.py +9 -5
  145. ccxt/coinone.py +3 -0
  146. ccxt/coinsph.py +4 -0
  147. ccxt/coinspot.py +1 -0
  148. ccxt/cryptocom.py +5 -0
  149. ccxt/currencycom.py +3 -0
  150. ccxt/defx.py +5 -0
  151. ccxt/delta.py +4 -1
  152. ccxt/deribit.py +15 -28
  153. ccxt/digifinex.py +10 -5
  154. ccxt/ellipx.py +9 -5
  155. ccxt/exmo.py +7 -4
  156. ccxt/gate.py +5 -1
  157. ccxt/gemini.py +3 -0
  158. ccxt/hashkey.py +5 -4
  159. ccxt/hitbtc.py +6 -2
  160. ccxt/hollaex.py +7 -2
  161. ccxt/htx.py +8 -1
  162. ccxt/huobijp.py +5 -0
  163. ccxt/hyperliquid.py +9 -4
  164. ccxt/idex.py +5 -1
  165. ccxt/independentreserve.py +4 -0
  166. ccxt/indodax.py +3 -0
  167. ccxt/kraken.py +7 -5
  168. ccxt/krakenfutures.py +5 -2
  169. ccxt/kucoin.py +13 -6
  170. ccxt/kucoinfutures.py +5 -1
  171. ccxt/kuna.py +3 -0
  172. ccxt/latoken.py +4 -0
  173. ccxt/lbank.py +6 -1
  174. ccxt/luno.py +6 -1
  175. ccxt/mercado.py +4 -0
  176. ccxt/mexc.py +10 -9
  177. ccxt/ndax.py +6 -1
  178. ccxt/novadax.py +5 -0
  179. ccxt/oceanex.py +6 -2
  180. ccxt/okcoin.py +4 -0
  181. ccxt/okx.py +17 -5
  182. ccxt/onetrading.py +4 -0
  183. ccxt/oxfun.py +3 -0
  184. ccxt/p2b.py +3 -0
  185. ccxt/paradex.py +8 -2
  186. ccxt/phemex.py +10 -4
  187. ccxt/poloniex.py +6 -3
  188. ccxt/poloniexfutures.py +5 -1
  189. ccxt/pro/__init__.py +1 -1
  190. ccxt/pro/binance.py +2 -2
  191. ccxt/pro/bitcoincom.py +1 -4
  192. ccxt/pro/bitget.py +3 -3
  193. ccxt/pro/bitopro.py +1 -1
  194. ccxt/pro/bybit.py +7 -2
  195. ccxt/pro/cex.py +1 -1
  196. ccxt/pro/coincatch.py +3 -3
  197. ccxt/pro/mexc.py +3 -3
  198. ccxt/pro/okx.py +1 -1
  199. ccxt/probit.py +4 -0
  200. ccxt/test/tests_async.py +57 -30
  201. ccxt/test/tests_sync.py +57 -30
  202. ccxt/timex.py +4 -0
  203. ccxt/tokocrypto.py +5 -0
  204. ccxt/tradeogre.py +2 -0
  205. ccxt/upbit.py +5 -2
  206. ccxt/vertex.py +6 -2
  207. ccxt/wavesexchange.py +20 -3
  208. ccxt/wazirx.py +2 -0
  209. ccxt/whitebit.py +5 -4
  210. ccxt/woo.py +15 -5
  211. ccxt/woofipro.py +23 -9
  212. ccxt/xt.py +5 -0
  213. ccxt/yobit.py +5 -2
  214. ccxt/zaif.py +2 -0
  215. ccxt/zonda.py +2 -0
  216. {ccxt-4.4.52.dist-info → ccxt-4.4.57.dist-info}/METADATA +225 -143
  217. {ccxt-4.4.52.dist-info → ccxt-4.4.57.dist-info}/RECORD +220 -223
  218. ccxt/abstract/lykke.py +0 -29
  219. ccxt/async_support/lykke.py +0 -1370
  220. ccxt/lykke.py +0 -1370
  221. {ccxt-4.4.52.dist-info → ccxt-4.4.57.dist-info}/LICENSE.txt +0 -0
  222. {ccxt-4.4.52.dist-info → ccxt-4.4.57.dist-info}/WHEEL +0 -0
  223. {ccxt-4.4.52.dist-info → ccxt-4.4.57.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.exmo import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
9
+ from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, OrderBooks, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -251,17 +251,20 @@ class exmo(Exchange, ImplicitAPI):
251
251
  'limit': 100,
252
252
  'daysBack': None,
253
253
  'untilDays': None,
254
+ 'symbolRequired': True,
254
255
  },
255
256
  'fetchOrder': {
256
257
  'marginMode': False,
257
258
  'trigger': False,
258
259
  'trailing': False,
260
+ 'symbolRequired': False,
259
261
  },
260
262
  'fetchOpenOrders': {
261
263
  'marginMode': False,
262
264
  'limit': None,
263
265
  'trigger': False,
264
266
  'trailing': False,
267
+ 'symbolRequired': False,
265
268
  },
266
269
  'fetchOrders': None,
267
270
  'fetchClosedOrders': None,
@@ -1068,7 +1071,7 @@ class exmo(Exchange, ImplicitAPI):
1068
1071
  result = self.safe_dict(response, market['id'])
1069
1072
  return self.parse_order_book(result, market['symbol'], None, 'bid', 'ask')
1070
1073
 
1071
- async def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}):
1074
+ async def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}) -> OrderBooks:
1072
1075
  """
1073
1076
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
1074
1077
 
@@ -1348,7 +1351,7 @@ class exmo(Exchange, ImplicitAPI):
1348
1351
  marginMode = None
1349
1352
  marginMode, params = self.handle_margin_mode_and_params('fetchMyTrades', params)
1350
1353
  if marginMode == 'cross':
1351
- raise BadRequest(self.id + 'only isolated margin is supported')
1354
+ raise BadRequest(self.id + ' only isolated margin is supported')
1352
1355
  await self.load_markets()
1353
1356
  market = self.market(symbol)
1354
1357
  pair = market['id']
@@ -2477,7 +2480,7 @@ class exmo(Exchange, ImplicitAPI):
2477
2480
  first = self.safe_dict(items, 0, {})
2478
2481
  return self.parse_transaction(first, currency)
2479
2482
 
2480
- async def fetch_deposit(self, id=None, code: Str = None, params={}):
2483
+ async def fetch_deposit(self, id: str, code: Str = None, params={}):
2481
2484
  """
2482
2485
  fetch information on a deposit
2483
2486
 
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.gate import ImplicitAPI
8
8
  import asyncio
9
9
  import hashlib
10
- from ccxt.base.types import Balances, BorrowInterest, Bool, Currencies, Currency, DepositAddress, FundingHistory, Greeks, Int, LedgerEntry, Leverage, Leverages, LeverageTier, LeverageTiers, MarginModification, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
10
+ from ccxt.base.types import Balances, BorrowInterest, Bool, Currencies, Currency, DepositAddress, FundingHistory, Greeks, Int, LedgerEntry, Leverage, Leverages, LeverageTier, LeverageTiers, MarginModification, Market, Num, Option, OptionChain, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFeeInterface, TradingFees, Transaction, MarketInterface, TransferEntry
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
13
  from ccxt.base.errors import AuthenticationError
@@ -758,17 +758,20 @@ class gate(Exchange, ImplicitAPI):
758
758
  'limit': 1000,
759
759
  'daysBack': None,
760
760
  'untilDays': 30,
761
+ 'symbolRequired': False,
761
762
  },
762
763
  'fetchOrder': {
763
764
  'marginMode': False,
764
765
  'trigger': True,
765
766
  'trailing': False,
767
+ 'symbolRequired': True,
766
768
  },
767
769
  'fetchOpenOrders': {
768
770
  'marginMode': True,
769
771
  'trigger': True,
770
772
  'trailing': False,
771
773
  'limit': 100,
774
+ 'symbolRequired': False,
772
775
  },
773
776
  'fetchOrders': None,
774
777
  'fetchClosedOrders': {
@@ -779,6 +782,7 @@ class gate(Exchange, ImplicitAPI):
779
782
  'untilDays': 30,
780
783
  'daysBack': None,
781
784
  'daysBackCanceled': None,
785
+ 'symbolRequired': False,
782
786
  },
783
787
  'fetchOHLCV': {
784
788
  'limit': 1000,
@@ -342,17 +342,20 @@ class gemini(Exchange, ImplicitAPI):
342
342
  'limit': 500,
343
343
  'daysBack': None,
344
344
  'untilDays': None,
345
+ 'symbolRequired': True,
345
346
  },
346
347
  'fetchOrder': {
347
348
  'marginMode': False,
348
349
  'trigger': False,
349
350
  'trailing': False,
351
+ 'symbolRequired': False,
350
352
  },
351
353
  'fetchOpenOrders': {
352
354
  'marginMode': False,
353
355
  'limit': None,
354
356
  'trigger': False,
355
357
  'trailing': False,
358
+ 'symbolRequired': False,
356
359
  },
357
360
  'fetchOrders': None,
358
361
  'fetchClosedOrders': None, # todo: implement
@@ -394,17 +394,20 @@ class hashkey(Exchange, ImplicitAPI):
394
394
  'limit': 1000,
395
395
  'daysBack': 30,
396
396
  'untilDays': 30,
397
+ 'symbolRequired': False,
397
398
  },
398
399
  'fetchOrder': {
399
400
  'marginMode': False,
400
401
  'trigger': False,
401
402
  'trailing': False,
403
+ 'symbolRequired': False,
402
404
  },
403
405
  'fetchOpenOrders': {
404
406
  'marginMode': False,
405
407
  'limit': 1000,
406
408
  'trigger': False,
407
409
  'trailing': False,
410
+ 'symbolRequired': False,
408
411
  },
409
412
  'fetchOrders': None,
410
413
  'fetchClosedOrders': None, # todo
@@ -2396,10 +2399,8 @@ class hashkey(Exchange, ImplicitAPI):
2396
2399
  market = self.market(symbol)
2397
2400
  if not market['spot']:
2398
2401
  raise NotSupported(self.id + ' createMarketBuyOrderWithCost() is supported for spot markets only')
2399
- req = {
2400
- 'cost': cost,
2401
- }
2402
- return await self.create_order(symbol, 'market', 'buy', cost, None, self.extend(req, params))
2402
+ params['cost'] = cost
2403
+ return await self.create_order(symbol, 'market', 'buy', cost, None, params)
2403
2404
 
2404
2405
  async def create_spot_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}) -> Order:
2405
2406
  """
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.hitbtc import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Leverage, MarginMode, MarginModes, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
9
+ from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Leverage, MarginMode, MarginModes, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, OrderBooks, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -335,12 +335,14 @@ class hitbtc(Exchange, ImplicitAPI):
335
335
  'limit': 1000,
336
336
  'daysBack': 100000,
337
337
  'untilDays': 100000,
338
+ 'symbolRequired': False,
338
339
  'marketType': True,
339
340
  },
340
341
  'fetchOrder': {
341
342
  'marginMode': True,
342
343
  'trigger': False,
343
344
  'trailing': False,
345
+ 'symbolRequired': False,
344
346
  'marketType': True,
345
347
  },
346
348
  'fetchOpenOrders': {
@@ -348,6 +350,7 @@ class hitbtc(Exchange, ImplicitAPI):
348
350
  'limit': 1000,
349
351
  'trigger': False,
350
352
  'trailing': False,
353
+ 'symbolRequired': False,
351
354
  'marketType': True,
352
355
  },
353
356
  'fetchOrders': None,
@@ -359,6 +362,7 @@ class hitbtc(Exchange, ImplicitAPI):
359
362
  'untilDays': 100000, # todo
360
363
  'trigger': False,
361
364
  'trailing': False,
365
+ 'symbolRequired': False,
362
366
  'marketType': True,
363
367
  },
364
368
  'fetchOHLCV': {
@@ -1624,7 +1628,7 @@ class hitbtc(Exchange, ImplicitAPI):
1624
1628
  """
1625
1629
  return await self.fetch_transactions_helper('WITHDRAW', code, since, limit, params)
1626
1630
 
1627
- async def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}):
1631
+ async def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}) -> OrderBooks:
1628
1632
  """
1629
1633
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
1630
1634
 
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.hollaex import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
9
+ from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, OrderBooks, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import AuthenticationError
12
12
  from ccxt.base.errors import ArgumentsRequired
@@ -205,17 +205,20 @@ class hollaex(Exchange, ImplicitAPI):
205
205
  'limit': 100,
206
206
  'daysBack': 100000,
207
207
  'untilDays': 100000, # todo implement
208
+ 'symbolRequired': False,
208
209
  },
209
210
  'fetchOrder': {
210
211
  'marginMode': False,
211
212
  'trigger': False,
212
213
  'trailing': False,
214
+ 'symbolRequired': False,
213
215
  },
214
216
  'fetchOpenOrders': {
215
217
  'marginMode': False,
216
218
  'limit': 100,
217
219
  'trigger': False,
218
220
  'trailing': False,
221
+ 'symbolRequired': False,
219
222
  },
220
223
  'fetchOrders': {
221
224
  'marginMode': False,
@@ -224,6 +227,7 @@ class hollaex(Exchange, ImplicitAPI):
224
227
  'untilDays': 100000, # todo
225
228
  'trigger': False,
226
229
  'trailing': False,
230
+ 'symbolRequired': False,
227
231
  },
228
232
  'fetchClosedOrders': {
229
233
  'marginMode': False,
@@ -233,6 +237,7 @@ class hollaex(Exchange, ImplicitAPI):
233
237
  'untilDays': 100000, # todo
234
238
  'trigger': False,
235
239
  'trailing': False,
240
+ 'symbolRequired': False,
236
241
  },
237
242
  'fetchOHLCV': {
238
243
  'limit': 1000, # todo: no limit in request
@@ -491,7 +496,7 @@ class hollaex(Exchange, ImplicitAPI):
491
496
  }
492
497
  return result
493
498
 
494
- async def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}):
499
+ async def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}) -> OrderBooks:
495
500
  """
496
501
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
497
502
 
ccxt/async_support/htx.py CHANGED
@@ -1287,17 +1287,20 @@ class htx(Exchange, ImplicitAPI):
1287
1287
  'limit': 500,
1288
1288
  'daysBack': 120,
1289
1289
  'untilDays': 2,
1290
+ 'symbolRequired': False,
1290
1291
  },
1291
1292
  'fetchOrder': {
1292
1293
  'marginMode': False,
1293
1294
  'trigger': False,
1294
1295
  'trailing': False,
1296
+ 'symbolRequired': False,
1295
1297
  },
1296
1298
  'fetchOpenOrders': {
1297
1299
  'marginMode': False,
1298
1300
  'trigger': True,
1299
1301
  'trailing': False,
1300
1302
  'limit': 500,
1303
+ 'symbolRequired': False,
1301
1304
  },
1302
1305
  'fetchOrders': {
1303
1306
  'marginMode': False,
@@ -1306,6 +1309,7 @@ class htx(Exchange, ImplicitAPI):
1306
1309
  'limit': 500,
1307
1310
  'untilDays': 2,
1308
1311
  'daysBack': 180,
1312
+ 'symbolRequired': False,
1309
1313
  },
1310
1314
  'fetchClosedOrders': {
1311
1315
  'marginMode': False,
@@ -1315,6 +1319,7 @@ class htx(Exchange, ImplicitAPI):
1315
1319
  'limit': 500,
1316
1320
  'daysBack': 180,
1317
1321
  'daysBackCanceled': 1 / 12,
1322
+ 'symbolRequired': False,
1318
1323
  },
1319
1324
  'fetchOHLCV': {
1320
1325
  'limit': 1000, # 2000 for non-historical
@@ -3213,7 +3218,9 @@ class htx(Exchange, ImplicitAPI):
3213
3218
  type = 'super-margin'
3214
3219
  elif marginMode == 'isolated':
3215
3220
  type = 'margin'
3216
- marketId = None if (symbol is None) else self.market_id(symbol)
3221
+ marketId = None
3222
+ if symbol is not None:
3223
+ marketId = self.market_id(symbol)
3217
3224
  for i in range(0, len(accounts)):
3218
3225
  account = accounts[i]
3219
3226
  info = self.safe_value(account, 'info')
@@ -296,17 +296,20 @@ class huobijp(Exchange, ImplicitAPI):
296
296
  'limit': 100,
297
297
  'daysBack': 120,
298
298
  'untilDays': 2,
299
+ 'symbolRequired': False,
299
300
  },
300
301
  'fetchOrder': {
301
302
  'marginMode': False,
302
303
  'trigger': False,
303
304
  'trailing': False,
305
+ 'symbolRequired': False,
304
306
  },
305
307
  'fetchOpenOrders': {
306
308
  'marginMode': False,
307
309
  'limit': None, # todo
308
310
  'trigger': False,
309
311
  'trailing': False,
312
+ 'symbolRequired': False,
310
313
  },
311
314
  'fetchOrders': {
312
315
  'marginMode': False,
@@ -315,6 +318,7 @@ class huobijp(Exchange, ImplicitAPI):
315
318
  'untilDays': None, # todo
316
319
  'trigger': False,
317
320
  'trailing': False,
321
+ 'symbolRequired': False,
318
322
  },
319
323
  'fetchClosedOrders': {
320
324
  'marginMode': False,
@@ -324,6 +328,7 @@ class huobijp(Exchange, ImplicitAPI):
324
328
  'untilDays': None, # todo
325
329
  'trigger': False,
326
330
  'trailing': False,
331
+ 'symbolRequired': False,
327
332
  },
328
333
  'fetchOHLCV': {
329
334
  'limit': 2000,
@@ -262,17 +262,20 @@ class hyperliquid(Exchange, ImplicitAPI):
262
262
  'limit': 2000,
263
263
  'daysBack': None,
264
264
  'untilDays': None,
265
+ 'symbolRequired': True,
265
266
  },
266
267
  'fetchOrder': {
267
268
  'marginMode': False,
268
269
  'trigger': False,
269
270
  'trailing': False,
271
+ 'symbolRequired': True,
270
272
  },
271
273
  'fetchOpenOrders': {
272
274
  'marginMode': False,
273
275
  'limit': 2000,
274
276
  'trigger': False,
275
277
  'trailing': False,
278
+ 'symbolRequired': True,
276
279
  },
277
280
  'fetchOrders': {
278
281
  'marginMode': False,
@@ -281,6 +284,7 @@ class hyperliquid(Exchange, ImplicitAPI):
281
284
  'untilDays': None,
282
285
  'trigger': False,
283
286
  'trailing': False,
287
+ 'symbolRequired': True,
284
288
  },
285
289
  'fetchClosedOrders': {
286
290
  'marginMode': False,
@@ -290,6 +294,7 @@ class hyperliquid(Exchange, ImplicitAPI):
290
294
  'untilDays': None,
291
295
  'trigger': False,
292
296
  'trailing': False,
297
+ 'symbolRequired': True,
293
298
  },
294
299
  'fetchOHLCV': {
295
300
  'limit': 5000,
@@ -1133,7 +1138,7 @@ class hyperliquid(Exchange, ImplicitAPI):
1133
1138
  self.safe_number(ohlcv, 'v'),
1134
1139
  ]
1135
1140
 
1136
- async def fetch_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1141
+ async def fetch_trades(self, symbol: Str, since: Int = None, limit: Int = None, params={}):
1137
1142
  """
1138
1143
  get the list of most recent trades for a particular symbol
1139
1144
 
@@ -2702,7 +2707,7 @@ class hyperliquid(Exchange, ImplicitAPI):
2702
2707
  if self.in_array(fromAccount, ['spot', 'swap', 'perp']):
2703
2708
  # handle swap <> spot account transfer
2704
2709
  if not self.in_array(toAccount, ['spot', 'swap', 'perp']):
2705
- raise NotSupported(self.id + 'transfer() only support spot <> swap transfer')
2710
+ raise NotSupported(self.id + ' transfer() only support spot <> swap transfer')
2706
2711
  strAmount = self.number_to_string(amount)
2707
2712
  vaultAddress = self.format_vault_address(self.safe_string(params, 'vaultAddress'))
2708
2713
  params = self.omit(params, 'vaultAddress')
@@ -2737,7 +2742,7 @@ class hyperliquid(Exchange, ImplicitAPI):
2737
2742
  if code is not None:
2738
2743
  code = code.upper()
2739
2744
  if code != 'USDC':
2740
- raise NotSupported(self.id + 'transfer() only support USDC')
2745
+ raise NotSupported(self.id + ' transfer() only support USDC')
2741
2746
  payload: dict = {
2742
2747
  'hyperliquidChain': 'Testnet' if isSandboxMode else 'Mainnet',
2743
2748
  'destination': toAccount,
@@ -2800,7 +2805,7 @@ class hyperliquid(Exchange, ImplicitAPI):
2800
2805
  if code is not None:
2801
2806
  code = code.upper()
2802
2807
  if code != 'USDC':
2803
- raise NotSupported(self.id + 'withdraw() only support USDC')
2808
+ raise NotSupported(self.id + ' withdraw() only support USDC')
2804
2809
  vaultAddress = self.format_vault_address(self.safe_string(params, 'vaultAddress'))
2805
2810
  params = self.omit(params, 'vaultAddress')
2806
2811
  nonce = self.milliseconds()
@@ -212,17 +212,20 @@ class idex(Exchange, ImplicitAPI):
212
212
  'limit': 1000,
213
213
  'daysBack': 100000, # todo
214
214
  'untilDays': 100000, # todo
215
+ 'symbolRequired': False,
215
216
  },
216
217
  'fetchOrder': {
217
218
  'marginMode': False,
218
219
  'trigger': False,
219
220
  'trailing': False,
221
+ 'symbolRequired': False,
220
222
  },
221
223
  'fetchOpenOrders': {
222
224
  'marginMode': False,
223
225
  'limit': 1000,
224
226
  'trigger': False,
225
227
  'trailing': False,
228
+ 'symbolRequired': False,
226
229
  },
227
230
  'fetchOrders': None,
228
231
  'fetchClosedOrders': {
@@ -233,6 +236,7 @@ class idex(Exchange, ImplicitAPI):
233
236
  'untilDays': 1000000, # todo
234
237
  'trigger': False,
235
238
  'trailing': False,
239
+ 'symbolRequired': False,
236
240
  },
237
241
  'fetchOHLCV': {
238
242
  'limit': 1000,
@@ -1772,7 +1776,7 @@ class idex(Exchange, ImplicitAPI):
1772
1776
  authenticated = hasApiKey and hasSecret and hasWalletAddress and hasPrivateKey
1773
1777
  return(defaultCost / 2) if authenticated else defaultCost
1774
1778
 
1775
- async def fetch_deposit_address(self, code: Str = None, params={}) -> DepositAddress:
1779
+ async def fetch_deposit_address(self, code: Str, params={}) -> DepositAddress:
1776
1780
  """
1777
1781
  fetch the Polygon address of the wallet
1778
1782
 
@@ -180,17 +180,20 @@ class independentreserve(Exchange, ImplicitAPI):
180
180
  'limit': 100, # todo
181
181
  'daysBack': None,
182
182
  'untilDays': None,
183
+ 'symbolRequired': False,
183
184
  },
184
185
  'fetchOrder': {
185
186
  'marginMode': False,
186
187
  'trigger': False,
187
188
  'trailing': False,
189
+ 'symbolRequired': False,
188
190
  },
189
191
  'fetchOpenOrders': {
190
192
  'marginMode': False,
191
193
  'limit': 100, # todo
192
194
  'trigger': False,
193
195
  'trailing': False,
196
+ 'symbolRequired': False,
194
197
  },
195
198
  'fetchOrders': None,
196
199
  'fetchClosedOrders': {
@@ -201,6 +204,7 @@ class independentreserve(Exchange, ImplicitAPI):
201
204
  'untilDays': None,
202
205
  'trigger': False,
203
206
  'trailing': False,
207
+ 'symbolRequired': False,
204
208
  },
205
209
  'fetchOHLCV': None,
206
210
  },
@@ -235,12 +235,14 @@ class indodax(Exchange, ImplicitAPI):
235
235
  'marginMode': False,
236
236
  'trigger': False,
237
237
  'trailing': False,
238
+ 'symbolRequired': True,
238
239
  },
239
240
  'fetchOpenOrders': {
240
241
  'marginMode': False,
241
242
  'limit': None,
242
243
  'trigger': False,
243
244
  'trailing': False,
245
+ 'symbolRequired': False,
244
246
  },
245
247
  'fetchOrders': None,
246
248
  'fetchClosedOrders': {
@@ -251,6 +253,7 @@ class indodax(Exchange, ImplicitAPI):
251
253
  'untilDays': None,
252
254
  'trigger': False,
253
255
  'trailing': False,
256
+ 'symbolRequired': True,
254
257
  },
255
258
  'fetchOHLCV': {
256
259
  'limit': 2000, # todo: not in request
@@ -476,17 +476,20 @@ class kraken(Exchange, ImplicitAPI):
476
476
  'limit': None,
477
477
  'daysBack': None,
478
478
  'untilDays': None,
479
+ 'symbolRequired': False,
479
480
  },
480
481
  'fetchOrder': {
481
482
  'marginMode': False,
482
483
  'trigger': False,
483
484
  'trailing': False,
485
+ 'symbolRequired': False,
484
486
  },
485
487
  'fetchOpenOrders': {
486
488
  'marginMode': False,
487
489
  'limit': None,
488
490
  'trigger': False,
489
491
  'trailing': False,
492
+ 'symbolRequired': False,
490
493
  },
491
494
  'fetchOrders': None,
492
495
  'fetchClosedOrders': {
@@ -497,6 +500,7 @@ class kraken(Exchange, ImplicitAPI):
497
500
  'untilDays': 100000,
498
501
  'trigger': False,
499
502
  'trailing': False,
503
+ 'symbolRequired': False,
500
504
  },
501
505
  'fetchOHLCV': {
502
506
  'limit': 720,
@@ -1488,10 +1492,8 @@ class kraken(Exchange, ImplicitAPI):
1488
1492
  """
1489
1493
  await self.load_markets()
1490
1494
  # only buy orders are supported by the endpoint
1491
- req = {
1492
- 'cost': cost,
1493
- }
1494
- return await self.create_order(symbol, 'market', side, 1, None, self.extend(req, params))
1495
+ params['cost'] = cost
1496
+ return await self.create_order(symbol, 'market', side, cost, None, params)
1495
1497
 
1496
1498
  async def create_market_buy_order_with_cost(self, symbol: str, cost: float, params={}):
1497
1499
  """
@@ -2363,7 +2365,7 @@ class kraken(Exchange, ImplicitAPI):
2363
2365
  :returns dict: the api result
2364
2366
  """
2365
2367
  if timeout > 86400000:
2366
- raise BadRequest(self.id + 'cancelAllOrdersAfter timeout should be less than 86400000 milliseconds')
2368
+ raise BadRequest(self.id + ' cancelAllOrdersAfter timeout should be less than 86400000 milliseconds')
2367
2369
  await self.load_markets()
2368
2370
  request: dict = {
2369
2371
  'timeout': (self.parse_to_int(timeout / 1000)) if (timeout > 0) else 0,
@@ -313,6 +313,7 @@ class krakenfutures(Exchange, ImplicitAPI):
313
313
  'limit': None,
314
314
  'daysBack': None,
315
315
  'untilDays': 100000,
316
+ 'symbolRequired': False,
316
317
  },
317
318
  'fetchOrder': None,
318
319
  'fetchOpenOrders': {
@@ -320,6 +321,7 @@ class krakenfutures(Exchange, ImplicitAPI):
320
321
  'limit': None,
321
322
  'trigger': False,
322
323
  'trailing': False,
324
+ 'symbolRequired': False,
323
325
  },
324
326
  'fetchOrders': None,
325
327
  'fetchClosedOrders': {
@@ -330,6 +332,7 @@ class krakenfutures(Exchange, ImplicitAPI):
330
332
  'untilDays': None,
331
333
  'trigger': False,
332
334
  'trailing': False,
335
+ 'symbolRequired': False,
333
336
  },
334
337
  'fetchOHLCV': {
335
338
  'limit': 5000,
@@ -1488,13 +1491,13 @@ class krakenfutures(Exchange, ImplicitAPI):
1488
1491
  return self.parse_orders(canceledAndRejected, market, since, limit)
1489
1492
 
1490
1493
  def parse_order_type(self, orderType):
1491
- map: dict = {
1494
+ typesMap: dict = {
1492
1495
  'lmt': 'limit',
1493
1496
  'mkt': 'market',
1494
1497
  'post': 'limit',
1495
1498
  'ioc': 'market',
1496
1499
  }
1497
- return self.safe_string(map, orderType, orderType)
1500
+ return self.safe_string(typesMap, orderType, orderType)
1498
1501
 
1499
1502
  def verify_order_action_success(self, status, method, omit=[]):
1500
1503
  errors: dict = {