ccxt 4.1.82__tar.gz → 4.1.83__tar.gz

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 (442) hide show
  1. {ccxt-4.1.82/ccxt.egg-info → ccxt-4.1.83}/PKG-INFO +4 -4
  2. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/__init__.py +1 -1
  3. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/__init__.py +1 -1
  4. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/base/exchange.py +2 -2
  5. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bingx.py +1 -1
  6. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitget.py +1 -1
  7. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/cex.py +27 -12
  8. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/cryptocom.py +43 -0
  9. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/okx.py +62 -0
  10. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/base/exchange.py +2 -2
  11. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bingx.py +1 -1
  12. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitget.py +1 -1
  13. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/cex.py +27 -12
  14. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/cryptocom.py +43 -0
  15. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/okx.py +62 -0
  16. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/__init__.py +1 -1
  17. {ccxt-4.1.82 → ccxt-4.1.83/ccxt.egg-info}/PKG-INFO +4 -4
  18. {ccxt-4.1.82 → ccxt-4.1.83}/package.json +1 -1
  19. {ccxt-4.1.82 → ccxt-4.1.83}/LICENSE.txt +0 -0
  20. {ccxt-4.1.82 → ccxt-4.1.83}/MANIFEST.in +0 -0
  21. {ccxt-4.1.82 → ccxt-4.1.83}/README.rst +0 -0
  22. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/__init__.py +0 -0
  23. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/ace.py +0 -0
  24. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/alpaca.py +0 -0
  25. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/ascendex.py +0 -0
  26. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bequant.py +0 -0
  27. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bigone.py +0 -0
  28. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/binance.py +0 -0
  29. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/binancecoinm.py +0 -0
  30. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/binanceus.py +0 -0
  31. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/binanceusdm.py +0 -0
  32. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bingx.py +0 -0
  33. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bit2c.py +0 -0
  34. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitbank.py +0 -0
  35. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitbay.py +0 -0
  36. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitbns.py +0 -0
  37. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitcoincom.py +0 -0
  38. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitfinex.py +0 -0
  39. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitfinex2.py +0 -0
  40. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitflyer.py +0 -0
  41. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitforex.py +0 -0
  42. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitget.py +0 -0
  43. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bithumb.py +0 -0
  44. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitmart.py +0 -0
  45. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitmex.py +0 -0
  46. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitopro.py +0 -0
  47. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitpanda.py +0 -0
  48. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitrue.py +0 -0
  49. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitso.py +0 -0
  50. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitstamp.py +0 -0
  51. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bittrex.py +0 -0
  52. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bitvavo.py +0 -0
  53. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bl3p.py +0 -0
  54. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/blockchaincom.py +0 -0
  55. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/btcalpha.py +0 -0
  56. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/btcbox.py +0 -0
  57. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/btcmarkets.py +0 -0
  58. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/btcturk.py +0 -0
  59. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/bybit.py +0 -0
  60. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/cex.py +0 -0
  61. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/coinbase.py +0 -0
  62. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/coinbaseprime.py +0 -0
  63. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/coinbasepro.py +0 -0
  64. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/coincheck.py +0 -0
  65. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/coinex.py +0 -0
  66. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/coinlist.py +0 -0
  67. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/coinmate.py +0 -0
  68. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/coinone.py +0 -0
  69. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/coinsph.py +0 -0
  70. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/coinspot.py +0 -0
  71. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/cryptocom.py +0 -0
  72. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/currencycom.py +0 -0
  73. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/delta.py +0 -0
  74. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/deribit.py +0 -0
  75. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/digifinex.py +0 -0
  76. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/exmo.py +0 -0
  77. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/fmfwio.py +0 -0
  78. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/gate.py +0 -0
  79. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/gateio.py +0 -0
  80. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/gemini.py +0 -0
  81. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/hitbtc.py +0 -0
  82. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/hitbtc3.py +0 -0
  83. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/hollaex.py +0 -0
  84. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/htx.py +0 -0
  85. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/huobi.py +0 -0
  86. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/huobijp.py +0 -0
  87. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/idex.py +0 -0
  88. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/independentreserve.py +0 -0
  89. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/indodax.py +0 -0
  90. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/kraken.py +0 -0
  91. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/krakenfutures.py +0 -0
  92. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/kucoin.py +0 -0
  93. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/kucoinfutures.py +0 -0
  94. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/kuna.py +0 -0
  95. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/latoken.py +0 -0
  96. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/lbank.py +0 -0
  97. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/luno.py +0 -0
  98. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/lykke.py +0 -0
  99. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/mercado.py +0 -0
  100. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/mexc.py +0 -0
  101. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/ndax.py +0 -0
  102. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/novadax.py +0 -0
  103. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/oceanex.py +0 -0
  104. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/okcoin.py +0 -0
  105. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/okx.py +0 -0
  106. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/p2b.py +0 -0
  107. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/paymium.py +0 -0
  108. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/phemex.py +0 -0
  109. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/poloniex.py +0 -0
  110. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/poloniexfutures.py +0 -0
  111. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/probit.py +0 -0
  112. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/timex.py +0 -0
  113. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/tokocrypto.py +0 -0
  114. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/upbit.py +0 -0
  115. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/wavesexchange.py +0 -0
  116. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/wazirx.py +0 -0
  117. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/whitebit.py +0 -0
  118. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/woo.py +0 -0
  119. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/yobit.py +0 -0
  120. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/zaif.py +0 -0
  121. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/abstract/zonda.py +0 -0
  122. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/ace.py +0 -0
  123. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/alpaca.py +0 -0
  124. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/ascendex.py +0 -0
  125. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/ace.py +0 -0
  126. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/alpaca.py +0 -0
  127. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/ascendex.py +0 -0
  128. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/base/__init__.py +0 -0
  129. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/base/throttler.py +0 -0
  130. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/base/ws/__init__.py +0 -0
  131. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  132. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/base/ws/cache.py +0 -0
  133. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/base/ws/client.py +0 -0
  134. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/base/ws/fast_client.py +0 -0
  135. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/base/ws/functions.py +0 -0
  136. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/base/ws/future.py +0 -0
  137. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/base/ws/order_book.py +0 -0
  138. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  139. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bequant.py +0 -0
  140. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bigone.py +0 -0
  141. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/binance.py +0 -0
  142. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/binancecoinm.py +0 -0
  143. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/binanceus.py +0 -0
  144. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/binanceusdm.py +0 -0
  145. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bit2c.py +0 -0
  146. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitbank.py +0 -0
  147. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitbay.py +0 -0
  148. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitbns.py +0 -0
  149. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitcoincom.py +0 -0
  150. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitfinex.py +0 -0
  151. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitfinex2.py +0 -0
  152. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitflyer.py +0 -0
  153. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitforex.py +0 -0
  154. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bithumb.py +0 -0
  155. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitmart.py +0 -0
  156. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitmex.py +0 -0
  157. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitopro.py +0 -0
  158. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitpanda.py +0 -0
  159. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitrue.py +0 -0
  160. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitso.py +0 -0
  161. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitstamp.py +0 -0
  162. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bittrex.py +0 -0
  163. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bitvavo.py +0 -0
  164. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bl3p.py +0 -0
  165. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/blockchaincom.py +0 -0
  166. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/btcalpha.py +0 -0
  167. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/btcbox.py +0 -0
  168. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/btcmarkets.py +0 -0
  169. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/btcturk.py +0 -0
  170. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/bybit.py +0 -0
  171. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/coinbase.py +0 -0
  172. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/coinbaseprime.py +0 -0
  173. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/coinbasepro.py +0 -0
  174. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/coincheck.py +0 -0
  175. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/coinex.py +0 -0
  176. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/coinlist.py +0 -0
  177. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/coinmate.py +0 -0
  178. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/coinone.py +0 -0
  179. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/coinsph.py +0 -0
  180. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/coinspot.py +0 -0
  181. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/currencycom.py +0 -0
  182. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/delta.py +0 -0
  183. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/deribit.py +0 -0
  184. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/digifinex.py +0 -0
  185. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/exmo.py +0 -0
  186. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/flowbtc.py +0 -0
  187. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/fmfwio.py +0 -0
  188. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/gate.py +0 -0
  189. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/gateio.py +0 -0
  190. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/gemini.py +0 -0
  191. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/hitbtc.py +0 -0
  192. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/hitbtc3.py +0 -0
  193. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/hollaex.py +0 -0
  194. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/htx.py +0 -0
  195. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/huobi.py +0 -0
  196. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/huobijp.py +0 -0
  197. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/idex.py +0 -0
  198. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/independentreserve.py +0 -0
  199. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/indodax.py +0 -0
  200. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/kraken.py +0 -0
  201. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/krakenfutures.py +0 -0
  202. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/kucoin.py +0 -0
  203. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/kucoinfutures.py +0 -0
  204. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/kuna.py +0 -0
  205. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/latoken.py +0 -0
  206. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/lbank.py +0 -0
  207. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/luno.py +0 -0
  208. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/lykke.py +0 -0
  209. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/mercado.py +0 -0
  210. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/mexc.py +0 -0
  211. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/ndax.py +0 -0
  212. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/novadax.py +0 -0
  213. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/oceanex.py +0 -0
  214. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/okcoin.py +0 -0
  215. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/p2b.py +0 -0
  216. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/paymium.py +0 -0
  217. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/phemex.py +0 -0
  218. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/poloniex.py +0 -0
  219. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/poloniexfutures.py +0 -0
  220. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/probit.py +0 -0
  221. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/timex.py +0 -0
  222. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/tokocrypto.py +0 -0
  223. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/upbit.py +0 -0
  224. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/wavesexchange.py +0 -0
  225. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/wazirx.py +0 -0
  226. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/whitebit.py +0 -0
  227. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/woo.py +0 -0
  228. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/yobit.py +0 -0
  229. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/zaif.py +0 -0
  230. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/async_support/zonda.py +0 -0
  231. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/base/__init__.py +0 -0
  232. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/base/decimal_to_precision.py +0 -0
  233. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/base/errors.py +0 -0
  234. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/base/precise.py +0 -0
  235. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/base/types.py +0 -0
  236. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bequant.py +0 -0
  237. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bigone.py +0 -0
  238. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/binance.py +0 -0
  239. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/binancecoinm.py +0 -0
  240. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/binanceus.py +0 -0
  241. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/binanceusdm.py +0 -0
  242. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bit2c.py +0 -0
  243. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitbank.py +0 -0
  244. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitbay.py +0 -0
  245. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitbns.py +0 -0
  246. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitcoincom.py +0 -0
  247. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitfinex.py +0 -0
  248. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitfinex2.py +0 -0
  249. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitflyer.py +0 -0
  250. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitforex.py +0 -0
  251. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bithumb.py +0 -0
  252. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitmart.py +0 -0
  253. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitmex.py +0 -0
  254. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitopro.py +0 -0
  255. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitpanda.py +0 -0
  256. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitrue.py +0 -0
  257. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitso.py +0 -0
  258. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitstamp.py +0 -0
  259. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bittrex.py +0 -0
  260. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bitvavo.py +0 -0
  261. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bl3p.py +0 -0
  262. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/blockchaincom.py +0 -0
  263. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/btcalpha.py +0 -0
  264. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/btcbox.py +0 -0
  265. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/btcmarkets.py +0 -0
  266. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/btcturk.py +0 -0
  267. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/bybit.py +0 -0
  268. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/coinbase.py +0 -0
  269. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/coinbaseprime.py +0 -0
  270. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/coinbasepro.py +0 -0
  271. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/coincheck.py +0 -0
  272. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/coinex.py +0 -0
  273. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/coinlist.py +0 -0
  274. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/coinmate.py +0 -0
  275. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/coinone.py +0 -0
  276. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/coinsph.py +0 -0
  277. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/coinspot.py +0 -0
  278. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/currencycom.py +0 -0
  279. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/delta.py +0 -0
  280. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/deribit.py +0 -0
  281. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/digifinex.py +0 -0
  282. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/exmo.py +0 -0
  283. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/flowbtc.py +0 -0
  284. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/fmfwio.py +0 -0
  285. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/gate.py +0 -0
  286. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/gateio.py +0 -0
  287. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/gemini.py +0 -0
  288. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/hitbtc.py +0 -0
  289. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/hitbtc3.py +0 -0
  290. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/hollaex.py +0 -0
  291. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/htx.py +0 -0
  292. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/huobi.py +0 -0
  293. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/huobijp.py +0 -0
  294. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/idex.py +0 -0
  295. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/independentreserve.py +0 -0
  296. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/indodax.py +0 -0
  297. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/kraken.py +0 -0
  298. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/krakenfutures.py +0 -0
  299. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/kucoin.py +0 -0
  300. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/kucoinfutures.py +0 -0
  301. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/kuna.py +0 -0
  302. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/latoken.py +0 -0
  303. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/lbank.py +0 -0
  304. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/luno.py +0 -0
  305. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/lykke.py +0 -0
  306. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/mercado.py +0 -0
  307. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/mexc.py +0 -0
  308. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/ndax.py +0 -0
  309. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/novadax.py +0 -0
  310. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/oceanex.py +0 -0
  311. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/okcoin.py +0 -0
  312. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/p2b.py +0 -0
  313. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/paymium.py +0 -0
  314. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/phemex.py +0 -0
  315. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/poloniex.py +0 -0
  316. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/poloniexfutures.py +0 -0
  317. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/alpaca.py +0 -0
  318. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/ascendex.py +0 -0
  319. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bequant.py +0 -0
  320. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/binance.py +0 -0
  321. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/binancecoinm.py +0 -0
  322. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/binanceus.py +0 -0
  323. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/binanceusdm.py +0 -0
  324. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bingx.py +0 -0
  325. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bitcoincom.py +0 -0
  326. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bitfinex.py +0 -0
  327. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bitfinex2.py +0 -0
  328. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bitget.py +0 -0
  329. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bitmart.py +0 -0
  330. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bitmex.py +0 -0
  331. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bitopro.py +0 -0
  332. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bitpanda.py +0 -0
  333. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bitrue.py +0 -0
  334. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bitstamp.py +0 -0
  335. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bittrex.py +0 -0
  336. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bitvavo.py +0 -0
  337. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/blockchaincom.py +0 -0
  338. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/bybit.py +0 -0
  339. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/cex.py +0 -0
  340. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/coinbase.py +0 -0
  341. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/coinbaseprime.py +0 -0
  342. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/coinbasepro.py +0 -0
  343. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/coinex.py +0 -0
  344. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/cryptocom.py +0 -0
  345. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/currencycom.py +0 -0
  346. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/deribit.py +0 -0
  347. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/exmo.py +0 -0
  348. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/gate.py +0 -0
  349. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/gateio.py +0 -0
  350. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/gemini.py +0 -0
  351. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/hitbtc.py +0 -0
  352. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/hollaex.py +0 -0
  353. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/htx.py +0 -0
  354. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/huobi.py +0 -0
  355. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/huobijp.py +0 -0
  356. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/huobipro.py +0 -0
  357. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/idex.py +0 -0
  358. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/independentreserve.py +0 -0
  359. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/kraken.py +0 -0
  360. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/krakenfutures.py +0 -0
  361. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/kucoin.py +0 -0
  362. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/kucoinfutures.py +0 -0
  363. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/luno.py +0 -0
  364. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/mexc.py +0 -0
  365. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/mexc3.py +0 -0
  366. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/ndax.py +0 -0
  367. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/okcoin.py +0 -0
  368. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/okex.py +0 -0
  369. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/okx.py +0 -0
  370. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/phemex.py +0 -0
  371. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/poloniex.py +0 -0
  372. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/poloniexfutures.py +0 -0
  373. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/probit.py +0 -0
  374. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/upbit.py +0 -0
  375. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/wazirx.py +0 -0
  376. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/whitebit.py +0 -0
  377. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/pro/woo.py +0 -0
  378. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/probit.py +0 -0
  379. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/static_dependencies/__init__.py +0 -0
  380. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  381. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  382. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  383. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  384. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  385. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  386. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  387. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  388. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  389. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  390. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  391. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  392. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/__init__.py +0 -0
  393. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/__init__.py +0 -0
  394. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_account.py +0 -0
  395. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_balance.py +0 -0
  396. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_borrow_interest.py +0 -0
  397. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_borrow_rate.py +0 -0
  398. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_calculate_fee.py +0 -0
  399. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_crypto.py +0 -0
  400. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_currency.py +0 -0
  401. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_datetime.py +0 -0
  402. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  403. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_deep_extend.py +0 -0
  404. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  405. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  406. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_funding_rate_history.py +0 -0
  407. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_ledger_entry.py +0 -0
  408. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_ledger_item.py +0 -0
  409. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_leverage_tier.py +0 -0
  410. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_margin_modification.py +0 -0
  411. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_market.py +0 -0
  412. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_number.py +0 -0
  413. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_ohlcv.py +0 -0
  414. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_open_interest.py +0 -0
  415. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_order.py +0 -0
  416. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_order_book.py +0 -0
  417. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_position.py +0 -0
  418. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_shared_methods.py +0 -0
  419. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_status.py +0 -0
  420. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_throttle.py +0 -0
  421. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_ticker.py +0 -0
  422. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_trade.py +0 -0
  423. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_trading_fee.py +0 -0
  424. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/base/test_transaction.py +0 -0
  425. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/test_async.py +0 -0
  426. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/test/test_sync.py +0 -0
  427. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/timex.py +0 -0
  428. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/tokocrypto.py +0 -0
  429. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/upbit.py +0 -0
  430. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/wavesexchange.py +0 -0
  431. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/wazirx.py +0 -0
  432. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/whitebit.py +0 -0
  433. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/woo.py +0 -0
  434. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/yobit.py +0 -0
  435. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/zaif.py +0 -0
  436. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt/zonda.py +0 -0
  437. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt.egg-info/SOURCES.txt +0 -0
  438. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt.egg-info/dependency_links.txt +0 -0
  439. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt.egg-info/requires.txt +0 -0
  440. {ccxt-4.1.82 → ccxt-4.1.83}/ccxt.egg-info/top_level.txt +0 -0
  441. {ccxt-4.1.82 → ccxt-4.1.83}/setup.cfg +0 -0
  442. {ccxt-4.1.82 → ccxt-4.1.83}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.1.82
