ccxt 4.4.27__py2.py3-none-any.whl → 4.4.29__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 (156) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/abstract/binance.py +7 -0
  3. ccxt/abstract/binancecoinm.py +7 -0
  4. ccxt/abstract/binanceus.py +7 -0
  5. ccxt/abstract/binanceusdm.py +7 -0
  6. ccxt/abstract/bybit.py +0 -13
  7. ccxt/alpaca.py +45 -41
  8. ccxt/async_support/__init__.py +1 -1
  9. ccxt/async_support/alpaca.py +45 -41
  10. ccxt/async_support/base/exchange.py +4 -1
  11. ccxt/async_support/bigone.py +1 -1
  12. ccxt/async_support/binance.py +8 -1
  13. ccxt/async_support/bingx.py +1 -1
  14. ccxt/async_support/bitbank.py +1 -1
  15. ccxt/async_support/bitfinex.py +1 -1
  16. ccxt/async_support/bitfinex2.py +1 -1
  17. ccxt/async_support/bitflyer.py +1 -1
  18. ccxt/async_support/bitget.py +96 -8
  19. ccxt/async_support/bithumb.py +1 -1
  20. ccxt/async_support/bitmart.py +1 -1
  21. ccxt/async_support/bitmex.py +1 -1
  22. ccxt/async_support/bitopro.py +22 -22
  23. ccxt/async_support/bitrue.py +29 -29
  24. ccxt/async_support/bitso.py +1 -1
  25. ccxt/async_support/bitstamp.py +1 -1
  26. ccxt/async_support/bitvavo.py +4 -1
  27. ccxt/async_support/blockchaincom.py +1 -1
  28. ccxt/async_support/btcmarkets.py +1 -1
  29. ccxt/async_support/bybit.py +50 -585
  30. ccxt/async_support/coinbase.py +1 -1
  31. ccxt/async_support/coinbaseexchange.py +1 -1
  32. ccxt/async_support/coinbaseinternational.py +1 -1
  33. ccxt/async_support/coincatch.py +25 -5
  34. ccxt/async_support/coinex.py +1 -1
  35. ccxt/async_support/coinlist.py +1 -1
  36. ccxt/async_support/coinmate.py +1 -1
  37. ccxt/async_support/coinsph.py +1 -1
  38. ccxt/async_support/cryptocom.py +1 -1
  39. ccxt/async_support/deribit.py +1 -1
  40. ccxt/async_support/digifinex.py +1 -1
  41. ccxt/async_support/exmo.py +1 -1
  42. ccxt/async_support/gate.py +1 -1
  43. ccxt/async_support/gemini.py +1 -1
  44. ccxt/async_support/hashkey.py +1 -1
  45. ccxt/async_support/hitbtc.py +1 -1
  46. ccxt/async_support/hollaex.py +1 -1
  47. ccxt/async_support/htx.py +1 -1
  48. ccxt/async_support/huobijp.py +1 -1
  49. ccxt/async_support/idex.py +1 -1
  50. ccxt/async_support/independentreserve.py +1 -1
  51. ccxt/async_support/indodax.py +1 -1
  52. ccxt/async_support/kraken.py +44 -36
  53. ccxt/async_support/kucoin.py +1 -1
  54. ccxt/async_support/kuna.py +1 -1
  55. ccxt/async_support/lbank.py +6 -1
  56. ccxt/async_support/lykke.py +1 -1
  57. ccxt/async_support/mercado.py +1 -1
  58. ccxt/async_support/mexc.py +1 -1
  59. ccxt/async_support/ndax.py +1 -1
  60. ccxt/async_support/novadax.py +1 -1
  61. ccxt/async_support/okcoin.py +1 -1
  62. ccxt/async_support/okx.py +1 -1
  63. ccxt/async_support/onetrading.py +1 -1
  64. ccxt/async_support/oxfun.py +1 -1
  65. ccxt/async_support/phemex.py +1 -1
  66. ccxt/async_support/poloniex.py +1 -1
  67. ccxt/async_support/probit.py +1 -1
  68. ccxt/async_support/tokocrypto.py +1 -1
  69. ccxt/async_support/upbit.py +1 -1
  70. ccxt/async_support/vertex.py +52 -8
  71. ccxt/async_support/wavesexchange.py +2 -1
  72. ccxt/async_support/whitebit.py +1 -1
  73. ccxt/async_support/woo.py +1 -1
  74. ccxt/async_support/woofipro.py +1 -1
  75. ccxt/async_support/xt.py +1 -1
  76. ccxt/async_support/yobit.py +2 -2
  77. ccxt/async_support/zaif.py +1 -1
  78. ccxt/async_support/zonda.py +1 -1
  79. ccxt/base/exchange.py +4 -1
  80. ccxt/bigone.py +1 -1
  81. ccxt/binance.py +8 -1
  82. ccxt/bingx.py +1 -1
  83. ccxt/bitbank.py +1 -1
  84. ccxt/bitfinex.py +1 -1
  85. ccxt/bitfinex2.py +1 -1
  86. ccxt/bitflyer.py +1 -1
  87. ccxt/bitget.py +96 -8
  88. ccxt/bithumb.py +1 -1
  89. ccxt/bitmart.py +1 -1
  90. ccxt/bitmex.py +1 -1
  91. ccxt/bitopro.py +22 -22
  92. ccxt/bitrue.py +29 -29
  93. ccxt/bitso.py +1 -1
  94. ccxt/bitstamp.py +1 -1
  95. ccxt/bitvavo.py +4 -1
  96. ccxt/blockchaincom.py +1 -1
  97. ccxt/btcmarkets.py +1 -1
  98. ccxt/bybit.py +50 -585
  99. ccxt/coinbase.py +1 -1
  100. ccxt/coinbaseexchange.py +1 -1
  101. ccxt/coinbaseinternational.py +1 -1
  102. ccxt/coincatch.py +25 -5
  103. ccxt/coinex.py +1 -1
  104. ccxt/coinlist.py +1 -1
  105. ccxt/coinmate.py +1 -1
  106. ccxt/coinsph.py +1 -1
  107. ccxt/cryptocom.py +1 -1
  108. ccxt/deribit.py +1 -1
  109. ccxt/digifinex.py +1 -1
  110. ccxt/exmo.py +1 -1
  111. ccxt/gate.py +1 -1
  112. ccxt/gemini.py +1 -1
  113. ccxt/hashkey.py +1 -1
  114. ccxt/hitbtc.py +1 -1
  115. ccxt/hollaex.py +1 -1
  116. ccxt/htx.py +1 -1
  117. ccxt/huobijp.py +1 -1
  118. ccxt/idex.py +1 -1
  119. ccxt/independentreserve.py +1 -1
  120. ccxt/indodax.py +1 -1
  121. ccxt/kraken.py +44 -36
  122. ccxt/kucoin.py +1 -1
  123. ccxt/kuna.py +1 -1
  124. ccxt/lbank.py +6 -1
  125. ccxt/lykke.py +1 -1
  126. ccxt/mercado.py +1 -1
  127. ccxt/mexc.py +1 -1
  128. ccxt/ndax.py +1 -1
  129. ccxt/novadax.py +1 -1
  130. ccxt/okcoin.py +1 -1
  131. ccxt/okx.py +1 -1
  132. ccxt/onetrading.py +1 -1
  133. ccxt/oxfun.py +1 -1
  134. ccxt/phemex.py +1 -1
  135. ccxt/poloniex.py +1 -1
  136. ccxt/pro/__init__.py +1 -1
  137. ccxt/pro/binance.py +4 -5
  138. ccxt/pro/bitvavo.py +2 -1
  139. ccxt/pro/mexc.py +187 -30
  140. ccxt/probit.py +1 -1
  141. ccxt/tokocrypto.py +1 -1
  142. ccxt/upbit.py +1 -1
  143. ccxt/vertex.py +52 -8
  144. ccxt/wavesexchange.py +2 -1
  145. ccxt/whitebit.py +1 -1
  146. ccxt/woo.py +1 -1
  147. ccxt/woofipro.py +1 -1
  148. ccxt/xt.py +1 -1
  149. ccxt/yobit.py +2 -2
  150. ccxt/zaif.py +1 -1
  151. ccxt/zonda.py +1 -1
  152. {ccxt-4.4.27.dist-info → ccxt-4.4.29.dist-info}/METADATA +4 -4
  153. {ccxt-4.4.27.dist-info → ccxt-4.4.29.dist-info}/RECORD +156 -156
  154. {ccxt-4.4.27.dist-info → ccxt-4.4.29.dist-info}/LICENSE.txt +0 -0
  155. {ccxt-4.4.27.dist-info → ccxt-4.4.29.dist-info}/WHEEL +0 -0
  156. {ccxt-4.4.27.dist-info → ccxt-4.4.29.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.27'
25
+ __version__ = '4.4.29'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
ccxt/abstract/binance.py CHANGED
@@ -587,6 +587,9 @@ class ImplicitAPI:
587
587
  eapiprivate_get_mmp = eapiPrivateGetMmp = Entry('mmp', 'eapiPrivate', 'GET', {'cost': 1})
588
588
  eapiprivate_get_countdowncancelall = eapiPrivateGetCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'GET', {'cost': 1})
