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/p2b.py CHANGED
@@ -219,6 +219,7 @@ class p2b(Exchange, ImplicitAPI):
219
219
  'limit': 100,
220
220
  'daysBack': 100000, # todo
221
221
  'untilDays': 1,
222
+ 'symbolRequired': True,
222
223
  },
223
224
  'fetchOrder': None, # todo
224
225
  'fetchOpenOrders': {
@@ -226,6 +227,7 @@ class p2b(Exchange, ImplicitAPI):
226
227
  'limit': 100,
227
228
  'trigger': False,
228
229
  'trailing': False,
230
+ 'symbolRequired': True,
229
231
  },
230
232
  'fetchOrders': None, # todo
231
233
  'fetchClosedOrders': {
@@ -236,6 +238,7 @@ class p2b(Exchange, ImplicitAPI):
236
238
  'untilDays': 1,
237
239
  'trigger': False,
238
240
  'trailing': False,
241
+ 'symbolRequired': False,
239
242
  },
240
243
  'fetchOHLCV': {
241
244
  'limit': 500,
ccxt/paradex.py CHANGED
@@ -312,17 +312,20 @@ class paradex(Exchange, ImplicitAPI):
312
312
  'limit': 100, # todo
313
313
  'daysBack': 100000, # todo
314
314
  'untilDays': 100000, # todo
315
+ 'symbolRequired': False,
315
316
  },
316
317
  'fetchOrder': {
317
318
  'marginMode': False,
318
319
  'trigger': False,
319
320
  'trailing': False,
321
+ 'symbolRequired': False,
320
322
  },
321
323
  'fetchOpenOrders': {
322
324
  'marginMode': False,
323
325
  'limit': 100, # todo
324
326
  'trigger': False,
325
327
  'trailing': False,
328
+ 'symbolRequired': False,
326
329
  },
327
330
  'fetchOrders': {
328
331
  'marginMode': False,
@@ -331,6 +334,7 @@ class paradex(Exchange, ImplicitAPI):
331
334
  'untilDays': 100000, # todo
332
335
  'trigger': False,
333
336
  'trailing': False,
337
+ 'symbolRequired': False,
334
338
  },
335
339
  'fetchClosedOrders': None, # todo
