ccxt 4.1.75__tar.gz → 4.1.77__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 (452) hide show
  1. {ccxt-4.1.75/ccxt.egg-info → ccxt-4.1.77}/PKG-INFO +4 -4
  2. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/__init__.py +1 -1
  3. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/binance.py +2 -0
  4. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/binancecoinm.py +2 -0
  5. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/binanceus.py +2 -0
  6. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/binanceusdm.py +2 -0
  7. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/okx.py +23 -9
  8. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/ace.py +2 -0
  9. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/alpaca.py +2 -0
  10. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/__init__.py +1 -1
  11. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/ace.py +2 -0
  12. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/alpaca.py +2 -0
  13. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/base/exchange.py +7 -1
  14. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/binance.py +4 -0
  15. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/binanceus.py +2 -0
  16. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bingx.py +76 -25
  17. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bit2c.py +2 -0
  18. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitbank.py +2 -0
  19. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bithumb.py +2 -0
  20. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitmex.py +5 -1
  21. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitopro.py +2 -0
  22. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitpanda.py +2 -0
  23. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitrue.py +24 -1
  24. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitso.py +2 -0
  25. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitstamp.py +5 -2
  26. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bittrex.py +2 -0
  27. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitvavo.py +2 -0
  28. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bl3p.py +2 -0
  29. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/btcalpha.py +2 -0
  30. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/btcbox.py +2 -0
  31. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/btcmarkets.py +2 -0
  32. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/btcturk.py +2 -0
  33. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bybit.py +2 -0
  34. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/coinbase.py +33 -6
  35. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/coincheck.py +2 -0
  36. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/coinlist.py +2 -0
  37. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/coinmate.py +2 -0
  38. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/coinone.py +2 -0
  39. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/coinsph.py +2 -0
  40. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/coinspot.py +2 -0
  41. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/cryptocom.py +2 -167
  42. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/gate.py +1 -0
  43. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/gemini.py +2 -0
  44. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/idex.py +2 -0
  45. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/independentreserve.py +2 -0
  46. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/indodax.py +2 -0
  47. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/kucoin.py +2 -0
  48. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/kuna.py +2 -0
  49. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/latoken.py +2 -0
  50. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/luno.py +2 -0
  51. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/mercado.py +2 -0
  52. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/mexc.py +2 -0
  53. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/ndax.py +2 -0
  54. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/novadax.py +2 -0
  55. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/okx.py +25 -10
  56. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/p2b.py +2 -0
  57. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/wavesexchange.py +2 -0
  58. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/wazirx.py +2 -0
  59. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/woo.py +2 -0
  60. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/yobit.py +2 -0
  61. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/zonda.py +2 -0
  62. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/base/exchange.py +7 -1
  63. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/binance.py +4 -0
  64. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/binanceus.py +2 -0
  65. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bingx.py +76 -25
  66. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bit2c.py +2 -0
  67. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitbank.py +2 -0
  68. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bithumb.py +2 -0
  69. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitmex.py +5 -1
  70. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitopro.py +2 -0
  71. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitpanda.py +2 -0
  72. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitrue.py +24 -1
  73. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitso.py +2 -0
  74. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitstamp.py +5 -2
  75. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bittrex.py +2 -0
  76. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitvavo.py +2 -0
  77. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bl3p.py +2 -0
  78. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/btcalpha.py +2 -0
  79. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/btcbox.py +2 -0
  80. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/btcmarkets.py +2 -0
  81. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/btcturk.py +2 -0
  82. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bybit.py +2 -0
  83. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/coinbase.py +33 -6
  84. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/coincheck.py +2 -0
  85. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/coinlist.py +2 -0
  86. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/coinmate.py +2 -0
  87. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/coinone.py +2 -0
  88. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/coinsph.py +2 -0
  89. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/coinspot.py +2 -0
  90. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/cryptocom.py +2 -167
  91. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/gate.py +1 -0
  92. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/gemini.py +2 -0
  93. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/idex.py +2 -0
  94. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/independentreserve.py +2 -0
  95. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/indodax.py +2 -0
  96. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/kucoin.py +2 -0
  97. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/kuna.py +2 -0
  98. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/latoken.py +2 -0
  99. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/luno.py +2 -0
  100. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/mercado.py +2 -0
  101. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/mexc.py +2 -0
  102. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/ndax.py +2 -0
  103. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/novadax.py +2 -0
  104. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/okx.py +25 -10
  105. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/p2b.py +2 -0
  106. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/__init__.py +1 -1
  107. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/wavesexchange.py +2 -0
  108. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/wazirx.py +2 -0
  109. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/woo.py +2 -0
  110. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/yobit.py +2 -0
  111. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/zonda.py +2 -0
  112. {ccxt-4.1.75 → ccxt-4.1.77/ccxt.egg-info}/PKG-INFO +4 -4
  113. {ccxt-4.1.75 → ccxt-4.1.77}/package.json +1 -1
  114. {ccxt-4.1.75 → ccxt-4.1.77}/LICENSE.txt +0 -0
  115. {ccxt-4.1.75 → ccxt-4.1.77}/MANIFEST.in +0 -0
  116. {ccxt-4.1.75 → ccxt-4.1.77}/README.rst +0 -0
  117. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/__init__.py +0 -0
  118. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/ace.py +0 -0
  119. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/alpaca.py +0 -0
  120. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/ascendex.py +0 -0
  121. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bequant.py +0 -0
  122. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bigone.py +0 -0
  123. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bingx.py +0 -0
  124. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bit2c.py +0 -0
  125. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitbank.py +0 -0
  126. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitbay.py +0 -0
  127. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitbns.py +0 -0
  128. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitcoincom.py +0 -0
  129. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitfinex.py +0 -0
  130. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitfinex2.py +0 -0
  131. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitflyer.py +0 -0
  132. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitforex.py +0 -0
  133. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitget.py +0 -0
  134. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bithumb.py +0 -0
  135. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitmart.py +0 -0
  136. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitmex.py +0 -0
  137. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitopro.py +0 -0
  138. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitpanda.py +0 -0
  139. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitrue.py +0 -0
  140. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitso.py +0 -0
  141. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitstamp.py +0 -0
  142. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bittrex.py +0 -0
  143. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bitvavo.py +0 -0
  144. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bl3p.py +0 -0
  145. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/blockchaincom.py +0 -0
  146. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/btcalpha.py +0 -0
  147. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/btcbox.py +0 -0
  148. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/btcmarkets.py +0 -0
  149. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/btcturk.py +0 -0
  150. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/bybit.py +0 -0
  151. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/cex.py +0 -0
  152. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/coinbase.py +0 -0
  153. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/coinbaseprime.py +0 -0
  154. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/coinbasepro.py +0 -0
  155. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/coincheck.py +0 -0
  156. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/coinex.py +0 -0
  157. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/coinlist.py +0 -0
  158. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/coinmate.py +0 -0
  159. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/coinone.py +0 -0
  160. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/coinsph.py +0 -0
  161. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/coinspot.py +0 -0
  162. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/cryptocom.py +0 -0
  163. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/currencycom.py +0 -0
  164. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/delta.py +0 -0
  165. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/deribit.py +0 -0
  166. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/digifinex.py +0 -0
  167. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/exmo.py +0 -0
  168. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/fmfwio.py +0 -0
  169. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/gate.py +0 -0
  170. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/gateio.py +0 -0
  171. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/gemini.py +0 -0
  172. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/hitbtc.py +0 -0
  173. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/hitbtc3.py +0 -0
  174. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/hollaex.py +0 -0
  175. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/htx.py +0 -0
  176. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/huobi.py +0 -0
  177. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/huobijp.py +0 -0
  178. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/idex.py +0 -0
  179. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/independentreserve.py +0 -0
  180. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/indodax.py +0 -0
  181. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/kraken.py +0 -0
  182. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/krakenfutures.py +0 -0
  183. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/kucoin.py +0 -0
  184. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/kucoinfutures.py +0 -0
  185. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/kuna.py +0 -0
  186. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/latoken.py +0 -0
  187. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/lbank.py +0 -0
  188. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/luno.py +0 -0
  189. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/lykke.py +0 -0
  190. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/mercado.py +0 -0
  191. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/mexc.py +0 -0
  192. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/ndax.py +0 -0
  193. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/novadax.py +0 -0
  194. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/oceanex.py +0 -0
  195. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/okcoin.py +0 -0
  196. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/p2b.py +0 -0
  197. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/paymium.py +0 -0
  198. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/phemex.py +0 -0
  199. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/poloniex.py +0 -0
  200. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/poloniexfutures.py +0 -0
  201. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/probit.py +0 -0
  202. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/timex.py +0 -0
  203. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/tokocrypto.py +0 -0
  204. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/upbit.py +0 -0
  205. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/wavesexchange.py +0 -0
  206. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/wazirx.py +0 -0
  207. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/whitebit.py +0 -0
  208. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/woo.py +0 -0
  209. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/yobit.py +0 -0
  210. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/zaif.py +0 -0
  211. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/abstract/zonda.py +0 -0
  212. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/ascendex.py +0 -0
  213. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/ascendex.py +0 -0
  214. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/base/__init__.py +0 -0
  215. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/base/throttler.py +0 -0
  216. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/base/ws/__init__.py +0 -0
  217. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  218. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/base/ws/cache.py +0 -0
  219. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/base/ws/client.py +0 -0
  220. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/base/ws/fast_client.py +0 -0
  221. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/base/ws/functions.py +0 -0
  222. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/base/ws/future.py +0 -0
  223. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/base/ws/order_book.py +0 -0
  224. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  225. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bequant.py +0 -0
  226. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bigone.py +0 -0
  227. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/binancecoinm.py +0 -0
  228. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/binanceusdm.py +0 -0
  229. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitbay.py +0 -0
  230. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitbns.py +0 -0
  231. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitcoincom.py +0 -0
  232. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitfinex.py +0 -0
  233. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitfinex2.py +0 -0
  234. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitflyer.py +0 -0
  235. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitforex.py +0 -0
  236. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitget.py +0 -0
  237. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/bitmart.py +0 -0
  238. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/blockchaincom.py +0 -0
  239. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/cex.py +0 -0
  240. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/coinbaseprime.py +0 -0
  241. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/coinbasepro.py +0 -0
  242. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/coinex.py +0 -0
  243. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/currencycom.py +0 -0
  244. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/delta.py +0 -0
  245. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/deribit.py +0 -0
  246. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/digifinex.py +0 -0
  247. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/exmo.py +0 -0
  248. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/flowbtc.py +0 -0
  249. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/fmfwio.py +0 -0
  250. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/gateio.py +0 -0
  251. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/hitbtc.py +0 -0
  252. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/hitbtc3.py +0 -0
  253. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/hollaex.py +0 -0
  254. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/htx.py +0 -0
  255. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/huobi.py +0 -0
  256. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/huobijp.py +0 -0
  257. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/huobipro.py +0 -0
  258. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/kraken.py +0 -0
  259. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/krakenfutures.py +0 -0
  260. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/kucoinfutures.py +0 -0
  261. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/lbank.py +0 -0
  262. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/lykke.py +0 -0
  263. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/mexc3.py +0 -0
  264. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/oceanex.py +0 -0
  265. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/okcoin.py +0 -0
  266. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/okex.py +0 -0
  267. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/okex5.py +0 -0
  268. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/paymium.py +0 -0
  269. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/phemex.py +0 -0
  270. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/poloniex.py +0 -0
  271. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/poloniexfutures.py +0 -0
  272. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/probit.py +0 -0
  273. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/tidex.py +0 -0
  274. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/timex.py +0 -0
  275. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/tokocrypto.py +0 -0
  276. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/upbit.py +0 -0
  277. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/whitebit.py +0 -0
  278. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/async_support/zaif.py +0 -0
  279. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/base/__init__.py +0 -0
  280. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/base/decimal_to_precision.py +0 -0
  281. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/base/errors.py +0 -0
  282. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/base/precise.py +0 -0
  283. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/base/types.py +0 -0
  284. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bequant.py +0 -0
  285. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bigone.py +0 -0
  286. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/binancecoinm.py +0 -0
  287. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/binanceusdm.py +0 -0
  288. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitbay.py +0 -0
  289. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitbns.py +0 -0
  290. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitcoincom.py +0 -0
  291. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitfinex.py +0 -0
  292. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitfinex2.py +0 -0
  293. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitflyer.py +0 -0
  294. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitforex.py +0 -0
  295. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitget.py +0 -0
  296. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/bitmart.py +0 -0
  297. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/blockchaincom.py +0 -0
  298. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/cex.py +0 -0
  299. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/coinbaseprime.py +0 -0
  300. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/coinbasepro.py +0 -0
  301. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/coinex.py +0 -0
  302. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/currencycom.py +0 -0
  303. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/delta.py +0 -0
  304. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/deribit.py +0 -0
  305. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/digifinex.py +0 -0
  306. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/exmo.py +0 -0
  307. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/flowbtc.py +0 -0
  308. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/fmfwio.py +0 -0
  309. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/gateio.py +0 -0
  310. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/hitbtc.py +0 -0
  311. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/hitbtc3.py +0 -0
  312. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/hollaex.py +0 -0
  313. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/htx.py +0 -0
  314. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/huobi.py +0 -0
  315. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/huobijp.py +0 -0
  316. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/huobipro.py +0 -0
  317. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/kraken.py +0 -0
  318. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/krakenfutures.py +0 -0
  319. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/kucoinfutures.py +0 -0
  320. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/lbank.py +0 -0
  321. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/lykke.py +0 -0
  322. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/mexc3.py +0 -0
  323. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/oceanex.py +0 -0
  324. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/okcoin.py +0 -0
  325. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/okex.py +0 -0
  326. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/okex5.py +0 -0
  327. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/paymium.py +0 -0
  328. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/phemex.py +0 -0
  329. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/poloniex.py +0 -0
  330. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/poloniexfutures.py +0 -0
  331. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/alpaca.py +0 -0
  332. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/ascendex.py +0 -0
  333. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bequant.py +0 -0
  334. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/binance.py +0 -0
  335. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/binancecoinm.py +0 -0
  336. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/binanceus.py +0 -0
  337. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/binanceusdm.py +0 -0
  338. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bingx.py +0 -0
  339. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bitcoincom.py +0 -0
  340. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bitfinex.py +0 -0
  341. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bitfinex2.py +0 -0
  342. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bitget.py +0 -0
  343. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bitmart.py +0 -0
  344. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bitmex.py +0 -0
  345. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bitopro.py +0 -0
  346. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bitpanda.py +0 -0
  347. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bitrue.py +0 -0
  348. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bitstamp.py +0 -0
  349. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bittrex.py +0 -0
  350. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bitvavo.py +0 -0
  351. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/blockchaincom.py +0 -0
  352. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/bybit.py +0 -0
  353. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/cex.py +0 -0
  354. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/coinbase.py +0 -0
  355. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/coinbaseprime.py +0 -0
  356. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/coinbasepro.py +0 -0
  357. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/coinex.py +0 -0
  358. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/cryptocom.py +0 -0
  359. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/currencycom.py +0 -0
  360. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/deribit.py +0 -0
  361. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/exmo.py +0 -0
  362. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/gate.py +0 -0
  363. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/gateio.py +0 -0
  364. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/gemini.py +0 -0
  365. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/hitbtc.py +0 -0
  366. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/hollaex.py +0 -0
  367. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/htx.py +0 -0
  368. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/huobi.py +0 -0
  369. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/huobijp.py +0 -0
  370. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/huobipro.py +0 -0
  371. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/idex.py +0 -0
  372. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/independentreserve.py +0 -0
  373. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/kraken.py +0 -0
  374. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/krakenfutures.py +0 -0
  375. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/kucoin.py +0 -0
  376. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/kucoinfutures.py +0 -0
  377. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/luno.py +0 -0
  378. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/mexc.py +0 -0
  379. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/mexc3.py +0 -0
  380. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/ndax.py +0 -0
  381. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/okcoin.py +0 -0
  382. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/okex.py +0 -0
  383. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/okx.py +0 -0
  384. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/phemex.py +0 -0
  385. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/poloniex.py +0 -0
  386. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/poloniexfutures.py +0 -0
  387. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/probit.py +0 -0
  388. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/upbit.py +0 -0
  389. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/wazirx.py +0 -0
  390. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/whitebit.py +0 -0
  391. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/pro/woo.py +0 -0
  392. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/probit.py +0 -0
  393. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/static_dependencies/__init__.py +0 -0
  394. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  395. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  396. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  397. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  398. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  399. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  400. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  401. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  402. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  403. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  404. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  405. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  406. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/__init__.py +0 -0
  407. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/__init__.py +0 -0
  408. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_account.py +0 -0
  409. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_balance.py +0 -0
  410. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_borrow_interest.py +0 -0
  411. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_borrow_rate.py +0 -0
  412. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_calculate_fee.py +0 -0
  413. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_crypto.py +0 -0
  414. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_currency.py +0 -0
  415. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_datetime.py +0 -0
  416. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  417. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_deep_extend.py +0 -0
  418. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  419. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  420. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_funding_rate_history.py +0 -0
  421. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_ledger_entry.py +0 -0
  422. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_ledger_item.py +0 -0
  423. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_leverage_tier.py +0 -0
  424. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_margin_modification.py +0 -0
  425. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_market.py +0 -0
  426. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_number.py +0 -0
  427. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_ohlcv.py +0 -0
  428. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_open_interest.py +0 -0
  429. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_order.py +0 -0
  430. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_order_book.py +0 -0
  431. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_position.py +0 -0
  432. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_shared_methods.py +0 -0
  433. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_status.py +0 -0
  434. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_throttle.py +0 -0
  435. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_ticker.py +0 -0
  436. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_trade.py +0 -0
  437. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_trading_fee.py +0 -0
  438. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/base/test_transaction.py +0 -0
  439. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/test_async.py +0 -0
  440. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/test/test_sync.py +0 -0
  441. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/tidex.py +0 -0
  442. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/timex.py +0 -0
  443. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/tokocrypto.py +0 -0
  444. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/upbit.py +0 -0
  445. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/whitebit.py +0 -0
  446. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt/zaif.py +0 -0
  447. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt.egg-info/SOURCES.txt +0 -0
  448. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt.egg-info/dependency_links.txt +0 -0
  449. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt.egg-info/requires.txt +0 -0
  450. {ccxt-4.1.75 → ccxt-4.1.77}/ccxt.egg-info/top_level.txt +0 -0
  451. {ccxt-4.1.75 → ccxt-4.1.77}/setup.cfg +0 -0
  452. {ccxt-4.1.75 → ccxt-4.1.77}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.1.75