3
+ Version: 4.1.83
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -222,13 +222,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
222
222
 
223
223
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
224
224
 
225
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.1.82/dist/ccxt.browser.js
226
- * unpkg: https://unpkg.com/ccxt@4.1.82/dist/ccxt.browser.js
225
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.1.83/dist/ccxt.browser.js
226
+ * unpkg: https://unpkg.com/ccxt@4.1.83/dist/ccxt.browser.js
227
227
 
228
228
  CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
229
229
 
230
230
  ```HTML
231
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.1.82/dist/ccxt.browser.js"></script>
231
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.1.83/dist/ccxt.browser.js"></script>
232
232
  ```
233
233
 
234
234
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.1.82'
25
+ __version__ = '4.1.83'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.1.82'
7
+ __version__ = '4.1.83'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.1.82'
5
+ __version__ = '4.1.83'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1010,7 +1010,7 @@ class Exchange(BaseExchange):
1010
1010
  async def fetch_funding_history(self, symbol: str = None, since: Int = None, limit: Int = None, params={}):
1011
1011
  raise NotSupported(self.id + ' fetchFundingHistory() is not supported yet')
1012
1012
 
1013
- async def close_position(self, symbol: str, side: OrderSide = None, marginMode: str = None, params={}):
1013
+ async def close_position(self, symbol: str, side: OrderSide = None, params={}):
1014
1014
  raise NotSupported(self.id + ' closePositions() is not supported yet')
