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
ccxt/woo.py CHANGED
@@ -358,17 +358,20 @@ class woo(Exchange, ImplicitAPI):
358
358
  'limit': 500,
359
359
  'daysBack': 90,
360
360
  'untilDays': 10000,
361
+ 'symbolRequired': False,
361
362
  },
362
363
  'fetchOrder': {
363
364
  'marginMode': False,
364
365
  'trigger': True,
365
366
  'trailing': False,
367
+ 'symbolRequired': False,
366
368
  },
367
369
  'fetchOpenOrders': {
368
370
  'marginMode': False,
369
371
  'limit': 500,
370
372
  'trigger': True,
371
373
  'trailing': True,
374
+ 'symbolRequired': False,
372
375
  },
373
376
  'fetchOrders': {
374
377
  'marginMode': False,
@@ -377,6 +380,7 @@ class woo(Exchange, ImplicitAPI):
377
380
  'untilDays': 100000,
378
381
  'trigger': True,
379
382
  'trailing': True,
383
+ 'symbolRequired': False,
380
384
  },
381
385
  'fetchClosedOrders': {
382
386
  'marginMode': False,
@@ -386,6 +390,7 @@ class woo(Exchange, ImplicitAPI):
386
390
  'untilDays': 100000,
387
391
  'trigger': True,
388
392
  'trailing': True,
393
+ 'symbolRequired': False,
389
394
  },
390
395
  'fetchOHLCV': {
391
396
  'limit': 1000,
@@ -1132,6 +1137,7 @@ class woo(Exchange, ImplicitAPI):
1132
1137
  'algoType': 'POSITIONAL_TP_SL',
1133
1138
  'childOrders': [],
1134
1139
  }
1140
+ childOrders = outterOrder['childOrders']
1135
1141
  closeSide = 'SELL' if (orderSide == 'BUY') else 'BUY'
1136
1142
  if stopLoss is not None:
1137
1143
  stopLossPrice = self.safe_string(stopLoss, 'triggerPrice', stopLoss)
@@ -1142,7 +1148,7 @@ class woo(Exchange, ImplicitAPI):
1142
1148
  'type': 'CLOSE_POSITION',
1143
1149
  'reduceOnly': True,
1144
1150
  }
1145
- outterOrder['childOrders'].append(stopLossOrder)
1151
+ childOrders.append(stopLossOrder)
1146
1152
  if takeProfit is not None:
1147
1153
  takeProfitPrice = self.safe_string(takeProfit, 'triggerPrice', takeProfit)
1148
1154
  takeProfitOrder: dict = {
@@ -1152,7 +1158,7 @@ class woo(Exchange, ImplicitAPI):
1152
1158
  'type': 'CLOSE_POSITION',
1153
1159
  'reduceOnly': True,
1154
1160
  }
1155
- outterOrder['childOrders'].append(takeProfitOrder)
1161
+ childOrders.append(takeProfitOrder)
1156
1162
  request['childOrders'] = [outterOrder]
1157
1163
  params = self.omit(params, ['clOrdID', 'clientOrderId', 'client_order_id', 'postOnly', 'timeInForce', 'stopPrice', 'triggerPrice', 'stopLoss', 'takeProfit', 'trailingPercent', 'trailingAmount', 'trailingTriggerPrice'])
1158
1164
  response = None
@@ -2150,7 +2156,9 @@ class woo(Exchange, ImplicitAPI):
2150
2156
  :param dict [params]: extra parameters specific to the exchange API endpoint
2151
2157
  :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
