ccxt 2.9.7__tar.gz → 2.9.9__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 (340) hide show
  1. {ccxt-2.9.7/ccxt.egg-info → ccxt-2.9.9}/PKG-INFO +6 -6
  2. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/__init__.py +1 -1
  3. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/__init__.py +1 -1
  4. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/base/exchange.py +3 -1
  5. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitget.py +12 -12
  6. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bithumb.py +37 -34
  7. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/btcex.py +5 -1
  8. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/gate.py +11 -2
  9. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/okx.py +13 -8
  10. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/base/exchange.py +3 -1
  11. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitget.py +12 -12
  12. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bithumb.py +37 -34
  13. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/btcex.py +5 -1
  14. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/gate.py +11 -2
  15. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/okx.py +13 -8
  16. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/__init__.py +1 -1
  17. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/base/exchange.py +1 -1
  18. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/huobi.py +28 -24
  19. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/huobijp.py +27 -23
  20. {ccxt-2.9.7 → ccxt-2.9.9/ccxt.egg-info}/PKG-INFO +6 -6
  21. {ccxt-2.9.7 → ccxt-2.9.9}/package.json +1 -1
  22. {ccxt-2.9.7 → ccxt-2.9.9}/LICENSE.txt +0 -0
  23. {ccxt-2.9.7 → ccxt-2.9.9}/MANIFEST.in +0 -0
  24. {ccxt-2.9.7 → ccxt-2.9.9}/README.rst +0 -0
  25. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/ace.py +0 -0
  26. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/alpaca.py +0 -0
  27. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/ascendex.py +0 -0
  28. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/ace.py +0 -0
  29. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/alpaca.py +0 -0
  30. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/ascendex.py +0 -0
  31. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/base/__init__.py +0 -0
  32. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/base/throttler.py +0 -0
  33. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bequant.py +0 -0
  34. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bigone.py +0 -0
  35. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/binance.py +0 -0
  36. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/binancecoinm.py +0 -0
  37. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/binanceus.py +0 -0
  38. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/binanceusdm.py +0 -0
  39. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bit2c.py +0 -0
  40. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitbank.py +0 -0
  41. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitbay.py +0 -0
  42. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitbns.py +0 -0
  43. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitcoincom.py +0 -0
  44. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitfinex.py +0 -0
  45. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitfinex2.py +0 -0
  46. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitflyer.py +0 -0
  47. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitforex.py +0 -0
  48. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitmart.py +0 -0
  49. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitmex.py +0 -0
  50. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitopro.py +0 -0
  51. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitpanda.py +0 -0
  52. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitrue.py +0 -0
  53. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitso.py +0 -0
  54. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitstamp.py +0 -0
  55. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitstamp1.py +0 -0
  56. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bittrex.py +0 -0
  57. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bitvavo.py +0 -0
  58. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bkex.py +0 -0
  59. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bl3p.py +0 -0
  60. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/blockchaincom.py +0 -0
  61. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/btcalpha.py +0 -0
  62. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/btcbox.py +0 -0
  63. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/btcmarkets.py +0 -0
  64. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/btctradeua.py +0 -0
  65. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/btcturk.py +0 -0
  66. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/buda.py +0 -0
  67. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/bybit.py +0 -0
  68. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/cex.py +0 -0
  69. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/coinbase.py +0 -0
  70. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/coinbaseprime.py +0 -0
  71. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/coinbasepro.py +0 -0
  72. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/coincheck.py +0 -0
  73. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/coinex.py +0 -0
  74. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/coinfalcon.py +0 -0
  75. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/coinmate.py +0 -0
  76. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/coinone.py +0 -0
  77. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/coinspot.py +0 -0
  78. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/cryptocom.py +0 -0
  79. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/currencycom.py +0 -0
  80. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/delta.py +0 -0
  81. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/deribit.py +0 -0
  82. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/digifinex.py +0 -0
  83. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/exmo.py +0 -0
  84. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/flowbtc.py +0 -0
  85. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/fmfwio.py +0 -0
  86. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/gateio.py +0 -0
  87. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/gemini.py +0 -0
  88. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/hitbtc.py +0 -0
  89. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/hitbtc3.py +0 -0
  90. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/hollaex.py +0 -0
  91. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/huobi.py +0 -0
  92. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/huobijp.py +0 -0
  93. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/huobipro.py +0 -0
  94. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/idex.py +0 -0
  95. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/independentreserve.py +0 -0
  96. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/indodax.py +0 -0
  97. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/itbit.py +0 -0
  98. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/kraken.py +0 -0
  99. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/krakenfutures.py +0 -0
  100. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/kucoin.py +0 -0
  101. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/kucoinfutures.py +0 -0
  102. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/kuna.py +0 -0
  103. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/latoken.py +0 -0
  104. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/lbank.py +0 -0
  105. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/lbank2.py +0 -0
  106. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/luno.py +0 -0
  107. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/lykke.py +0 -0
  108. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/mercado.py +0 -0
  109. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/mexc.py +0 -0
  110. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/mexc3.py +0 -0
  111. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/ndax.py +0 -0
  112. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/novadax.py +0 -0
  113. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/oceanex.py +0 -0
  114. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/okcoin.py +0 -0
  115. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/okex.py +0 -0
  116. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/okex5.py +0 -0
  117. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/paymium.py +0 -0
  118. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/phemex.py +0 -0
  119. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/poloniex.py +0 -0
  120. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/poloniexfutures.py +0 -0
  121. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/probit.py +0 -0
  122. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/ripio.py +0 -0
  123. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/stex.py +0 -0
  124. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/tidex.py +0 -0
  125. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/timex.py +0 -0
  126. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/tokocrypto.py +0 -0
  127. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/upbit.py +0 -0
  128. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/wavesexchange.py +0 -0
  129. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/wazirx.py +0 -0
  130. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/whitebit.py +0 -0
  131. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/woo.py +0 -0
  132. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/yobit.py +0 -0
  133. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/zaif.py +0 -0
  134. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/zb.py +0 -0
  135. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/async_support/zonda.py +0 -0
  136. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/base/__init__.py +0 -0
  137. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/base/decimal_to_precision.py +0 -0
  138. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/base/errors.py +0 -0
  139. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/base/precise.py +0 -0
  140. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bequant.py +0 -0
  141. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bigone.py +0 -0
  142. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/binance.py +0 -0
  143. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/binancecoinm.py +0 -0
  144. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/binanceus.py +0 -0
  145. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/binanceusdm.py +0 -0
  146. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bit2c.py +0 -0
  147. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitbank.py +0 -0
  148. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitbay.py +0 -0
  149. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitbns.py +0 -0
  150. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitcoincom.py +0 -0
  151. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitfinex.py +0 -0
  152. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitfinex2.py +0 -0
  153. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitflyer.py +0 -0
  154. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitforex.py +0 -0
  155. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitmart.py +0 -0
  156. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitmex.py +0 -0
  157. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitopro.py +0 -0
  158. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitpanda.py +0 -0
  159. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitrue.py +0 -0
  160. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitso.py +0 -0
  161. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitstamp.py +0 -0
  162. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitstamp1.py +0 -0
  163. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bittrex.py +0 -0
  164. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bitvavo.py +0 -0
  165. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bkex.py +0 -0
  166. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bl3p.py +0 -0
  167. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/blockchaincom.py +0 -0
  168. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/btcalpha.py +0 -0
  169. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/btcbox.py +0 -0
  170. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/btcmarkets.py +0 -0
  171. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/btctradeua.py +0 -0
  172. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/btcturk.py +0 -0
  173. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/buda.py +0 -0
  174. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/bybit.py +0 -0
  175. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/cex.py +0 -0
  176. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/coinbase.py +0 -0
  177. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/coinbaseprime.py +0 -0
  178. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/coinbasepro.py +0 -0
  179. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/coincheck.py +0 -0
  180. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/coinex.py +0 -0
  181. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/coinfalcon.py +0 -0
  182. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/coinmate.py +0 -0
  183. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/coinone.py +0 -0
  184. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/coinspot.py +0 -0
  185. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/cryptocom.py +0 -0
  186. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/currencycom.py +0 -0
  187. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/delta.py +0 -0
  188. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/deribit.py +0 -0
  189. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/digifinex.py +0 -0
  190. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/exmo.py +0 -0
  191. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/flowbtc.py +0 -0
  192. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/fmfwio.py +0 -0
  193. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/gateio.py +0 -0
  194. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/gemini.py +0 -0
  195. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/hitbtc.py +0 -0
  196. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/hitbtc3.py +0 -0
  197. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/hollaex.py +0 -0
  198. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/huobi.py +0 -0
  199. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/huobijp.py +0 -0
  200. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/huobipro.py +0 -0
  201. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/idex.py +0 -0
  202. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/independentreserve.py +0 -0
  203. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/indodax.py +0 -0
  204. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/itbit.py +0 -0
  205. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/kraken.py +0 -0
  206. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/krakenfutures.py +0 -0
  207. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/kucoin.py +0 -0
  208. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/kucoinfutures.py +0 -0
  209. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/kuna.py +0 -0
  210. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/latoken.py +0 -0
  211. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/lbank.py +0 -0
  212. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/lbank2.py +0 -0
  213. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/luno.py +0 -0
  214. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/lykke.py +0 -0
  215. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/mercado.py +0 -0
  216. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/mexc.py +0 -0
  217. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/mexc3.py +0 -0
  218. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/ndax.py +0 -0
  219. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/novadax.py +0 -0
  220. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/oceanex.py +0 -0
  221. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/okcoin.py +0 -0
  222. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/okex.py +0 -0
  223. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/okex5.py +0 -0
  224. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/paymium.py +0 -0
  225. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/phemex.py +0 -0
  226. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/poloniex.py +0 -0
  227. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/poloniexfutures.py +0 -0
  228. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/alpaca.py +0 -0
  229. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/ascendex.py +0 -0
  230. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/base/__init__.py +0 -0
  231. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/base/aiohttp_client.py +0 -0
  232. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/base/cache.py +0 -0
  233. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/base/client.py +0 -0
  234. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/base/fast_client.py +0 -0
  235. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/base/functions.py +0 -0
  236. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/base/future.py +0 -0
  237. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/base/order_book.py +0 -0
  238. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/base/order_book_side.py +0 -0
  239. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/bequant.py +0 -0
  240. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/binance.py +0 -0
  241. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/binancecoinm.py +0 -0
  242. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/binanceus.py +0 -0
  243. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/binanceusdm.py +0 -0
  244. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/bitcoincom.py +0 -0
  245. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/bitfinex.py +0 -0
  246. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/bitfinex2.py +0 -0
  247. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/bitget.py +0 -0
  248. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/bitmart.py +0 -0
  249. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/bitmex.py +0 -0
  250. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/bitopro.py +0 -0
  251. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/bitrue.py +0 -0
  252. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/bitstamp.py +0 -0
  253. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/bittrex.py +0 -0
  254. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/bitvavo.py +0 -0
  255. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/btcex.py +0 -0
  256. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/bybit.py +0 -0
  257. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/cex.py +0 -0
  258. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/coinbaseprime.py +0 -0
  259. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/coinbasepro.py +0 -0
  260. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/coinex.py +0 -0
  261. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/cryptocom.py +0 -0
  262. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/currencycom.py +0 -0
  263. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/deribit.py +0 -0
  264. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/exmo.py +0 -0
  265. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/gate.py +0 -0
  266. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/gateio.py +0 -0
  267. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/gemini.py +0 -0
  268. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/hitbtc.py +0 -0
  269. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/hollaex.py +0 -0
  270. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/huobipro.py +0 -0
  271. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/idex.py +0 -0
  272. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/independentreserve.py +0 -0
  273. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/kraken.py +0 -0
  274. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/kucoin.py +0 -0
  275. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/kucoinfutures.py +0 -0
  276. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/luno.py +0 -0
  277. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/mexc.py +0 -0
  278. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/ndax.py +0 -0
  279. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/okcoin.py +0 -0
  280. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/okex.py +0 -0
  281. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/okx.py +0 -0
  282. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/phemex.py +0 -0
  283. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/ripio.py +0 -0
  284. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/upbit.py +0 -0
  285. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/wazirx.py +0 -0
  286. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/whitebit.py +0 -0
  287. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/woo.py +0 -0
  288. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/pro/zb.py +0 -0
  289. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/probit.py +0 -0
  290. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/ripio.py +0 -0
  291. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/static_dependencies/__init__.py +0 -0
  292. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  293. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  294. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  295. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  296. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  297. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  298. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  299. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  300. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  301. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  302. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  303. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  304. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/stex.py +0 -0
  305. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/__init__.py +0 -0
  306. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_account.py +0 -0
  307. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_async.py +0 -0
  308. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_calculate_fee.py +0 -0
  309. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_crypto.py +0 -0
  310. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_decimal_to_precision.py +0 -0
  311. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_deep_extend.py +0 -0
  312. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_exchange_datetime_functions.py +0 -0
  313. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_leverage_tier.py +0 -0
  314. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_margin_modification.py +0 -0
  315. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_market.py +0 -0
  316. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_ohlcv.py +0 -0
  317. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_order.py +0 -0
  318. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_position.py +0 -0
  319. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_sync.py +0 -0
  320. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_throttle.py +0 -0
  321. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_trade.py +0 -0
  322. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/test/test_transaction.py +0 -0
  323. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/tidex.py +0 -0
  324. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/timex.py +0 -0
  325. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/tokocrypto.py +0 -0
  326. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/upbit.py +0 -0
  327. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/wavesexchange.py +0 -0
  328. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/wazirx.py +0 -0
  329. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/whitebit.py +0 -0
  330. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/woo.py +0 -0
  331. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/yobit.py +0 -0
  332. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/zaif.py +0 -0
  333. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/zb.py +0 -0
  334. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt/zonda.py +0 -0
  335. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt.egg-info/SOURCES.txt +0 -0
  336. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt.egg-info/dependency_links.txt +0 -0
  337. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt.egg-info/requires.txt +0 -0
  338. {ccxt-2.9.7 → ccxt-2.9.9}/ccxt.egg-info/top_level.txt +0 -0
  339. {ccxt-2.9.7 → ccxt-2.9.9}/setup.cfg +0 -0
  340. {ccxt-2.9.7 → ccxt-2.9.9}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 2.9.7