589
589
  eapiprivate_get_order = eapiPrivateGetOrder = Entry('order', 'eapiPrivate', 'GET', {'cost': 1})
590
+ eapiprivate_get_block_order_orders = eapiPrivateGetBlockOrderOrders = Entry('block/order/orders', 'eapiPrivate', 'GET', {'cost': 5})
591
+ eapiprivate_get_block_order_execute = eapiPrivateGetBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'GET', {'cost': 5})
592
+ eapiprivate_get_block_user_trades = eapiPrivateGetBlockUserTrades = Entry('block/user-trades', 'eapiPrivate', 'GET', {'cost': 5})
590
593
  eapiprivate_post_order = eapiPrivatePostOrder = Entry('order', 'eapiPrivate', 'POST', {'cost': 1})
591
594
  eapiprivate_post_batchorders = eapiPrivatePostBatchOrders = Entry('batchOrders', 'eapiPrivate', 'POST', {'cost': 5})
592
595
  eapiprivate_post_listenkey = eapiPrivatePostListenKey = Entry('listenKey', 'eapiPrivate', 'POST', {'cost': 1})
@@ -594,12 +597,16 @@ class ImplicitAPI:
594
597
  eapiprivate_post_mmpreset = eapiPrivatePostMmpReset = Entry('mmpReset', 'eapiPrivate', 'POST', {'cost': 1})
595
598
  eapiprivate_post_countdowncancelall = eapiPrivatePostCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'POST', {'cost': 1})
596
599
  eapiprivate_post_countdowncancelallheartbeat = eapiPrivatePostCountdownCancelAllHeartBeat = Entry('countdownCancelAllHeartBeat', 'eapiPrivate', 'POST', {'cost': 10})
600
+ eapiprivate_post_block_order_create = eapiPrivatePostBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'POST', {'cost': 5})
601
+ eapiprivate_post_block_order_execute = eapiPrivatePostBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'POST', {'cost': 5})
597
602
  eapiprivate_put_listenkey = eapiPrivatePutListenKey = Entry('listenKey', 'eapiPrivate', 'PUT', {'cost': 1})
603
+ eapiprivate_put_block_order_create = eapiPrivatePutBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'PUT', {'cost': 5})
598
604
  eapiprivate_delete_order = eapiPrivateDeleteOrder = Entry('order', 'eapiPrivate', 'DELETE', {'cost': 1})