3
+ Version: 4.1.77
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.75/dist/ccxt.browser.js
226
- * unpkg: https://unpkg.com/ccxt@4.1.75/dist/ccxt.browser.js
225
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.1.77/dist/ccxt.browser.js
226
+ * unpkg: https://unpkg.com/ccxt@4.1.77/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.75/dist/ccxt.browser.js"></script>
231
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.1.77/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.75'
25
+ __version__ = '4.1.77'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -553,6 +553,7 @@ class ImplicitAPI:
553
553
  public_get_uiklines = publicGetUiKlines = Entry('uiKlines', 'public', 'GET', {'cost': 0.4})
554
554
  public_get_ticker_24hr = publicGetTicker24hr = Entry('ticker/24hr', 'public', 'GET', {'cost': 0.4, 'noSymbol': 16})
555
555
  public_get_ticker = publicGetTicker = Entry('ticker', 'public', 'GET', {'cost': 0.4, 'noSymbol': 16})
556
+ public_get_ticker_tradingday = publicGetTickerTradingDay = Entry('ticker/tradingDay', 'public', 'GET', {'cost': 0.8})
556
557
  public_get_ticker_price = publicGetTickerPrice = Entry('ticker/price', 'public', 'GET', {'cost': 0.4, 'noSymbol': 0.8})
