ccxt 3.0.97__tar.gz → 3.0.98__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.

Potentially problematic release.


This version of ccxt might be problematic. Click here for more details.

Files changed (473) hide show
  1. {ccxt-3.0.97/ccxt.egg-info → ccxt-3.0.98}/PKG-INFO +4 -4
  2. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/__init__.py +1 -1
  3. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/__init__.py +1 -1
  4. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/base/exchange.py +1 -1
  5. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/coinex.py +10 -1
  6. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/huobi.py +116 -66
  7. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/phemex.py +2 -2
  8. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/base/exchange.py +1 -1
  9. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/coinex.py +10 -1
  10. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/huobi.py +116 -66
  11. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/phemex.py +2 -2
  12. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/__init__.py +1 -1
  13. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/bitfinex2.py +8 -4
  14. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/test_async.py +3 -5
  15. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/test_sync.py +3 -5
  16. {ccxt-3.0.97 → ccxt-3.0.98/ccxt.egg-info}/PKG-INFO +4 -4
  17. {ccxt-3.0.97 → ccxt-3.0.98}/package.json +1 -1
  18. {ccxt-3.0.97 → ccxt-3.0.98}/LICENSE.txt +0 -0
  19. {ccxt-3.0.97 → ccxt-3.0.98}/MANIFEST.in +0 -0
  20. {ccxt-3.0.97 → ccxt-3.0.98}/README.rst +0 -0
  21. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/__init__.py +0 -0
  22. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/ace.py +0 -0
  23. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/alpaca.py +0 -0
  24. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/ascendex.py +0 -0
  25. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bequant.py +0 -0
  26. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bigone.py +0 -0
  27. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/binance.py +0 -0
  28. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/binancecoinm.py +0 -0
  29. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/binanceus.py +0 -0
  30. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/binanceusdm.py +0 -0
  31. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bit2c.py +0 -0
  32. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitbank.py +0 -0
  33. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitbay.py +0 -0
  34. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitbns.py +0 -0
  35. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitcoincom.py +0 -0
  36. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitfinex.py +0 -0
  37. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitfinex2.py +0 -0
  38. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitflyer.py +0 -0
  39. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitforex.py +0 -0
  40. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitget.py +0 -0
  41. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bithumb.py +0 -0
  42. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitmart.py +0 -0
  43. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitmex.py +0 -0
  44. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitopro.py +0 -0
  45. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitpanda.py +0 -0
  46. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitrue.py +0 -0
  47. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitso.py +0 -0
  48. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitstamp.py +0 -0
  49. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitstamp1.py +0 -0
  50. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bittrex.py +0 -0
  51. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bitvavo.py +0 -0
  52. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bkex.py +0 -0
  53. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bl3p.py +0 -0
  54. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/blockchaincom.py +0 -0
  55. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/btcalpha.py +0 -0
  56. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/btcbox.py +0 -0
  57. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/btcex.py +0 -0
  58. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/btcmarkets.py +0 -0
  59. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/btctradeua.py +0 -0
  60. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/btcturk.py +0 -0
  61. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/bybit.py +0 -0
  62. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/cex.py +0 -0
  63. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/coinbase.py +0 -0
  64. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/coinbaseprime.py +0 -0
  65. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/coinbasepro.py +0 -0
  66. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/coincheck.py +0 -0
  67. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/coinex.py +0 -0
  68. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/coinfalcon.py +0 -0
  69. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/coinmate.py +0 -0
  70. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/coinone.py +0 -0
  71. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/coinsph.py +0 -0
  72. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/coinspot.py +0 -0
  73. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/cryptocom.py +0 -0
  74. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/currencycom.py +0 -0
  75. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/delta.py +0 -0
  76. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/deribit.py +0 -0
  77. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/digifinex.py +0 -0
  78. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/exmo.py +0 -0
  79. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/fmfwio.py +0 -0
  80. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/gate.py +0 -0
  81. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/gateio.py +0 -0
  82. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/gemini.py +0 -0
  83. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/hitbtc.py +0 -0
  84. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/hitbtc3.py +0 -0
  85. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/hollaex.py +0 -0
  86. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/huobi.py +0 -0
  87. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/huobijp.py +0 -0
  88. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/huobipro.py +0 -0
  89. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/idex.py +0 -0
  90. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/independentreserve.py +0 -0
  91. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/indodax.py +0 -0
  92. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/kraken.py +0 -0
  93. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/krakenfutures.py +0 -0
  94. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/kucoin.py +0 -0
  95. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/kucoinfutures.py +0 -0
  96. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/kuna.py +0 -0
  97. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/latoken.py +0 -0
  98. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/lbank.py +0 -0
  99. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/lbank2.py +0 -0
  100. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/luno.py +0 -0
  101. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/lykke.py +0 -0
  102. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/mercado.py +0 -0
  103. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/mexc.py +0 -0
  104. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/mexc3.py +0 -0
  105. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/ndax.py +0 -0
  106. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/novadax.py +0 -0
  107. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/oceanex.py +0 -0
  108. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/okcoin.py +0 -0
  109. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/okex.py +0 -0
  110. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/okex5.py +0 -0
  111. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/okx.py +0 -0
  112. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/paymium.py +0 -0
  113. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/phemex.py +0 -0
  114. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/poloniex.py +0 -0
  115. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/poloniexfutures.py +0 -0
  116. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/probit.py +0 -0
  117. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/stex.py +0 -0
  118. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/tidex.py +0 -0
  119. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/timex.py +0 -0
  120. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/tokocrypto.py +0 -0
  121. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/upbit.py +0 -0
  122. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/wavesexchange.py +0 -0
  123. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/wazirx.py +0 -0
  124. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/whitebit.py +0 -0
  125. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/woo.py +0 -0
  126. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/xt.py +0 -0
  127. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/yobit.py +0 -0
  128. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/zaif.py +0 -0
  129. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/abstract/zonda.py +0 -0
  130. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/ace.py +0 -0
  131. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/alpaca.py +0 -0
  132. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/ascendex.py +0 -0
  133. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/ace.py +0 -0
  134. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/alpaca.py +0 -0
  135. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/ascendex.py +0 -0
  136. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/base/__init__.py +0 -0
  137. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/base/throttler.py +0 -0
  138. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/base/ws/__init__.py +0 -0
  139. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  140. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/base/ws/cache.py +0 -0
  141. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/base/ws/client.py +0 -0
  142. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/base/ws/fast_client.py +0 -0
  143. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/base/ws/functions.py +0 -0
  144. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/base/ws/future.py +0 -0
  145. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/base/ws/order_book.py +0 -0
  146. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  147. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bequant.py +0 -0
  148. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bigone.py +0 -0
  149. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/binance.py +0 -0
  150. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/binancecoinm.py +0 -0
  151. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/binanceus.py +0 -0
  152. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/binanceusdm.py +0 -0
  153. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bit2c.py +0 -0
  154. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitbank.py +0 -0
  155. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitbay.py +0 -0
  156. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitbns.py +0 -0
  157. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitcoincom.py +0 -0
  158. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitfinex.py +0 -0
  159. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitfinex2.py +0 -0
  160. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitflyer.py +0 -0
  161. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitforex.py +0 -0
  162. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitget.py +0 -0
  163. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bithumb.py +0 -0
  164. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitmart.py +0 -0
  165. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitmex.py +0 -0
  166. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitopro.py +0 -0
  167. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitpanda.py +0 -0
  168. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitrue.py +0 -0
  169. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitso.py +0 -0
  170. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitstamp.py +0 -0
  171. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitstamp1.py +0 -0
  172. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bittrex.py +0 -0
  173. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bitvavo.py +0 -0
  174. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bkex.py +0 -0
  175. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bl3p.py +0 -0
  176. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/blockchaincom.py +0 -0
  177. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/btcalpha.py +0 -0
  178. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/btcbox.py +0 -0
  179. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/btcex.py +0 -0
  180. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/btcmarkets.py +0 -0
  181. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/btctradeua.py +0 -0
  182. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/btcturk.py +0 -0
  183. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/buda.py +0 -0
  184. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/bybit.py +0 -0
  185. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/cex.py +0 -0
  186. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/coinbase.py +0 -0
  187. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/coinbaseprime.py +0 -0
  188. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/coinbasepro.py +0 -0
  189. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/coincheck.py +0 -0
  190. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/coinfalcon.py +0 -0
  191. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/coinmate.py +0 -0
  192. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/coinone.py +0 -0
  193. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/coinsph.py +0 -0
  194. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/coinspot.py +0 -0
  195. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/cryptocom.py +0 -0
  196. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/currencycom.py +0 -0
  197. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/delta.py +0 -0
  198. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/deribit.py +0 -0
  199. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/digifinex.py +0 -0
  200. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/exmo.py +0 -0
  201. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/flowbtc.py +0 -0
  202. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/fmfwio.py +0 -0
  203. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/gate.py +0 -0
  204. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/gateio.py +0 -0
  205. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/gemini.py +0 -0
  206. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/hitbtc.py +0 -0
  207. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/hitbtc3.py +0 -0
  208. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/hollaex.py +0 -0
  209. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/huobijp.py +0 -0
  210. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/huobipro.py +0 -0
  211. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/idex.py +0 -0
  212. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/independentreserve.py +0 -0
  213. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/indodax.py +0 -0
  214. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/itbit.py +0 -0
  215. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/kraken.py +0 -0
  216. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/krakenfutures.py +0 -0
  217. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/kucoin.py +0 -0
  218. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/kucoinfutures.py +0 -0
  219. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/kuna.py +0 -0
  220. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/latoken.py +0 -0
  221. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/lbank.py +0 -0
  222. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/lbank2.py +0 -0
  223. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/luno.py +0 -0
  224. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/lykke.py +0 -0
  225. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/mercado.py +0 -0
  226. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/mexc.py +0 -0
  227. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/mexc3.py +0 -0
  228. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/ndax.py +0 -0
  229. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/novadax.py +0 -0
  230. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/oceanex.py +0 -0
  231. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/okcoin.py +0 -0
  232. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/okex.py +0 -0
  233. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/okex5.py +0 -0
  234. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/okx.py +0 -0
  235. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/paymium.py +0 -0
  236. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/poloniex.py +0 -0
  237. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/poloniexfutures.py +0 -0
  238. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/probit.py +0 -0
  239. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/ripio.py +0 -0
  240. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/stex.py +0 -0
  241. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/tidex.py +0 -0
  242. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/timex.py +0 -0
  243. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/tokocrypto.py +0 -0
  244. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/upbit.py +0 -0
  245. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/wavesexchange.py +0 -0
  246. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/wazirx.py +0 -0
  247. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/whitebit.py +0 -0
  248. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/woo.py +0 -0
  249. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/xt.py +0 -0
  250. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/yobit.py +0 -0
  251. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/zaif.py +0 -0
  252. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/zb.py +0 -0
  253. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/async_support/zonda.py +0 -0
  254. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/base/__init__.py +0 -0
  255. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/base/decimal_to_precision.py +0 -0
  256. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/base/errors.py +0 -0
  257. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/base/precise.py +0 -0
  258. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/base/types.py +0 -0
  259. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bequant.py +0 -0
  260. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bigone.py +0 -0
  261. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/binance.py +0 -0
  262. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/binancecoinm.py +0 -0
  263. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/binanceus.py +0 -0
  264. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/binanceusdm.py +0 -0
  265. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bit2c.py +0 -0
  266. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitbank.py +0 -0
  267. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitbay.py +0 -0
  268. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitbns.py +0 -0
  269. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitcoincom.py +0 -0
  270. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitfinex.py +0 -0
  271. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitfinex2.py +0 -0
  272. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitflyer.py +0 -0
  273. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitforex.py +0 -0
  274. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitget.py +0 -0
  275. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bithumb.py +0 -0
  276. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitmart.py +0 -0
  277. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitmex.py +0 -0
  278. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitopro.py +0 -0
  279. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitpanda.py +0 -0
  280. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitrue.py +0 -0
  281. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitso.py +0 -0
  282. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitstamp.py +0 -0
  283. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitstamp1.py +0 -0
  284. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bittrex.py +0 -0
  285. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bitvavo.py +0 -0
  286. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bkex.py +0 -0
  287. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bl3p.py +0 -0
  288. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/blockchaincom.py +0 -0
  289. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/btcalpha.py +0 -0
  290. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/btcbox.py +0 -0
  291. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/btcex.py +0 -0
  292. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/btcmarkets.py +0 -0
  293. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/btctradeua.py +0 -0
  294. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/btcturk.py +0 -0
  295. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/buda.py +0 -0
  296. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/bybit.py +0 -0
  297. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/cex.py +0 -0
  298. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/coinbase.py +0 -0
  299. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/coinbaseprime.py +0 -0
  300. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/coinbasepro.py +0 -0
  301. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/coincheck.py +0 -0
  302. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/coinfalcon.py +0 -0
  303. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/coinmate.py +0 -0
  304. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/coinone.py +0 -0
  305. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/coinsph.py +0 -0
  306. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/coinspot.py +0 -0
  307. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/cryptocom.py +0 -0
  308. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/currencycom.py +0 -0
  309. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/delta.py +0 -0
  310. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/deribit.py +0 -0
  311. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/digifinex.py +0 -0
  312. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/exmo.py +0 -0
  313. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/flowbtc.py +0 -0
  314. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/fmfwio.py +0 -0
  315. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/gate.py +0 -0
  316. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/gateio.py +0 -0
  317. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/gemini.py +0 -0
  318. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/hitbtc.py +0 -0
  319. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/hitbtc3.py +0 -0
  320. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/hollaex.py +0 -0
  321. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/huobijp.py +0 -0
  322. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/huobipro.py +0 -0
  323. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/idex.py +0 -0
  324. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/independentreserve.py +0 -0
  325. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/indodax.py +0 -0
  326. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/itbit.py +0 -0
  327. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/kraken.py +0 -0
  328. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/krakenfutures.py +0 -0
  329. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/kucoin.py +0 -0
  330. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/kucoinfutures.py +0 -0
  331. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/kuna.py +0 -0
  332. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/latoken.py +0 -0
  333. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/lbank.py +0 -0
  334. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/lbank2.py +0 -0
  335. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/luno.py +0 -0
  336. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/lykke.py +0 -0
  337. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/mercado.py +0 -0
  338. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/mexc.py +0 -0
  339. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/mexc3.py +0 -0
  340. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/ndax.py +0 -0
  341. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/novadax.py +0 -0
  342. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/oceanex.py +0 -0
  343. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/okcoin.py +0 -0
  344. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/okex.py +0 -0
  345. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/okex5.py +0 -0
  346. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/okx.py +0 -0
  347. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/paymium.py +0 -0
  348. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/poloniex.py +0 -0
  349. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/poloniexfutures.py +0 -0
  350. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/alpaca.py +0 -0
  351. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/ascendex.py +0 -0
  352. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/bequant.py +0 -0
  353. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/binance.py +0 -0
  354. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/binancecoinm.py +0 -0
  355. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/binanceus.py +0 -0
  356. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/binanceusdm.py +0 -0
  357. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/bitcoincom.py +0 -0
  358. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/bitfinex.py +0 -0
  359. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/bitget.py +0 -0
  360. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/bitmart.py +0 -0
  361. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/bitmex.py +0 -0
  362. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/bitopro.py +0 -0
  363. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/bitrue.py +0 -0
  364. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/bitstamp.py +0 -0
  365. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/bittrex.py +0 -0
  366. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/bitvavo.py +0 -0
  367. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/btcex.py +0 -0
  368. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/bybit.py +0 -0
  369. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/cex.py +0 -0
  370. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/coinbaseprime.py +0 -0
  371. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/coinbasepro.py +0 -0
  372. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/coinex.py +0 -0
  373. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/cryptocom.py +0 -0
  374. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/currencycom.py +0 -0
  375. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/deribit.py +0 -0
  376. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/exmo.py +0 -0
  377. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/gate.py +0 -0
  378. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/gateio.py +0 -0
  379. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/gemini.py +0 -0
  380. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/hitbtc.py +0 -0
  381. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/hollaex.py +0 -0
  382. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/huobi.py +0 -0
  383. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/huobijp.py +0 -0
  384. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/huobipro.py +0 -0
  385. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/idex.py +0 -0
  386. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/independentreserve.py +0 -0
  387. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/kraken.py +0 -0
  388. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/krakenfutures.py +0 -0
  389. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/kucoin.py +0 -0
  390. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/kucoinfutures.py +0 -0
  391. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/luno.py +0 -0
  392. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/mexc.py +0 -0
  393. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/mexc3.py +0 -0
  394. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/ndax.py +0 -0
  395. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/okcoin.py +0 -0
  396. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/okex.py +0 -0
  397. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/okx.py +0 -0
  398. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/phemex.py +0 -0
  399. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/probit.py +0 -0
  400. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/ripio.py +0 -0
  401. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/upbit.py +0 -0
  402. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/wazirx.py +0 -0
  403. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/whitebit.py +0 -0
  404. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/woo.py +0 -0
  405. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/pro/zb.py +0 -0
  406. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/probit.py +0 -0
  407. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/ripio.py +0 -0
  408. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/static_dependencies/__init__.py +0 -0
  409. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  410. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  411. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  412. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  413. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  414. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  415. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  416. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  417. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  418. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  419. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  420. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  421. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/stex.py +0 -0
  422. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/__init__.py +0 -0
  423. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/__init__.py +0 -0
  424. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_account.py +0 -0
  425. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_balance.py +0 -0
  426. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_borrow_interest.py +0 -0
  427. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_borrow_rate.py +0 -0
  428. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_calculate_fee.py +0 -0
  429. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_crypto.py +0 -0
  430. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_currency.py +0 -0
  431. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_datetime.py +0 -0
  432. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  433. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_deep_extend.py +0 -0
  434. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  435. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  436. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_funding_rate_history.py +0 -0
  437. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_ledger_entry.py +0 -0
  438. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_ledger_item.py +0 -0
  439. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_leverage_tier.py +0 -0
  440. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_margin_modification.py +0 -0
  441. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_market.py +0 -0
  442. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_number.py +0 -0
  443. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_ohlcv.py +0 -0
  444. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_open_interest.py +0 -0
  445. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_order.py +0 -0
  446. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_order_book.py +0 -0
  447. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_position.py +0 -0
  448. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_shared_methods.py +0 -0
  449. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_status.py +0 -0
  450. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_throttle.py +0 -0
  451. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_ticker.py +0 -0
  452. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_trade.py +0 -0
  453. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_trading_fee.py +0 -0
  454. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/test/base/test_transaction.py +0 -0
  455. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/tidex.py +0 -0
  456. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/timex.py +0 -0
  457. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/tokocrypto.py +0 -0
  458. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/upbit.py +0 -0
  459. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/wavesexchange.py +0 -0
  460. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/wazirx.py +0 -0
  461. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/whitebit.py +0 -0
  462. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/woo.py +0 -0
  463. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/xt.py +0 -0
  464. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/yobit.py +0 -0
  465. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/zaif.py +0 -0
  466. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/zb.py +0 -0
  467. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt/zonda.py +0 -0
  468. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt.egg-info/SOURCES.txt +0 -0
  469. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt.egg-info/dependency_links.txt +0 -0
  470. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt.egg-info/requires.txt +0 -0
  471. {ccxt-3.0.97 → ccxt-3.0.98}/ccxt.egg-info/top_level.txt +0 -0
  472. {ccxt-3.0.97 → ccxt-3.0.98}/setup.cfg +0 -0
  473. {ccxt-3.0.97 → ccxt-3.0.98}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 3.0.97