599
605
  eapiprivate_delete_batchorders = eapiPrivateDeleteBatchOrders = Entry('batchOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
600
606
  eapiprivate_delete_allopenorders = eapiPrivateDeleteAllOpenOrders = Entry('allOpenOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
601
607
  eapiprivate_delete_allopenordersbyunderlying = eapiPrivateDeleteAllOpenOrdersByUnderlying = Entry('allOpenOrdersByUnderlying', 'eapiPrivate', 'DELETE', {'cost': 1})
602
608
  eapiprivate_delete_listenkey = eapiPrivateDeleteListenKey = Entry('listenKey', 'eapiPrivate', 'DELETE', {'cost': 1})
609
+ eapiprivate_delete_block_order_create = eapiPrivateDeleteBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'DELETE', {'cost': 5})
603
610
  public_get_ping = publicGetPing = Entry('ping', 'public', 'GET', {'cost': 0.2})
604
611
  public_get_time = publicGetTime = Entry('time', 'public', 'GET', {'cost': 0.2})
605
612
  public_get_depth = publicGetDepth = Entry('depth', 'public', 'GET', {'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]]})
@@ -587,6 +587,9 @@ class ImplicitAPI:
587
587
  eapiprivate_get_mmp = eapiPrivateGetMmp = Entry('mmp', 'eapiPrivate', 'GET', {'cost': 1})
588
588
  eapiprivate_get_countdowncancelall = eapiPrivateGetCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'GET', {'cost': 1})
589
589
  eapiprivate_get_order = eapiPrivateGetOrder = Entry('order', 'eapiPrivate', 'GET', {'cost': 1})
590
+ eapiprivate_get_block_order_orders = eapiPrivateGetBlockOrderOrders = Entry('block/order/orders', 'eapiPrivate', 'GET', {'cost': 5})
591
+ eapiprivate_get_block_order_execute = eapiPrivateGetBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'GET', {'cost': 5})
592
+ eapiprivate_get_block_user_trades = eapiPrivateGetBlockUserTrades = Entry('block/user-trades', 'eapiPrivate', 'GET', {'cost': 5})
590
593
  eapiprivate_post_order = eapiPrivatePostOrder = Entry('order', 'eapiPrivate', 'POST', {'cost': 1})
591
594
  eapiprivate_post_batchorders = eapiPrivatePostBatchOrders = Entry('batchOrders', 'eapiPrivate', 'POST', {'cost': 5})
592
595
  eapiprivate_post_listenkey = eapiPrivatePostListenKey = Entry('listenKey', 'eapiPrivate', 'POST', {'cost': 1})
@@ -594,12 +597,16 @@ class ImplicitAPI:
594
597
  eapiprivate_post_mmpreset = eapiPrivatePostMmpReset = Entry('mmpReset', 'eapiPrivate', 'POST', {'cost': 1})
595
598
  eapiprivate_post_countdowncancelall = eapiPrivatePostCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'POST', {'cost': 1})
596
599
  eapiprivate_post_countdowncancelallheartbeat = eapiPrivatePostCountdownCancelAllHeartBeat = Entry('countdownCancelAllHeartBeat', 'eapiPrivate', 'POST', {'cost': 10})
600
+ eapiprivate_post_block_order_create = eapiPrivatePostBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'POST', {'cost': 5})
601
+ eapiprivate_post_block_order_execute = eapiPrivatePostBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'POST', {'cost': 5})
597
602
  eapiprivate_put_listenkey = eapiPrivatePutListenKey = Entry('listenKey', 'eapiPrivate', 'PUT', {'cost': 1})
603
+ eapiprivate_put_block_order_create = eapiPrivatePutBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'PUT', {'cost': 5})
598
604
  eapiprivate_delete_order = eapiPrivateDeleteOrder = Entry('order', 'eapiPrivate', 'DELETE', {'cost': 1})
599
605
  eapiprivate_delete_batchorders = eapiPrivateDeleteBatchOrders = Entry('batchOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
600
606
  eapiprivate_delete_allopenorders = eapiPrivateDeleteAllOpenOrders = Entry('allOpenOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
601
607
  eapiprivate_delete_allopenordersbyunderlying = eapiPrivateDeleteAllOpenOrdersByUnderlying = Entry('allOpenOrdersByUnderlying', 'eapiPrivate', 'DELETE', {'cost': 1})
602
608
  eapiprivate_delete_listenkey = eapiPrivateDeleteListenKey = Entry('listenKey', 'eapiPrivate', 'DELETE', {'cost': 1})
609
+ eapiprivate_delete_block_order_create = eapiPrivateDeleteBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'DELETE', {'cost': 5})
603
610
  public_get_ping = publicGetPing = Entry('ping', 'public', 'GET', {'cost': 0.2})
604
611
  public_get_time = publicGetTime = Entry('time', 'public', 'GET', {'cost': 0.2})
605
612
  public_get_depth = publicGetDepth = Entry('depth', 'public', 'GET', {'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]]})
@@ -639,6 +639,9 @@ class ImplicitAPI:
639
639
  eapiprivate_get_mmp = eapiPrivateGetMmp = Entry('mmp', 'eapiPrivate', 'GET', {'cost': 1})
640
640
  eapiprivate_get_countdowncancelall = eapiPrivateGetCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'GET', {'cost': 1})
641
641
  eapiprivate_get_order = eapiPrivateGetOrder = Entry('order', 'eapiPrivate', 'GET', {'cost': 1})
642
+ eapiprivate_get_block_order_orders = eapiPrivateGetBlockOrderOrders = Entry('block/order/orders', 'eapiPrivate', 'GET', {'cost': 5})
643
+ eapiprivate_get_block_order_execute = eapiPrivateGetBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'GET', {'cost': 5})
644
+ eapiprivate_get_block_user_trades = eapiPrivateGetBlockUserTrades = Entry('block/user-trades', 'eapiPrivate', 'GET', {'cost': 5})
642
645
  eapiprivate_post_order = eapiPrivatePostOrder = Entry('order', 'eapiPrivate', 'POST', {'cost': 1})
643
646
  eapiprivate_post_batchorders = eapiPrivatePostBatchOrders = Entry('batchOrders', 'eapiPrivate', 'POST', {'cost': 5})
644
647
  eapiprivate_post_listenkey = eapiPrivatePostListenKey = Entry('listenKey', 'eapiPrivate', 'POST', {'cost': 1})
@@ -646,12 +649,16 @@ class ImplicitAPI:
646
649
  eapiprivate_post_mmpreset = eapiPrivatePostMmpReset = Entry('mmpReset', 'eapiPrivate', 'POST', {'cost': 1})
647
650
  eapiprivate_post_countdowncancelall = eapiPrivatePostCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'POST', {'cost': 1})