557
558
  public_get_ticker_bookticker = publicGetTickerBookTicker = Entry('ticker/bookTicker', 'public', 'GET', {'cost': 0.4, 'noSymbol': 0.8})
558
559
  public_get_exchangeinfo = publicGetExchangeInfo = Entry('exchangeInfo', 'public', 'GET', {'cost': 4})
@@ -571,6 +572,7 @@ class ImplicitAPI:
571
572
  private_get_ratelimit_order = privateGetRateLimitOrder = Entry('rateLimit/order', 'private', 'GET', {'cost': 8})
572
573
  private_get_mypreventedmatches = privateGetMyPreventedMatches = Entry('myPreventedMatches', 'private', 'GET', {'cost': 4})
573
574
  private_get_myallocations = privateGetMyAllocations = Entry('myAllocations', 'private', 'GET', {'cost': 4})
575
+ private_get_account_commission = privateGetAccountCommission = Entry('account/commission', 'private', 'GET', {'cost': 4})
574
576
  private_post_order_oco = privatePostOrderOco = Entry('order/oco', 'private', 'POST', {'cost': 0.2})
575
577
  private_post_sor_order = privatePostSorOrder = Entry('sor/order', 'private', 'POST', {'cost': 0.2})
576
578
  private_post_sor_order_test = privatePostSorOrderTest = Entry('sor/order/test', 'private', 'POST', {'cost': 0.2})
@@ -553,6 +553,7 @@ class ImplicitAPI:
553
553
  public_get_uiklines = publicGetUiKlines = Entry('uiKlines', 'public', 'GET', {'cost': 0.4})