3
+ Version: 3.0.98
4
4
  Summary: A JavaScript / Python / PHP cryptocurrency trading library with support for 130+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -231,13 +231,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
231
231
 
232
232
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
233
233
 
234
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@3.0.97/dist/ccxt.browser.js
235
- * unpkg: https://unpkg.com/ccxt@3.0.97/dist/ccxt.browser.js
234
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@3.0.98/dist/ccxt.browser.js
235
+ * unpkg: https://unpkg.com/ccxt@3.0.98/dist/ccxt.browser.js
236
236
 
237
237
  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.
238
238
 
239
239
  ```HTML
240
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@3.0.97/dist/ccxt.browser.js"></script>
240
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@3.0.98/dist/ccxt.browser.js"></script>
241
241
  ```
242
242
 
243
243
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '3.0.97'
25
+ __version__ = '3.0.98'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '3.0.97'
7
+ __version__ = '3.0.98'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '3.0.97'
5
+ __version__ = '3.0.98'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1679,6 +1679,12 @@ class coinex(Exchange, ImplicitAPI):
1679
1679
  async def create_order(self, symbol: str, type, side: OrderSide, amount, price=None, params={}):
1680
1680
  """
1681
1681
  create a trade order
1682
+ see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http017_put_limit
1683
+ see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http018_put_market
1684
+ see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http019_put_limit_stop
1685
+ see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http020_put_market_stop
1686
+ see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http031_market_close
1687
+ see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http030_limit_close
1682
1688
  :param str symbol: unified symbol of the market to create an order in
1683
1689
  :param str type: 'market' or 'limit'
1684
1690
  :param str side: 'buy' or 'sell'
@@ -1692,6 +1698,7 @@ class coinex(Exchange, ImplicitAPI):
1692
1698
  :param str params['timeInForce']: "GTC", "IOC", "FOK", "PO"
1693
1699
  :param bool params.postOnly:
1694
1700
  :param bool params.reduceOnly:
1701
+ :param bool|None params['position_id']: *required for reduce only orders* the position id to reduce
1695
1702
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1696
1703
  """