3
+ Version: 2.9.9
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
@@ -52,7 +52,7 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
52
52
  | [![bitmart](https://user-images.githubusercontent.com/1294454/129991357-8f47464b-d0f4-41d6-8a82-34122f0d1398.jpg)](http://www.bitmart.com/?r=rQCFLh) | bitmart | [BitMart](http://www.bitmart.com/?r=rQCFLh) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://developer-pro.bitmart.com/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with BitMart using CCXT's referral link for a 30% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d30%25&color=orange)](http://www.bitmart.com/?r=rQCFLh) |
53
53
  | [![bitvavo](https://user-images.githubusercontent.com/1294454/169202626-bd130fc5-fcf9-41bb-8d97-6093225c73cd.jpg)](https://bitvavo.com/?a=24F34952F7) | bitvavo | [Bitvavo](https://bitvavo.com/?a=24F34952F7) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://docs.bitvavo.com/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | |
54
54
  | [![bybit](https://user-images.githubusercontent.com/51840849/76547799-daff5b80-649e-11ea-87fb-3be9bac08954.jpg)](https://www.bybit.com/register?affiliate_id=35953) | bybit | [Bybit](https://www.bybit.com/register?affiliate_id=35953) | [![API Version 5](https://img.shields.io/badge/5-lightgray)](https://bybit-exchange.github.io/docs/inverse/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | |
55
- | [![gate](https://user-images.githubusercontent.com/1294454/31784029-0313c702-b509-11e7-9ccc-bc0da6a0e435.jpg)](https://www.gate.io/ref/2436035) | gate | [Gate.io](https://www.gate.io/ref/2436035) | [![API Version 4](https://img.shields.io/badge/4-lightgray)](https://www.gate.io/docs/apiv4/en/index.html) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with Gate.io using CCXT's referral link for a 20% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d20%25&color=orange)](https://www.gate.io/ref/2436035) |
55
+ | [![gate](https://user-images.githubusercontent.com/1294454/31784029-0313c702-b509-11e7-9ccc-bc0da6a0e435.jpg)](https://www.gate.io/ref/2436035) | gate | [Gate.io](https://www.gate.io/ref/2436035) | [![API Version 4](https://img.shields.io/badge/4-lightgray)](https://www.gate.io/docs/developers/apiv4/en/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with Gate.io using CCXT's referral link for a 20% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d20%25&color=orange)](https://www.gate.io/ref/2436035) |
56
56
  | [![huobi](https://user-images.githubusercontent.com/1294454/76137448-22748a80-604e-11ea-8069-6e389271911d.jpg)](https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223) | huobi | [Huobi](https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://huobiapi.github.io/docs/spot/v1/en/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with Huobi using CCXT's referral link for a 15% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d15%25&color=orange)](https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223) |
57
57
  | [![idex](https://user-images.githubusercontent.com/51840849/94481303-2f222100-01e0-11eb-97dd-bc14c5943a86.jpg)](https://idex.io) | idex | [IDEX](https://idex.io) | [![API Version 3](https://img.shields.io/badge/3-lightgray)](https://docs.idex.io/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | |
58
58
  | [![kucoin](https://user-images.githubusercontent.com/51840849/87295558-132aaf80-c50e-11ea-9801-a2fb0c57c799.jpg)](https://www.kucoin.com/ucenter/signup?rcode=E5wkqe) | kucoin | [KuCoin](https://www.kucoin.com/ucenter/signup?rcode=E5wkqe) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://docs.kucoin.com) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | |
@@ -123,7 +123,7 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
123
123
  | [![exmo](https://user-images.githubusercontent.com/1294454/27766491-1b0ea956-5eda-11e7-9225-40d67b481b8d.jpg)](https://exmo.me/?ref=131685) | exmo | [EXMO](https://exmo.me/?ref=131685) | [![API Version 1.1](https://img.shields.io/badge/1.1-lightgray)](https://exmo.me/en/api_doc?ref=131685) | | |
124
124
  | [![flowbtc](https://user-images.githubusercontent.com/51840849/87443317-01c0d080-c5fe-11ea-95c2-9ebe1a8fafd9.jpg)](https://one.ndax.io/bfQiSL) | flowbtc | [flowBTC](https://one.ndax.io/bfQiSL) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://www.flowbtc.com.br/api.html) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
125
125
  | [![fmfwio](https://user-images.githubusercontent.com/1294454/159177712-b685b40c-5269-4cea-ac83-f7894c49525d.jpg)](https://fmfw.io/referral/da948b21d6c92d69) | fmfwio | [FMFW.io](https://fmfw.io/referral/da948b21d6c92d69) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://api.fmfw.io/api/2/explore/) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
126
- | [![gate](https://user-images.githubusercontent.com/1294454/31784029-0313c702-b509-11e7-9ccc-bc0da6a0e435.jpg)](https://www.gate.io/ref/2436035) | gate | [Gate.io](https://www.gate.io/ref/2436035) | [![API Version 4](https://img.shields.io/badge/4-lightgray)](https://www.gate.io/docs/apiv4/en/index.html) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
126
+ | [![gate](https://user-images.githubusercontent.com/1294454/31784029-0313c702-b509-11e7-9ccc-bc0da6a0e435.jpg)](https://www.gate.io/ref/2436035) | gate | [Gate.io](https://www.gate.io/ref/2436035) | [![API Version 4](https://img.shields.io/badge/4-lightgray)](https://www.gate.io/docs/developers/apiv4/en/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
127
127
  | [![gemini](https://user-images.githubusercontent.com/1294454/27816857-ce7be644-6096-11e7-82d6-3c257263229c.jpg)](https://gemini.com/) | gemini | [Gemini](https://gemini.com/) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.gemini.com/rest-api) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
128
128
  | [![hitbtc](https://user-images.githubusercontent.com/1294454/27766555-8eaec20e-5edc-11e7-9c5b-6dc69fc42f5e.jpg)](https://hitbtc.com/?ref_id=5a5d39a65d466) | hitbtc | [HitBTC](https://hitbtc.com/?ref_id=5a5d39a65d466) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://api.hitbtc.com/v2) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
129
129
  | [![hitbtc3](https://user-images.githubusercontent.com/1294454/27766555-8eaec20e-5edc-11e7-9c5b-6dc69fc42f5e.jpg)](https://hitbtc.com/?ref_id=5a5d39a65d466) | hitbtc3 | [HitBTC](https://hitbtc.com/?ref_id=5a5d39a65d466) | [![API Version 3](https://img.shields.io/badge/3-lightgray)](https://api.hitbtc.com) | | |
@@ -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@2.9.7/dist/ccxt.browser.js
226
- * unpkg: https://unpkg.com/ccxt@2.9.7/dist/ccxt.browser.js
225
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@2.9.9/dist/ccxt.browser.js
226
+ * unpkg: https://unpkg.com/ccxt@2.9.9/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@2.9.7/dist/ccxt.browser.js"></script>
231
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@2.9.9/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__ = '2.9.7'
25
+ __version__ = '2.9.9'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '2.9.7'
7
+ __version__ = '2.9.9'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '2.9.7'
5
+ __version__ = '2.9.9'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1500,6 +1500,8 @@ class Exchange(BaseExchange):
1500
1500
  self.status = self.extend(self.status, {
1501
1501
  'updated': time,
1502
1502
  })
1503
+ if not ('info' in self.status):
1504
+ self.status['info'] = None
1503
1505
  return self.status
1504
1506
 
1505
1507
  async def fetch_funding_fee(self, code, params={}):
@@ -1749,18 +1749,18 @@ class bitget(Exchange):
1749
1749
  # private
1750
1750
  #
1751
1751
  # {
1752
- # accountId: '6394957606',
1753
- # symbol: 'LTCUSDT_SPBL',
1754
- # orderId: '864752115272552448',
1755
- # fillId: '864752115685969921',
1752
+ # accountId: '4383649766',
1753
+ # symbol: 'ETHBTC_SPBL',
1754
+ # orderId: '1009402341131468800',
1755
+ # fillId: '1009402351489581068',
1756
1756
  # orderType: 'limit',
1757
- # side: 'buy',
1758
- # fillPrice: '127.92000000',
1759
- # fillQuantity: '0.10000000',
1760
- # fillTotalAmount: '12.79200000',
1761
- # feeCcy: 'LTC',
1762
- # fees: '0.00000000',
1763
- # cTime: '1641898891373'
1757
+ # side: 'sell',
1758
+ # fillPrice: '0.06997800',
1759
+ # fillQuantity: '0.04120000',
1760
+ # fillTotalAmount: '0.00288309',
1761
+ # feeCcy: 'BTC',
1762
+ # fees: '-0.00000288',
1763
+ # cTime: '1676386195060'
1764
1764
  # }
1765
1765
  #
1766
1766
  # {
@@ -1794,7 +1794,7 @@ class bitget(Exchange):
1794
1794
  fee = {
1795
1795
  'code': currencyCode, # kept here for backward-compatibility, but will be removed soon
1796
1796
  'currency': currencyCode,
1797
- 'cost': feeAmount,
1797
+ 'cost': Precise.string_neg(feeAmount),
1798
1798
  }
1799
1799
  datetime = self.iso8601(timestamp)
1800
1800
  return self.safe_trade({
@@ -387,41 +387,44 @@ class bithumb(Exchange):
387
387
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/en/latest/manual.html#ticker-structure>`
388
388
  """
389
389
  await self.load_markets()
390
- symbols = self.market_symbols(symbols)
391
- response = await self.publicGetTickerAll(params)
392
- #
393
- # {
394
- # "status":"0000",
395
- # "data":{
396
- # "BTC":{
397
- # "opening_price":"9045000",
398
- # "closing_price":"9132000",
399
- # "min_price":"8938000",
400
- # "max_price":"9168000",
401
- # "units_traded":"4619.79967497",
402
- # "acc_trade_value":"42021363832.5187",
403
- # "prev_closing_price":"9041000",
404
- # "units_traded_24H":"8793.5045804",
405
- # "acc_trade_value_24H":"78933458515.4962",
406
- # "fluctate_24H":"530000",
407
- # "fluctate_rate_24H":"6.16"
408
- # },
409
- # "date":"1587710878669"
410
- # }
411
- # }
412
- #
413
390
  result = {}
414
- data = self.safe_value(response, 'data', {})
415
- timestamp = self.safe_integer(data, 'date')
416
- tickers = self.omit(data, 'date')
417
- ids = list(tickers.keys())
418
- for i in range(0, len(ids)):
419
- id = ids[i]
420
- market = self.safe_market(id)
421
- symbol = market['symbol']
422
- ticker = tickers[id]
423
- isArray = isinstance(ticker, list)
424
- if not isArray:
391
+ quoteCurrencies = self.safe_value(self.options, 'quoteCurrencies', {})
392
+ quotes = list(quoteCurrencies.keys())
393
+ for i in range(0, len(quotes)):
394
+ quote = quotes[i]
395
+ method = 'publicGetTickerALL' + quote
396
+ response = await getattr(self, method)(params)
397
+ #
398
+ # {
399
+ # "status":"0000",
400
+ # "data":{
401
+ # "BTC":{
402
+ # "opening_price":"9045000",
403
+ # "closing_price":"9132000",
404
+ # "min_price":"8938000",
405
+ # "max_price":"9168000",
406
+ # "units_traded":"4619.79967497",
407
+ # "acc_trade_value":"42021363832.5187",
408
+ # "prev_closing_price":"9041000",
409
+ # "units_traded_24H":"8793.5045804",
410
+ # "acc_trade_value_24H":"78933458515.4962",
411
+ # "fluctate_24H":"530000",
412
+ # "fluctate_rate_24H":"6.16"
413
+ # },
414
+ # "date":"1587710878669"
415
+ # }
416
+ # }
417
+ #
418
+ data = self.safe_value(response, 'data', {})
419
+ timestamp = self.safe_integer(data, 'date')
420
+ tickers = self.omit(data, 'date')
421
+ currencyIds = list(tickers.keys())
422
+ for j in range(0, len(currencyIds)):
423
+ currencyId = currencyIds[j]
424
+ ticker = data[currencyId]
425
+ base = self.safe_currency_code(currencyId)
426
+ symbol = base + '/' + quote
427
+ market = self.safe_market(symbol)
425
428
  ticker['date'] = timestamp
426
429
  result[symbol] = self.parse_ticker(ticker, market)
427
430
  return self.filter_by_array(result, 'symbol', symbols)
@@ -6,6 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.base.errors import ExchangeError
8
8
  from ccxt.base.errors import AuthenticationError
9
+ from ccxt.base.errors import PermissionDenied
9
10
  from ccxt.base.errors import ArgumentsRequired
10
11
  from ccxt.base.errors import BadRequest
11
12
  from ccxt.base.errors import InsufficientFunds
@@ -228,10 +229,12 @@ class btcex(Exchange):
228
229
  '403': AuthenticationError, # ACCESS_DENIED_ERROR Access denied
229
230
  '1000': ExchangeNotAvailable, # NO_SERVICE No service found
230
231
  '1001': BadRequest, # BAD_REQUEST Bad requested
232
+ '1005': DDoSProtection, # {"code":1005,"message":"Operate too frequently"}
231
233
  '2000': AuthenticationError, # NEED_LOGIN Login is required
232
234
  '2001': AuthenticationError, # ACCOUNT_NOT_MATCH Account information does not match
233
235
  '2002': AuthenticationError, # ACCOUNT_NEED_ENABLE Account needs to be activated
234
236
  '2003': AuthenticationError, # ACCOUNT_NOT_AVAILABLE Account not available
237
+ '2010': PermissionDenied, # {"code":2010,"message":"Access denied","data":{}}
235
238
  '3000': AuthenticationError, # TEST user
236
239
  '3002': AuthenticationError, # NICKNAME_EXIST Nicknames exist
237
240
  '3003': AuthenticationError, # ACCOUNT_NOT_EXIST No account
@@ -296,6 +299,7 @@ class btcex(Exchange):
296
299
  '5013': InvalidOrder, # ORDER_PRICE_RANGE_IS_TOO_HIGH order price range is too high.
297
300
  '5014': InvalidOrder, # ORDER_PRICE_RANGE_IS_TOO_LOW Order price range is too low.
298
301
  '5109': InvalidOrder, # ORDER_PRICE_RANGE_IS_TOO_LOW Order price range is too low.
302
+ '5119': InvalidOrder, # {"code":5119,"message":"Cannot be less than the minimum order value:10USDT, instrument: GXE/USDT","data":{"coinType":"USDT","amount":"10","instrumentName":"GXE/USDT"}}
299
303
  '5135': InvalidOrder, # The quantity should be larger than: 0.01
300
304
  '5901': InvalidOrder, # TRANSFER_RESULT transfer out success.
301
305
  '5902': InvalidOrder, # ORDER_SUCCESS place order success.
@@ -1254,7 +1258,7 @@ class btcex(Exchange):
1254
1258
  'instrument_name': market['id'],
1255
1259
  'type': type,
1256
1260
  }
1257
- if side == 'sell':
1261
+ if side == 'sell' or type == 'limit':
1258
1262
  request['amount'] = self.amount_to_precision(symbol, amount)
1259
1263
  if type == 'limit':
1260
1264
  request['price'] = self.price_to_precision(symbol, price)
@@ -39,7 +39,7 @@ class gate(Exchange):
39
39
  'pro': True,
40
40
  'urls': {
41
41
  'logo': 'https://user-images.githubusercontent.com/1294454/31784029-0313c702-b509-11e7-9ccc-bc0da6a0e435.jpg',
42
- 'doc': 'https://www.gate.io/docs/apiv4/en/index.html',
42
+ 'doc': 'https://www.gate.io/docs/developers/apiv4/en/',
43
43
  'www': 'https://gate.io/',
44
44
  'api': {
45
45
  'public': {
@@ -699,6 +699,11 @@ class gate(Exchange):
699
699
  async def fetch_markets(self, params={}):
700
700
  """
701
701
  retrieves data on all markets for gate
702
+ see https://www.gate.io/docs/developers/apiv4/en/#list-all-currency-pairs-supported # spot
703
+ see https://www.gate.io/docs/developers/apiv4/en/#list-all-supported-currency-pairs-supported-in-margin-trading # margin
704
+ see https://www.gate.io/docs/developers/apiv4/en/#list-all-futures-contracts # swap
705
+ see https://www.gate.io/docs/developers/apiv4/en/#list-all-futures-contracts-2 # future
706
+ see https://www.gate.io/docs/developers/apiv4/en/#list-all-the-contracts-with-specified-underlying-and-expiration-time # option
702
707
  :param dict params: extra parameters specific to the exchange api endpoint
703
708
  :returns [dict]: an array of objects representing market data
704
709
  """
@@ -2303,10 +2308,14 @@ class gate(Exchange):
2303
2308
  async def fetch_ohlcv(self, symbol, timeframe='1m', since=None, limit=None, params={}):
2304
2309
  """
2305
2310
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
2311
+ see https://www.gate.io/docs/developers/apiv4/en/#market-candlesticks # spot
2312
+ see https://www.gate.io/docs/developers/apiv4/en/#get-futures-candlesticks # swap
2313
+ see https://www.gate.io/docs/developers/apiv4/en/#market-candlesticks # future
2314
+ see https://www.gate.io/docs/developers/apiv4/en/#get-options-candlesticks # option
2306
2315
  :param str symbol: unified symbol of the market to fetch OHLCV data for
2307
2316
  :param str timeframe: the length of time each candle represents
2308
2317
  :param int|None since: timestamp in ms of the earliest candle to fetch
2309
- :param int|None limit: the maximum amount of candles to fetch
2318
+ :param int|None limit: the maximum amount of candles to fetch, limit is conflicted with since and params["until"], If either since and params["until"] is specified, request will be rejected
2310
2319
  :param dict params: extra parameters specific to the gateio api endpoint
2311
2320
  :param str|None params['price']: "mark" or "index" for mark price and index price candles
2312
2321
  :param int|None params['until']: timestamp in ms of the latest candle to fetch
@@ -3577,26 +3577,31 @@ class okx(Exchange):
3577
3577
  currency = self.currency(code)
3578
3578
  if (tag is not None) and (len(tag) > 0):
3579
3579
  address = address + ':' + tag
3580
- fee = self.safe_string(params, 'fee')
3581
- if fee is None:
3582
- raise ArgumentsRequired(self.id + " withdraw() requires a 'fee' string parameter, network transaction fee must be ≥ 0. Withdrawals to OKCoin or OKX are fee-free, please set '0'. Withdrawing to external digital asset address requires network transaction fee.")
3583
3580
  request = {
3584
3581
  'ccy': currency['id'],
3585
3582
  'toAddr': address,
3586
3583
  'dest': '4', # 2 = OKCoin International, 3 = OKX 4 = others
3587
3584
  'amt': self.number_to_string(amount),
3588
- 'fee': self.number_to_string(fee), # withdrawals to OKCoin or OKX are fee-free, please set 0
3589
3585
  }
3590
- if 'password' in params:
3591
- request['pwd'] = params['password']
3592
- elif 'pwd' in params:
3593
- request['pwd'] = params['pwd']
3594
3586
  networks = self.safe_value(self.options, 'networks', {})
3595
3587
  network = self.safe_string_upper(params, 'network') # self line allows the user to specify either ERC20 or ETH
3596
3588
  network = self.safe_string(networks, network, network) # handle ETH>ERC20 alias
3597
3589
  if network is not None:
3598
3590
  request['chain'] = currency['id'] + '-' + network
3599
3591
  params = self.omit(params, 'network')
3592
+ fee = self.safe_string(params, 'fee')
3593
+ if fee is None:
3594
+ currencies = await self.fetch_currencies()
3595
+ self.currencies = self.deep_extend(self.currencies, currencies)
3596
+ targetNetwork = self.safe_value(currency['networks'], self.network_id_to_code(network), {})
3597
+ fee = self.safe_string(targetNetwork, 'fee')
3598
+ if fee is None:
3599
+ raise ArgumentsRequired(self.id + " withdraw() requires a 'fee' string parameter, network transaction fee must be ≥ 0. Withdrawals to OKCoin or OKX are fee-free, please set '0'. Withdrawing to external digital asset address requires network transaction fee.")
3600
+ request['fee'] = self.number_to_string(fee) # withdrawals to OKCoin or OKX are fee-free, please set 0
3601
+ if 'password' in params:
3602
+ request['pwd'] = params['password']
3603
+ elif 'pwd' in params:
3604
+ request['pwd'] = params['pwd']
3600
3605
  query = self.omit(params, ['fee', 'password', 'pwd'])
3601
3606
  if not ('pwd' in request):
3602
3607
  raise ExchangeError(self.id + ' withdraw() requires a password parameter or a pwd parameter, it must be the funding password, not the API passphrase')
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '2.9.7'
7
+ __version__ = '2.9.9'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -3014,6 +3014,8 @@ class Exchange(object):
3014
3014
  self.status = self.extend(self.status, {
3015
3015
  'updated': time,
3016
3016
  })
3017
+ if not ('info' in self.status):
3018
+ self.status['info'] = None
3017
3019
  return self.status
3018
3020
 
3019
3021
  def fetch_funding_fee(self, code, params={}):
@@ -1747,18 +1747,18 @@ class bitget(Exchange):
1747
1747
  # private
1748
1748
  #
1749
1749
  # {
1750
- # accountId: '6394957606',
1751
- # symbol: 'LTCUSDT_SPBL',
1752
- # orderId: '864752115272552448',
1753
- # fillId: '864752115685969921',
1750
+ # accountId: '4383649766',
1751
+ # symbol: 'ETHBTC_SPBL',
1752
+ # orderId: '1009402341131468800',
1753
+ # fillId: '1009402351489581068',
1754
1754
  # orderType: 'limit',
1755
- # side: 'buy',
1756
- # fillPrice: '127.92000000',
1757
- # fillQuantity: '0.10000000',
1758
- # fillTotalAmount: '12.79200000',
1759
- # feeCcy: 'LTC',
1760
- # fees: '0.00000000',
1761
- # cTime: '1641898891373'
1755
+ # side: 'sell',
1756
+ # fillPrice: '0.06997800',
1757
+ # fillQuantity: '0.04120000',
1758
+ # fillTotalAmount: '0.00288309',
1759
+ # feeCcy: 'BTC',
1760
+ # fees: '-0.00000288',
1761
+ # cTime: '1676386195060'
1762
1762
  # }
1763
1763
  #
1764
1764
  # {
@@ -1792,7 +1792,7 @@ class bitget(Exchange):
1792
1792
  fee = {
1793
1793
  'code': currencyCode, # kept here for backward-compatibility, but will be removed soon
1794
1794
  'currency': currencyCode,
1795
- 'cost': feeAmount,
1795
+ 'cost': Precise.string_neg(feeAmount),
1796
1796
  }
1797
1797
  datetime = self.iso8601(timestamp)
1798
1798
  return self.safe_trade({
@@ -387,41 +387,44 @@ class bithumb(Exchange):
387
387
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/en/latest/manual.html#ticker-structure>`
388
388
  """
389
389
  self.load_markets()
390
- symbols = self.market_symbols(symbols)
391
- response = self.publicGetTickerAll(params)
392
- #
393
- # {
394
- # "status":"0000",
395
- # "data":{
396
- # "BTC":{
397
- # "opening_price":"9045000",
398
- # "closing_price":"9132000",
399
- # "min_price":"8938000",
400
- # "max_price":"9168000",
401
- # "units_traded":"4619.79967497",
402
- # "acc_trade_value":"42021363832.5187",
403
- # "prev_closing_price":"9041000",
404
- # "units_traded_24H":"8793.5045804",
405
- # "acc_trade_value_24H":"78933458515.4962",
406
- # "fluctate_24H":"530000",
407
- # "fluctate_rate_24H":"6.16"
408
- # },
409
- # "date":"1587710878669"
410
- # }
411
- # }
412
- #
413
390
  result = {}
414
- data = self.safe_value(response, 'data', {})
415
- timestamp = self.safe_integer(data, 'date')
416
- tickers = self.omit(data, 'date')
417
- ids = list(tickers.keys())
418
- for i in range(0, len(ids)):
419
- id = ids[i]
420
- market = self.safe_market(id)
421
- symbol = market['symbol']
422
- ticker = tickers[id]
423
- isArray = isinstance(ticker, list)
424
- if not isArray:
391
+ quoteCurrencies = self.safe_value(self.options, 'quoteCurrencies', {})
392
+ quotes = list(quoteCurrencies.keys())
393
+ for i in range(0, len(quotes)):
394
+ quote = quotes[i]
395
+ method = 'publicGetTickerALL' + quote
396
+ response = getattr(self, method)(params)
397
+ #
398
+ # {
399
+ # "status":"0000",
400
+ # "data":{
401
+ # "BTC":{
402
+ # "opening_price":"9045000",
403
+ # "closing_price":"9132000",
404
+ # "min_price":"8938000",
405
+ # "max_price":"9168000",
406
+ # "units_traded":"4619.79967497",
407
+ # "acc_trade_value":"42021363832.5187",
408
+ # "prev_closing_price":"9041000",
409
+ # "units_traded_24H":"8793.5045804",
410
+ # "acc_trade_value_24H":"78933458515.4962",
411
+ # "fluctate_24H":"530000",
412
+ # "fluctate_rate_24H":"6.16"
413
+ # },
414
+ # "date":"1587710878669"
415
+ # }
416
+ # }
417
+ #
418
+ data = self.safe_value(response, 'data', {})
419
+ timestamp = self.safe_integer(data, 'date')
420
+ tickers = self.omit(data, 'date')
421
+ currencyIds = list(tickers.keys())
422
+ for j in range(0, len(currencyIds)):
423
+ currencyId = currencyIds[j]
424
+ ticker = data[currencyId]
425
+ base = self.safe_currency_code(currencyId)
426
+ symbol = base + '/' + quote
427
+ market = self.safe_market(symbol)
425
428
  ticker['date'] = timestamp
426
429
  result[symbol] = self.parse_ticker(ticker, market)
427
430
  return self.filter_by_array(result, 'symbol', symbols)
@@ -6,6 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.base.errors import ExchangeError
8
8
  from ccxt.base.errors import AuthenticationError
9
+ from ccxt.base.errors import PermissionDenied
9
10
  from ccxt.base.errors import ArgumentsRequired
10
11
  from ccxt.base.errors import BadRequest
11
12
  from ccxt.base.errors import InsufficientFunds
@@ -228,10 +229,12 @@ class btcex(Exchange):
228
229
  '403': AuthenticationError, # ACCESS_DENIED_ERROR Access denied
229
230
  '1000': ExchangeNotAvailable, # NO_SERVICE No service found
230
231
  '1001': BadRequest, # BAD_REQUEST Bad requested
232
+ '1005': DDoSProtection, # {"code":1005,"message":"Operate too frequently"}
231
233
  '2000': AuthenticationError, # NEED_LOGIN Login is required
232
234
  '2001': AuthenticationError, # ACCOUNT_NOT_MATCH Account information does not match
233
235
  '2002': AuthenticationError, # ACCOUNT_NEED_ENABLE Account needs to be activated
234
236
  '2003': AuthenticationError, # ACCOUNT_NOT_AVAILABLE Account not available
237
+ '2010': PermissionDenied, # {"code":2010,"message":"Access denied","data":{}}
235
238
  '3000': AuthenticationError, # TEST user
236
239
  '3002': AuthenticationError, # NICKNAME_EXIST Nicknames exist
237
240
  '3003': AuthenticationError, # ACCOUNT_NOT_EXIST No account
@@ -296,6 +299,7 @@ class btcex(Exchange):
296
299
  '5013': InvalidOrder, # ORDER_PRICE_RANGE_IS_TOO_HIGH order price range is too high.
297
300
  '5014': InvalidOrder, # ORDER_PRICE_RANGE_IS_TOO_LOW Order price range is too low.
298
301
  '5109': InvalidOrder, # ORDER_PRICE_RANGE_IS_TOO_LOW Order price range is too low.
302
+ '5119': InvalidOrder, # {"code":5119,"message":"Cannot be less than the minimum order value:10USDT, instrument: GXE/USDT","data":{"coinType":"USDT","amount":"10","instrumentName":"GXE/USDT"}}
299
303
  '5135': InvalidOrder, # The quantity should be larger than: 0.01
300
304
  '5901': InvalidOrder, # TRANSFER_RESULT transfer out success.
301
305
  '5902': InvalidOrder, # ORDER_SUCCESS place order success.
@@ -1254,7 +1258,7 @@ class btcex(Exchange):
1254
1258
  'instrument_name': market['id'],
1255
1259
  'type': type,
1256
1260
  }
1257
- if side == 'sell':
1261
+ if side == 'sell' or type == 'limit':
1258
1262
  request['amount'] = self.amount_to_precision(symbol, amount)
1259
1263
  if type == 'limit':
1260
1264
  request['price'] = self.price_to_precision(symbol, price)
@@ -38,7 +38,7 @@ class gate(Exchange):
38
38
  'pro': True,
39
39
  'urls': {
40
40
  'logo': 'https://user-images.githubusercontent.com/1294454/31784029-0313c702-b509-11e7-9ccc-bc0da6a0e435.jpg',
41
- 'doc': 'https://www.gate.io/docs/apiv4/en/index.html',
41
+ 'doc': 'https://www.gate.io/docs/developers/apiv4/en/',
42
42
  'www': 'https://gate.io/',
43
43
  'api': {
44
44
  'public': {
@@ -698,6 +698,11 @@ class gate(Exchange):
698
698
  def fetch_markets(self, params={}):
699
699
  """
700
700
  retrieves data on all markets for gate
701
+ see https://www.gate.io/docs/developers/apiv4/en/#list-all-currency-pairs-supported # spot
702
+ see https://www.gate.io/docs/developers/apiv4/en/#list-all-supported-currency-pairs-supported-in-margin-trading # margin
703
+ see https://www.gate.io/docs/developers/apiv4/en/#list-all-futures-contracts # swap
704
+ see https://www.gate.io/docs/developers/apiv4/en/#list-all-futures-contracts-2 # future
705
+ see https://www.gate.io/docs/developers/apiv4/en/#list-all-the-contracts-with-specified-underlying-and-expiration-time # option
701
706
  :param dict params: extra parameters specific to the exchange api endpoint
702
707
  :returns [dict]: an array of objects representing market data
703
708
  """
@@ -2301,10 +2306,14 @@ class gate(Exchange):
2301
2306
  def fetch_ohlcv(self, symbol, timeframe='1m', since=None, limit=None, params={}):
2302
2307
  """
2303
2308
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
2309
+ see https://www.gate.io/docs/developers/apiv4/en/#market-candlesticks # spot
2310
+ see https://www.gate.io/docs/developers/apiv4/en/#get-futures-candlesticks # swap
2311
+ see https://www.gate.io/docs/developers/apiv4/en/#market-candlesticks # future
2312
+ see https://www.gate.io/docs/developers/apiv4/en/#get-options-candlesticks # option
2304
2313
  :param str symbol: unified symbol of the market to fetch OHLCV data for
2305
2314
  :param str timeframe: the length of time each candle represents
2306
2315
  :param int|None since: timestamp in ms of the earliest candle to fetch
2307
- :param int|None limit: the maximum amount of candles to fetch
2316
+ :param int|None limit: the maximum amount of candles to fetch, limit is conflicted with since and params["until"], If either since and params["until"] is specified, request will be rejected
2308
2317
  :param dict params: extra parameters specific to the gateio api endpoint
2309
2318
  :param str|None params['price']: "mark" or "index" for mark price and index price candles
2310
2319
  :param int|None params['until']: timestamp in ms of the latest candle to fetch
@@ -3575,26 +3575,31 @@ class okx(Exchange):
3575
3575
  currency = self.currency(code)
3576
3576
  if (tag is not None) and (len(tag) > 0):
3577
3577
  address = address + ':' + tag
3578
- fee = self.safe_string(params, 'fee')
3579
- if fee is None:
3580
- raise ArgumentsRequired(self.id + " withdraw() requires a 'fee' string parameter, network transaction fee must be ≥ 0. Withdrawals to OKCoin or OKX are fee-free, please set '0'. Withdrawing to external digital asset address requires network transaction fee.")
3581
3578
  request = {
3582
3579
  'ccy': currency['id'],
3583
3580
  'toAddr': address,
3584
3581
  'dest': '4', # 2 = OKCoin International, 3 = OKX 4 = others
3585
3582
  'amt': self.number_to_string(amount),
3586
- 'fee': self.number_to_string(fee), # withdrawals to OKCoin or OKX are fee-free, please set 0
3587
3583
  }
3588
- if 'password' in params:
3589
- request['pwd'] = params['password']
3590
- elif 'pwd' in params:
3591
- request['pwd'] = params['pwd']
3592
3584
  networks = self.safe_value(self.options, 'networks', {})
3593
3585
  network = self.safe_string_upper(params, 'network') # self line allows the user to specify either ERC20 or ETH
3594
3586
  network = self.safe_string(networks, network, network) # handle ETH>ERC20 alias
3595
3587
  if network is not None:
3596
3588
  request['chain'] = currency['id'] + '-' + network
3597
3589
  params = self.omit(params, 'network')
3590
+ fee = self.safe_string(params, 'fee')
3591
+ if fee is None:
3592
+ currencies = self.fetch_currencies()
3593
+ self.currencies = self.deep_extend(self.currencies, currencies)
3594
+ targetNetwork = self.safe_value(currency['networks'], self.network_id_to_code(network), {})
3595
+ fee = self.safe_string(targetNetwork, 'fee')
3596
+ if fee is None:
3597
+ raise ArgumentsRequired(self.id + " withdraw() requires a 'fee' string parameter, network transaction fee must be ≥ 0. Withdrawals to OKCoin or OKX are fee-free, please set '0'. Withdrawing to external digital asset address requires network transaction fee.")
3598
+ request['fee'] = self.number_to_string(fee) # withdrawals to OKCoin or OKX are fee-free, please set 0
3599
+ if 'password' in params:
3600
+ request['pwd'] = params['password']
3601
+ elif 'pwd' in params:
3602
+ request['pwd'] = params['pwd']
3598
3603
  query = self.omit(params, ['fee', 'password', 'pwd'])
3599
3604
  if not ('pwd' in request):
3600
3605
  raise ExchangeError(self.id + ' withdraw() requires a password parameter or a pwd parameter, it must be the funding password, not the API passphrase')
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '2.9.7'
7
+ __version__ = '2.9.9'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '2.9.7'
5
+ __version__ = '2.9.9'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8