554
554
  public_get_ticker_24hr = publicGetTicker24hr = Entry('ticker/24hr', 'public', 'GET', {'cost': 0.4, 'noSymbol': 16})
555
555
  public_get_ticker = publicGetTicker = Entry('ticker', 'public', 'GET', {'cost': 0.4, 'noSymbol': 16})
556
+ public_get_ticker_tradingday = publicGetTickerTradingDay = Entry('ticker/tradingDay', 'public', 'GET', {'cost': 0.8})
556
557
  public_get_ticker_price = publicGetTickerPrice = Entry('ticker/price', 'public', 'GET', {'cost': 0.4, 'noSymbol': 0.8})
557
558
  public_get_ticker_bookticker = publicGetTickerBookTicker = Entry('ticker/bookTicker', 'public', 'GET', {'cost': 0.4, 'noSymbol': 0.8})
558
559
  public_get_exchangeinfo = publicGetExchangeInfo = Entry('exchangeInfo', 'public', 'GET', {'cost': 4})
@@ -571,6 +572,7 @@ class ImplicitAPI:
571
572
  private_get_ratelimit_order = privateGetRateLimitOrder = Entry('rateLimit/order', 'private', 'GET', {'cost': 8})
572
573
  private_get_mypreventedmatches = privateGetMyPreventedMatches = Entry('myPreventedMatches', 'private', 'GET', {'cost': 4})
573
574
  private_get_myallocations = privateGetMyAllocations = Entry('myAllocations', 'private', 'GET', {'cost': 4})
575
+ private_get_account_commission = privateGetAccountCommission = Entry('account/commission', 'private', 'GET', {'cost': 4})
574
576
  private_post_order_oco = privatePostOrderOco = Entry('order/oco', 'private', 'POST', {'cost': 0.2})
575
577
  private_post_sor_order = privatePostSorOrder = Entry('sor/order', 'private', 'POST', {'cost': 0.2})
576
578
  private_post_sor_order_test = privatePostSorOrderTest = Entry('sor/order/test', 'private', 'POST', {'cost': 0.2})
@@ -553,6 +553,7 @@ class ImplicitAPI:
553
553
  public_get_uiklines = publicGetUiKlines = Entry('uiKlines', 'public', 'GET', {'cost': 0.4})
554
554
  public_get_ticker_24hr = publicGetTicker24hr = Entry('ticker/24hr', 'public', 'GET', {'cost': 0.4, 'noSymbol': 16})
555
555
  public_get_ticker = publicGetTicker = Entry('ticker', 'public', 'GET', {'cost': 0.4, 'noSymbol': 16})
556
+ public_get_ticker_tradingday = publicGetTickerTradingDay = Entry('ticker/tradingDay', 'public', 'GET', {'cost': 0.8})
556
557
  public_get_ticker_price = publicGetTickerPrice = Entry('ticker/price', 'public', 'GET', {'cost': 0.4, 'noSymbol': 0.8})
557
558
  public_get_ticker_bookticker = publicGetTickerBookTicker = Entry('ticker/bookTicker', 'public', 'GET', {'cost': 0.4, 'noSymbol': 0.8})
558
559
  public_get_exchangeinfo = publicGetExchangeInfo = Entry('exchangeInfo', 'public', 'GET', {'cost': 4})
@@ -571,6 +572,7 @@ class ImplicitAPI:
571
572
  private_get_ratelimit_order = privateGetRateLimitOrder = Entry('rateLimit/order', 'private', 'GET', {'cost': 8})
572
573
  private_get_mypreventedmatches = privateGetMyPreventedMatches = Entry('myPreventedMatches', 'private', 'GET', {'cost': 4})
573
574
  private_get_myallocations = privateGetMyAllocations = Entry('myAllocations', 'private', 'GET', {'cost': 4})
575
+ private_get_account_commission = privateGetAccountCommission = Entry('account/commission', 'private', 'GET', {'cost': 4})
574
576
  private_post_order_oco = privatePostOrderOco = Entry('order/oco', 'private', 'POST', {'cost': 0.2})
575
577
  private_post_sor_order = privatePostSorOrder = Entry('sor/order', 'private', 'POST', {'cost': 0.2})
576
578
  private_post_sor_order_test = privatePostSorOrderTest = Entry('sor/order/test', 'private', 'POST', {'cost': 0.2})
@@ -553,6 +553,7 @@ class ImplicitAPI:
553
553
  public_get_uiklines = publicGetUiKlines = Entry('uiKlines', 'public', 'GET', {'cost': 0.4})
554
554
  public_get_ticker_24hr = publicGetTicker24hr = Entry('ticker/24hr', 'public', 'GET', {'cost': 0.4, 'noSymbol': 16})
555
555
  public_get_ticker = publicGetTicker = Entry('ticker', 'public', 'GET', {'cost': 0.4, 'noSymbol': 16})
556
+ public_get_ticker_tradingday = publicGetTickerTradingDay = Entry('ticker/tradingDay', 'public', 'GET', {'cost': 0.8})
556
557
  public_get_ticker_price = publicGetTickerPrice = Entry('ticker/price', 'public', 'GET', {'cost': 0.4, 'noSymbol': 0.8})
557
558
  public_get_ticker_bookticker = publicGetTickerBookTicker = Entry('ticker/bookTicker', 'public', 'GET', {'cost': 0.4, 'noSymbol': 0.8})
558
559
  public_get_exchangeinfo = publicGetExchangeInfo = Entry('exchangeInfo', 'public', 'GET', {'cost': 4})
@@ -571,6 +572,7 @@ class ImplicitAPI:
571
572
  private_get_ratelimit_order = privateGetRateLimitOrder = Entry('rateLimit/order', 'private', 'GET', {'cost': 8})
572
573
  private_get_mypreventedmatches = privateGetMyPreventedMatches = Entry('myPreventedMatches', 'private', 'GET', {'cost': 4})
573
574
  private_get_myallocations = privateGetMyAllocations = Entry('myAllocations', 'private', 'GET', {'cost': 4})
575
+ private_get_account_commission = privateGetAccountCommission = Entry('account/commission', 'private', 'GET', {'cost': 4})
574
576
  private_post_order_oco = privatePostOrderOco = Entry('order/oco', 'private', 'POST', {'cost': 0.2})
575
577
  private_post_sor_order = privatePostSorOrder = Entry('sor/order', 'private', 'POST', {'cost': 0.2})
576
578
  private_post_sor_order_test = privatePostSorOrderTest = Entry('sor/order/test', 'private', 'POST', {'cost': 0.2})
@@ -66,6 +66,12 @@ class ImplicitAPI:
66
66
  public_get_finance_savings_lending_rate_summary = publicGetFinanceSavingsLendingRateSummary = Entry('finance/savings/lending-rate-summary', 'public', 'GET', {'cost': 1.6666666666666667})
67
67
  public_get_finance_savings_lending_rate_history = publicGetFinanceSavingsLendingRateHistory = Entry('finance/savings/lending-rate-history', 'public', 'GET', {'cost': 1.6666666666666667})
68
68
  public_get_finance_sfp_dcd_products = publicGetFinanceSfpDcdProducts = Entry('finance/sfp/dcd/products', 'public', 'GET', {'cost': 0.6666666666666666})