1697
1704
  await self.load_markets()
@@ -1706,9 +1713,11 @@ class coinex(Exchange, ImplicitAPI):
1706
1713
  positionId = self.safe_integer_2(params, 'position_id', 'positionId') # Required for closing swap positions
1707
1714
  timeInForceRaw = self.safe_string(params, 'timeInForce') # Spot: IOC, FOK, PO, GTC, ... NORMAL(default), MAKER_ONLY
1708
1715
  reduceOnly = self.safe_value(params, 'reduceOnly')
1709
- if reduceOnly is not None:
1716
+ if reduceOnly:
1710
1717
  if market['type'] != 'swap':
1711
1718
  raise InvalidOrder(self.id + ' createOrder() does not support reduceOnly for ' + market['type'] + ' orders, reduceOnly orders are supported for swap markets only')
1719
+ if positionId is None:
1720
+ raise ArgumentsRequired(self.id + ' createOrder() requires a position_id/positionId parameter for reduceOnly orders')
1712
1721
  method = None
1713
1722
  request = {
1714
1723
  'market': market['id'],
@@ -2309,8 +2309,7 @@ class huobi(Exchange, ImplicitAPI):
2309
2309
  # request['end-time'] = self.sum(since, 172800000) # 48 hours window
2310
2310
  method = 'spotPrivateGetV1OrderMatchresults'
2311
2311
  else:
2312
- if symbol is None:
2313
- raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol for ' + marketType + ' orders')
2312
+ self.check_required_symbol('fetchMyTrades', symbol)
2314
2313
  request['contract'] = market['id']
2315
2314
  request['trade_type'] = 0 # 0 all, 1 open long, 2 open short, 3 close short, 4 close long, 5 liquidate long positions, 6 liquidate short positions
2316
2315
  if since is not None:
@@ -3095,8 +3094,7 @@ class huobi(Exchange, ImplicitAPI):
3095
3094
  else:
3096
3095
  request['order-id'] = id
3097
3096
  else:
3098
- if symbol is None:
3099
- raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol for ' + marketType + ' orders')
3097
+ self.check_required_symbol('fetchOrder', symbol)
3100
3098
  request['contract_code'] = market['id']
3101
3099
  if market['linear']:
3102
3100
  marginMode = None
@@ -3266,8 +3264,7 @@ class huobi(Exchange, ImplicitAPI):
3266
3264
  async def fetch_spot_orders_by_states(self, states, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
3267
3265
  method = self.safe_string(self.options, 'fetchOrdersByStatesMethod', 'spot_private_get_v1_order_orders') # spot_private_get_v1_order_history
3268
3266
  if method == 'spot_private_get_v1_order_orders':
3269
- if symbol is None:
3270
- raise ArgumentsRequired(self.id + ' fetchOrders() requires a symbol argument')
3267
+ self.check_required_symbol('fetchOrders', symbol)
3271
3268
  await self.load_markets()
3272
3269
  market = None
3273
3270
  request = {
@@ -3332,8 +3329,7 @@ class huobi(Exchange, ImplicitAPI):
3332
3329
  return await self.fetch_spot_orders_by_states('filled,partial-canceled,canceled', symbol, since, limit, params)
3333
3330
 
3334
3331
  async def fetch_contract_orders(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
3335
- if symbol is None:
3336
- raise ArgumentsRequired(self.id + ' fetchContractOrders() requires a symbol argument')
3332
+ self.check_required_symbol('fetchContractOrders', symbol)
3337
3333
  await self.load_markets()
3338
3334
  market = self.market(symbol)
3339
3335
  request = {
@@ -3640,8 +3636,7 @@ class huobi(Exchange, ImplicitAPI):
3640
3636
  params = self.omit(params, 'account-id')
3641
3637
  response = await self.spotPrivateGetV1OrderOpenOrders(self.extend(request, params))
3642
3638
  else:
3643
- if symbol is None:
3644
- raise ArgumentsRequired(self.id + ' fetchOpenOrders() requires a symbol for ' + marketType + ' orders')
3639
+ self.check_required_symbol('fetchOpenOrders', symbol)
3645
3640
  if limit is not None:
3646
3641
  request['page_size'] = limit
3647
3642
  request['contract_code'] = market['id']
@@ -4518,8 +4513,7 @@ class huobi(Exchange, ImplicitAPI):
4518
4513
  params = self.omit(params, ['client-order-id', 'clientOrderId'])
4519
4514
  response = await self.spotPrivatePostV1OrderOrdersSubmitCancelClientOrder(self.extend(request, params))
4520
4515
  else:
4521
- if symbol is None:
4522
- raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol for ' + marketType + ' orders')
4516
+ self.check_required_symbol('cancelOrder', symbol)
4523
4517
  clientOrderId = self.safe_string_2(params, 'client_order_id', 'clientOrderId')
4524
4518
  if clientOrderId is None:
4525
4519
  request['order_id'] = id
@@ -4598,6 +4592,8 @@ class huobi(Exchange, ImplicitAPI):
4598
4592
  :param [str] ids: order ids
4599
4593
  :param str|None symbol: unified market symbol, default is None
4600
4594
  :param dict params: extra parameters specific to the huobi api endpoint
4595
+ :param bool|None params['stop']: *contract only* if the orders are stop trigger orders or not
4596
+ :param bool|None params['stopLossTakeProfit']: *contract only* if the orders are stop-loss or take-profit orders
4601
4597
  :returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
4602
4598
  """
4603
4599
  await self.load_markets()
@@ -4608,7 +4604,7 @@ class huobi(Exchange, ImplicitAPI):
4608
4604
  marketType, params = self.handle_market_type_and_params('cancelOrders', market, params)
4609
4605
  request = {
4610
4606
  # spot -----------------------------------------------------------
4611
- # 'order-ids': ids.jsoin(','), # max 50
4607
+ # 'order-ids': ','.join(ids), # max 50
4612
4608
  # 'client-order-ids': ','.join(ids), # max 50
4613
4609
  # contracts ------------------------------------------------------
4614
4610
  # 'order_id': id, # comma separated, max 10
@@ -4616,43 +4612,24 @@ class huobi(Exchange, ImplicitAPI):
4616
4612
  # 'contract_code': market['id'],
4617
4613
  # 'symbol': market['settleId'],
4618
4614
  }
4619
- method = None
4615
+ response = None
4620
4616
  if marketType == 'spot':
4621
4617
  clientOrderIds = self.safe_value_2(params, 'client-order-id', 'clientOrderId')
4622
4618
  clientOrderIds = self.safe_value_2(params, 'client-order-ids', 'clientOrderIds', clientOrderIds)
4623
4619
  if clientOrderIds is None:
4624
4620
  if isinstance(clientOrderIds, str):
4625
- request['order-ids'] = ids
4621
+ request['order-ids'] = [ids]
4626
4622
  else:
4627
- request['order-ids'] = ','.join(ids)
4623
+ request['order-ids'] = ids
4628
4624
  else:
4629
4625
  if isinstance(clientOrderIds, str):
4630
- request['client-order-ids'] = clientOrderIds
4626
+ request['client-order-ids'] = [clientOrderIds]
4631
4627
  else:
4632
- request['client-order-ids'] = ','.join(clientOrderIds)
4628
+ request['client-order-ids'] = clientOrderIds
4633
4629
  params = self.omit(params, ['client-order-id', 'client-order-ids', 'clientOrderId', 'clientOrderIds'])
4634
- method = 'spotPrivatePostV1OrderOrdersBatchcancel'
4630
+ response = await self.spotPrivatePostV1OrderOrdersBatchcancel(self.extend(request, params))
4635
4631
  else:
4636
- if symbol is None:
4637
- raise ArgumentsRequired(self.id + ' cancelOrders() requires a symbol for ' + marketType + ' orders')
4638
- marketInner = self.market(symbol)
4639
- request['contract_code'] = marketInner['id']
4640
- if marketInner['linear']:
4641
- marginMode = None
4642
- marginMode, params = self.handle_margin_mode_and_params('cancelOrders', params)
4643
- marginMode = 'cross' if (marginMode is None) else marginMode
4644
- if marginMode == 'isolated':
4645
- method = 'contractPrivatePostLinearSwapApiV1SwapCancel'
4646
- elif marginMode == 'cross':
4647
- method = 'contractPrivatePostLinearSwapApiV1SwapCrossCancel'
4648
- elif marketInner['inverse']:
4649
- if marketInner['future']:
4650
- method = 'contractPrivatePostApiV1ContractCancel'
4651
- request['symbol'] = marketInner['settleId']
4652
- elif marketInner['swap']:
4653
- method = 'contractPrivatePostSwapApiV1SwapCancel'
4654
- else:
4655
- raise NotSupported(self.id + ' cancelOrders() does not support ' + marketType + ' markets')
4632
+ self.check_required_symbol('cancelOrders', symbol)
4656
4633
  clientOrderIds = self.safe_string_2(params, 'client_order_id', 'clientOrderId')
4657
4634
  clientOrderIds = self.safe_string_2(params, 'client_order_ids', 'clientOrderIds', clientOrderIds)
4658
4635
  if clientOrderIds is None:
@@ -4660,7 +4637,48 @@ class huobi(Exchange, ImplicitAPI):
4660
4637
  else:
4661
4638
  request['client_order_id'] = clientOrderIds
4662
4639
  params = self.omit(params, ['client_order_id', 'client_order_ids', 'clientOrderId', 'clientOrderIds'])
4663
- response = await getattr(self, method)(self.extend(request, params))
4640
+ if market['future']:
4641
+ request['symbol'] = market['settleId']
4642
+ else:
4643
+ request['contract_code'] = market['id']
4644
+ stop = self.safe_value(params, 'stop')
4645
+ stopLossTakeProfit = self.safe_value(params, 'stopLossTakeProfit')
4646
+ params = self.omit(params, ['stop', 'stopLossTakeProfit'])
4647
+ if market['linear']:
4648
+ marginMode = None
4649
+ marginMode, params = self.handle_margin_mode_and_params('cancelOrders', params)
4650
+ marginMode = 'cross' if (marginMode is None) else marginMode
4651
+ if marginMode == 'isolated':
4652
+ if stop:
4653
+ response = await self.contractPrivatePostLinearSwapApiV1SwapTriggerCancel(self.extend(request, params))
4654
+ elif stopLossTakeProfit:
4655
+ response = await self.contractPrivatePostLinearSwapApiV1SwapTpslCancel(self.extend(request, params))
4656
+ else:
4657
+ response = await self.contractPrivatePostLinearSwapApiV1SwapCancel(self.extend(request, params))
4658
+ elif marginMode == 'cross':
4659
+ if stop:
4660
+ response = await self.contractPrivatePostLinearSwapApiV1SwapCrossTriggerCancel(self.extend(request, params))
4661
+ elif stopLossTakeProfit:
4662
+ response = await self.contractPrivatePostLinearSwapApiV1SwapCrossTpslCancel(self.extend(request, params))
4663
+ else:
4664
+ response = await self.contractPrivatePostLinearSwapApiV1SwapCrossCancel(self.extend(request, params))
4665
+ elif market['inverse']:
4666
+ if market['swap']:
4667
+ if stop:
4668
+ response = await self.contractPrivatePostSwapApiV1SwapTriggerCancel(self.extend(request, params))
4669
+ elif stopLossTakeProfit:
4670
+ response = await self.contractPrivatePostSwapApiV1SwapTpslCancel(self.extend(request, params))
4671
+ else:
4672
+ response = await self.contractPrivatePostSwapApiV1SwapCancel(self.extend(request, params))
4673
+ elif market['future']:
4674
+ if stop:
4675
+ response = await self.contractPrivatePostApiV1ContractTriggerCancel(self.extend(request, params))
4676
+ elif stopLossTakeProfit:
4677
+ response = await self.contractPrivatePostApiV1ContractTpslCancel(self.extend(request, params))
4678
+ else:
4679
+ response = await self.contractPrivatePostApiV1ContractCancel(self.extend(request, params))
4680
+ else:
4681
+ raise NotSupported(self.id + ' cancelOrders() does not support ' + marketType + ' markets')
4664
4682
  #
4665
4683
  # spot
4666
4684
  #
@@ -4695,7 +4713,7 @@ class huobi(Exchange, ImplicitAPI):
4695
4713
  # }
4696
4714
  # }
4697
4715
  #
4698
- # contracts
4716
+ # future and swap
4699
4717
  #
4700
4718
  # {
4701
4719
  # "status": "ok",
@@ -4719,6 +4737,8 @@ class huobi(Exchange, ImplicitAPI):
4719
4737
  cancel all open orders
4720
4738
  :param str|None symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
4721
4739
  :param dict params: extra parameters specific to the huobi api endpoint
4740
+ :param bool|None params['stop']: *contract only* if the orders are stop trigger orders or not
4741
+ :param bool|None params['stopLossTakeProfit']: *contract only* if the orders are stop-loss or take-profit orders
4722
4742
  :returns [dict]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
4723
4743
  """
4724
4744
  await self.load_markets()
@@ -4741,34 +4761,56 @@ class huobi(Exchange, ImplicitAPI):
4741
4761
  # 'direction': 'buy': # buy, sell
4742
4762
  # 'offset': 'open', # open, close
4743
4763
  }
4744
- method = None
4764
+ response = None
4745
4765
  if marketType == 'spot':
4746
4766
  if symbol is not None:
4747
- market = self.market(symbol)
4748
4767
  request['symbol'] = market['id']
4749
- method = 'spotPrivatePostV1OrderOrdersBatchCancelOpenOrders'
4768
+ response = await self.spotPrivatePostV1OrderOrdersBatchCancelOpenOrders(self.extend(request, params))
4750
4769
  else:
4751
- if symbol is None:
4752
- raise ArgumentsRequired(self.id + ' cancelAllOrders() requires a symbol for ' + marketType + ' orders')
4753
- marketInner = self.market(symbol)
4754
- request['contract_code'] = marketInner['id']
4755
- if marketInner['linear']:
4770
+ self.check_required_symbol('cancelAllOrders', symbol)
4771
+ if market['future']:
4772
+ request['symbol'] = market['settleId']
4773
+ request['contract_code'] = market['id']
4774
+ stop = self.safe_value(params, 'stop')
4775
+ stopLossTakeProfit = self.safe_value(params, 'stopLossTakeProfit')
4776
+ params = self.omit(params, ['stop', 'stopLossTakeProfit'])
4777
+ if market['linear']:
4756
4778
  marginMode = None
4757
4779
  marginMode, params = self.handle_margin_mode_and_params('cancelAllOrders', params)
4758
4780
  marginMode = 'cross' if (marginMode is None) else marginMode
4759
4781
  if marginMode == 'isolated':
4760
- method = 'contractPrivatePostLinearSwapApiV1SwapCancelallall'
4782
+ if stop:
4783
+ response = await self.contractPrivatePostLinearSwapApiV1SwapTriggerCancelall(self.extend(request, params))
4784
+ elif stopLossTakeProfit:
4785
+ response = await self.contractPrivatePostLinearSwapApiV1SwapTpslCancelall(self.extend(request, params))
4786
+ else:
4787
+ response = await self.contractPrivatePostLinearSwapApiV1SwapCancelall(self.extend(request, params))
4761
4788
  elif marginMode == 'cross':
4762
- method = 'contractPrivatePostLinearSwapApiV1SwapCrossCancelall'
4763
- elif marketInner['inverse']:
4764
- if marketType == 'future':
4765
- method = 'contractPrivatePostApiV1ContractCancelall'
4766
- request['symbol'] = marketInner['settleId']
4767
- elif marketType == 'swap':
4768
- method = 'contractPrivatePostSwapApiV1SwapCancelall'
4769
- else:
4770
- raise NotSupported(self.id + ' cancelAllOrders() does not support ' + marketType + ' markets')
4771
- response = await getattr(self, method)(self.extend(request, params))
4789
+ if stop:
4790
+ response = await self.contractPrivatePostLinearSwapApiV1SwapCrossTriggerCancelall(self.extend(request, params))
4791
+ elif stopLossTakeProfit:
4792
+ response = await self.contractPrivatePostLinearSwapApiV1SwapCrossTpslCancelall(self.extend(request, params))
4793
+ else:
4794
+ response = await self.contractPrivatePostLinearSwapApiV1SwapCrossCancelall(self.extend(request, params))
4795
+ elif market['inverse']:
4796
+ if market['swap']:
4797
+ if stop:
4798
+ response = await self.contractPrivatePostSwapApiV1SwapTriggerCancelall(self.extend(request, params))
4799
+ elif stopLossTakeProfit:
4800
+ response = await self.contractPrivatePostSwapApiV1SwapTpslCancelall(self.extend(request, params))
4801
+ else:
4802
+ response = await self.contractPrivatePostSwapApiV1SwapCancelall(self.extend(request, params))
4803
+ elif market['future']:
4804
+ if stop:
4805
+ response = await self.contractPrivatePostApiV1ContractTriggerCancelall(self.extend(request, params))
4806
+ elif stopLossTakeProfit:
4807
+ response = await self.contractPrivatePostApiV1ContractTpslCancelall(self.extend(request, params))
4808
+ else:
4809
+ response = await self.contractPrivatePostApiV1ContractCancelall(self.extend(request, params))
4810
+ else:
4811
+ raise NotSupported(self.id + ' cancelAllOrders() does not support ' + marketType + ' markets')
4812
+ #
4813
+ # spot
4772
4814
  #
4773
4815
  # {
4774
4816
  # code: 200,
@@ -4779,6 +4821,17 @@ class huobi(Exchange, ImplicitAPI):
4779
4821
  # }
4780
4822
  # }
4781
4823
  #
4824
+ # future and swap
4825
+ #
4826
+ # {
4827
+ # status: "ok",
4828
+ # data: {
4829
+ # errors: [],
4830
+ # successes: "1104754904426696704"
4831
+ # },
4832
+ # ts: "1683435723755"
4833
+ # }
4834
+ #
4782
4835
  return response
4783
4836
 
4784
4837
  def parse_deposit_address(self, depositAddress, currency=None):
@@ -5380,8 +5433,7 @@ class huobi(Exchange, ImplicitAPI):
5380
5433
  :param dict params: extra parameters specific to the huobi api endpoint
5381
5434
  :returns [dict]: a list of `funding rate structures <https://docs.ccxt.com/en/latest/manual.html?#funding-rate-history-structure>`
5382
5435
  """
5383
- if symbol is None:
5384
- raise ArgumentsRequired(self.id + ' fetchFundingRateHistory() requires a symbol argument')
5436
+ self.check_required_symbol('fetchFundingRateHistory', symbol)
5385
5437
  await self.load_markets()
5386
5438
  market = self.market(symbol)
5387
5439
  request = {
@@ -5885,8 +5937,7 @@ class huobi(Exchange, ImplicitAPI):
5885
5937
  :param dict params: extra parameters specific to the huobi api endpoint
5886
5938
  :returns dict: response from the exchange
5887
5939
  """
5888
- if symbol is None:
5889
- raise ArgumentsRequired(self.id + ' setLeverage() requires a symbol argument')
5940
+ self.check_required_symbol('setLeverage', symbol)
5890
5941
  await self.load_markets()
5891
5942
  market = self.market(symbol)
5892
5943
  marketType, query = self.handle_market_type_and_params('setLeverage', market, params)
@@ -6965,8 +7016,7 @@ class huobi(Exchange, ImplicitAPI):
6965
7016
  marginMode = 'cross' if (marginMode is None) else marginMode
6966
7017
  method = None
6967
7018
  if marginMode == 'isolated':
6968
- if symbol is None:
6969
- raise ArgumentsRequired(self.id + ' borrowMargin() requires a symbol argument for isolated margin')
7019
+ self.check_required_symbol('borrowMargin', symbol)
6970
7020
  market = self.market(symbol)
6971
7021
  request['symbol'] = market['id']
6972
7022
  method = 'privatePostMarginOrders'
@@ -2399,7 +2399,7 @@ class phemex(Exchange, ImplicitAPI):
2399
2399
  :param float amount: how much of currency you want to trade in units of base currency
2400
2400
  :param float|None price: the price at which the order is to be fullfilled, in units of the base currency, ignored in market orders
2401
2401
  :param dict params: extra parameters specific to the phemex api endpoint
2402
- :param str|None params['posSide']: either 'Hedged' or 'OneWay' or 'Merged'
2402
+ :param str|None params['posSide']: either 'Merged' or 'Long' or 'Short'
2403
2403
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2404
2404
  """
2405
2405
  if symbol is None:
@@ -2457,7 +2457,7 @@ class phemex(Exchange, ImplicitAPI):
2457
2457
  :param str id: order id
2458
2458
  :param str symbol: unified symbol of the market the order was made in
2459
2459
  :param dict params: extra parameters specific to the phemex api endpoint
2460
- :param str|None params['posSide']: either 'Hedged' or 'OneWay' or 'Merged'
2460
+ :param str|None params['posSide']: either 'Merged' or 'Long' or 'Short'
2461
2461
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2462
2462
  """
2463
2463
  if symbol is None:
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '3.0.97'
7
+ __version__ = '3.0.98'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -1678,6 +1678,12 @@ class coinex(Exchange, ImplicitAPI):
1678
1678
  def create_order(self, symbol: str, type, side: OrderSide, amount, price=None, params={}):
1679
1679
  """
1680
1680
  create a trade order
1681
+ see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http017_put_limit
1682
+ see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http018_put_market
1683
+ see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http019_put_limit_stop
1684
+ see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http020_put_market_stop
1685
+ see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http031_market_close
1686
+ see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http030_limit_close
1681
1687
  :param str symbol: unified symbol of the market to create an order in
1682
1688
  :param str type: 'market' or 'limit'
1683
1689
  :param str side: 'buy' or 'sell'
@@ -1691,6 +1697,7 @@ class coinex(Exchange, ImplicitAPI):
1691
1697
  :param str params['timeInForce']: "GTC", "IOC", "FOK", "PO"
1692
1698
  :param bool params.postOnly:
1693
1699
  :param bool params.reduceOnly:
1700
+ :param bool|None params['position_id']: *required for reduce only orders* the position id to reduce
1694
1701
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1695
1702
  """
1696
1703
  self.load_markets()
@@ -1705,9 +1712,11 @@ class coinex(Exchange, ImplicitAPI):
1705
1712
  positionId = self.safe_integer_2(params, 'position_id', 'positionId') # Required for closing swap positions
1706
1713
  timeInForceRaw = self.safe_string(params, 'timeInForce') # Spot: IOC, FOK, PO, GTC, ... NORMAL(default), MAKER_ONLY
1707
1714
  reduceOnly = self.safe_value(params, 'reduceOnly')
1708
- if reduceOnly is not None:
1715
+ if reduceOnly:
1709
1716
  if market['type'] != 'swap':
1710
1717
  raise InvalidOrder(self.id + ' createOrder() does not support reduceOnly for ' + market['type'] + ' orders, reduceOnly orders are supported for swap markets only')
1718
+ if positionId is None:
1719
+ raise ArgumentsRequired(self.id + ' createOrder() requires a position_id/positionId parameter for reduceOnly orders')
1711
1720
  method = None
1712
1721
  request = {
1713
1722
  'market': market['id'],