648
651
  eapiprivate_post_countdowncancelallheartbeat = eapiPrivatePostCountdownCancelAllHeartBeat = Entry('countdownCancelAllHeartBeat', 'eapiPrivate', 'POST', {'cost': 10})
652
+ eapiprivate_post_block_order_create = eapiPrivatePostBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'POST', {'cost': 5})
653
+ eapiprivate_post_block_order_execute = eapiPrivatePostBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'POST', {'cost': 5})
649
654
  eapiprivate_put_listenkey = eapiPrivatePutListenKey = Entry('listenKey', 'eapiPrivate', 'PUT', {'cost': 1})
655
+ eapiprivate_put_block_order_create = eapiPrivatePutBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'PUT', {'cost': 5})
650
656
  eapiprivate_delete_order = eapiPrivateDeleteOrder = Entry('order', 'eapiPrivate', 'DELETE', {'cost': 1})
651
657
  eapiprivate_delete_batchorders = eapiPrivateDeleteBatchOrders = Entry('batchOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
652
658
  eapiprivate_delete_allopenorders = eapiPrivateDeleteAllOpenOrders = Entry('allOpenOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
653
659
  eapiprivate_delete_allopenordersbyunderlying = eapiPrivateDeleteAllOpenOrdersByUnderlying = Entry('allOpenOrdersByUnderlying', 'eapiPrivate', 'DELETE', {'cost': 1})
654
660
  eapiprivate_delete_listenkey = eapiPrivateDeleteListenKey = Entry('listenKey', 'eapiPrivate', 'DELETE', {'cost': 1})
661
+ eapiprivate_delete_block_order_create = eapiPrivateDeleteBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'DELETE', {'cost': 5})
655
662
  public_get_ping = publicGetPing = Entry('ping', 'public', 'GET', {'cost': 1})
656
663
  public_get_time = publicGetTime = Entry('time', 'public', 'GET', {'cost': 1})
657
664
  public_get_depth = publicGetDepth = Entry('depth', 'public', 'GET', {'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]]})
@@ -587,6 +587,9 @@ class ImplicitAPI:
587
587
  eapiprivate_get_mmp = eapiPrivateGetMmp = Entry('mmp', 'eapiPrivate', 'GET', {'cost': 1})
588
588
  eapiprivate_get_countdowncancelall = eapiPrivateGetCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'GET', {'cost': 1})
589
589
  eapiprivate_get_order = eapiPrivateGetOrder = Entry('order', 'eapiPrivate', 'GET', {'cost': 1})
590
+ eapiprivate_get_block_order_orders = eapiPrivateGetBlockOrderOrders = Entry('block/order/orders', 'eapiPrivate', 'GET', {'cost': 5})
591
+ eapiprivate_get_block_order_execute = eapiPrivateGetBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'GET', {'cost': 5})
592
+ eapiprivate_get_block_user_trades = eapiPrivateGetBlockUserTrades = Entry('block/user-trades', 'eapiPrivate', 'GET', {'cost': 5})
590
593
  eapiprivate_post_order = eapiPrivatePostOrder = Entry('order', 'eapiPrivate', 'POST', {'cost': 1})
591
594
  eapiprivate_post_batchorders = eapiPrivatePostBatchOrders = Entry('batchOrders', 'eapiPrivate', 'POST', {'cost': 5})
592
595
  eapiprivate_post_listenkey = eapiPrivatePostListenKey = Entry('listenKey', 'eapiPrivate', 'POST', {'cost': 1})
@@ -594,12 +597,16 @@ class ImplicitAPI:
594
597
  eapiprivate_post_mmpreset = eapiPrivatePostMmpReset = Entry('mmpReset', 'eapiPrivate', 'POST', {'cost': 1})
595
598
  eapiprivate_post_countdowncancelall = eapiPrivatePostCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'POST', {'cost': 1})
596
599
  eapiprivate_post_countdowncancelallheartbeat = eapiPrivatePostCountdownCancelAllHeartBeat = Entry('countdownCancelAllHeartBeat', 'eapiPrivate', 'POST', {'cost': 10})
600
+ eapiprivate_post_block_order_create = eapiPrivatePostBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'POST', {'cost': 5})
601
+ eapiprivate_post_block_order_execute = eapiPrivatePostBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'POST', {'cost': 5})
597
602
  eapiprivate_put_listenkey = eapiPrivatePutListenKey = Entry('listenKey', 'eapiPrivate', 'PUT', {'cost': 1})
603
+ eapiprivate_put_block_order_create = eapiPrivatePutBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'PUT', {'cost': 5})
598
604
  eapiprivate_delete_order = eapiPrivateDeleteOrder = Entry('order', 'eapiPrivate', 'DELETE', {'cost': 1})
