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/__init__.py CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.4.52'
25
+ __version__ = '4.4.57'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -163,7 +163,6 @@ from ccxt.kuna import kuna # noqa: F4
163
163
  from ccxt.latoken import latoken # noqa: F401
164
164
  from ccxt.lbank import lbank # noqa: F401
165
165
  from ccxt.luno import luno # noqa: F401
166
- from ccxt.lykke import lykke # noqa: F401
167
166
  from ccxt.mercado import mercado # noqa: F401
168
167
  from ccxt.mexc import mexc # noqa: F401
169
168
  from ccxt.myokx import myokx # noqa: F401
@@ -277,7 +276,6 @@ exchanges = [
277
276
  'latoken',
278
277
  'lbank',
279
278
  'luno',
280
- 'lykke',
281
279
  'mercado',
282
280
  'mexc',
283
281
  'myokx',
ccxt/abstract/binance.py CHANGED
@@ -764,4 +764,3 @@ class ImplicitAPI:
764
764
  papi_delete_margin_allopenorders = papiDeleteMarginAllOpenOrders = Entry('margin/allOpenOrders', 'papi', 'DELETE', {'cost': 5})
765
765
  papi_delete_margin_orderlist = papiDeleteMarginOrderList = Entry('margin/orderList', 'papi', 'DELETE', {'cost': 2})
766
766
  papi_delete_listenkey = papiDeleteListenKey = Entry('listenKey', 'papi', 'DELETE', {'cost': 0.2})
767
- papiv2_get_um_account = papiV2GetUmAccount = Entry('um/account', 'papiV2', 'GET', {'cost': 1})
@@ -764,4 +764,3 @@ class ImplicitAPI:
764
764
  papi_delete_margin_allopenorders = papiDeleteMarginAllOpenOrders = Entry('margin/allOpenOrders', 'papi', 'DELETE', {'cost': 5})
765
765
  papi_delete_margin_orderlist = papiDeleteMarginOrderList = Entry('margin/orderList', 'papi', 'DELETE', {'cost': 2})
766
766
  papi_delete_listenkey = papiDeleteListenKey = Entry('listenKey', 'papi', 'DELETE', {'cost': 0.2})
767
- papiv2_get_um_account = papiV2GetUmAccount = Entry('um/account', 'papiV2', 'GET', {'cost': 1})
@@ -816,4 +816,3 @@ class ImplicitAPI:
816
816
  papi_delete_margin_allopenorders = papiDeleteMarginAllOpenOrders = Entry('margin/allOpenOrders', 'papi', 'DELETE', {'cost': 5})
817
817
  papi_delete_margin_orderlist = papiDeleteMarginOrderList = Entry('margin/orderList', 'papi', 'DELETE', {'cost': 2})
818
818
  papi_delete_listenkey = papiDeleteListenKey = Entry('listenKey', 'papi', 'DELETE', {'cost': 0.2})
819
- papiv2_get_um_account = papiV2GetUmAccount = Entry('um/account', 'papiV2', 'GET', {'cost': 1})
@@ -764,4 +764,3 @@ class ImplicitAPI:
764
764
  papi_delete_margin_allopenorders = papiDeleteMarginAllOpenOrders = Entry('margin/allOpenOrders', 'papi', 'DELETE', {'cost': 5})
765
765
  papi_delete_margin_orderlist = papiDeleteMarginOrderList = Entry('margin/orderList', 'papi', 'DELETE', {'cost': 2})
766
766
  papi_delete_listenkey = papiDeleteListenKey = Entry('listenKey', 'papi', 'DELETE', {'cost': 0.2})
767
- papiv2_get_um_account = papiV2GetUmAccount = Entry('um/account', 'papiV2', 'GET', {'cost': 1})
ccxt/ace.py CHANGED
@@ -185,17 +185,20 @@ class ace(Exchange, ImplicitAPI):
185
185
  'limit': 500,
186
186
  'daysBack': None,
187
187
  'untilDays': None,
188
+ 'symbolRequired': True,
188
189
  },
189
190
  'fetchOrder': {
190
191
  'marginMode': False,
191
192
  'trigger': False,
192
193
  'trailing': False,
194
+ 'symbolRequired': False,
193
195
  },
194
196
  'fetchOpenOrders': {
195
197
  'marginMode': False,
196
198
  'limit': None,
197
199
  'trigger': False,
198
200
  'trailing': False,
201
+ 'symbolRequired': False,
199
202
  },