69
+ public_get_copytrading_public_lead_traders = publicGetCopytradingPublicLeadTraders = Entry('copytrading/public-lead-traders', 'public', 'GET', {'cost': 4})
70
+ public_get_copytrading_public_weekly_pnl = publicGetCopytradingPublicWeeklyPnl = Entry('copytrading/public-weekly-pnl', 'public', 'GET', {'cost': 4})
71
+ public_get_copytrading_public_stats = publicGetCopytradingPublicStats = Entry('copytrading/public-stats', 'public', 'GET', {'cost': 4})
72
+ public_get_copytrading_public_preference_currency = publicGetCopytradingPublicPreferenceCurrency = Entry('copytrading/public-preference-currency', 'public', 'GET', {'cost': 4})
73
+ public_get_copytrading_public_current_subpositions = publicGetCopytradingPublicCurrentSubpositions = Entry('copytrading/public-current-subpositions', 'public', 'GET', {'cost': 4})
74
+ public_get_copytrading_public_subpositions_history = publicGetCopytradingPublicSubpositionsHistory = Entry('copytrading/public-subpositions-history', 'public', 'GET', {'cost': 4})
69
75
  private_get_rfq_counterparties = privateGetRfqCounterparties = Entry('rfq/counterparties', 'private', 'GET', {'cost': 4})
70
76
  private_get_rfq_maker_instrument_settings = privateGetRfqMakerInstrumentSettings = Entry('rfq/maker-instrument-settings', 'private', 'GET', {'cost': 4})
71
77
  private_get_rfq_rfqs = privateGetRfqRfqs = Entry('rfq/rfqs', 'private', 'GET', {'cost': 10})
@@ -161,12 +167,16 @@ class ImplicitAPI:
161
167
  private_get_finance_staking_defi_orders_history = privateGetFinanceStakingDefiOrdersHistory = Entry('finance/staking-defi/orders-history', 'private', 'GET', {'cost': 3.3333333333333335})
162
168
  private_get_finance_staking_defi_eth_balance = privateGetFinanceStakingDefiEthBalance = Entry('finance/staking-defi/eth/balance', 'private', 'GET', {'cost': 1.6666666666666667})
163
169
  private_get_finance_staking_defi_eth_purchase_redeem_history = privateGetFinanceStakingDefiEthPurchaseRedeemHistory = Entry('finance/staking-defi/eth/purchase-redeem-history', 'private', 'GET', {'cost': 1.6666666666666667})
164
- private_get_copytrading_current_subpositions = privateGetCopytradingCurrentSubpositions = Entry('copytrading/current-subpositions', 'private', 'GET', {'cost': 4})
165
- private_get_copytrading_subpositions_history = privateGetCopytradingSubpositionsHistory = Entry('copytrading/subpositions-history', 'private', 'GET', {'cost': 10})
166
- private_get_copytrading_instruments = privateGetCopytradingInstruments = Entry('copytrading/instruments', 'private', 'GET', {'cost': 10})
167
- private_get_copytrading_profit_sharing_details = privateGetCopytradingProfitSharingDetails = Entry('copytrading/profit-sharing-details', 'private', 'GET', {'cost': 10})
168
- private_get_copytrading_total_profit_sharing = privateGetCopytradingTotalProfitSharing = Entry('copytrading/total-profit-sharing', 'private', 'GET', {'cost': 10})
169
- private_get_copytrading_unrealized_profit_sharing_details = privateGetCopytradingUnrealizedProfitSharingDetails = Entry('copytrading/unrealized-profit-sharing-details', 'private', 'GET', {'cost': 10})
170
+ private_get_copytrading_current_subpositions = privateGetCopytradingCurrentSubpositions = Entry('copytrading/current-subpositions', 'private', 'GET', {'cost': 1})
171
+ private_get_copytrading_subpositions_history = privateGetCopytradingSubpositionsHistory = Entry('copytrading/subpositions-history', 'private', 'GET', {'cost': 1})
172
+ private_get_copytrading_instruments = privateGetCopytradingInstruments = Entry('copytrading/instruments', 'private', 'GET', {'cost': 4})
173
+ private_get_copytrading_profit_sharing_details = privateGetCopytradingProfitSharingDetails = Entry('copytrading/profit-sharing-details', 'private', 'GET', {'cost': 4})
174
+ private_get_copytrading_total_profit_sharing = privateGetCopytradingTotalProfitSharing = Entry('copytrading/total-profit-sharing', 'private', 'GET', {'cost': 4})
175
+ private_get_copytrading_unrealized_profit_sharing_details = privateGetCopytradingUnrealizedProfitSharingDetails = Entry('copytrading/unrealized-profit-sharing-details', 'private', 'GET', {'cost': 4})
176
+ private_get_copytrading_copy_settings = privateGetCopytradingCopySettings = Entry('copytrading/copy-settings', 'private', 'GET', {'cost': 4})
177
+ private_get_copytrading_batch_leverage_info = privateGetCopytradingBatchLeverageInfo = Entry('copytrading/batch-leverage-info', 'private', 'GET', {'cost': 4})
178
+ private_get_copytrading_current_lead_traders = privateGetCopytradingCurrentLeadTraders = Entry('copytrading/current-lead-traders', 'private', 'GET', {'cost': 4})
179
+ private_get_copytrading_lead_traders_history = privateGetCopytradingLeadTradersHistory = Entry('copytrading/lead-traders-history', 'private', 'GET', {'cost': 4})
170
180
  private_get_broker_nd_info = privateGetBrokerNdInfo = Entry('broker/nd/info', 'private', 'GET', {'cost': 10})
171
181
  private_get_broker_nd_subaccount_info = privateGetBrokerNdSubaccountInfo = Entry('broker/nd/subaccount-info', 'private', 'GET', {'cost': 10})
172
182
  private_get_broker_nd_subaccount_apikey = privateGetBrokerNdSubaccountApikey = Entry('broker/nd/subaccount/apikey', 'private', 'GET', {'cost': 10})
@@ -257,9 +267,13 @@ class ImplicitAPI:
257
267
  private_post_finance_staking_defi_cancel = privatePostFinanceStakingDefiCancel = Entry('finance/staking-defi/cancel', 'private', 'POST', {'cost': 3})
258
268
  private_post_finance_staking_defi_eth_purchase = privatePostFinanceStakingDefiEthPurchase = Entry('finance/staking-defi/eth/purchase', 'private', 'POST', {'cost': 5})
259
269
  private_post_finance_staking_defi_eth_redeem = privatePostFinanceStakingDefiEthRedeem = Entry('finance/staking-defi/eth/redeem', 'private', 'POST', {'cost': 5})