599
605
  eapiprivate_delete_batchorders = eapiPrivateDeleteBatchOrders = Entry('batchOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
600
606
  eapiprivate_delete_allopenorders = eapiPrivateDeleteAllOpenOrders = Entry('allOpenOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
601
607
  eapiprivate_delete_allopenordersbyunderlying = eapiPrivateDeleteAllOpenOrdersByUnderlying = Entry('allOpenOrdersByUnderlying', 'eapiPrivate', 'DELETE', {'cost': 1})
602
608
  eapiprivate_delete_listenkey = eapiPrivateDeleteListenKey = Entry('listenKey', 'eapiPrivate', 'DELETE', {'cost': 1})
609
+ eapiprivate_delete_block_order_create = eapiPrivateDeleteBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'DELETE', {'cost': 5})
603
610
  public_get_ping = publicGetPing = Entry('ping', 'public', 'GET', {'cost': 0.2})
604
611
  public_get_time = publicGetTime = Entry('time', 'public', 'GET', {'cost': 0.2})
605
612
  public_get_depth = publicGetDepth = Entry('depth', 'public', 'GET', {'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]]})
ccxt/abstract/bybit.py CHANGED
@@ -181,19 +181,6 @@ class ImplicitAPI:
181
181
  private_get_v5_broker_earnings_info = privateGetV5BrokerEarningsInfo = Entry('v5/broker/earnings-info', 'private', 'GET', {'cost': 5})
182
182
  private_get_v5_broker_account_info = privateGetV5BrokerAccountInfo = Entry('v5/broker/account-info', 'private', 'GET', {'cost': 5})
183
183
  private_get_v5_broker_asset_query_sub_member_deposit_record = privateGetV5BrokerAssetQuerySubMemberDepositRecord = Entry('v5/broker/asset/query-sub-member-deposit-record', 'private', 'GET', {'cost': 10})
184
- private_post_option_usdc_openapi_private_v1_place_order = privatePostOptionUsdcOpenapiPrivateV1PlaceOrder = Entry('option/usdc/openapi/private/v1/place-order', 'private', 'POST', {'cost': 2.5})
185
- private_post_option_usdc_openapi_private_v1_replace_order = privatePostOptionUsdcOpenapiPrivateV1ReplaceOrder = Entry('option/usdc/openapi/private/v1/replace-order', 'private', 'POST', {'cost': 2.5})
186
- private_post_option_usdc_openapi_private_v1_cancel_order = privatePostOptionUsdcOpenapiPrivateV1CancelOrder = Entry('option/usdc/openapi/private/v1/cancel-order', 'private', 'POST', {'cost': 2.5})
187
- private_post_option_usdc_openapi_private_v1_cancel_all = privatePostOptionUsdcOpenapiPrivateV1CancelAll = Entry('option/usdc/openapi/private/v1/cancel-all', 'private', 'POST', {'cost': 2.5})
188
- private_post_option_usdc_openapi_private_v1_query_active_orders = privatePostOptionUsdcOpenapiPrivateV1QueryActiveOrders = Entry('option/usdc/openapi/private/v1/query-active-orders', 'private', 'POST', {'cost': 2.5})
189
- private_post_option_usdc_openapi_private_v1_query_order_history = privatePostOptionUsdcOpenapiPrivateV1QueryOrderHistory = Entry('option/usdc/openapi/private/v1/query-order-history', 'private', 'POST', {'cost': 2.5})
190
- private_post_option_usdc_openapi_private_v1_execution_list = privatePostOptionUsdcOpenapiPrivateV1ExecutionList = Entry('option/usdc/openapi/private/v1/execution-list', 'private', 'POST', {'cost': 2.5})
191
- private_post_option_usdc_openapi_private_v1_query_position = privatePostOptionUsdcOpenapiPrivateV1QueryPosition = Entry('option/usdc/openapi/private/v1/query-position', 'private', 'POST', {'cost': 2.5})
192
- private_post_perpetual_usdc_openapi_private_v1_place_order = privatePostPerpetualUsdcOpenapiPrivateV1PlaceOrder = Entry('perpetual/usdc/openapi/private/v1/place-order', 'private', 'POST', {'cost': 2.5})
193
- private_post_perpetual_usdc_openapi_private_v1_replace_order = privatePostPerpetualUsdcOpenapiPrivateV1ReplaceOrder = Entry('perpetual/usdc/openapi/private/v1/replace-order', 'private', 'POST', {'cost': 2.5})
194
- private_post_perpetual_usdc_openapi_private_v1_cancel_order = privatePostPerpetualUsdcOpenapiPrivateV1CancelOrder = Entry('perpetual/usdc/openapi/private/v1/cancel-order', 'private', 'POST', {'cost': 2.5})
195
- private_post_perpetual_usdc_openapi_private_v1_cancel_all = privatePostPerpetualUsdcOpenapiPrivateV1CancelAll = Entry('perpetual/usdc/openapi/private/v1/cancel-all', 'private', 'POST', {'cost': 2.5})
196
- private_post_perpetual_usdc_openapi_private_v1_position_leverage_save = privatePostPerpetualUsdcOpenapiPrivateV1PositionLeverageSave = Entry('perpetual/usdc/openapi/private/v1/position/leverage/save', 'private', 'POST', {'cost': 2.5})
197
184
  private_post_spot_v3_private_order = privatePostSpotV3PrivateOrder = Entry('spot/v3/private/order', 'private', 'POST', {'cost': 2.5})
198
185
  private_post_spot_v3_private_cancel_order = privatePostSpotV3PrivateCancelOrder = Entry('spot/v3/private/cancel-order', 'private', 'POST', {'cost': 2.5})
199
186
  private_post_spot_v3_private_cancel_orders = privatePostSpotV3PrivateCancelOrders = Entry('spot/v3/private/cancel-orders', 'private', 'POST', {'cost': 2.5})
ccxt/alpaca.py CHANGED
@@ -17,6 +17,7 @@ from ccxt.base.errors import InvalidOrder
17
17
  from ccxt.base.errors import NotSupported
18
18
  from ccxt.base.errors import RateLimitExceeded
19
19
  from ccxt.base.decimal_to_precision import TICK_SIZE
20
+ from ccxt.base.precise import Precise
20
21
 
21
22
 
22
23
  class alpaca(Exchange, ImplicitAPI):
@@ -1288,7 +1289,7 @@ class alpaca(Exchange, ImplicitAPI):
1288
1289
  'tag': None,
1289
1290
  }
1290
1291
 
1291
- def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1292
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1292
1293
  """
1293
1294
  make a withdrawal
1294
1295
  :see: https://docs.alpaca.markets/reference/createcryptotransferforaccount
@@ -1313,19 +1314,19 @@ class alpaca(Exchange, ImplicitAPI):
1313
1314
  response = self.traderPrivatePostV2WalletsTransfers(self.extend(request, params))
1314
1315
  #
1315
1316
  # {
1316
- # "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
1317
- # "tx_hash": "string",
1318
- # "direction": "INCOMING",
1317
+ # "id": "e27b70a6-5610-40d7-8468-a516a284b776",
1318
+ # "tx_hash": null,
1319
+ # "direction": "OUTGOING",
1320
+ # "amount": "20",
1321
+ # "usd_value": "19.99856",
1322
+ # "chain": "ETH",
1323
+ # "asset": "USDT",
1324
+ # "from_address": "0x123930E4dCA196E070d39B60c644C8Aae02f23",
1325
+ # "to_address": "0x1232c0925196e4dcf05945f67f690153190fbaab",
1319
1326
  # "status": "PROCESSING",
1320
- # "amount": "string",
1321
- # "usd_value": "string",
1322
- # "network_fee": "string",
1323
- # "fees": "string",
1324
- # "chain": "string",
1325
- # "asset": "string",
1326
- # "from_address": "string",
1327
- # "to_address": "string",
1328
- # "created_at": "2024-11-02T07:42:48.402Z"
1327
+ # "created_at": "2024-11-07T02:39:01.775495Z",
1328
+ # "network_fee": "4",
1329
+ # "fees": "0.1"
1329
1330
  # }
1330
1331
  #
1331
1332
  return self.parse_transaction(response, currency)
@@ -1338,19 +1339,19 @@ class alpaca(Exchange, ImplicitAPI):
1338
1339
  response = self.traderPrivateGetV2WalletsTransfers(params)
1339
1340
  #
1340
1341
  # {
1341
- # "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
1342
- # "tx_hash": "string",
1343
- # "direction": "INCOMING",
1342
+ # "id": "e27b70a6-5610-40d7-8468-a516a284b776",
1343
+ # "tx_hash": null,
1344
+ # "direction": "OUTGOING",
1345
+ # "amount": "20",
1346
+ # "usd_value": "19.99856",
1347
+ # "chain": "ETH",
1348
+ # "asset": "USDT",
1349
+ # "from_address": "0x123930E4dCA196E070d39B60c644C8Aae02f23",
1350
+ # "to_address": "0x1232c0925196e4dcf05945f67f690153190fbaab",
1344
1351
  # "status": "PROCESSING",
1345
- # "amount": "string",
1346
- # "usd_value": "string",
1347
- # "network_fee": "string",
1348
- # "fees": "string",
1349
- # "chain": "string",
1350
- # "asset": "string",
1351
- # "from_address": "string",
1352
- # "to_address": "string",
1353
- # "created_at": "2024-11-02T07:42:48.402Z"
1352
+ # "created_at": "2024-11-07T02:39:01.775495Z",
1353
+ # "network_fee": "4",
1354
+ # "fees": "0.1"
1354
1355
  # }
1355
1356
  #
1356
1357
  results = []
@@ -1359,7 +1360,7 @@ class alpaca(Exchange, ImplicitAPI):
1359
1360
  direction = self.safe_string(entry, 'direction')
1360
1361
  if direction == type:
1361
1362
  results.append(entry)
1362
- elif direction == 'BOTH':
1363
+ elif type == 'BOTH':
1363
1364
  results.append(entry)
1364
1365
  return self.parse_transactions(results, currency, since, limit, params)
1365
1366
 
@@ -1402,26 +1403,29 @@ class alpaca(Exchange, ImplicitAPI):
1402
1403
  def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1403
1404
  #
1404
1405
  # {
1405
- # "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
1406
- # "tx_hash": "string",
1407
- # "direction": "INCOMING",
1406
+ # "id": "e27b70a6-5610-40d7-8468-a516a284b776",
1407
+ # "tx_hash": null,
1408
+ # "direction": "OUTGOING",
1409
+ # "amount": "20",
1410
+ # "usd_value": "19.99856",
1411
+ # "chain": "ETH",
1412
+ # "asset": "USDT",
1413
+ # "from_address": "0x123930E4dCA196E070d39B60c644C8Aae02f23",
1414
+ # "to_address": "0x1232c0925196e4dcf05945f67f690153190fbaab",
1408
1415
  # "status": "PROCESSING",
1409
- # "amount": "string",
1410
- # "usd_value": "string",
1411
- # "network_fee": "string",
1412
- # "fees": "string",
1413
- # "chain": "string",
1414
- # "asset": "string",
1415
- # "from_address": "string",
1416
- # "to_address": "string",
1417
- # "created_at": "2024-11-02T07:42:48.402Z"
1416
+ # "created_at": "2024-11-07T02:39:01.775495Z",
1417
+ # "network_fee": "4",
1418
+ # "fees": "0.1"
1418
1419
  # }
1419
1420
  #
1420
1421
  datetime = self.safe_string(transaction, 'created_at')
1421
1422
  currencyId = self.safe_string(transaction, 'asset')
1422
1423
  code = self.safe_currency_code(currencyId, currency)
1424
+ fees = self.safe_string(transaction, 'fees')
1425
+ networkFee = self.safe_string(transaction, 'network_fee')
1426
+ totalFee = Precise.string_add(fees, networkFee)
1423
1427
  fee = {
1424
- 'cost': self.safe_number(transaction, 'fees'),
1428
+ 'cost': self.parse_number(totalFee),
1425
1429
  'currency': code,
1426
1430
  }
1427
1431
  return {
@@ -1450,8 +1454,8 @@ class alpaca(Exchange, ImplicitAPI):
1450
1454
  def parse_transaction_status(self, status: Str):
1451
1455
  statuses: dict = {
1452
1456
  'PROCESSING': 'pending',
1453
- # 'FAILED': 'failed',
1454
- # 'SUCCESS': 'ok',
1457
+ 'FAILED': 'failed',
1458
+ 'COMPLETE': 'ok',
1455
1459
  }
1456
1460
  return self.safe_string(statuses, status, status)
1457
1461
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.27'
7
+ __version__ = '4.4.29'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -17,6 +17,7 @@ from ccxt.base.errors import InvalidOrder
17
17
  from ccxt.base.errors import NotSupported
18
18
  from ccxt.base.errors import RateLimitExceeded
19
19
  from ccxt.base.decimal_to_precision import TICK_SIZE
20
+ from ccxt.base.precise import Precise
20
21
 
21
22
 
22
23
  class alpaca(Exchange, ImplicitAPI):
@@ -1288,7 +1289,7 @@ class alpaca(Exchange, ImplicitAPI):
1288
1289
  'tag': None,
1289
1290
  }
1290
1291
 
1291
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1292
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1292
1293
  """
1293
1294
  make a withdrawal
1294
1295
  :see: https://docs.alpaca.markets/reference/createcryptotransferforaccount
@@ -1313,19 +1314,19 @@ class alpaca(Exchange, ImplicitAPI):
1313
1314
  response = await self.traderPrivatePostV2WalletsTransfers(self.extend(request, params))
1314
1315
  #
1315
1316
  # {
1316
- # "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
1317
- # "tx_hash": "string",
1318
- # "direction": "INCOMING",
1317
+ # "id": "e27b70a6-5610-40d7-8468-a516a284b776",
1318
+ # "tx_hash": null,
1319
+ # "direction": "OUTGOING",
1320
+ # "amount": "20",
1321
+ # "usd_value": "19.99856",
1322
+ # "chain": "ETH",
1323
+ # "asset": "USDT",
1324
+ # "from_address": "0x123930E4dCA196E070d39B60c644C8Aae02f23",
1325
+ # "to_address": "0x1232c0925196e4dcf05945f67f690153190fbaab",
1319
1326
  # "status": "PROCESSING",
1320
- # "amount": "string",
1321
- # "usd_value": "string",
1322
- # "network_fee": "string",
1323
- # "fees": "string",
1324
- # "chain": "string",
1325
- # "asset": "string",
1326
- # "from_address": "string",
1327
- # "to_address": "string",
1328
- # "created_at": "2024-11-02T07:42:48.402Z"
1327
+ # "created_at": "2024-11-07T02:39:01.775495Z",
1328
+ # "network_fee": "4",
1329
+ # "fees": "0.1"
1329
1330
  # }
1330
1331
  #
1331
1332
  return self.parse_transaction(response, currency)
@@ -1338,19 +1339,19 @@ class alpaca(Exchange, ImplicitAPI):
1338
1339
  response = await self.traderPrivateGetV2WalletsTransfers(params)
1339
1340
  #
1340
1341
  # {
1341
- # "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
1342
- # "tx_hash": "string",
1343
- # "direction": "INCOMING",
1342
+ # "id": "e27b70a6-5610-40d7-8468-a516a284b776",
1343
+ # "tx_hash": null,
1344
+ # "direction": "OUTGOING",
1345
+ # "amount": "20",
1346
+ # "usd_value": "19.99856",
1347
+ # "chain": "ETH",
1348
+ # "asset": "USDT",
1349
+ # "from_address": "0x123930E4dCA196E070d39B60c644C8Aae02f23",
1350
+ # "to_address": "0x1232c0925196e4dcf05945f67f690153190fbaab",
1344
1351
  # "status": "PROCESSING",
1345
- # "amount": "string",
1346
- # "usd_value": "string",
1347
- # "network_fee": "string",
1348
- # "fees": "string",
1349
- # "chain": "string",
1350
- # "asset": "string",
1351
- # "from_address": "string",
1352
- # "to_address": "string",
1353
- # "created_at": "2024-11-02T07:42:48.402Z"
1352
+ # "created_at": "2024-11-07T02:39:01.775495Z",
1353
+ # "network_fee": "4",
1354
+ # "fees": "0.1"
1354
1355
  # }
1355
1356
  #
1356
1357
  results = []
@@ -1359,7 +1360,7 @@ class alpaca(Exchange, ImplicitAPI):
1359
1360
  direction = self.safe_string(entry, 'direction')
1360
1361
  if direction == type:
1361
1362
  results.append(entry)
1362
- elif direction == 'BOTH':
1363
+ elif type == 'BOTH':
1363
1364
  results.append(entry)
1364
1365
  return self.parse_transactions(results, currency, since, limit, params)
1365
1366
 
@@ -1402,26 +1403,29 @@ class alpaca(Exchange, ImplicitAPI):
1402
1403
  def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1403
1404
  #
1404
1405
  # {
1405
- # "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
1406
- # "tx_hash": "string",
1407
- # "direction": "INCOMING",
1406
+ # "id": "e27b70a6-5610-40d7-8468-a516a284b776",
1407
+ # "tx_hash": null,
1408
+ # "direction": "OUTGOING",
1409
+ # "amount": "20",
1410
+ # "usd_value": "19.99856",
1411
+ # "chain": "ETH",
1412
+ # "asset": "USDT",
1413
+ # "from_address": "0x123930E4dCA196E070d39B60c644C8Aae02f23",
1414
+ # "to_address": "0x1232c0925196e4dcf05945f67f690153190fbaab",
1408
1415
  # "status": "PROCESSING",
1409
- # "amount": "string",
1410
- # "usd_value": "string",
1411
- # "network_fee": "string",
1412
- # "fees": "string",
1413
- # "chain": "string",
1414
- # "asset": "string",
1415
- # "from_address": "string",
1416
- # "to_address": "string",
1417
- # "created_at": "2024-11-02T07:42:48.402Z"
1416
+ # "created_at": "2024-11-07T02:39:01.775495Z",
1417
+ # "network_fee": "4",
1418
+ # "fees": "0.1"
1418
1419
  # }
1419
1420
  #
1420
1421
  datetime = self.safe_string(transaction, 'created_at')
1421
1422
  currencyId = self.safe_string(transaction, 'asset')
1422
1423
  code = self.safe_currency_code(currencyId, currency)
1424
+ fees = self.safe_string(transaction, 'fees')
1425
+ networkFee = self.safe_string(transaction, 'network_fee')
1426
+ totalFee = Precise.string_add(fees, networkFee)
1423
1427
  fee = {
1424
- 'cost': self.safe_number(transaction, 'fees'),
1428
+ 'cost': self.parse_number(totalFee),
1425
1429
  'currency': code,
1426
1430
  }
1427
1431
  return {
@@ -1450,8 +1454,8 @@ class alpaca(Exchange, ImplicitAPI):
1450
1454
  def parse_transaction_status(self, status: Str):
1451
1455
  statuses: dict = {
1452
1456
  'PROCESSING': 'pending',
1453
- # 'FAILED': 'failed',
1454
- # 'SUCCESS': 'ok',
1457
+ 'FAILED': 'failed',
1458
+ 'COMPLETE': 'ok',
1455
1459
  }
1456
1460
  return self.safe_string(statuses, status, status)
1457
1461
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.4.27'
5
+ __version__ = '4.4.29'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -631,6 +631,9 @@ class Exchange(BaseExchange):
631
631
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}):
632
632
  raise NotSupported(self.id + ' fetchOrderBook() is not supported yet')
633
633
 
634
+ async def fetch_order_book_ws(self, symbol: str, limit: Int = None, params={}):
635
+ raise NotSupported(self.id + ' fetchOrderBookWs() is not supported yet')
636
+
634
637
  async def fetch_margin_mode(self, symbol: str, params={}):
635
638
  if self.has['fetchMarginModes']:
636
639
  marginModes = await self.fetch_margin_modes([symbol], params)
@@ -2019,7 +2019,7 @@ class bigone(Exchange, ImplicitAPI):
2019
2019
  }
2020
2020
  return self.safe_string(statuses, status, 'failed')
2021
2021
 
2022
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
2022
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
2023
2023
  """
2024
2024
  make a withdrawal
2025
2025
  :see: https://open.big.one/docs/spot_withdrawal.html#create-withdrawal-of-user
@@ -974,6 +974,9 @@ class binance(Exchange, ImplicitAPI):
974
974
  'mmp': 1,
975
975
  'countdownCancelAll': 1,
976
976
  'order': 1,
977
+ 'block/order/orders': 5,
978
+ 'block/order/execute': 5,
979
+ 'block/user-trades': 5,
977
980
  },
978
981
  'post': {
979
982
  'order': 1,
@@ -983,9 +986,12 @@ class binance(Exchange, ImplicitAPI):
983
986
  'mmpReset': 1,
984
987
  'countdownCancelAll': 1,
985
988
  'countdownCancelAllHeartBeat': 10,
989
+ 'block/order/create': 5,
990
+ 'block/order/execute': 5,
986
991
  },
987
992
  'put': {
988
993
  'listenKey': 1,
994
+ 'block/order/create': 5,
989
995
  },
990
996
  'delete': {
991
997
  'order': 1,
@@ -993,6 +999,7 @@ class binance(Exchange, ImplicitAPI):
993
999
  'allOpenOrders': 1,
994
1000
  'allOpenOrdersByUnderlying': 1,
995
1001
  'listenKey': 1,
1002
+ 'block/order/create': 5,
996
1003
  },
997
1004
  },
998
1005
  'public': {
@@ -8474,7 +8481,7 @@ class binance(Exchange, ImplicitAPI):
8474
8481
  }
8475
8482
  return result
8476
8483
 
8477
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
8484
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
8478
8485
  """