200
203
  'fetchOrders': None,
201
204
  'fetchClosedOrders': None,
ccxt/alpaca.py CHANGED
@@ -315,17 +315,20 @@ class alpaca(Exchange, ImplicitAPI):
315
315
  'limit': 100,
316
316
  'daysBack': 100000,
317
317
  'untilDays': 100000,
318
+ 'symbolRequired': False,
318
319
  },
319
320
  'fetchOrder': {
320
321
  'marginMode': False,
321
322
  'trigger': False,
322
323
  'trailing': False,
324
+ 'symbolRequired': False,
323
325
  },
324
326
  'fetchOpenOrders': {
325
327
  'marginMode': False,
326
328
  'limit': 500,
327
329
  'trigger': False,
328
330
  'trailing': False,
331
+ 'symbolRequired': False,
329
332
  },
330
333
  'fetchOrders': {
331
334
  'marginMode': False,
@@ -334,6 +337,7 @@ class alpaca(Exchange, ImplicitAPI):
334
337
  'untilDays': 100000,
335
338
  'trigger': False,
336
339
  'trailing': False,
340
+ 'symbolRequired': False,
337
341
  },
338
342
  'fetchClosedOrders': {
339
343
  'marginMode': False,
@@ -343,6 +347,7 @@ class alpaca(Exchange, ImplicitAPI):
343
347
  'untilDays': 100000,
344
348
  'trigger': False,
345
349
  'trailing': False,
350
+ 'symbolRequired': False,
346
351
  },
347
352
  'fetchOHLCV': {
348
353
  'limit': 1000,
ccxt/ascendex.py CHANGED
@@ -294,7 +294,6 @@ class ascendex(Exchange, ImplicitAPI):
294
294
  'AVAX': 'avalanche C chain',
295
295
  'OMNI': 'Omni',
296
296
  # 'TRC': 'TRC20',
297
- 'TRX': 'TRC20',
298
297
  'TRC20': 'TRC20',
299
298
  'ERC20': 'ERC20',
300
299
  'GO20': 'GO20',
@@ -340,6 +339,7 @@ class ascendex(Exchange, ImplicitAPI):
340
339
  'trigger': False,
341
340
  'trailing': False,
342
341
  'marketType': True,
342
+ 'symbolRequired': False,
343
343
  },
344
344
  'fetchOpenOrders': {
345
345
  'marginMode': False,
@@ -347,6 +347,7 @@ class ascendex(Exchange, ImplicitAPI):
347
347
  'trigger': False,
348
348
  'trailing': False,
349
349
  'marketType': True,
350
+ 'symbolRequired': False,
350
351
  },
351
352
  'fetchOrders': None,
352
353
  'fetchClosedOrders': None,
@@ -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
 
@@ -143,7 +143,6 @@ from ccxt.async_support.kuna import kuna
143
143
  from ccxt.async_support.latoken import latoken # noqa: F401
144
144
  from ccxt.async_support.lbank import lbank # noqa: F401
145
145
  from ccxt.async_support.luno import luno # noqa: F401
146
- from ccxt.async_support.lykke import lykke # noqa: F401
147
146
  from ccxt.async_support.mercado import mercado # noqa: F401
148
147
  from ccxt.async_support.mexc import mexc # noqa: F401
149
148
  from ccxt.async_support.myokx import myokx # noqa: F401
@@ -257,7 +256,6 @@ exchanges = [
257
256
  'latoken',
258
257
  'lbank',
259
258
  'luno',
260
- 'lykke',
261
259
  'mercado',
262
260
  'mexc',
263
261
  'myokx',
ccxt/async_support/ace.py CHANGED
@@ -185,17 +185,20 @@ class ace(Exchange, ImplicitAPI):
185
185
  'limit': 500,
186
186
  'daysBack': None,
187
187
  'untilDays': None,
188
+ 'symbolRequired': True,
188
189
  },
189
190
  'fetchOrder': {
190
191
  'marginMode': False,
191
192
  'trigger': False,
192
193
  'trailing': False,
194
+ 'symbolRequired': False,
193
195
  },
194
196
  'fetchOpenOrders': {
195
197
  'marginMode': False,
196
198
  'limit': None,
197
199
  'trigger': False,
198
200
  'trailing': False,
201
+ 'symbolRequired': False,
199
202
  },