260
- private_post_copytrading_algo_order = privatePostCopytradingAlgoOrder = Entry('copytrading/algo-order', 'private', 'POST', {'cost': 20})
261
- private_post_copytrading_close_subposition = privatePostCopytradingCloseSubposition = Entry('copytrading/close-subposition', 'private', 'POST', {'cost': 4})
262
- private_post_copytrading_set_instruments = privatePostCopytradingSetInstruments = Entry('copytrading/set-instruments', 'private', 'POST', {'cost': 10})
270
+ private_post_copytrading_algo_order = privatePostCopytradingAlgoOrder = Entry('copytrading/algo-order', 'private', 'POST', {'cost': 1})
271
+ private_post_copytrading_close_subposition = privatePostCopytradingCloseSubposition = Entry('copytrading/close-subposition', 'private', 'POST', {'cost': 1})
272
+ private_post_copytrading_set_instruments = privatePostCopytradingSetInstruments = Entry('copytrading/set-instruments', 'private', 'POST', {'cost': 4})
273
+ private_post_copytrading_first_copy_settings = privatePostCopytradingFirstCopySettings = Entry('copytrading/first-copy-settings', 'private', 'POST', {'cost': 4})
274
+ private_post_copytrading_amend_copy_settings = privatePostCopytradingAmendCopySettings = Entry('copytrading/amend-copy-settings', 'private', 'POST', {'cost': 4})
275
+ private_post_copytrading_stop_copy_trading = privatePostCopytradingStopCopyTrading = Entry('copytrading/stop-copy-trading', 'private', 'POST', {'cost': 4})
276
+ private_post_copytrading_batch_set_leverage = privatePostCopytradingBatchSetLeverage = Entry('copytrading/batch-set-leverage', 'private', 'POST', {'cost': 4})
263
277
  private_post_broker_nd_create_subaccount = privatePostBrokerNdCreateSubaccount = Entry('broker/nd/create-subaccount', 'private', 'POST', {'cost': 0.25})
264
278
  private_post_broker_nd_delete_subaccount = privatePostBrokerNdDeleteSubaccount = Entry('broker/nd/delete-subaccount', 'private', 'POST', {'cost': 1})
265
279
  private_post_broker_nd_subaccount_apikey = privatePostBrokerNdSubaccountApikey = Entry('broker/nd/subaccount/apikey', 'private', 'POST', {'cost': 0.25})
@@ -36,6 +36,8 @@ class ace(Exchange, ImplicitAPI):
36
36
  'cancelAllOrders': False,
37
37
  'cancelOrder': True,
38
38
  'cancelOrders': False,
39
+ 'closeAllPositions': False,
40
+ 'closePosition': False,
39
41
  'createOrder': True,
40
42
  'editOrder': False,
41
43
  'fetchBalance': True,
@@ -56,6 +56,8 @@ class alpaca(Exchange, ImplicitAPI):
56
56
  'option': False,
57
57
  'cancelAllOrders': True,
58
58
  'cancelOrder': True,
59
+ 'closeAllPositions': False,
60
+ 'closePosition': False,
59
61
  'createOrder': True,
60
62
  'fetchBalance': True,
61
63
  'fetchBidsAsks': False,
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.1.75'
7
+ __version__ = '4.1.77'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -36,6 +36,8 @@ class ace(Exchange, ImplicitAPI):
36
36
  'cancelAllOrders': False,
37
37
  'cancelOrder': True,
38
38
  'cancelOrders': False,
39
+ 'closeAllPositions': False,
40
+ 'closePosition': False,
39
41
  'createOrder': True,
40
42
  'editOrder': False,
41
43
  'fetchBalance': True,
@@ -56,6 +56,8 @@ class alpaca(Exchange, ImplicitAPI):
56
56
  'option': False,
57
57
  'cancelAllOrders': True,
58
58
  'cancelOrder': True,
59
+ 'closeAllPositions': False,
60
+ 'closePosition': False,
59
61
  'createOrder': True,
60
62
  'fetchBalance': True,
61
63
  'fetchBidsAsks': False,
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.1.75'
5
+ __version__ = '4.1.77'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1010,6 +1010,12 @@ 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={}):
1014
+ raise NotSupported(self.id + ' closePositions() is not supported yet')
1015
+
1016
+ async def close_all_positions(self, params={}):
1017
+ raise NotSupported(self.id + ' closeAllPositions() is not supported yet')
1018
+
1013
1019
  async def fetch_deposit_address(self, code: str, params={}):
1014
1020
  if self.has['fetchDepositAddresses']:
1015
1021
  depositAddresses = await self.fetchDepositAddresses([code], params)
@@ -60,6 +60,8 @@ class binance(Exchange, ImplicitAPI):
60
60
  'cancelAllOrders': True,
61
61
  'cancelOrder': True,
62
62
  'cancelOrders': True, # contract only
63
+ 'closeAllPositions': False,
64
+ 'closePosition': False,
63
65
  'createDepositAddress': False,
64
66
  'createOrder': True,
65
67
  'createOrders': True,
@@ -896,6 +898,7 @@ class binance(Exchange, ImplicitAPI):
896
898
  'uiKlines': 0.4,
897
899
  'ticker/24hr': {'cost': 0.4, 'noSymbol': 16},
898
900
  'ticker': {'cost': 0.4, 'noSymbol': 16},
901
+ 'ticker/tradingDay': 0.8,
899
902
  'ticker/price': {'cost': 0.4, 'noSymbol': 0.8},
900
903
  'ticker/bookTicker': {'cost': 0.4, 'noSymbol': 0.8},
901
904
  'exchangeInfo': 4, # Weight(IP): 20 => cost = 0.2 * 20 = 4
@@ -924,6 +927,7 @@ class binance(Exchange, ImplicitAPI):
924
927
  'rateLimit/order': 8, # Weight(IP): 40 => cost = 0.2 * 40 = 8
925
928
  'myPreventedMatches': 4, # Weight(IP): 20 => cost = 0.2 * 20 = 4
926
929
  'myAllocations': 4,
930
+ 'account/commission': 4,
927
931
  },