336
340
  'fetchOHLCV': {
@@ -1022,16 +1026,18 @@ class paradex(Exchange, ImplicitAPI):
1022
1026
  def prepare_paradex_domain(self, l1=False):
1023
1027
  systemConfig = self.get_system_config()
1024
1028
  if l1 is True:
1025
- return {
1029
+ l1D = {
1026
1030
  'name': 'Paradex',
1027
1031
  'chainId': systemConfig['l1_chain_id'],
1028
1032
  'version': '1',
1029
1033
  }
1030
- return {
1034
+ return l1D
1035
+ domain = {
1031
1036
  'name': 'Paradex',
1032
1037
  'chainId': systemConfig['starknet_chain_id'],
1033
1038
  'version': 1,
1034
1039
  }
1040
+ return domain
1035
1041
 
1036
1042
  def retrieve_account(self):
1037
1043
  cachedAccount: dict = self.safe_dict(self.options, 'paradexAccount')
ccxt/phemex.py CHANGED
@@ -342,17 +342,20 @@ class phemex(Exchange, ImplicitAPI):
342
342
  'limit': 200,
343
343
  'daysBack': 100000,
344
344
  'untilDays': 2, # todo implement
345
+ 'symbolRequired': False,
345
346
  },
346
347
  'fetchOrder': {
347
348
  'marginMode': False,
348
349
  'trigger': False,
349
350
  'trailing': False,
351
+ 'symbolRequired': True,
350
352
  },
351
353
  'fetchOpenOrders': {
352
354
  'marginMode': False,
353
355
  'limit': None,
354
356
  'trigger': False,
355
357
  'trailing': False,
358
+ 'symbolRequired': True,
356
359
  },
357
360
  'fetchOrders': {
358
361
  'marginMode': False,
@@ -361,6 +364,7 @@ class phemex(Exchange, ImplicitAPI):
361
364
  'untilDays': None,
362
365
  'trigger': False,
363
366
  'trailing': False,
367
+ 'symbolRequired': True,
364
368
  },
365
369
  'fetchClosedOrders': {
366
370
  'marginMode': False,
@@ -370,6 +374,7 @@ class phemex(Exchange, ImplicitAPI):
370
374
  'untilDays': 2,
371
375
  'trigger': False,
372
376
  'trailing': False,
377
+ 'symbolRequired': False,
373
378
  },
374
379
  'fetchOHLCV': {
375
380
  'limit': 1000,
@@ -1262,7 +1267,7 @@ class phemex(Exchange, ImplicitAPI):
1262
1267
  return self.to_en(price, market['priceScale'])
1263
1268
 
1264
1269
  def from_en(self, en, scale):
1265
- if en is None:
1270
+ if en is None or scale is None:
1266
1271
  return None
1267
1272
  precise = Precise(en)
1268
1273
  precise.decimals = self.sum(precise.decimals, scale)
@@ -2167,8 +2172,9 @@ class phemex(Exchange, ImplicitAPI):
2167
2172
  # }
2168
2173
  # }
2169
2174
  #
2170
- result = self.parse_swap_balance(response) if (type == 'swap') else self.parse_spot_balance(response)
2171
- return result
2175
+ if type == 'swap':
2176
+ return self.parse_swap_balance(response)
2177
+ return self.parse_spot_balance(response)
2172
2178
 
2173
2179
  def parse_order_status(self, status: Str):
2174
2180
  statuses: dict = {
@@ -2790,7 +2796,7 @@ class phemex(Exchange, ImplicitAPI):
2790
2796
  data = self.safe_dict(response, 'data', {})
2791
2797
  return self.parse_order(data, market)
2792
2798
 
2793
- def edit_order(self, id: str, symbol: str, type: OrderType = None, side: OrderSide = None, amount: Num = None, price: Num = None, params={}):
2799
+ def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}):
2794
2800
  """
2795
2801
  edit a trade order
2796
2802
 
ccxt/poloniex.py CHANGED
@@ -317,17 +317,20 @@ class poloniex(Exchange, ImplicitAPI):
317
317
  'limit': 1000,
318
318
  'daysBack': 100000,
319
319
  'untilDays': 100000,
320
+ 'symbolRequired': False,
320
321
  },
321
322
  'fetchOrder': {
322
323
  'marginMode': False,
323
324
  'trigger': False,
324
325
  'trailing': False,
326
+ 'symbolRequired': False,
325
327
  },
326
328
  'fetchOpenOrders': {
327
329
  'marginMode': False,
328
330
  'limit': 2000,
329
331
  'trigger': False,
330
332
  'trailing': False,
333
+ 'symbolRequired': False,
331
334
  },
332
335
  'fetchOrders': None,
333
336
  'fetchClosedOrders': None, # todo implement
@@ -1777,7 +1780,7 @@ class poloniex(Exchange, ImplicitAPI):
1777
1780
  network = self.safe_string_upper(params, 'network') # self line allows the user to specify either ERC20 or ETH
1778
1781
  network = self.safe_string(networks, network, network) # handle ERC20>ETH alias
1779
1782
  if network is not None:
1780
- request['currency'] += network # when network the currency need to be changed to currency+network https://docs.poloniex.com/#withdraw on MultiChain Currencies section
1783
+ request['currency'] = request['currency'] + network # when network the currency need to be changed to currency+network https://docs.poloniex.com/#withdraw on MultiChain Currencies section
1781
1784
  params = self.omit(params, 'network')
1782
1785
  else:
1783
1786
  if currency['id'] == 'USDT':
@@ -1823,7 +1826,7 @@ class poloniex(Exchange, ImplicitAPI):
1823
1826
  network = self.safe_string_upper(params, 'network') # self line allows the user to specify either ERC20 or ETH
1824
1827
  network = self.safe_string(networks, network, network) # handle ERC20>ETH alias
1825
1828
  if network is not None:
1826
- request['currency'] += network # when network the currency need to be changed to currency+network https://docs.poloniex.com/#withdraw on MultiChain Currencies section
1829
+ request['currency'] = request['currency'] + network # when network the currency need to be changed to currency+network https://docs.poloniex.com/#withdraw on MultiChain Currencies section
1827
1830
  params = self.omit(params, 'network')
1828
1831
  else:
1829
1832
  if currency['id'] == 'USDT':
@@ -1928,7 +1931,7 @@ class poloniex(Exchange, ImplicitAPI):
1928
1931
  network = self.safe_string_upper(params, 'network') # self line allows the user to specify either ERC20 or ETH
1929
1932
  network = self.safe_string(networks, network, network) # handle ERC20>ETH alias
1930
1933
  if network is not None:
1931
- request['currency'] += network # when network the currency need to be changed to currency+network https://docs.poloniex.com/#withdraw on MultiChain Currencies section
1934
+ request['currency'] = request['currency'] + network # when network the currency need to be changed to currency+network https://docs.poloniex.com/#withdraw on MultiChain Currencies section
1932
1935
  params = self.omit(params, 'network')
1933
1936
  response = self.privatePostWalletsWithdraw(self.extend(request, params))
1934
1937
  #
ccxt/poloniexfutures.py CHANGED
@@ -226,17 +226,20 @@ class poloniexfutures(Exchange, ImplicitAPI):
226
226
  'limit': None,
227
227
  'daysBack': 100000,
228
228
  'untilDays': 7,
229
+ 'symbolRequired': False,
229
230
  },
230
231
  'fetchOrder': {
231
232
  'marginMode': False,
232
233
  'trigger': False,
233
234
  'trailing': False,
235
+ 'symbolRequired': False,
234
236
  },
235
237
  'fetchOpenOrders': {
236
238
  'marginMode': True,
237
239
  'limit': None,
238
240
  'trigger': False,
239
241
  'trailing': False,
242
+ 'symbolRequired': False,
240
243
  },
241
244
  'fetchOrders': None, # todo
242
245
  'fetchClosedOrders': {
@@ -247,6 +250,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
247
250
  'untilDays': 100000,
248
251
  'trigger': False,
249
252
  'trailing': False,
253
+ 'symbolRequired': False,
250
254
  },
251
255
  'fetchOHLCV': {
252
256
  'limit': 200, # todo implement
@@ -1445,7 +1449,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
1445
1449
  """
1446
1450
  return self.fetch_orders_by_status('closed', symbol, since, limit, params)
1447
1451
 
1448
- def fetch_order(self, id: Str = None, symbol: Str = None, params={}):
1452
+ def fetch_order(self, id: Str, symbol: Str = None, params={}):
1449
1453
  """
1450
1454
  fetches information on an order made by the user
1451
1455
 
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.52'
7
+ __version__ = '4.4.57'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/pro/binance.py CHANGED
@@ -247,7 +247,7 @@ class binance(ccxt.async_support.binance):
247
247
  type = None
248
248
  type, params = self.handle_market_type_and_params('watchLiquidationsForSymbols', firstMarket, params)
249
249
  if type == 'spot':
250
- raise BadRequest(self.id + 'watchLiquidationsForSymbols is not supported for spot symbols')
250
+ raise BadRequest(self.id + ' watchLiquidationsForSymbols is not supported for spot symbols')
251
251
  subType = None
252
252
  subType, params = self.handle_sub_type_and_params('watchLiquidationsForSymbols', firstMarket, params)
253
253
  if self.isLinear(type, subType):
@@ -3705,7 +3705,7 @@ class binance(ccxt.async_support.binance):
3705
3705
  payload['limit'] = limit
3706
3706
  fromId = self.safe_integer(params, 'fromId')
3707
3707
  if fromId is not None and since is not None:
3708
- raise BadRequest(self.id + 'fetchMyTradesWs does not support fetching by both fromId and since parameters at the same time')
3708
+ raise BadRequest(self.id + ' fetchMyTradesWs does not support fetching by both fromId and since parameters at the same time')
3709
3709
  message: dict = {
3710
3710
  'id': messageHash,
3711
3711
  'method': 'myTrades',
ccxt/pro/bitcoincom.py CHANGED
@@ -22,10 +22,7 @@ class bitcoincom(hitbtc):
22
22
  'urls': {
23
23
  'logo': 'https://user-images.githubusercontent.com/1294454/97296144-514fa300-1861-11eb-952b-3d55d492200b.jpg',
24
24
  'api': {
25
- 'ws': {
26
- 'public': 'wss://api.fmfw.io/api/3/ws/public',
27
- 'private': 'wss://api.fmfw.io/api/3/ws/trading',
28
- },
25
+ 'ws': 'wss://api.fmfw.io/api/2/ws',
29
26
  },
30
27
  },
31
28
  'fees': {
ccxt/pro/bitget.py CHANGED
@@ -1916,7 +1916,7 @@ class bitget(ccxt.async_support.bitget):
1916
1916
  del client.subscriptions[subMessageHash]
1917
1917
  if messageHash in client.subscriptions:
1918
1918
  del client.subscriptions[messageHash]
1919
- error = UnsubscribeError(self.id + 'orderbook ' + symbol)
1919
+ error = UnsubscribeError(self.id + ' orderbook ' + symbol)
1920
1920
  client.reject(error, subMessageHash)
1921
1921
  client.resolve(True, messageHash)
1922
1922
 
@@ -1938,7 +1938,7 @@ class bitget(ccxt.async_support.bitget):
1938
1938
  del client.subscriptions[subMessageHash]
1939
1939
  if messageHash in client.subscriptions:
1940
1940
  del client.subscriptions[messageHash]
1941
- error = UnsubscribeError(self.id + 'trades ' + symbol)
1941
+ error = UnsubscribeError(self.id + ' trades ' + symbol)
1942
1942
  client.reject(error, subMessageHash)
1943
1943
  client.resolve(True, messageHash)
1944
1944
 
@@ -1960,7 +1960,7 @@ class bitget(ccxt.async_support.bitget):
1960
1960
  del client.subscriptions[subMessageHash]
1961
1961
  if messageHash in client.subscriptions:
1962
1962
  del client.subscriptions[messageHash]
1963
- error = UnsubscribeError(self.id + 'ticker ' + symbol)
1963
+ error = UnsubscribeError(self.id + ' ticker ' + symbol)
1964
1964
  client.reject(error, subMessageHash)
1965
1965
  client.resolve(True, messageHash)
1966
1966
 
ccxt/pro/bitopro.py CHANGED
@@ -77,7 +77,7 @@ class bitopro(ccxt.async_support.bitopro):
77
77
  if limit is None:
78
78
  endPart = market['id']
79
79
  else:
80
- endPart = market['id'] + ':' + self.number_to_string(limit)
80
+ endPart = market['id'] + ':' + limit
81
81
  orderbook = await self.watch_public('order-books', messageHash, endPart)
82
82
  return orderbook.limit()
83
83
 
ccxt/pro/bybit.py CHANGED
@@ -833,10 +833,15 @@ class bybit(ccxt.async_support.bybit):
833
833
  market = self.market(symbols[0])
834
834
  if limit is None:
835
835
  limit = 50 if (market['spot']) else 500
836
+ if market['option']:
837
+ limit = 100
836
838
  else:
837
839
  if not market['spot']:
838
- # bybit only support limit 1, 50, 200, 500 for contract
839
- if (limit != 1) and (limit != 50) and (limit != 200) and (limit != 500):
840
+ if market['option']:
841
+ if (limit != 25) and (limit != 100):
842
+ raise BadRequest(self.id + ' watchOrderBookForSymbols() can only use limit 25 and 100 for option markets.')
843
+ elif (limit != 1) and (limit != 50) and (limit != 200) and (limit != 500):
844
+ # bybit only support limit 1, 50, 200, 500 for contract
840
845
  raise BadRequest(self.id + ' watchOrderBookForSymbols() can only use limit 1, 50, 200 and 500.')
841
846
  topics = []
842
847
  messageHashes = []
ccxt/pro/cex.py CHANGED
@@ -1188,7 +1188,7 @@ class cex(ccxt.async_support.cex):
1188
1188
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1189
1189
  """
1190
1190
  if symbol is None:
1191
- raise ArgumentsRequired(self.id + 'fetchOpenOrdersWs requires a symbol.')
1191
+ raise ArgumentsRequired(self.id + ' fetchOpenOrdersWs requires a symbol.')
1192
1192
  await self.load_markets()
1193
1193
  await self.authenticate()
1194
1194
  market = self.market(symbol)
ccxt/pro/coincatch.py CHANGED
@@ -1403,7 +1403,7 @@ class coincatch(ccxt.async_support.coincatch):
1403
1403
  del client.subscriptions[subMessageHash]
1404
1404
  if messageHash in client.subscriptions:
1405
1405
  del client.subscriptions[messageHash]
1406
- error = UnsubscribeError(self.id + 'orderbook ' + symbol)
1406
+ error = UnsubscribeError(self.id + ' orderbook ' + symbol)
1407
1407
  client.reject(error, subMessageHash)
1408
1408
  client.resolve(True, messageHash)
1409
1409
 
@@ -1422,7 +1422,7 @@ class coincatch(ccxt.async_support.coincatch):
1422
1422
  del client.subscriptions[subMessageHash]
1423
1423
  if messageHash in client.subscriptions:
1424
1424
  del client.subscriptions[messageHash]
1425
- error = UnsubscribeError(self.id + 'trades ' + symbol)
1425
+ error = UnsubscribeError(self.id + ' trades ' + symbol)
1426
1426
  client.reject(error, subMessageHash)
1427
1427
  client.resolve(True, messageHash)
1428
1428
 
@@ -1441,7 +1441,7 @@ class coincatch(ccxt.async_support.coincatch):
1441
1441
  del client.subscriptions[subMessageHash]
1442
1442
  if messageHash in client.subscriptions:
1443
1443
  del client.subscriptions[messageHash]
1444
- error = UnsubscribeError(self.id + 'ticker ' + symbol)
1444
+ error = UnsubscribeError(self.id + ' ticker ' + symbol)
1445
1445
  client.reject(error, subMessageHash)
1446
1446
  client.resolve(True, messageHash)
1447
1447
 
ccxt/pro/mexc.py CHANGED
@@ -225,7 +225,7 @@ class mexc(ccxt.async_support.mexc):
225
225
  topics = []
226
226
  if not miniTicker:
227
227
  if symbols is None:
228
- raise ArgumentsRequired(self.id + 'watchTickers required symbols argument for the bookTicker channel')
228
+ raise ArgumentsRequired(self.id + ' watchTickers required symbols argument for the bookTicker channel')
229
229
  marketIds = self.market_ids(symbols)
230
230
  for i in range(0, len(marketIds)):
231
231
  marketId = marketIds[i]
@@ -406,12 +406,12 @@ class mexc(ccxt.async_support.mexc):
406
406
  symbols = self.market_symbols(symbols, None, True, False, True)
407
407
  marketType = None
408
408
  if symbols is None:
409
- raise ArgumentsRequired(self.id + 'watchBidsAsks required symbols argument')
409
+ raise ArgumentsRequired(self.id + ' watchBidsAsks required symbols argument')
410
410
  markets = self.markets_for_symbols(symbols)
411
411
  marketType, params = self.handle_market_type_and_params('watchBidsAsks', markets[0], params)
412
412
  isSpot = marketType == 'spot'
413
413
  if not isSpot:
414
- raise NotSupported(self.id + 'watchBidsAsks only support spot market')
414
+ raise NotSupported(self.id + ' watchBidsAsks only support spot market')
415
415
  messageHashes = []
416
416
  topics = []
417
417
  for i in range(0, len(symbols)):
ccxt/pro/okx.py CHANGED
@@ -2076,7 +2076,7 @@ class okx(ccxt.async_support.okx):
2076
2076
  await self.authenticate()
2077
2077
  market = self.market(symbol)
2078
2078
  if market['type'] != 'option':
2079
- raise BadRequest(self.id + 'cancelAllOrdersWs is only applicable to Option in Portfolio Margin mode, and MMP privilege is required.')
2079
+ raise BadRequest(self.id + ' cancelAllOrdersWs is only applicable to Option in Portfolio Margin mode, and MMP privilege is required.')
2080
2080
  url = self.get_url('private', 'private')
2081
2081
  messageHash = self.request_id()
2082
2082
  request: dict = {
ccxt/probit.py CHANGED
@@ -217,17 +217,20 @@ class probit(Exchange, ImplicitAPI):
217
217
  'limit': 1000,
218
218
  'daysBack': 100000, # todo
219
219
  'untilDays': 100000, # todo
220
+ 'symbolRequired': False,
220
221
  },
221
222
  'fetchOrder': {
222
223
  'marginMode': False,
223
224
  'trigger': False,
224
225
  'trailing': False,
226
+ 'symbolRequired': True,
225
227
  },
226
228
  'fetchOpenOrders': {
227
229
  'marginMode': False,
228
230
  'limit': None,
229
231
  'trigger': False,
230
232
  'trailing': False,
233
+ 'symbolRequired': False,
231
234
  },
232
235
  'fetchOrders': None,
233
236
  'fetchClosedOrders': {
@@ -238,6 +241,7 @@ class probit(Exchange, ImplicitAPI):
238
241
  'untilDays': 90,
239
242
  'trigger': False,
240
243
  'trailing': False,
244
+ 'symbolRequired': False,
241
245
  },
242
246
  'fetchOHLCV': {
243
247
  'limit': 4000,