2152
2158
  """
2153
- currency, rows = self.get_asset_history_rows(code, since, limit, params)
2159
+ currencyRows = self.get_asset_history_rows(code, since, limit, params)
2160
+ currency = self.safe_value(currencyRows, 0)
2161
+ rows = self.safe_list(currencyRows, 1)
2154
2162
  return self.parse_ledger(rows, currency, since, limit, params)
2155
2163
 
2156
2164
  def parse_ledger_entry(self, item: dict, currency: Currency = None) -> LedgerEntry:
@@ -2250,7 +2258,9 @@ class woo(Exchange, ImplicitAPI):
2250
2258
  request: dict = {
2251
2259
  'type': 'BALANCE',
2252
2260
  }
2253
- currency, rows = self.get_asset_history_rows(code, since, limit, self.extend(request, params))
2261
+ currencyRows = self.get_asset_history_rows(code, since, limit, self.extend(request, params))
2262
+ currency = self.safe_value(currencyRows, 0)
2263
+ rows = self.safe_list(currencyRows, 1)
2254
2264
  #
2255
2265
  # {
2256
2266
  # "rows":[],
@@ -3119,7 +3129,7 @@ class woo(Exchange, ImplicitAPI):
3119
3129
  }
3120
3130
  return self.v1PrivatePostClientIsolatedMargin(self.extend(request, params))
3121
3131
 
3122
- def fetch_position(self, symbol: Str = None, params={}):
3132
+ def fetch_position(self, symbol: Str, params={}):
3123
3133
  self.load_markets()
3124
3134
  market = self.market(symbol)
3125
3135
  request: dict = {
ccxt/woofipro.py CHANGED
@@ -341,17 +341,20 @@ class woofipro(Exchange, ImplicitAPI):
341
341
  'limit': 500,
342
342
  'daysBack': None,
343
343
  'untilDays': 100000,
344
+ 'symbolRequired': False,
344
345
  },
345
346
  'fetchOrder': {
346
347
  'marginMode': False,
347
348
  'trigger': True,
348
349
  'trailing': False,
350
+ 'symbolRequired': False,
349
351
  },
350
352
  'fetchOpenOrders': {
351
353
  'marginMode': False,
352
354
  'limit': 500,
353
355
  'trigger': True,
354
356
  'trailing': False,
357
+ 'symbolRequired': False,
355
358
  },
356
359
  'fetchOrders': None,
357
360
  'fetchClosedOrders': {
@@ -362,6 +365,7 @@ class woofipro(Exchange, ImplicitAPI):
362
365
  'untilDays': 100000,
363
366
  'trigger': True,
364
367
  'trailing': False,
368
+ 'symbolRequired': False,
365
369
  },
366
370
  'fetchOHLCV': {
367
371
  'limit': 1000,
@@ -1384,6 +1388,7 @@ class woofipro(Exchange, ImplicitAPI):
1384
1388
  'algo_type': 'POSITIONAL_TP_SL',
1385
1389
  'child_orders': [],
1386
1390
  }
1391
+ childOrders = outterOrder['child_orders']
1387
1392
  closeSide = 'SELL' if (orderSide == 'BUY') else 'BUY'
1388
1393
  if stopLoss is not None:
1389
1394
  stopLossPrice = self.safe_number_2(stopLoss, 'triggerPrice', 'price', stopLoss)
@@ -1394,7 +1399,7 @@ class woofipro(Exchange, ImplicitAPI):
1394
1399
  'type': 'LIMIT',
1395
1400
  'reduce_only': True,
1396
1401
  }
1397
- outterOrder['child_orders'].append(stopLossOrder)
1402
+ childOrders.append(stopLossOrder)
1398
1403
  if takeProfit is not None:
1399
1404
  takeProfitPrice = self.safe_number_2(takeProfit, 'triggerPrice', 'price', takeProfit)
1400
1405
  takeProfitOrder: dict = {
@@ -1404,7 +1409,7 @@ class woofipro(Exchange, ImplicitAPI):
1404
1409
  'type': 'LIMIT',
1405
1410
  'reduce_only': True,
1406
1411
  }
1407
- outterOrder['child_orders'].append(takeProfitOrder)
1412
+ outterOrder.append(takeProfitOrder)
1408
1413
  request['child_orders'] = [outterOrder]
1409
1414
  params = self.omit(params, ['reduceOnly', 'reduce_only', 'clOrdID', 'clientOrderId', 'client_order_id', 'postOnly', 'timeInForce', 'stopPrice', 'triggerPrice', 'stopLoss', 'takeProfit'])
1410
1415
  return self.extend(request, params)
@@ -1502,7 +1507,7 @@ class woofipro(Exchange, ImplicitAPI):
1502
1507
  takeProfit = self.safe_value(orderParams, 'takeProfit')
1503
1508
  isConditional = triggerPrice is not None or stopLoss is not None or takeProfit is not None or (self.safe_value(orderParams, 'childOrders') is not None)
1504
1509
  if isConditional:
1505
- raise NotSupported(self.id + 'createOrders() only support non-stop order')
1510
+ raise NotSupported(self.id + ' createOrders() only support non-stop order')
1506
1511
  orderRequest = self.create_order_request(marketId, type, side, amount, price, orderParams)
1507
1512
  ordersRequests.append(orderRequest)
1508
1513
  request: dict = {
@@ -1774,7 +1779,9 @@ class woofipro(Exchange, ImplicitAPI):
1774
1779
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1775
1780
  """