1015
1015
 
1016
1016
  async def close_all_positions(self, params={}):
@@ -3172,7 +3172,7 @@ class bingx(Exchange, ImplicitAPI):
3172
3172
  :see: https://bitgetlimited.github.io/apidoc/en/mix/#close-all-position
3173
3173
  :param dict [params]: extra parameters specific to the okx api endpoint
3174
3174
  :param str [params.recvWindow]: request valid time window value
3175
- :returns [dict]: `A list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
3175
+ :returns dict[]: `A list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
3176
3176
  """
3177
3177
  await self.load_markets()
3178
3178
  defaultRecvWindow = self.safe_integer(self.options, 'recvWindow')
@@ -6555,7 +6555,7 @@ class bitget(Exchange, ImplicitAPI):
6555
6555
  :param dict [params]: extra parameters specific to the okx api endpoint
6556
6556
  :param str [params.subType]: 'linear' or 'inverse'
6557
6557
  :param str [params.settle]: *required and only valid when params.subType == "linear"* 'USDT' or 'USDC'
6558
- :returns [dict]: `A list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
6558
+ :returns dict[]: `A list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
6559
6559
  """
6560
6560
  await self.load_markets()
6561
6561
  subType = None
@@ -45,6 +45,9 @@ class cex(Exchange, ImplicitAPI):
45
45
  'cancelOrder': True,