200
203
  'fetchOrders': None,
201
204
  'fetchClosedOrders': None,
@@ -315,17 +315,20 @@ class alpaca(Exchange, ImplicitAPI):
315
315
  'limit': 100,
316
316
  'daysBack': 100000,
317
317
  'untilDays': 100000,
318
+ 'symbolRequired': False,
318
319
  },
319
320
  'fetchOrder': {
320
321
  'marginMode': False,
321
322
  'trigger': False,
322
323
  'trailing': False,
324
+ 'symbolRequired': False,
323
325
  },
324
326
  'fetchOpenOrders': {
325
327
  'marginMode': False,
326
328
  'limit': 500,
327
329
  'trigger': False,
328
330
  'trailing': False,
331
+ 'symbolRequired': False,
329
332
  },
330
333
  'fetchOrders': {
331
334
  'marginMode': False,
@@ -334,6 +337,7 @@ class alpaca(Exchange, ImplicitAPI):
334
337
  'untilDays': 100000,
335
338
  'trigger': False,
336
339
  'trailing': False,
340
+ 'symbolRequired': False,
337
341
  },
338
342
  'fetchClosedOrders': {
339
343
  'marginMode': False,
@@ -343,6 +347,7 @@ class alpaca(Exchange, ImplicitAPI):
343
347
  'untilDays': 100000,
344
348
  'trigger': False,
345
349
  'trailing': False,
350
+ 'symbolRequired': False,
346
351
  },
347
352
  'fetchOHLCV': {
348
353
  'limit': 1000,
@@ -295,7 +295,6 @@ class ascendex(Exchange, ImplicitAPI):
295
295
  'AVAX': 'avalanche C chain',
296
296
  'OMNI': 'Omni',
297
297
  # 'TRC': 'TRC20',
298
- 'TRX': 'TRC20',
299
298
  'TRC20': 'TRC20',
300
299
  'ERC20': 'ERC20',
301
300
  'GO20': 'GO20',
@@ -341,6 +340,7 @@ class ascendex(Exchange, ImplicitAPI):
341
340
  'trigger': False,
342
341
  'trailing': False,
343
342
  'marketType': True,
343
+ 'symbolRequired': False,
344
344
  },
345
345
  'fetchOpenOrders': {
346
346
  'marginMode': False,
@@ -348,6 +348,7 @@ class ascendex(Exchange, ImplicitAPI):
348
348
  'trigger': False,
349
349
  'trailing': False,
350
350
  'marketType': True,
351
+ 'symbolRequired': False,
351
352
  },
352
353
  'fetchOrders': None,
353
354
  'fetchClosedOrders': None,
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.4.52'
5
+ __version__ = '4.4.57'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -811,14 +811,18 @@ class Exchange(BaseExchange):
811
811
  maxRetries = self.safe_value(options, 'webApiRetries', 10)
812
812
  response = None
813
813
  retry = 0
814
+ shouldBreak = False
814
815
  while(retry < maxRetries):
815
816
  try:
816
817
  response = await getattr(self, endpointMethod)({})
818
+ shouldBreak = True
817
819
  break
818
820
  except Exception as e:
819
821
  retry = retry + 1
820
822
  if retry == maxRetries:
821
823
  raise e
824
+ if shouldBreak:
825
+ break # self is needed because of GO
822
826
  content = response
823
827
  if startRegex is not None:
824
828
  splitted_by_start = content.split(startRegex)
@@ -881,8 +885,9 @@ class Exchange(BaseExchange):
881
885
  self.log('Request failed with the error: ' + str(e) + ', retrying ' + (i + str(1)) + ' of ' + str(retries) + '...')
882
886
  if (retryDelay is not None) and (retryDelay != 0):
883
887
  await self.sleep(retryDelay)
884
- continue
885
- raise e
888
+ # continue #check self
889
+ if i >= retries:
890
+ raise e
886
891
  return None # self line is never reached, but exists for c# value return requirement
887
892
 
888
893
  async def request(self, path, api: Any = 'public', method='GET', params={}, headers: Any = None, body: Any = None, config={}):
@@ -1116,6 +1121,18 @@ class Exchange(BaseExchange):
1116
1121
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1117
1122
  raise NotSupported(self.id + ' createOrder() is not supported yet')
1118
1123
 