928
932
  'post': {
929
933
  'order/oco': 0.2,
@@ -52,6 +52,8 @@ class binanceus(binance, ImplicitAPI):
52
52
  'option': False,
53
53
  'addMargin': False,
54
54
  'borrowMargin': False,
55
+ 'closeAllPositions': False,
56
+ 'closePosition': False,
55
57
  'createReduceOnlyOrder': False,
56
58
  'fetchBorrowInterest': False,
57
59
  'fetchBorrowRate': False,
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.bingx import ImplicitAPI
8
8
  import asyncio
9
9
  import hashlib
10
- from ccxt.base.types import Balances, Currency, Int, Market, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
10
+ from ccxt.base.types import Balances, Currency, Int, Market, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, Transaction
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
13
  from ccxt.base.errors import PermissionDenied
@@ -45,6 +45,8 @@ class bingx(Exchange, ImplicitAPI):
45
45
  'cancelAllOrders': True,
46
46
  'cancelOrder': True,
47
47
  'cancelOrders': True,
48
+ 'closeAllPosition': True,
49
+ 'closePosition': False,
48
50
  'createMarketBuyOrderWithCost': True,
49
51
  'createMarketOrderWithCost': True,
50
52
  'createMarketSellOrderWithCost': True,
@@ -96,10 +98,18 @@ class bingx(Exchange, ImplicitAPI):
96
98
  'www': 'https://bingx.com/',
97
99
  'doc': 'https://bingx-api.github.io/docs/',
98
100
  'referral': 'https://bingx.com/invite/OHETOM',
99
- 'fees': {
100
- 'trading': {
101
- 'tierBased': True,
102
- },
101
+ },
102
+ 'fees': {
103
+ 'tierBased': True,
104
+ 'spot': {
105
+ 'feeSide': 'get',
106
+ 'maker': self.parse_number('0.001'),
107
+ 'taker': self.parse_number('0.001'),
108
+ },
109
+ 'swap': {
110
+ 'feeSide': 'quote',
111
+ 'maker': self.parse_number('0.0002'),
112
+ 'taker': self.parse_number('0.0005'),
103
113
  },
104
114
  },
105
115
  'requiredCredentials': {
@@ -318,10 +328,6 @@ class bingx(Exchange, ImplicitAPI):
318
328
  '1w': '1w',
319
329
  '1M': '1M',
320
330
  },
321
- 'fees': {
322
- 'trading': {
323
- },
324
- },
325
331
  'precisionMode': DECIMAL_PLACES,
326
332
  'exceptions': {
327
333
  'exact': {
@@ -563,11 +569,12 @@ class bingx(Exchange, ImplicitAPI):
563
569
  symbol = base + '/' + quote
564
570
  if settle is not None:
565
571
  symbol += ':' + settle
572
+ fees = self.safe_value(self.fees, type, {})
566
573
  contractSize = self.safe_number(market, 'size')
567
574
  isActive = self.safe_string(market, 'status') == '1'
568
575
  isInverse = None if (spot) else False
569
576
  isLinear = None if (spot) else swap
570
- return {
577
+ return self.safe_market_structure({
571
578
  'id': id,
572
579
  'symbol': symbol,
573
580
  'base': base,
@@ -586,8 +593,9 @@ class bingx(Exchange, ImplicitAPI):
586
593
  'contract': swap,
587
594
  'linear': isLinear,
588
595
  'inverse': isInverse,
589
- 'taker': None,
590
- 'maker': None,
596
+ 'taker': self.safe_number(fees, 'taker'),
597
+ 'maker': self.safe_number(fees, 'maker'),
598
+ 'feeSide': self.safe_string(fees, 'feeSide'),
591
599
  'contractSize': contractSize,
592
600
  'expiry': None,
593
601
  'expiryDatetime': None,
@@ -617,7 +625,7 @@ class bingx(Exchange, ImplicitAPI):
617
625
  },
618
626
  'created': None,
619
627
  'info': market,
620
- }
628
+ })
621
629
 
622
630
  async def fetch_markets(self, params={}):
623
631
  """
@@ -1525,23 +1533,27 @@ class bingx(Exchange, ImplicitAPI):
1525
1533
  # "avgPrice": "2.2",
1526
1534
  # "leverage": 10,
1527
1535
  # }
1536
+ #
1528
1537
  # standard position
1538
+ #
1529
1539
  # {
1530
- # "currentPrice":"82.91",
1531
- # "symbol":"LTC/USDT",
1532
- # "initialMargin":"5.00000000000000000000",
1533
- # "unrealizedProfit":"-0.26464500",
1534
- # "leverage":"20.000000000",
1535
- # "isolated":true,
1536
- # "entryPrice":"83.13",
1537
- # "positionSide":"LONG",
1538
- # "positionAmt":"1.20365912",
1540
+ # "currentPrice": "82.91",
1541
+ # "symbol": "LTC/USDT",
1542
+ # "initialMargin": "5.00000000000000000000",
1543
+ # "unrealizedProfit": "-0.26464500",
1544
+ # "leverage": "20.000000000",
1545
+ # "isolated": True,
1546
+ # "entryPrice": "83.13",
1547
+ # "positionSide": "LONG",
1548
+ # "positionAmt": "1.20365912",
1539
1549
  # }
1540
1550
  #
1541
- marketId = self.safe_string(position, 'symbol')
1551
+ marketId = self.safe_string(position, 'symbol', '')
1542
1552
  marketId = marketId.replace('/', '-') # standard return different format
1543
1553
  isolated = self.safe_value(position, 'isolated')
1544
- marginMode = 'isolated' if isolated else 'cross'
1554
+ marginMode = None
1555
+ if isolated is not None:
1556
+ marginMode = 'isolated' if isolated else 'cross'
1545
1557
  return self.safe_position({
1546
1558
  'info': position,
1547
1559
  'id': self.safe_string(position, 'positionId'),
@@ -1702,7 +1714,6 @@ class bingx(Exchange, ImplicitAPI):
1702
1714
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, params={}):
1703
1715
  """
1704
1716
  create a trade order
1705
- :see: https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Create%20an%20Order
1706
1717
  :see: https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Trade%20order
1707
1718
  :param str symbol: unified symbol of the market to create an order in
1708
1719
  :param str type: 'market' or 'limit'
@@ -3217,6 +3228,46 @@ class bingx(Exchange, ImplicitAPI):
3217
3228
  'datetime': self.iso8601(timestamp),
3218
3229
  })
3219
3230
 
3231
+ async def close_all_positions(self, params={}) -> List[Position]:
3232
+ """
3233
+ closes open positions for a market
3234
+ :see: https://bitgetlimited.github.io/apidoc/en/mix/#close-all-position
3235
+ :param dict [params]: extra parameters specific to the okx api endpoint
3236
+ :param str [params.recvWindow]: request valid time window value
3237
+ :returns [dict]: `A list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
3238
+ """
3239
+ await self.load_markets()
3240
+ defaultRecvWindow = self.safe_integer(self.options, 'recvWindow')
3241
+ recvWindow = self.safe_integer(self.parse_params, 'recvWindow', defaultRecvWindow)
3242
+ marketType = None
3243
+ marketType, params = self.handle_market_type_and_params('closeAllPositions', None, params)
3244
+ if marketType == 'margin':
3245
+ raise BadRequest(self.id + ' closePositions() cannot be used for ' + marketType + ' markets')
3246
+ request = {
3247
+ 'recvWindow': recvWindow,
3248
+ }
3249
+ response = await self.swapV2PrivatePostTradeCloseAllPositions(self.extend(request, params))
3250
+ #
3251
+ # {
3252
+ # "code": 0,
3253
+ # "msg": "",
3254
+ # "data": {
3255
+ # "success": [
3256
+ # 1727686766700486656,
3257
+ # 1727686767048613888
3258
+ # ],
3259
+ # "failed": null
3260
+ # }
3261
+ # }
3262
+ #
3263
+ data = self.safe_value(response, 'data', {})
3264
+ success = self.safe_value(data, 'success', [])
3265
+ positions = []
3266
+ for i in range(0, len(success)):
3267
+ position = self.parse_position({'positionId': success[i]})
3268
+ positions.append(position)
3269
+ return positions
3270
+
3220
3271
  def sign(self, path, section='public', method='GET', params={}, headers=None, body=None):
3221
3272
  type = section[0]
3222
3273
  version = section[1]
@@ -37,6 +37,8 @@ class bit2c(Exchange, ImplicitAPI):
37
37
  'option': False,
38
38
  'addMargin': False,
39
39
  'cancelOrder': True,
40
+ 'closeAllPositions': False,
41
+ 'closePosition': False,
40
42
  'createOrder': True,
41
43
  'createReduceOnlyOrder': False,
42
44
  'fetchBalance': True,
@@ -35,6 +35,8 @@ class bitbank(Exchange, ImplicitAPI):
35
35
  'option': False,
36
36
  'addMargin': False,
37
37
  'cancelOrder': True,