46
46
  'cancelOrders': False,
47
47
  'createDepositAddress': False,
48
+ 'createMarketBuyOrderWithCost': True,
49
+ 'createMarketOrderWithCost': False,
50
+ 'createMarketSellOrderWithCost': False,
48
51
  'createOrder': True,
49
52
  'createStopLimitOrder': False,
50
53
  'createStopMarketOrder': False,
@@ -728,27 +731,39 @@ class cex(Exchange, ImplicitAPI):
728
731
  :param float amount: how much of currency you want to trade in units of base currency
729
732
  :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
730
733
  :param dict [params]: extra parameters specific to the exchange API endpoint
734
+ :param float [params.cost]: the quote quantity that can be used alternative for the amount for market buy orders
731
735
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
732
736
  """
733
- # for market buy it requires the amount of quote currency to spend
734
- if (type == 'market') and (side == 'buy'):
735
- if self.options['createMarketBuyOrderRequiresPrice']:
736
- if price is None:
737
- raise InvalidOrder(self.id + " createOrder() requires the price argument with market buy orders to calculate total order cost(amount to spend), where cost = amount * price. Supply a price argument to createOrder() call if you want the cost to be calculated for you from price and amount, or, alternatively, add .options['createMarketBuyOrderRequiresPrice'] = False to supply the cost in the amount argument(the exchange-specific behaviour)")
738
- else:
739
- amountString = self.number_to_string(amount)
740
- priceString = self.number_to_string(price)
741
- baseAmount = Precise.string_mul(amountString, priceString)
742
- amount = self.parse_number(baseAmount)
743
737
  await self.load_markets()
744
738
  market = self.market(symbol)
745
739
  request = {
746
740
  'pair': market['id'],
747
741
  'type': side,
748
- 'amount': amount,
749
742
  }
743
+ # for market buy it requires the amount of quote currency to spend
744
+ if (type == 'market') and (side == 'buy'):
745
+ quoteAmount = None
746
+ createMarketBuyOrderRequiresPrice = True
747
+ createMarketBuyOrderRequiresPrice, params = self.handle_option_and_params(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', True)
748
+ cost = self.safe_string(params, 'cost')
749
+ params = self.omit(params, 'cost')
750
+ if cost is not None:
751
+ quoteAmount = self.cost_to_precision(symbol, cost)
752
+ elif createMarketBuyOrderRequiresPrice:
753
+ if price is None:
754
+ raise InvalidOrder(self.id + ' createOrder() requires the price argument for market buy orders to calculate the total cost to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to False and pass the cost to spend in the amount argument')
755
+ else:
756
+ amountString = self.number_to_string(amount)
757
+ priceString = self.number_to_string(price)
758
+ costRequest = Precise.string_mul(amountString, priceString)
759
+ quoteAmount = self.cost_to_precision(symbol, costRequest)
760
+ else:
761
+ quoteAmount = self.cost_to_precision(symbol, amount)
762
+ request['amount'] = quoteAmount
763
+ else:
764
+ request['amount'] = self.amount_to_precision(symbol, amount)
750
765
  if type == 'limit':
751
- request['price'] = price
766
+ request['price'] = self.number_to_string(price)
752
767
  else:
753
768
  request['order_type'] = type
754
769
  response = await self.privatePostPlaceOrderPair(self.extend(request, params))
@@ -48,6 +48,8 @@ class cryptocom(Exchange, ImplicitAPI):
48
48
  'cancelAllOrders': True,
49
49
  'cancelOrder': True,
50
50
  'cancelOrders': True,
51
+ 'closeAllPositions': False,
52
+ 'closePosition': True,
51
53
  'createOrder': True,
52
54
  'createOrders': True,
53
55
  'fetchAccounts': True,
@@ -2683,6 +2685,47 @@ class cryptocom(Exchange, ImplicitAPI):
2683
2685
  returnString += str(value)
2684
2686
  return returnString
2685
2687
 
2688
+ async def close_position(self, symbol: str, side: OrderSide = None, params={}) -> Order:
2689
+ """
2690
+ closes open positions for a market
2691
+ :see: https://exchange-docs.crypto.com/exchange/v1/rest-ws/index.html#private-close-position
2692
+ :param str symbol: Unified CCXT market symbol
2693
+ :param str [marginMode]: not used by cryptocom.closePositions
2694
+ :param str [side]: not used by cryptocom.closePositions
2695
+ :param dict [params]: extra parameters specific to the okx api endpoint
2696
+ *
2697
+ * EXCHANGE SPECIFIC PARAMETERS
2698
+ :param str [params.type]: LIMIT or MARKET
2699
+ :param number [params.price]: for limit orders only
2700
+ :returns dict[]: `A list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
2701
+ """
2702
+ await self.load_markets()
2703
+ market = self.market(symbol)
2704
+ request = {
2705
+ 'instrument_name': market['id'],
2706
+ 'type': 'MARKET',
2707
+ }
2708
+ type = self.safe_string_upper(params, 'type')
2709
+ price = self.safe_string(params, 'price')
2710
+ if type is not None:
2711
+ request['type'] = type
2712
+ if price is not None:
2713
+ request['price'] = self.price_to_precision(market['symbol'], price)
2714
+ response = await self.v1PrivatePostPrivateClosePosition(self.extend(request, params))
2715
+ #
2716
+ # {
2717
+ # "id" : 1700830813298,
2718
+ # "method" : "private/close-position",
2719
+ # "code" : 0,
2720
+ # "result" : {
2721
+ # "client_oid" : "179a909d-5614-655b-0d0e-9e85c9a25c85",
2722
+ # "order_id" : "6142909897021751347"
2723
+ # }
2724
+ # }
2725
+ #
2726
+ result = self.safe_value(response, 'result')
2727
+ return self.parse_order(result, market)
2728
+
2686
2729
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
2687
2730
  type = self.safe_string(api, 0)
2688
2731
  access = self.safe_string(api, 1)
@@ -57,6 +57,8 @@ class okx(Exchange, ImplicitAPI):
57
57
  'cancelAllOrders': False,
58
58
  'cancelOrder': True,
59
59
  'cancelOrders': True,
60
+ 'closeAllPositions': False,
61
+ 'closePosition': True,
60
62
  'createDepositAddress': False,
61
63
  'createMarketBuyOrderWithCost': True,
62
64
  'createMarketSellOrderWithCost': True,
@@ -6692,6 +6694,66 @@ class okx(Exchange, ImplicitAPI):
6692
6694
  'info': greeks,
6693
6695
  }
6694
6696
 
6697
+ async def close_position(self, symbol: str, side: OrderSide = None, params={}) -> Order:
6698
+ """
6699
+ closes open positions for a market
6700
+ :see: https://www.okx.com/docs-v5/en/#order-book-trading-trade-post-close-positions
6701
+ :param str symbol: Unified CCXT market symbol
6702
+ :param str [side]: 'buy' or 'sell', leave in net mode
6703
+ :param dict [params]: extra parameters specific to the okx api endpoint
6704
+ :param str [params.clientOrderId]: a unique identifier for the order
6705
+ :param str [params.marginMode]: 'cross' or 'isolated', default is 'cross
6706
+ :param str [params.code]: *required in the case of closing cross MARGIN position for Single-currency margin* margin currency
6707
+ *
6708
+ * EXCHANGE SPECIFIC PARAMETERS
6709
+ :param boolean [params.autoCxl]: whether any pending orders for closing out needs to be automatically canceled when close position via a market order. False or True, the default is False
6710
+ :param str [params.tag]: order tag a combination of case-sensitive alphanumerics, all numbers, or all letters of up to 16 characters
6711
+ :returns [dict]: `A list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
6712
+ """
6713
+ await self.load_markets()
6714
+ market = self.market(symbol)
6715
+ clientOrderId = self.safe_string(params, 'clientOrderId')
6716
+ code = self.safe_string(params, 'code')
6717
+ marginMode = None
6718
+ marginMode, params = self.handle_margin_mode_and_params('closePosition', params, 'cross')
6719
+ request = {
6720
+ 'instId': market['id'],
6721
+ 'mgnMode': marginMode,
6722
+ }
6723
+ if side is not None:
6724
+ if (side == 'buy'):
6725
+ request['posSide'] = 'long'
6726
+ elif side == 'sell':
6727
+ request['posSide'] = 'short'
6728
+ else:
6729
+ request['posSide'] = side
6730
+ if clientOrderId is not None:
6731
+ request['clOrdId'] = clientOrderId
6732
+ if code is not None:
6733
+ currency = self.currency(code)
6734
+ request['ccy'] = currency['id']
6735
+ response = await self.privatePostTradeClosePosition(self.extend(request, params))
6736
+ #
6737
+ # {
6738
+ # "code": "1",
6739
+ # "data": [
6740
+ # {
6741
+ # "clOrdId":"e847386590ce4dBCe903bbc394dc88bf",
6742
+ # "ordId":"",
6743
+ # "sCode":"51000",
6744
+ # "sMsg":"Parameter posSide error ",
6745
+ # "tag":"e847386590ce4dBC"
6746
+ # }
6747
+ # ],
6748
+ # "inTime": "1701877077101064",
6749
+ # "msg": "All operations failed",
6750
+ # "outTime": "1701877077102579"
6751
+ # }
6752
+ #
6753
+ data = self.safe_value(response, 'data')
6754
+ order = self.safe_value(data, 0)
6755
+ return self.parse_order(order, market)
6756
+
6695
6757
  def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
6696
6758
  if not response:
6697
6759
  return None # fallback to default error handler
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.1.82'
7
+ __version__ = '4.1.83'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -3847,7 +3847,7 @@ class Exchange(object):
3847
3847
  def fetch_funding_history(self, symbol: str = None, since: Int = None, limit: Int = None, params={}):
3848
3848
  raise NotSupported(self.id + ' fetchFundingHistory() is not supported yet')
3849
3849
 
3850
- def close_position(self, symbol: str, side: OrderSide = None, marginMode: str = None, params={}):
3850
+ def close_position(self, symbol: str, side: OrderSide = None, params={}):
3851
3851
  raise NotSupported(self.id + ' closePositions() is not supported yet')
3852
3852
 
3853
3853
  def close_all_positions(self, params={}):
@@ -3171,7 +3171,7 @@ class bingx(Exchange, ImplicitAPI):
3171
3171
  :see: https://bitgetlimited.github.io/apidoc/en/mix/#close-all-position
3172
3172
  :param dict [params]: extra parameters specific to the okx api endpoint
3173
3173
  :param str [params.recvWindow]: request valid time window value
3174
- :returns [dict]: `A list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
3174
+ :returns dict[]: `A list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
3175
3175
  """