1776
1781
  self.load_markets()
1777
- market = self.market(symbol) if (symbol is not None) else None
1782
+ market = None
1783
+ if symbol is not None:
1784
+ market = self.market(symbol)
1778
1785
  trigger = self.safe_bool_2(params, 'stop', 'trigger', False)
1779
1786
  request: dict = {}
1780
1787
  clientOrderId = self.safe_string_n(params, ['clOrdID', 'clientOrderId', 'client_order_id'])
@@ -2192,7 +2199,9 @@ class woofipro(Exchange, ImplicitAPI):
2192
2199
  :param dict [params]: extra parameters specific to the exchange API endpoint
2193
2200
  :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
2194
2201
  """
2195
- currency, rows = self.get_asset_history_rows(code, since, limit, params)
2202
+ currencyRows = self.get_asset_history_rows(code, since, limit, params)
2203
+ currency = self.safe_value(currencyRows, 0)
2204
+ rows = self.safe_list(currencyRows, 1)
2196
2205
  return self.parse_ledger(rows, currency, since, limit, params)
2197
2206
 
2198
2207
  def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
@@ -2285,7 +2294,9 @@ class woofipro(Exchange, ImplicitAPI):
2285
2294
  :returns dict: a list of `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
2286
2295
  """
2287
2296
  request: dict = {}
2288
- currency, rows = self.get_asset_history_rows(code, since, limit, self.extend(request, params))
2297
+ currencyRows = self.get_asset_history_rows(code, since, limit, self.extend(request, params))
2298
+ currency = self.safe_value(currencyRows, 0)
2299
+ rows = self.safe_list(currencyRows, 1)
2289
2300
  #
2290
2301
  # {
2291
2302
  # "rows":[],
@@ -2344,7 +2355,7 @@ class woofipro(Exchange, ImplicitAPI):
2344
2355
  if code is not None:
2345
2356
  code = code.upper()
2346
2357
  if code != 'USDC':
2347
- raise NotSupported(self.id + 'withdraw() only support USDC')
2358
+ raise NotSupported(self.id + ' withdraw() only support USDC')
2348
2359
  currency = self.currency(code)
2349
2360
  verifyingContractAddress = self.safe_string(self.options, 'verifyingContractAddress')
2350
2361
  chainId = self.safe_string(params, 'chainId')
@@ -2544,7 +2555,7 @@ class woofipro(Exchange, ImplicitAPI):
2544
2555
  'takeProfitPrice': None,
2545
2556
  })
2546
2557
 