38
+ 'closeAllPositions': False,
39
+ 'closePosition': False,
38
40
  'createOrder': True,
39
41
  'createReduceOnlyOrder': False,
40
42
  'fetchBalance': True,
@@ -39,6 +39,8 @@ class bithumb(Exchange, ImplicitAPI):
39
39
  'option': False,
40
40
  'addMargin': False,
41
41
  'cancelOrder': True,
42
+ 'closeAllPositions': False,
43
+ 'closePosition': False,
42
44
  'createMarketOrder': True,
43
45
  'createOrder': True,
44
46
  'createReduceOnlyOrder': False,
@@ -393,7 +393,11 @@ class bitmex(Exchange, ImplicitAPI):
393
393
  finalAmount = Precise.string_div(amountString, precision)
394
394
  return self.parse_number(finalAmount)
395
395
 
396
- def convert_to_real_amount(self, code: str, amount: str):
396
+ def convert_to_real_amount(self, code: Str, amount: Str):
397
+ if code is None:
398
+ return amount
399
+ elif amount is None:
400
+ return None
397
401
  currency = self.currency(code)
398
402
  precision = self.safe_string(currency, 'precision')
399
403
  return Precise.string_mul(amount, precision)
@@ -39,6 +39,8 @@ class bitopro(Exchange, ImplicitAPI):
39
39
  'cancelAllOrders': True,
40
40
  'cancelOrder': True,
41
41
  'cancelOrders': True,
42
+ 'closeAllPositions': False,
43
+ 'closePosition': False,
42
44
  'createOrder': True,
43
45
  'editOrder': False,
44
46
  'fetchBalance': True,
@@ -44,6 +44,8 @@ class bitpanda(Exchange, ImplicitAPI):
44
44
  'cancelAllOrders': True,
45
45
  'cancelOrder': True,
46
46
  'cancelOrders': True,
47
+ 'closeAllPositions': False,
48
+ 'closePosition': False,
47
49
  'createDepositAddress': True,
48
50
  'createOrder': True,
49
51
  'createReduceOnlyOrder': False,
@@ -53,6 +53,9 @@ class bitrue(Exchange, ImplicitAPI):
53
53
  'option': False,
54
54
  'cancelAllOrders': True,
55
55
  'cancelOrder': True,
56
+ 'createMarketBuyOrderWithCost': True,
57
+ 'createMarketOrderWithCost': False,
58
+ 'createMarketSellOrderWithCost': False,
56
59
  'createOrder': True,
57
60
  'createStopLimitOrder': True,
58
61
  'createStopMarketOrder': True,
@@ -1804,6 +1807,23 @@ class bitrue(Exchange, ImplicitAPI):
1804
1807
  'trades': fills,
1805
1808
  }, market)
1806
1809
 
1810
+ async def create_market_buy_order_with_cost(self, symbol: str, cost, params={}):
1811
+ """
1812
+ create a market buy order by providing the symbol and cost
1813
+ :see: https://www.bitrue.com/api-docs#new-order-trade-hmac-sha256
1814
+ :see: https://www.bitrue.com/api_docs_includes_file/delivery.html#new-order-trade-hmac-sha256
1815
+ :param str symbol: unified symbol of the market to create an order in
1816
+ :param float cost: how much you want to trade in units of the quote currency
1817
+ :param dict [params]: extra parameters specific to the exchange API endpoint
1818
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1819
+ """
1820
+ await self.load_markets()
1821
+ market = self.market(symbol)
1822
+ if not market['swap']:
1823
+ raise NotSupported(self.id + ' createMarketBuyOrderWithCost() supports swap orders only')
1824
+ params['createMarketBuyOrderRequiresPrice'] = False
1825
+ return await self.create_order(symbol, 'market', 'buy', cost, None, params)
1826
+
1807
1827
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, params={}):
1808
1828
  """
1809
1829
  create a trade order
@@ -1825,6 +1845,7 @@ class bitrue(Exchange, ImplicitAPI):
1825
1845
  * EXCHANGE SPECIFIC PARAMETERS
1826
1846
  :param decimal [params.icebergQty]:
1827
1847
  :param long [params.recvWindow]:
1848
+ :param float [params.cost]: *swap market buy only* the quote quantity that can be used alternative for the amount
1828
1849
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1829
1850
  """
1830
1851
  await self.load_markets()
@@ -1856,7 +1877,9 @@ class bitrue(Exchange, ImplicitAPI):
1856
1877
  elif timeInForce == 'ioc':
1857
1878
  request['type'] = 'IOC'
1858
1879
  request['contractName'] = market['id']
1859
- if isMarket and (side == 'buy') and (self.options['createMarketBuyOrderRequiresPrice']):
1880
+ createMarketBuyOrderRequiresPrice = True
1881
+ createMarketBuyOrderRequiresPrice, params = self.handle_option_and_params(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', True)
1882
+ if isMarket and (side == 'buy') and createMarketBuyOrderRequiresPrice:
1860
1883
  cost = self.safe_string(params, 'cost')
1861
1884
  params = self.omit(params, 'cost')
1862
1885
  if price is None and cost is None:
@@ -39,6 +39,8 @@ class bitso(Exchange, ImplicitAPI):
39
39
  'cancelAllOrders': True,
40
40
  'cancelOrder': True,
41
41
  'cancelOrders': True,
42
+ 'closeAllPositions': False,
43
+ 'closePosition': False,
42
44
  'createDepositAddress': False,
43
45
  'createOrder': True,
44
46
  'createReduceOnlyOrder': False,
@@ -46,6 +46,8 @@ class bitstamp(Exchange, ImplicitAPI):
46
46
  'addMargin': False,
47
47
  'cancelAllOrders': True,
48
48
  'cancelOrder': True,
49
+ 'closeAllPositions': False,
50
+ 'closePosition': False,
49
51
  'createOrder': True,
50
52
  'createReduceOnlyOrder': False,
51
53
  'createStopLimitOrder': False,
@@ -1005,6 +1007,7 @@ class bitstamp(Exchange, ImplicitAPI):
1005
1007
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
1006
1008
  """
1007
1009
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1010
+ :see: https://www.bitstamp.net/api/#tag/Market-info/operation/GetOHLCData
1008
1011
  :param str symbol: unified symbol of the market to fetch OHLCV data for
1009
1012
  :param str timeframe: the length of time each candle represents
1010
1013
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -1026,13 +1029,13 @@ class bitstamp(Exchange, ImplicitAPI):
1026
1029
  limit = 1000
1027
1030
  start = self.parse_to_int(since / 1000)
1028
1031
  request['start'] = start
1029
- request['end'] = self.sum(start, limit * duration)
1032
+ request['end'] = self.sum(start, duration * (limit - 1))
1030
1033
  request['limit'] = limit
1031
1034
  else:
1032
1035
  if since is not None:
1033
1036
  start = self.parse_to_int(since / 1000)
1034
1037
  request['start'] = start
1035
- request['end'] = self.sum(start, limit * duration)
1038
+ request['end'] = self.sum(start, duration * (limit - 1))
1036
1039
  request['limit'] = min(limit, 1000) # min 1, max 1000
1037
1040
  response = await self.publicGetOhlcPair(self.extend(request, params))
1038
1041
  #