3176
3176
  self.load_markets()
3177
3177
  defaultRecvWindow = self.safe_integer(self.options, 'recvWindow')
@@ -6554,7 +6554,7 @@ class bitget(Exchange, ImplicitAPI):
6554
6554
  :param dict [params]: extra parameters specific to the okx api endpoint
6555
6555
  :param str [params.subType]: 'linear' or 'inverse'
6556
6556
  :param str [params.settle]: *required and only valid when params.subType == "linear"* 'USDT' or 'USDC'
6557
- :returns [dict]: `A list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
6557
+ :returns dict[]: `A list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
6558
6558
  """
6559
6559
  self.load_markets()
6560
6560
  subType = None
@@ -45,6 +45,9 @@ class cex(Exchange, ImplicitAPI):
45
45
  'cancelOrder': True,
46
46
  'cancelOrders': False,
47
47
  'createDepositAddress': False,
48
+ 'createMarketBuyOrderWithCost': True,
49
+ 'createMarketOrderWithCost': False,
50
+ 'createMarketSellOrderWithCost': False,
48
51
  'createOrder': True,
49
52
  'createStopLimitOrder': False,
50
53
  'createStopMarketOrder': False,
@@ -728,27 +731,39 @@ class cex(Exchange, ImplicitAPI):
728
731
  :param float amount: how much of currency you want to trade in units of base currency
729
732
  :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
730
733
  :param dict [params]: extra parameters specific to the exchange API endpoint
734
+ :param float [params.cost]: the quote quantity that can be used alternative for the amount for market buy orders
731
735
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
732
736
  """