1124
+ async def create_convert_trade(self, id: str, fromCode: str, toCode: str, amount: Num = None, params={}):
1125
+ raise NotSupported(self.id + ' createConvertTrade() is not supported yet')
1126
+
1127
+ async def fetch_convert_trade(self, id: str, code: Str = None, params={}):
1128
+ raise NotSupported(self.id + ' fetchConvertTrade() is not supported yet')
1129
+
1130
+ async def fetch_convert_trade_history(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1131
+ raise NotSupported(self.id + ' fetchConvertTradeHistory() is not supported yet')
1132
+
1133
+ async def fetch_position_mode(self, symbol: Str = None, params={}):
1134
+ raise NotSupported(self.id + ' fetchPositionMode() is not supported yet')
1135
+
1119
1136
  async def create_trailing_amount_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, trailingAmount=None, trailingTriggerPrice=None, params={}):
1120
1137
  """
1121
1138
  create a trailing order by providing the symbol, type, side, amount, price and trailingAmount
@@ -1631,25 +1648,25 @@ class Exchange(BaseExchange):
1631
1648
 
1632
1649
  async def create_post_only_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1633
1650
  if not self.has['createPostOnlyOrder']:
1634
- raise NotSupported(self.id + 'createPostOnlyOrder() is not supported yet')
1651
+ raise NotSupported(self.id + ' createPostOnlyOrder() is not supported yet')
1635
1652
  query = self.extend(params, {'postOnly': True})
1636
1653
  return await self.create_order(symbol, type, side, amount, price, query)
1637
1654
 
1638
1655
  async def create_post_only_order_ws(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1639
1656
  if not self.has['createPostOnlyOrderWs']:
1640
- raise NotSupported(self.id + 'createPostOnlyOrderWs() is not supported yet')
1657
+ raise NotSupported(self.id + ' createPostOnlyOrderWs() is not supported yet')
1641
1658
  query = self.extend(params, {'postOnly': True})
1642
1659
  return await self.create_order_ws(symbol, type, side, amount, price, query)
1643
1660
 
1644
1661
  async def create_reduce_only_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1645
1662
  if not self.has['createReduceOnlyOrder']:
1646
- raise NotSupported(self.id + 'createReduceOnlyOrder() is not supported yet')
1663
+ raise NotSupported(self.id + ' createReduceOnlyOrder() is not supported yet')
1647
1664
  query = self.extend(params, {'reduceOnly': True})
1648
1665
  return await self.create_order(symbol, type, side, amount, price, query)
1649
1666
 
1650
1667
  async def create_reduce_only_order_ws(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1651
1668
  if not self.has['createReduceOnlyOrderWs']:
1652
- raise NotSupported(self.id + 'createReduceOnlyOrderWs() is not supported yet')
1669
+ raise NotSupported(self.id + ' createReduceOnlyOrderWs() is not supported yet')
1653
1670
  query = self.extend(params, {'reduceOnly': True})
1654
1671
  return await self.create_order_ws(symbol, type, side, amount, price, query)
1655
1672
 
@@ -337,17 +337,20 @@ class bigone(Exchange, ImplicitAPI):
337
337
  'limit': 200,
338
338
  'daysBack': None,
339
339
  'untilDays': None,
340
+ 'symbolRequired': True,
340
341
  },
341
342
  'fetchOrder': {
342
343
  'marginMode': False,
343
344
  'trigger': False,
344
345
  'trailing': False,
346
+ 'symbolRequired': False,
345
347
  },
346
348
  'fetchOpenOrders': {
347
349
  'marginMode': False,
348
350
  'limit': 200,
349
351
  'trigger': False,
350
352
  'trailing': False,
353
+ 'symbolRequired': True,
351
354
  },
352
355
  'fetchOrders': {
353
356
  'marginMode': False,
@@ -356,6 +359,7 @@ class bigone(Exchange, ImplicitAPI):
356
359
  'untilDays': None,
357
360
  'trigger': False,
358
361
  'trailing': False,
362
+ 'symbolRequired': True,
359
363
  },
360
364
  'fetchClosedOrders': {
361
365
  'marginMode': False,
@@ -365,6 +369,7 @@ class bigone(Exchange, ImplicitAPI):
365
369
  'untilDays': None,
366
370
  'trigger': False,
367
371
  'trailing': False,
372
+ 'symbolRequired': True,
368
373
  },
369
374
  'fetchOHLCV': {
370
375
  'limit': 500,