8479
8486
  make a withdrawal
8480
8487
  :see: https://developers.binance.com/docs/wallet/capital/withdraw
@@ -4978,7 +4978,7 @@ class bingx(Exchange, ImplicitAPI):
4978
4978
  coins = self.safe_list(response, 'data')
4979
4979
  return self.parse_deposit_withdraw_fees(coins, codes, 'coin')
4980
4980
 
4981
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
4981
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
4982
4982
  """
4983
4983
  make a withdrawal
4984
4984
  :see: https://bingx-api.github.io/docs/#/en-us/spot/wallet-api.html#Withdraw
@@ -814,7 +814,7 @@ class bitbank(Exchange, ImplicitAPI):
814
814
  'tag': None,
815
815
  }
816
816
 
817
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
817
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
818
818
  """
819
819
  make a withdrawal
820
820
  :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#new-withdrawal-request
@@ -1529,7 +1529,7 @@ class bitfinex(Exchange, ImplicitAPI):
1529
1529
  }
1530
1530
  return self.safe_string(statuses, status, status)
1531
1531
 
1532
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1532
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1533
1533
  """
1534
1534
  make a withdrawal
1535
1535
  :see: https://docs.bitfinex.com/v1/reference/rest-auth-withdrawal
@@ -2459,7 +2459,7 @@ class bitfinex2(Exchange, ImplicitAPI):
2459
2459
  #
2460
2460
  return self.parse_transactions(response, currency, since, limit)
2461
2461
 
2462
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
2462
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
2463
2463
  """
2464
2464
  make a withdrawal
2465
2465
  :see: https://docs.bitfinex.com/reference/rest-auth-withdraw
@@ -775,7 +775,7 @@ class bitflyer(Exchange, ImplicitAPI):
775
775
  # todo unify parsePosition/parsePositions
776
776
  return response
777
777
 
778
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
778
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
779
779
  """
780
780
  make a withdrawal
781
781
  :see: https://lightning.bitflyer.com/docs?lang=en#withdrawing-funds