733
- # for market buy it requires the amount of quote currency to spend
734
- if (type == 'market') and (side == 'buy'):
735
- if self.options['createMarketBuyOrderRequiresPrice']:
736
- if price is None:
737
- raise InvalidOrder(self.id + " createOrder() requires the price argument with market buy orders to calculate total order cost(amount to spend), where cost = amount * price. Supply a price argument to createOrder() call if you want the cost to be calculated for you from price and amount, or, alternatively, add .options['createMarketBuyOrderRequiresPrice'] = False to supply the cost in the amount argument(the exchange-specific behaviour)")
738
- else:
739
- amountString = self.number_to_string(amount)
740
- priceString = self.number_to_string(price)
741
- baseAmount = Precise.string_mul(amountString, priceString)
742
- amount = self.parse_number(baseAmount)
743
737
  self.load_markets()
744
738
  market = self.market(symbol)
745
739
  request = {
746
740
  'pair': market['id'],
747
741
  'type': side,
748
- 'amount': amount,
749
742
  }
743
+ # for market buy it requires the amount of quote currency to spend
744
+ if (type == 'market') and (side == 'buy'):
745
+ quoteAmount = None
746
+ createMarketBuyOrderRequiresPrice = True
747
+ createMarketBuyOrderRequiresPrice, params = self.handle_option_and_params(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', True)
748
+ cost = self.safe_string(params, 'cost')
749
+ params = self.omit(params, 'cost')
750
+ if cost is not None:
751
+ quoteAmount = self.cost_to_precision(symbol, cost)
752
+ elif createMarketBuyOrderRequiresPrice:
753
+ if price is None:
754
+ raise InvalidOrder(self.id + ' createOrder() requires the price argument for market buy orders to calculate the total cost to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to False and pass the cost to spend in the amount argument')
755
+ else:
756
+ amountString = self.number_to_string(amount)
757
+ priceString = self.number_to_string(price)
758
+ costRequest = Precise.string_mul(amountString, priceString)
759
+ quoteAmount = self.cost_to_precision(symbol, costRequest)
760
+ else:
761
+ quoteAmount = self.cost_to_precision(symbol, amount)
762
+ request['amount'] = quoteAmount
763
+ else:
764
+ request['amount'] = self.amount_to_precision(symbol, amount)
750
765
  if type == 'limit':
751
- request['price'] = price
766
+ request['price'] = self.number_to_string(price)
752
767
  else:
753
768
  request['order_type'] = type
754
769
  response = self.privatePostPlaceOrderPair(self.extend(request, params))
@@ -48,6 +48,8 @@ class cryptocom(Exchange, ImplicitAPI):
48
48
  'cancelAllOrders': True,
49
49
  'cancelOrder': True,
50
50
  'cancelOrders': True,
51
+ 'closeAllPositions': False,
52
+ 'closePosition': True,
51
53
  'createOrder': True,
52
54
  'createOrders': True,
53
55
  'fetchAccounts': True,
@@ -2683,6 +2685,47 @@ class cryptocom(Exchange, ImplicitAPI):
2683
2685
  returnString += str(value)
2684
2686
  return returnString
2685
2687
 
2688
+ def close_position(self, symbol: str, side: OrderSide = None, params={}) -> Order:
2689
+ """
2690
+ closes open positions for a market
2691
+ :see: https://exchange-docs.crypto.com/exchange/v1/rest-ws/index.html#private-close-position
2692
+ :param str symbol: Unified CCXT market symbol
2693
+ :param str [marginMode]: not used by cryptocom.closePositions
2694
+ :param str [side]: not used by cryptocom.closePositions
2695
+ :param dict [params]: extra parameters specific to the okx api endpoint
2696
+ *
2697
+ * EXCHANGE SPECIFIC PARAMETERS
2698
+ :param str [params.type]: LIMIT or MARKET
2699
+ :param number [params.price]: for limit orders only
2700
+ :returns dict[]: `A list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
2701
+ """
2702
+ self.load_markets()
2703
+ market = self.market(symbol)
2704
+ request = {
2705
+ 'instrument_name': market['id'],
2706
+ 'type': 'MARKET',
2707
+ }
2708
+ type = self.safe_string_upper(params, 'type')
2709
+ price = self.safe_string(params, 'price')
2710
+ if type is not None:
2711
+ request['type'] = type
2712
+ if price is not None:
2713
+ request['price'] = self.price_to_precision(market['symbol'], price)
2714
+ response = self.v1PrivatePostPrivateClosePosition(self.extend(request, params))
2715
+ #
2716
+ # {
2717
+ # "id" : 1700830813298,
2718
+ # "method" : "private/close-position",
2719
+ # "code" : 0,
2720
+ # "result" : {
2721
+ # "client_oid" : "179a909d-5614-655b-0d0e-9e85c9a25c85",
2722
+ # "order_id" : "6142909897021751347"
2723
+ # }
2724
+ # }
2725
+ #
2726
+ result = self.safe_value(response, 'result')
2727
+ return self.parse_order(result, market)
2728
+
2686
2729
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
2687
2730
  type = self.safe_string(api, 0)
2688
2731
  access = self.safe_string(api, 1)
@@ -56,6 +56,8 @@ class okx(Exchange, ImplicitAPI):
56
56
  'cancelAllOrders': False,
57
57
  'cancelOrder': True,
58
58
  'cancelOrders': True,
59
+ 'closeAllPositions': False,
60
+ 'closePosition': True,
59
61
  'createDepositAddress': False,
60
62
  'createMarketBuyOrderWithCost': True,
61
63
  'createMarketSellOrderWithCost': True,
@@ -6691,6 +6693,66 @@ class okx(Exchange, ImplicitAPI):
6691
6693
  'info': greeks,
6692
6694
  }