2547
- def fetch_position(self, symbol: Str = None, params={}):
2558
+ def fetch_position(self, symbol: Str, params={}):
2548
2559
  """
2549
2560
 
2550
2561
  https://orderly.network/docs/build-on-evm/evm-api/restful-api/private/get-one-position-info
@@ -2674,9 +2685,12 @@ class woofipro(Exchange, ImplicitAPI):
2674
2685
  auth = ''
2675
2686
  ts = str(self.nonce())
2676
2687
  url += pathWithParams
2688
+ apiKey = self.apiKey
2689
+ if apiKey.find('ed25519:') < 0:
2690
+ apiKey = 'ed25519:' + apiKey
2677
2691
  headers = {
2678
2692
  'orderly-account-id': self.accountId,
2679
- 'orderly-key': self.apiKey,
2693
+ 'orderly-key': apiKey,
2680
2694
  'orderly-timestamp': ts,
2681
2695
  }
2682
2696
  auth = ts + method + '/' + version + '/' + pathWithParams
ccxt/xt.py CHANGED
@@ -720,6 +720,7 @@ class xt(Exchange, ImplicitAPI):
720
720
  'untilDays': 100000, # todo
721
721
  'marketType': True,
722
722
  'subType': True,
723
+ 'symbolRequired': False,
723
724
  },
724
725
  'fetchOrder': {
725
726
  'marginMode': False,
@@ -727,6 +728,7 @@ class xt(Exchange, ImplicitAPI):
727
728
  'trailing': False,
728
729
  'marketType': True,
729
730
  'subType': True,
731
+ 'symbolRequired': False,
730
732
  },
731
733
  'fetchOpenOrders': {
732
734
  'marginMode': True,
@@ -735,6 +737,7 @@ class xt(Exchange, ImplicitAPI):
735
737
  'trailing': False,
736
738
  'marketType': True,
737
739
  'subType': True,
740
+ 'symbolRequired': False,
738
741
  },
739
742
  'fetchOrders': {
740
743
  'marginMode': True,
@@ -745,6 +748,7 @@ class xt(Exchange, ImplicitAPI):
745
748
  'trailing': False,
746
749
  'marketType': True,
747
750
  'subType': True,
751
+ 'symbolRequired': False,
748
752
  },
749
753
  'fetchClosedOrders': {
750
754
  'marginMode': True,
@@ -756,6 +760,7 @@ class xt(Exchange, ImplicitAPI):
756
760
  'trailing': False,
757
761
  'marketType': True,
758
762
  'subType': True,
763
+ 'symbolRequired': False,
759
764
  },
760
765
  'fetchOHLCV': {
761
766
  'limit': 1000, # todo for derivatives
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, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
9
+ from ccxt.base.types import Balances, 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 ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -350,17 +350,20 @@ class yobit(Exchange, ImplicitAPI):
350
350
  'limit': 1000,
351
351
  'daysBack': 100000, # todo
352
352
  'untilDays': 100000, # todo
353
+ 'symbolRequired': True,
353
354
  },
354
355
  'fetchOrder': {
355
356
  'marginMode': False,
356
357
  'trigger': False,
357
358
  'trailing': False,
359
+ 'symbolRequired': False,
358
360
  },
359
361
  'fetchOpenOrders': {
360
362
  'marginMode': False,
361
363
  'limit': None,
362
364
  'trigger': False,
363
365
  'trailing': False,
366
+ 'symbolRequired': True,
364
367
  },
365
368
  'fetchOrders': None,
366
369
  'fetchClosedOrders': None,
@@ -557,7 +560,7 @@ class yobit(Exchange, ImplicitAPI):
557
560
  orderbook = response[market['id']]
558
561
  return self.parse_order_book(orderbook, symbol)
559
562
 
560
- def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}):
563
+ def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}) -> OrderBooks:
561
564
  """
562
565
 
563
566
  https://yobit.net/en/api
ccxt/zaif.py CHANGED
@@ -166,6 +166,7 @@ class zaif(Exchange, ImplicitAPI):
166
166
  'limit': None,
167
167
  'trigger': False,
168
168
  'trailing': False,
169
+ 'symbolRequired': False,
169
170
  },
170
171
  'fetchOrders': None, # todo
171
172
  'fetchClosedOrders': {
@@ -176,6 +177,7 @@ class zaif(Exchange, ImplicitAPI):
176
177
  'untilDays': 100000, # todo
177
178
  'trigger': False,
178
179
  'trailing': False,
180
+ 'symbolRequired': False,
179
181
  },
180
182
  'fetchOHLCV': None,
181
183
  },
ccxt/zonda.py CHANGED
@@ -334,6 +334,7 @@ class zonda(Exchange, ImplicitAPI):
334
334
  'limit': None,
335
335
  'daysBack': 100000, # todo
336
336
  'untilDays': 100000, # todo
337
+ 'symbolRequired': False,
337
338
  },
338
339
  'fetchOrder': None,
339
340
  'fetchOpenOrders': {
@@ -341,6 +342,7 @@ class zonda(Exchange, ImplicitAPI):
341
342
  'limit': 100,
342
343
  'trigger': False,
343
344
  'trailing': False,
345
+ 'symbolRequired': False,
344
346
  },
345
347
  'fetchOrders': None,
346
348
  'fetchClosedOrders': None, # todo