6693
6695
 
6696
+ def close_position(self, symbol: str, side: OrderSide = None, params={}) -> Order:
6697
+ """
6698
+ closes open positions for a market
6699
+ :see: https://www.okx.com/docs-v5/en/#order-book-trading-trade-post-close-positions
6700
+ :param str symbol: Unified CCXT market symbol
6701
+ :param str [side]: 'buy' or 'sell', leave in net mode
6702
+ :param dict [params]: extra parameters specific to the okx api endpoint
6703
+ :param str [params.clientOrderId]: a unique identifier for the order
6704
+ :param str [params.marginMode]: 'cross' or 'isolated', default is 'cross
6705
+ :param str [params.code]: *required in the case of closing cross MARGIN position for Single-currency margin* margin currency
6706
+ *
6707
+ * EXCHANGE SPECIFIC PARAMETERS
6708
+ :param boolean [params.autoCxl]: whether any pending orders for closing out needs to be automatically canceled when close position via a market order. False or True, the default is False
6709
+ :param str [params.tag]: order tag a combination of case-sensitive alphanumerics, all numbers, or all letters of up to 16 characters
6710
+ :returns [dict]: `A list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
6711
+ """
6712
+ self.load_markets()
6713
+ market = self.market(symbol)
6714
+ clientOrderId = self.safe_string(params, 'clientOrderId')
6715
+ code = self.safe_string(params, 'code')
6716
+ marginMode = None
6717
+ marginMode, params = self.handle_margin_mode_and_params('closePosition', params, 'cross')
6718
+ request = {
6719
+ 'instId': market['id'],
6720
+ 'mgnMode': marginMode,
6721
+ }
6722
+ if side is not None:
6723
+ if (side == 'buy'):
6724
+ request['posSide'] = 'long'
6725
+ elif side == 'sell':
6726
+ request['posSide'] = 'short'
6727
+ else:
6728
+ request['posSide'] = side
6729
+ if clientOrderId is not None:
6730
+ request['clOrdId'] = clientOrderId
6731
+ if code is not None:
6732
+ currency = self.currency(code)
6733
+ request['ccy'] = currency['id']
6734
+ response = self.privatePostTradeClosePosition(self.extend(request, params))
6735
+ #
6736
+ # {
6737
+ # "code": "1",
6738
+ # "data": [
6739
+ # {
6740
+ # "clOrdId":"e847386590ce4dBCe903bbc394dc88bf",
6741
+ # "ordId":"",
6742
+ # "sCode":"51000",
6743
+ # "sMsg":"Parameter posSide error ",
6744
+ # "tag":"e847386590ce4dBC"
6745
+ # }
6746
+ # ],
6747
+ # "inTime": "1701877077101064",
6748
+ # "msg": "All operations failed",
6749
+ # "outTime": "1701877077102579"
6750
+ # }
6751
+ #
6752
+ data = self.safe_value(response, 'data')
6753
+ order = self.safe_value(data, 0)
6754
+ return self.parse_order(order, market)
6755
+
6694
6756
  def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
6695
6757
  if not response:
6696
6758
  return None # fallback to default error handler
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.1.82'
7
+ __version__ = '4.1.83'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.1.82
3
+ Version: 4.1.83
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -222,13 +222,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
222
222
 
223
223
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
224
224
 
225
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.1.82/dist/ccxt.browser.js
226
- * unpkg: https://unpkg.com/ccxt@4.1.82/dist/ccxt.browser.js
225
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.1.83/dist/ccxt.browser.js
226
+ * unpkg: https://unpkg.com/ccxt@4.1.83/dist/ccxt.browser.js
227
227
 
228
228
  CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
229
229
 
230
230
  ```HTML
231
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.1.82/dist/ccxt.browser.js"></script>
231
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.1.83/dist/ccxt.browser.js"></script>
232
232
  ```
233
233
 
234
234
  Creates a global `ccxt` object:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.1.82",
3
+ "version": "4.1.83",
4
4
  "description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges",
5
5
  "unpkg": "dist/ccxt.browser.js",
6
6
  "type": "module",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes