ccxt 4.1.28__tar.gz → 4.1.30__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.
- {ccxt-4.1.28/ccxt.egg-info → ccxt-4.1.30}/PKG-INFO +4 -4
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/__init__.py +1 -1
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bybit.py +1 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/okex.py +1 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/okex5.py +1 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/okx.py +1 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/__init__.py +1 -1
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/base/exchange.py +1 -1
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/base/ws/functions.py +1 -1
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitget.py +265 -16
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitopro.py +4 -4
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitrue.py +33 -16
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bybit.py +4 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/cryptocom.py +29 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/gate.py +58 -10
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/huobi.py +0 -1
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/huobijp.py +0 -1
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/krakenfutures.py +48 -4
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/mexc.py +86 -4
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/okx.py +1 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/phemex.py +2 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/base/exchange.py +1 -1
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitget.py +265 -16
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitopro.py +4 -4
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitrue.py +33 -16
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bybit.py +4 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/cryptocom.py +29 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/gate.py +58 -10
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/huobi.py +0 -1
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/huobijp.py +0 -1
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/krakenfutures.py +48 -4
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/mexc.py +86 -4
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/okx.py +1 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/phemex.py +2 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/__init__.py +1 -1
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/huobi.py +4 -0
- {ccxt-4.1.28 → ccxt-4.1.30/ccxt.egg-info}/PKG-INFO +4 -4
- {ccxt-4.1.28 → ccxt-4.1.30}/package.json +1 -1
- {ccxt-4.1.28 → ccxt-4.1.30}/LICENSE.txt +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/MANIFEST.in +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/README.rst +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/__init__.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/ace.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/alpaca.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/ascendex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bequant.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bigone.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/binance.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/binancecoinm.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/binanceus.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/binanceusdm.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bingx.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bit2c.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitbank.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitbay.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitbns.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitcoincom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitfinex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitfinex2.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitflyer.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitforex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitget.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bithumb.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitmart.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitmex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitopro.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitpanda.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitrue.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitso.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitstamp.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitstamp1.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bittrex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bitvavo.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/bl3p.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/blockchaincom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/btcalpha.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/btcbox.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/btcmarkets.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/btctradeua.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/btcturk.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/cex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/coinbase.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/coinbaseprime.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/coinbasepro.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/coincheck.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/coinex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/coinfalcon.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/coinmate.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/coinone.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/coinsph.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/coinspot.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/cryptocom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/currencycom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/delta.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/deribit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/digifinex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/exmo.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/fmfwio.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/gate.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/gateio.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/gemini.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/hitbtc.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/hitbtc3.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/hollaex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/huobi.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/huobijp.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/huobipro.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/idex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/independentreserve.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/indodax.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/kraken.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/krakenfutures.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/kucoin.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/kucoinfutures.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/kuna.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/latoken.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/lbank.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/lbank2.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/luno.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/lykke.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/mercado.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/mexc.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/mexc3.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/ndax.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/novadax.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/oceanex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/okcoin.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/paymium.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/phemex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/poloniex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/poloniexfutures.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/probit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/tidex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/timex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/tokocrypto.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/upbit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/wavesexchange.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/wazirx.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/whitebit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/woo.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/yobit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/zaif.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/abstract/zonda.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/ace.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/alpaca.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/ascendex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/ace.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/alpaca.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/ascendex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/base/__init__.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/base/throttler.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/base/ws/__init__.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/base/ws/cache.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/base/ws/client.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/base/ws/fast_client.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/base/ws/future.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/base/ws/order_book.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/base/ws/order_book_side.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bequant.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bigone.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/binance.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/binancecoinm.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/binanceus.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/binanceusdm.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bingx.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bit2c.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitbank.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitbay.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitbns.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitcoincom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitfinex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitfinex2.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitflyer.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitforex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bithumb.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitmart.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitmex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitpanda.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitso.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitstamp.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitstamp1.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bittrex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bitvavo.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/bl3p.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/blockchaincom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/btcalpha.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/btcbox.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/btcmarkets.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/btctradeua.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/btcturk.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/cex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/coinbase.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/coinbaseprime.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/coinbasepro.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/coincheck.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/coinex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/coinfalcon.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/coinmate.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/coinone.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/coinsph.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/coinspot.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/currencycom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/delta.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/deribit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/digifinex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/exmo.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/flowbtc.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/fmfwio.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/gateio.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/gemini.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/hitbtc.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/hitbtc3.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/hollaex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/huobipro.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/idex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/independentreserve.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/indodax.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/kraken.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/kucoin.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/kucoinfutures.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/kuna.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/latoken.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/lbank.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/lbank2.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/luno.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/lykke.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/mercado.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/mexc3.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/ndax.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/novadax.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/oceanex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/okcoin.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/okex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/okex5.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/paymium.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/poloniex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/poloniexfutures.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/probit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/tidex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/timex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/tokocrypto.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/upbit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/wavesexchange.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/wazirx.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/whitebit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/woo.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/yobit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/zaif.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/async_support/zonda.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/base/__init__.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/base/decimal_to_precision.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/base/errors.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/base/precise.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/base/types.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bequant.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bigone.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/binance.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/binancecoinm.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/binanceus.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/binanceusdm.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bingx.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bit2c.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitbank.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitbay.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitbns.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitcoincom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitfinex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitfinex2.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitflyer.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitforex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bithumb.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitmart.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitmex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitpanda.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitso.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitstamp.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitstamp1.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bittrex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bitvavo.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/bl3p.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/blockchaincom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/btcalpha.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/btcbox.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/btcmarkets.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/btctradeua.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/btcturk.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/cex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/coinbase.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/coinbaseprime.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/coinbasepro.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/coincheck.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/coinex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/coinfalcon.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/coinmate.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/coinone.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/coinsph.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/coinspot.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/currencycom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/delta.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/deribit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/digifinex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/exmo.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/flowbtc.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/fmfwio.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/gateio.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/gemini.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/hitbtc.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/hitbtc3.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/hollaex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/huobipro.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/idex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/independentreserve.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/indodax.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/kraken.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/kucoin.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/kucoinfutures.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/kuna.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/latoken.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/lbank.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/lbank2.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/luno.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/lykke.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/mercado.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/mexc3.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/ndax.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/novadax.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/oceanex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/okcoin.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/okex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/okex5.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/paymium.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/poloniex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/poloniexfutures.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/alpaca.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/ascendex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bequant.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/binance.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/binancecoinm.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/binanceus.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/binanceusdm.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bingx.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bitcoincom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bitfinex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bitfinex2.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bitget.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bitmart.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bitmex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bitopro.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bitpanda.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bitrue.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bitstamp.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bittrex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bitvavo.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/blockchaincom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/bybit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/cex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/coinbase.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/coinbaseprime.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/coinbasepro.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/coinex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/cryptocom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/currencycom.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/deribit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/exmo.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/gate.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/gateio.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/gemini.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/hitbtc.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/hollaex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/huobijp.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/huobipro.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/idex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/independentreserve.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/kraken.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/krakenfutures.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/kucoin.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/kucoinfutures.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/luno.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/mexc.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/mexc3.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/ndax.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/okcoin.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/okex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/okx.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/phemex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/poloniex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/poloniexfutures.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/probit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/upbit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/wazirx.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/whitebit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/pro/woo.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/probit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/static_dependencies/__init__.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/static_dependencies/ecdsa/der.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/static_dependencies/ecdsa/util.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/static_dependencies/keccak/__init__.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/static_dependencies/keccak/keccak.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/__init__.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/__init__.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_account.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_balance.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_borrow_interest.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_borrow_rate.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_calculate_fee.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_crypto.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_currency.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_datetime.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_decimal_to_precision.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_deep_extend.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_funding_rate_history.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_ledger_entry.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_ledger_item.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_leverage_tier.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_margin_modification.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_market.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_number.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_ohlcv.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_open_interest.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_order.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_order_book.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_position.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_shared_methods.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_status.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_throttle.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_ticker.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_trade.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_trading_fee.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/base/test_transaction.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/test_async.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/test/test_sync.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/tidex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/timex.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/tokocrypto.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/upbit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/wavesexchange.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/wazirx.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/whitebit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/woo.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/yobit.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/zaif.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt/zonda.py +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt.egg-info/SOURCES.txt +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt.egg-info/dependency_links.txt +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt.egg-info/requires.txt +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/ccxt.egg-info/top_level.txt +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/setup.cfg +0 -0
- {ccxt-4.1.28 → ccxt-4.1.30}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.1.
|
3
|
+
Version: 4.1.30
|
4
4
|
Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges
|
5
5
|
Home-page: https://ccxt.com
|
6
6
|
Author: Igor Kroitor
|
@@ -223,13 +223,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
|
|
223
223
|
|
224
224
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
225
225
|
|
226
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.1.
|
227
|
-
* unpkg: https://unpkg.com/ccxt@4.1.
|
226
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.1.30/dist/ccxt.browser.js
|
227
|
+
* unpkg: https://unpkg.com/ccxt@4.1.30/dist/ccxt.browser.js
|
228
228
|
|
229
229
|
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.
|
230
230
|
|
231
231
|
```HTML
|
232
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.1.
|
232
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.1.30/dist/ccxt.browser.js"></script>
|
233
233
|
```
|
234
234
|
|
235
235
|
Creates a global `ccxt` object:
|
@@ -427,6 +427,7 @@ class ImplicitAPI:
|
|
427
427
|
private_post_v5_position_trading_stop = privatePostV5PositionTradingStop = Entry('v5/position/trading-stop', 'private', 'POST', {'cost': 5})
|
428
428
|
private_post_v5_position_set_auto_add_margin = privatePostV5PositionSetAutoAddMargin = Entry('v5/position/set-auto-add-margin', 'private', 'POST', {'cost': 2.5})
|
429
429
|
private_post_v5_position_add_margin = privatePostV5PositionAddMargin = Entry('v5/position/add-margin', 'private', 'POST', {'cost': 2.5})
|
430
|
+
private_post_v5_position_confirm_pending_mmr = privatePostV5PositionConfirmPendingMmr = Entry('v5/position/confirm-pending-mmr', 'private', 'POST', {'cost': 2.5})
|
430
431
|
private_post_v5_account_upgrade_to_uta = privatePostV5AccountUpgradeToUta = Entry('v5/account/upgrade-to-uta', 'private', 'POST', {'cost': 2.5})
|
431
432
|
private_post_v5_account_set_margin_mode = privatePostV5AccountSetMarginMode = Entry('v5/account/set-margin-mode', 'private', 'POST', {'cost': 2.5})
|
432
433
|
private_post_v5_account_mmp_modify = privatePostV5AccountMmpModify = Entry('v5/account/mmp-modify', 'private', 'POST', {'cost': 2.5})
|
@@ -190,6 +190,7 @@ class ImplicitAPI:
|
|
190
190
|
private_post_sprd_order = privatePostSprdOrder = Entry('sprd/order', 'private', 'POST', {'cost': 1})
|
191
191
|
private_post_sprd_cancel_order = privatePostSprdCancelOrder = Entry('sprd/cancel-order', 'private', 'POST', {'cost': 1})
|
192
192
|
private_post_sprd_mass_cancel = privatePostSprdMassCancel = Entry('sprd/mass-cancel', 'private', 'POST', {'cost': 1})
|
193
|
+
private_post_sprd_amend_order = privatePostSprdAmendOrder = Entry('sprd/amend-order', 'private', 'POST', {'cost': 1})
|
193
194
|
private_post_trade_order = privatePostTradeOrder = Entry('trade/order', 'private', 'POST', {'cost': 0.3333333333333333})
|
194
195
|
private_post_trade_batch_orders = privatePostTradeBatchOrders = Entry('trade/batch-orders', 'private', 'POST', {'cost': 0.06666666666666667})
|
195
196
|
private_post_trade_cancel_order = privatePostTradeCancelOrder = Entry('trade/cancel-order', 'private', 'POST', {'cost': 0.3333333333333333})
|
@@ -190,6 +190,7 @@ class ImplicitAPI:
|
|
190
190
|
private_post_sprd_order = privatePostSprdOrder = Entry('sprd/order', 'private', 'POST', {'cost': 1})
|
191
191
|
private_post_sprd_cancel_order = privatePostSprdCancelOrder = Entry('sprd/cancel-order', 'private', 'POST', {'cost': 1})
|
192
192
|
private_post_sprd_mass_cancel = privatePostSprdMassCancel = Entry('sprd/mass-cancel', 'private', 'POST', {'cost': 1})
|
193
|
+
private_post_sprd_amend_order = privatePostSprdAmendOrder = Entry('sprd/amend-order', 'private', 'POST', {'cost': 1})
|
193
194
|
private_post_trade_order = privatePostTradeOrder = Entry('trade/order', 'private', 'POST', {'cost': 0.3333333333333333})
|
194
195
|
private_post_trade_batch_orders = privatePostTradeBatchOrders = Entry('trade/batch-orders', 'private', 'POST', {'cost': 0.06666666666666667})
|
195
196
|
private_post_trade_cancel_order = privatePostTradeCancelOrder = Entry('trade/cancel-order', 'private', 'POST', {'cost': 0.3333333333333333})
|
@@ -190,6 +190,7 @@ class ImplicitAPI:
|
|
190
190
|
private_post_sprd_order = privatePostSprdOrder = Entry('sprd/order', 'private', 'POST', {'cost': 1})
|
191
191
|
private_post_sprd_cancel_order = privatePostSprdCancelOrder = Entry('sprd/cancel-order', 'private', 'POST', {'cost': 1})
|
192
192
|
private_post_sprd_mass_cancel = privatePostSprdMassCancel = Entry('sprd/mass-cancel', 'private', 'POST', {'cost': 1})
|
193
|
+
private_post_sprd_amend_order = privatePostSprdAmendOrder = Entry('sprd/amend-order', 'private', 'POST', {'cost': 1})
|
193
194
|
private_post_trade_order = privatePostTradeOrder = Entry('trade/order', 'private', 'POST', {'cost': 0.3333333333333333})
|
194
195
|
private_post_trade_batch_orders = privatePostTradeBatchOrders = Entry('trade/batch-orders', 'private', 'POST', {'cost': 0.06666666666666667})
|
195
196
|
private_post_trade_cancel_order = privatePostTradeCancelOrder = Entry('trade/cancel-order', 'private', 'POST', {'cost': 0.3333333333333333})
|
@@ -50,7 +50,7 @@ class bitget(Exchange, ImplicitAPI):
|
|
50
50
|
'has': {
|
51
51
|
'CORS': None,
|
52
52
|
'spot': True,
|
53
|
-
'margin':
|
53
|
+
'margin': True,
|
54
54
|
'swap': True,
|
55
55
|
'future': True,
|
56
56
|
'option': False,
|
@@ -65,6 +65,7 @@ class bitget(Exchange, ImplicitAPI):
|
|
65
65
|
'editOrder': True,
|
66
66
|
'fetchAccounts': False,
|
67
67
|
'fetchBalance': True,
|
68
|
+
'fetchBorrowInterest': True,
|
68
69
|
'fetchBorrowRate': True,
|
69
70
|
'fetchBorrowRateHistories': False,
|
70
71
|
'fetchBorrowRateHistory': False,
|
@@ -1488,19 +1489,43 @@ class bitget(Exchange, ImplicitAPI):
|
|
1488
1489
|
"""
|
1489
1490
|
retrieve information on the maximum leverage, and maintenance margin for trades of varying trade sizes for a single market
|
1490
1491
|
:see: https://bitgetlimited.github.io/apidoc/en/mix/#get-position-tier
|
1492
|
+
:see: https://bitgetlimited.github.io/apidoc/en/margin/#get-isolated-tier-data
|
1493
|
+
:see: https://bitgetlimited.github.io/apidoc/en/margin/#get-cross-tier-data
|
1491
1494
|
:param str symbol: unified market symbol
|
1492
1495
|
:param dict [params]: extra parameters specific to the bitget api endpoint
|
1496
|
+
:param str [params.marginMode]: for spot margin 'cross' or 'isolated', default is 'isolated'
|
1497
|
+
:param str [params.code]: required for cross spot margin
|
1493
1498
|
:returns dict: a `leverage tiers structure <https://github.com/ccxt/ccxt/wiki/Manual#leverage-tiers-structure>`
|
1494
1499
|
"""
|
1495
1500
|
await self.load_markets()
|
1496
1501
|
request = {}
|
1497
|
-
market = None
|
1498
1502
|
market = self.market(symbol)
|
1499
|
-
|
1503
|
+
type = None
|
1504
|
+
type, params = self.handle_market_type_and_params('fetchMarketLeverageTiers', market, params)
|
1505
|
+
response = None
|
1506
|
+
marginMode = None
|
1507
|
+
marginMode, params = self.handle_margin_mode_and_params('fetchMarketLeverageTiers', params, 'isolated')
|
1508
|
+
if (type == 'swap') or (type == 'future'):
|
1509
|
+
marketId = market['id']
|
1510
|
+
parts = marketId.split('_')
|
1511
|
+
productType = self.safe_string_upper(parts, 1)
|
1512
|
+
request['symbol'] = marketId
|
1513
|
+
request['productType'] = productType
|
1514
|
+
response = await self.publicMixGetMarketQueryPositionLever(self.extend(request, params))
|
1515
|
+
elif marginMode == 'isolated':
|
1516
|
+
request['symbol'] = market['info']['symbolName']
|
1517
|
+
response = await self.publicMarginGetIsolatedPublicTierData(self.extend(request, params))
|
1518
|
+
elif marginMode == 'cross':
|
1519
|
+
code = self.safe_string(params, 'code')
|
1520
|
+
self.check_required_argument('fetchMarketLeverageTiers', code, 'code')
|
1521
|
+
params = self.omit(params, 'code')
|
1522
|
+
currency = self.currency(code)
|
1523
|
+
request['coin'] = currency['code']
|
1524
|
+
response = await self.publicMarginGetCrossPublicTierData(self.extend(request, params))
|
1525
|
+
else:
|
1500
1526
|
raise BadRequest(self.id + ' fetchMarketLeverageTiers() symbol does not support market ' + symbol)
|
1501
|
-
|
1502
|
-
|
1503
|
-
response = await self.publicMixGetMarketQueryPositionLever(self.extend(request, params))
|
1527
|
+
#
|
1528
|
+
# swap and future
|
1504
1529
|
#
|
1505
1530
|
# {
|
1506
1531
|
# "code":"00000",
|
@@ -1517,10 +1542,50 @@ class bitget(Exchange, ImplicitAPI):
|
|
1517
1542
|
# "requestTime":1627292076687
|
1518
1543
|
# }
|
1519
1544
|
#
|
1520
|
-
|
1545
|
+
# isolated
|
1546
|
+
#
|
1547
|
+
# {
|
1548
|
+
# "code": "00000",
|
1549
|
+
# "msg": "success",
|
1550
|
+
# "requestTime": 1698352496622,
|
1551
|
+
# "data": [
|
1552
|
+
# {
|
1553
|
+
# "tier": "1",
|
1554
|
+
# "symbol": "BTCUSDT",
|
1555
|
+
# "leverage": "10",
|
1556
|
+
# "baseCoin": "BTC",
|
1557
|
+
# "quoteCoin": "USDT",
|
1558
|
+
# "baseMaxBorrowableAmount": "3",
|
1559
|
+
# "quoteMaxBorrowableAmount": "30000",
|
1560
|
+
# "maintainMarginRate": "0.05",
|
1561
|
+
# "initRate": "0.1111"
|
1562
|
+
# },
|
1563
|
+
# ]
|
1564
|
+
# }
|
1565
|
+
#
|
1566
|
+
# cross
|
1567
|
+
#
|
1568
|
+
# {
|
1569
|
+
# "code": "00000",
|
1570
|
+
# "msg": "success",
|
1571
|
+
# "requestTime": 1698352997077,
|
1572
|
+
# "data": [
|
1573
|
+
# {
|
1574
|
+
# "tier": "1",
|
1575
|
+
# "leverage": "3",
|
1576
|
+
# "coin": "BTC",
|
1577
|
+
# "maxBorrowableAmount": "26",
|
1578
|
+
# "maintainMarginRate": "0.1"
|
1579
|
+
# }
|
1580
|
+
# ]
|
1581
|
+
# }
|
1582
|
+
#
|
1583
|
+
result = self.safe_value(response, 'data', [])
|
1521
1584
|
return self.parse_market_leverage_tiers(result, market)
|
1522
1585
|
|
1523
1586
|
def parse_market_leverage_tiers(self, info, market=None):
|
1587
|
+
#
|
1588
|
+
# swap and future
|
1524
1589
|
#
|
1525
1590
|
# [
|
1526
1591
|
# {
|
@@ -1530,22 +1595,56 @@ class bitget(Exchange, ImplicitAPI):
|
|
1530
1595
|
# "leverage": 125,
|
1531
1596
|
# "keepMarginRate": "0.004"
|
1532
1597
|
# }
|
1533
|
-
# ]
|
1598
|
+
# ]
|
1599
|
+
#
|
1600
|
+
# isolated
|
1601
|
+
#
|
1602
|
+
# [
|
1603
|
+
# {
|
1604
|
+
# "tier": "1",
|
1605
|
+
# "symbol": "BTCUSDT",
|
1606
|
+
# "leverage": "10",
|
1607
|
+
# "baseCoin": "BTC",
|
1608
|
+
# "quoteCoin": "USDT",
|
1609
|
+
# "baseMaxBorrowableAmount": "3",
|
1610
|
+
# "quoteMaxBorrowableAmount": "30000",
|
1611
|
+
# "maintainMarginRate": "0.05",
|
1612
|
+
# "initRate": "0.1111"
|
1613
|
+
# }
|
1614
|
+
# ]
|
1615
|
+
#
|
1616
|
+
# cross
|
1617
|
+
#
|
1618
|
+
# [
|
1619
|
+
# {
|
1620
|
+
# "tier": "1",
|
1621
|
+
# "leverage": "3",
|
1622
|
+
# "coin": "BTC",
|
1623
|
+
# "maxBorrowableAmount": "26",
|
1624
|
+
# "maintainMarginRate": "0.1"
|
1625
|
+
# }
|
1626
|
+
# ]
|
1534
1627
|
#
|
1535
1628
|
tiers = []
|
1629
|
+
minNotional = 0
|
1536
1630
|
for i in range(0, len(info)):
|
1537
1631
|
item = info[i]
|
1538
|
-
|
1539
|
-
|
1632
|
+
minimumNotional = self.safe_number(item, 'startUnit')
|
1633
|
+
if minimumNotional is not None:
|
1634
|
+
minNotional = minimumNotional
|
1635
|
+
maxNotional = self.safe_number_n(item, ['endUnit', 'maxBorrowableAmount', 'baseMaxBorrowableAmount'])
|
1636
|
+
marginCurrency = self.safe_string_2(item, 'coin', 'baseCoin')
|
1637
|
+
currencyId = marginCurrency if (marginCurrency is not None) else market['base']
|
1540
1638
|
tiers.append({
|
1541
|
-
'tier': self.
|
1542
|
-
'currency':
|
1639
|
+
'tier': self.safe_integer_2(item, 'level', 'tier'),
|
1640
|
+
'currency': self.safe_currency_code(currencyId),
|
1543
1641
|
'minNotional': minNotional,
|
1544
1642
|
'maxNotional': maxNotional,
|
1545
|
-
'maintenanceMarginRate': self.
|
1643
|
+
'maintenanceMarginRate': self.safe_number_2(item, 'keepMarginRate', 'maintainMarginRate'),
|
1546
1644
|
'maxLeverage': self.safe_number(item, 'leverage'),
|
1547
1645
|
'info': item,
|
1548
1646
|
})
|
1647
|
+
minNotional = maxNotional
|
1549
1648
|
return tiers
|
1550
1649
|
|
1551
1650
|
async def fetch_deposits(self, code: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
@@ -3168,12 +3267,16 @@ class bitget(Exchange, ImplicitAPI):
|
|
3168
3267
|
create a list of trade orders(all orders should be of the same symbol)
|
3169
3268
|
:see: https://bitgetlimited.github.io/apidoc/en/spot/#batch-order
|
3170
3269
|
:see: https://bitgetlimited.github.io/apidoc/en/mix/#batch-order
|
3270
|
+
:see: https://bitgetlimited.github.io/apidoc/en/margin/#isolated-batch-order
|
3271
|
+
:see: https://bitgetlimited.github.io/apidoc/en/margin/#cross-batch-order
|
3171
3272
|
:param array orders: list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
|
3273
|
+
:param dict [params]: extra parameters specific to the api endpoint
|
3172
3274
|
:returns dict: an `order structure <https://github.com/ccxt/ccxt/wiki/Manual#order-structure>`
|
3173
3275
|
"""
|
3174
3276
|
await self.load_markets()
|
3175
3277
|
ordersRequests = []
|
3176
3278
|
symbol = None
|
3279
|
+
marginMode = None
|
3177
3280
|
for i in range(0, len(orders)):
|
3178
3281
|
rawOrder = orders[i]
|
3179
3282
|
marketId = self.safe_string(rawOrder, 'symbol')
|
@@ -3187,20 +3290,34 @@ class bitget(Exchange, ImplicitAPI):
|
|
3187
3290
|
amount = self.safe_value(rawOrder, 'amount')
|
3188
3291
|
price = self.safe_value(rawOrder, 'price')
|
3189
3292
|
orderParams = self.safe_value(rawOrder, 'params', {})
|
3293
|
+
marginResult = self.handle_margin_mode_and_params('createOrders', params)
|
3294
|
+
currentMarginMode = marginResult[0]
|
3295
|
+
if currentMarginMode is not None:
|
3296
|
+
if marginMode is None:
|
3297
|
+
marginMode = currentMarginMode
|
3298
|
+
else:
|
3299
|
+
if marginMode != currentMarginMode:
|
3300
|
+
raise BadRequest(self.id + ' createOrders() requires all orders to have the same margin mode(isolated or cross)')
|
3190
3301
|
orderRequest = self.create_order_request(marketId, type, side, amount, price, orderParams)
|
3191
3302
|
ordersRequests.append(orderRequest)
|
3192
3303
|
market = self.market(symbol)
|
3304
|
+
symbolRequest = (market['info']['symbolName']) if (marginMode is not None) else (market['id'])
|
3193
3305
|
request = {
|
3194
|
-
'symbol':
|
3306
|
+
'symbol': symbolRequest,
|
3195
3307
|
}
|
3196
3308
|
response = None
|
3197
3309
|
if market['spot']:
|
3198
3310
|
request['orderList'] = ordersRequests
|
3199
|
-
|
3200
|
-
else:
|
3311
|
+
if (market['swap']) or (market['future']):
|
3201
3312
|
request['orderDataList'] = ordersRequests
|
3202
3313
|
request['marginCoin'] = market['settleId']
|
3203
3314
|
response = await self.privateMixPostOrderBatchOrders(request)
|
3315
|
+
elif marginMode == 'isolated':
|
3316
|
+
response = await self.privateMarginPostIsolatedOrderBatchPlaceOrder(request)
|
3317
|
+
elif marginMode == 'cross':
|
3318
|
+
response = await self.privateMarginPostCrossOrderBatchPlaceOrder(request)
|
3319
|
+
else:
|
3320
|
+
response = await self.privateSpotPostTradeBatchOrders(request)
|
3204
3321
|
#
|
3205
3322
|
# {
|
3206
3323
|
# "code": "00000",
|
@@ -5955,6 +6072,138 @@ class bitget(Exchange, ImplicitAPI):
|
|
5955
6072
|
'info': info,
|
5956
6073
|
}
|
5957
6074
|
|
6075
|
+
async def fetch_borrow_interest(self, code: Optional[str] = None, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
6076
|
+
"""
|
6077
|
+
fetch the interest owed by the user for borrowing currency for margin trading
|
6078
|
+
:see: https://bitgetlimited.github.io/apidoc/en/margin/#get-isolated-interest-records
|
6079
|
+
:see: https://bitgetlimited.github.io/apidoc/en/margin/#get-cross-interest-records
|
6080
|
+
:param str [code]: unified currency code
|
6081
|
+
:param str [symbol]: unified market symbol when fetching interest in isolated markets
|
6082
|
+
:param int [since]: the earliest time in ms to fetch borrow interest for
|
6083
|
+
:param int [limit]: the maximum number of structures to retrieve
|
6084
|
+
:param dict [params]: extra parameters specific to the bitget api endpoint
|
6085
|
+
:returns dict[]: a list of `borrow interest structures <https://github.com/ccxt/ccxt/wiki/Manual#borrow-interest-structure>`
|
6086
|
+
"""
|
6087
|
+
await self.load_markets()
|
6088
|
+
market = None
|
6089
|
+
if symbol is not None:
|
6090
|
+
market = self.market(symbol)
|
6091
|
+
request = {}
|
6092
|
+
currency = None
|
6093
|
+
if code is not None:
|
6094
|
+
currency = self.currency(code)
|
6095
|
+
request['coin'] = currency['id']
|
6096
|
+
if since is not None:
|
6097
|
+
request['startTime'] = since
|
6098
|
+
else:
|
6099
|
+
request['startTime'] = self.milliseconds() - 7776000000
|
6100
|
+
if limit is not None:
|
6101
|
+
request['pageSize'] = limit
|
6102
|
+
response = None
|
6103
|
+
marginMode = None
|
6104
|
+
marginMode, params = self.handle_margin_mode_and_params('fetchBorrowInterest', params, 'cross')
|
6105
|
+
if marginMode == 'isolated':
|
6106
|
+
self.check_required_symbol('fetchBorrowInterest', symbol)
|
6107
|
+
request['symbol'] = market['info']['symbolName']
|
6108
|
+
response = await self.privateMarginGetIsolatedInterestList(self.extend(request, params))
|
6109
|
+
elif marginMode == 'cross':
|
6110
|
+
response = await self.privateMarginGetCrossInterestList(self.extend(request, params))
|
6111
|
+
#
|
6112
|
+
# isolated
|
6113
|
+
#
|
6114
|
+
# {
|
6115
|
+
# "code": "00000",
|
6116
|
+
# "msg": "success",
|
6117
|
+
# "requestTime": 1698282523888,
|
6118
|
+
# "data": {
|
6119
|
+
# "resultList": [
|
6120
|
+
# {
|
6121
|
+
# "interestId": "1100560904468705284",
|
6122
|
+
# "interestCoin": "USDT",
|
6123
|
+
# "interestRate": "0.000126279",
|
6124
|
+
# "loanCoin": "USDT",
|
6125
|
+
# "amount": "0.00000298",
|
6126
|
+
# "type": "scheduled",
|
6127
|
+
# "symbol": "BTCUSDT",
|
6128
|
+
# "ctime": "1698120000000"
|
6129
|
+
# },
|
6130
|
+
# ],
|
6131
|
+
# "maxId": "1100560904468705284",
|
6132
|
+
# "minId": "1096915487398965249"
|
6133
|
+
# }
|
6134
|
+
# }
|
6135
|
+
#
|
6136
|
+
# cross
|
6137
|
+
#
|
6138
|
+
# {
|
6139
|
+
# "code": "00000",
|
6140
|
+
# "msg": "success",
|
6141
|
+
# "requestTime": 1698282552126,
|
6142
|
+
# "data": {
|
6143
|
+
# "resultList": [
|
6144
|
+
# {
|
6145
|
+
# "interestId": "1099126154352799744",
|
6146
|
+
# "interestCoin": "USDT",
|
6147
|
+
# "interestRate": "0.000126279",
|
6148
|
+
# "loanCoin": "USDT",
|
6149
|
+
# "amount": "0.00002631",
|
6150
|
+
# "type": "scheduled",
|
6151
|
+
# "ctime": "1697778000000"
|
6152
|
+
# },
|
6153
|
+
# ],
|
6154
|
+
# "maxId": "1099126154352799744",
|
6155
|
+
# "minId": "1096917004629716993"
|
6156
|
+
# }
|
6157
|
+
# }
|
6158
|
+
#
|
6159
|
+
data = self.safe_value(response, 'data', {})
|
6160
|
+
rows = self.safe_value(data, 'resultList', [])
|
6161
|
+
interest = self.parse_borrow_interests(rows, market)
|
6162
|
+
return self.filter_by_currency_since_limit(interest, code, since, limit)
|
6163
|
+
|
6164
|
+
def parse_borrow_interest(self, info, market=None):
|
6165
|
+
#
|
6166
|
+
# isolated
|
6167
|
+
#
|
6168
|
+
# {
|
6169
|
+
# "interestId": "1100560904468705284",
|
6170
|
+
# "interestCoin": "USDT",
|
6171
|
+
# "interestRate": "0.000126279",
|
6172
|
+
# "loanCoin": "USDT",
|
6173
|
+
# "amount": "0.00000298",
|
6174
|
+
# "type": "scheduled",
|
6175
|
+
# "symbol": "BTCUSDT",
|
6176
|
+
# "ctime": "1698120000000"
|
6177
|
+
# }
|
6178
|
+
#
|
6179
|
+
# cross
|
6180
|
+
#
|
6181
|
+
# {
|
6182
|
+
# "interestId": "1099126154352799744",
|
6183
|
+
# "interestCoin": "USDT",
|
6184
|
+
# "interestRate": "0.000126279",
|
6185
|
+
# "loanCoin": "USDT",
|
6186
|
+
# "amount": "0.00002631",
|
6187
|
+
# "type": "scheduled",
|
6188
|
+
# "ctime": "1697778000000"
|
6189
|
+
# }
|
6190
|
+
#
|
6191
|
+
marketId = self.safe_string(info, 'symbol')
|
6192
|
+
market = self.safe_market(marketId, market)
|
6193
|
+
marginMode = 'isolated' if (marketId is not None) else 'cross'
|
6194
|
+
timestamp = self.safe_integer(info, 'ctime')
|
6195
|
+
return {
|
6196
|
+
'symbol': self.safe_string(market, 'symbol'),
|
6197
|
+
'marginMode': marginMode,
|
6198
|
+
'currency': self.safe_currency_code(self.safe_string(info, 'interestCoin')),
|
6199
|
+
'interest': self.safe_number(info, 'amount'),
|
6200
|
+
'interestRate': self.safe_number(info, 'interestRate'),
|
6201
|
+
'amountBorrowed': None,
|
6202
|
+
'timestamp': timestamp,
|
6203
|
+
'datetime': self.iso8601(timestamp),
|
6204
|
+
'info': info,
|
6205
|
+
}
|
6206
|
+
|
5958
6207
|
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
5959
6208
|
if not response:
|
5960
6209
|
return None # fallback to default error handler
|
@@ -1071,13 +1071,13 @@ class bitopro(Exchange, ImplicitAPI):
|
|
1071
1071
|
request = {
|
1072
1072
|
# 'pair': market['id'], # optional
|
1073
1073
|
}
|
1074
|
-
|
1075
|
-
method = self.safe_string(self.options, 'privateDeleteOrdersPair', 'privateDeleteOrdersAll')
|
1074
|
+
response = None
|
1076
1075
|
if symbol is not None:
|
1077
1076
|
market = self.market(symbol)
|
1078
1077
|
request['pair'] = market['id']
|
1079
|
-
|
1080
|
-
|
1078
|
+
response = await self.privateDeleteOrdersPair(self.extend(request, params))
|
1079
|
+
else:
|
1080
|
+
response = await self.privateDeleteOrdersAll(self.extend(request, params))
|
1081
1081
|
result = self.safe_value(response, 'data', {})
|
1082
1082
|
#
|
1083
1083
|
# {
|
@@ -794,6 +794,16 @@ class bitrue(Exchange, ImplicitAPI):
|
|
794
794
|
return orderbook
|
795
795
|
|
796
796
|
def parse_ticker(self, ticker, market=None):
|
797
|
+
#
|
798
|
+
# fetchBidsAsks
|
799
|
+
#
|
800
|
+
# {
|
801
|
+
# "symbol": "LTCBTC",
|
802
|
+
# "bidPrice": "4.00000000",
|
803
|
+
# "bidQty": "431.00000000",
|
804
|
+
# "askPrice": "4.00000200",
|
805
|
+
# "askQty": "9.00000000"
|
806
|
+
# }
|
797
807
|
#
|
798
808
|
# fetchTicker
|
799
809
|
#
|
@@ -818,10 +828,10 @@ class bitrue(Exchange, ImplicitAPI):
|
|
818
828
|
'datetime': None,
|
819
829
|
'high': self.safe_string(ticker, 'high24hr'),
|
820
830
|
'low': self.safe_string(ticker, 'low24hr'),
|
821
|
-
'bid': self.
|
822
|
-
'bidVolume':
|
823
|
-
'ask': self.
|
824
|
-
'askVolume':
|
831
|
+
'bid': self.safe_string_2(ticker, 'highestBid', 'bidPrice'),
|
832
|
+
'bidVolume': self.safe_string(ticker, 'bidQty'),
|
833
|
+
'ask': self.safe_string_2(ticker, 'lowestAsk', 'askPrice'),
|
834
|
+
'askVolume': self.safe_string(ticker, 'askQty'),
|
825
835
|
'vwap': None,
|
826
836
|
'open': None,
|
827
837
|
'close': last,
|
@@ -941,23 +951,30 @@ class bitrue(Exchange, ImplicitAPI):
|
|
941
951
|
async def fetch_bids_asks(self, symbols: Optional[List[str]] = None, params={}):
|
942
952
|
"""
|
943
953
|
fetches the bid and ask price and volume for multiple markets
|
954
|
+
:see: https://github.com/Bitrue-exchange/Spot-official-api-docs#symbol-order-book-ticker
|
944
955
|
:param str[]|None symbols: unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
|
945
956
|
:param dict [params]: extra parameters specific to the bitrue api endpoint
|
946
957
|
:returns dict: a dictionary of `ticker structures <https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure>`
|
947
958
|
"""
|
948
959
|
await self.load_markets()
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
|
960
|
+
symbols = self.market_symbols(symbols)
|
961
|
+
market = None
|
962
|
+
request = {}
|
963
|
+
if symbols is not None:
|
964
|
+
first = self.safe_string(symbols, 0)
|
965
|
+
market = self.market(first)
|
966
|
+
request['symbol'] = market['id']
|
967
|
+
response = await self.v1PublicGetTickerBookTicker(self.extend(request, params))
|
968
|
+
# {
|
969
|
+
# "symbol": "LTCBTC",
|
970
|
+
# "bidPrice": "4.00000000",
|
971
|
+
# "bidQty": "431.00000000",
|
972
|
+
# "askPrice": "4.00000200",
|
973
|
+
# "askQty": "9.00000000"
|
974
|
+
# }
|
975
|
+
data = {}
|
976
|
+
data[market['id']] = response
|
977
|
+
return self.parse_tickers(data, symbols)
|
961
978
|
|
962
979
|
async def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}):
|
963
980
|
"""
|
@@ -635,6 +635,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
635
635
|
'v5/position/trading-stop': 5, # 10/s => cost = 50 / 10 = 5
|
636
636
|
'v5/position/set-auto-add-margin': 2.5,
|
637
637
|
'v5/position/add-margin': 2.5,
|
638
|
+
'v5/position/confirm-pending-mmr': 2.5,
|
638
639
|
# account
|
639
640
|
'v5/account/upgrade-to-uta': 2.5,
|
640
641
|
'v5/account/set-margin-mode': 2.5,
|
@@ -3072,8 +3073,11 @@ class bybit(Exchange, ImplicitAPI):
|
|
3072
3073
|
# "time": 1672125441042
|
3073
3074
|
# }
|
3074
3075
|
#
|
3076
|
+
timestamp = self.safe_integer(response, 'time')
|
3075
3077
|
result = {
|
3076
3078
|
'info': response,
|
3079
|
+
'timestamp': timestamp,
|
3080
|
+
'datetime': self.iso8601(timestamp),
|
3077
3081
|
}
|
3078
3082
|
responseResult = self.safe_value(response, 'result', {})
|
3079
3083
|
currencyList = self.safe_value_n(responseResult, ['loanAccountList', 'list', 'balance'])
|
@@ -50,6 +50,7 @@ class cryptocom(Exchange, ImplicitAPI):
|
|
50
50
|
'borrowMargin': True,
|
51
51
|
'cancelAllOrders': True,
|
52
52
|
'cancelOrder': True,
|
53
|
+
'cancelOrders': True,
|
53
54
|
'createOrder': True,
|
54
55
|
'createOrders': True,
|
55
56
|
'fetchAccounts': True,
|
@@ -1323,6 +1324,34 @@ class cryptocom(Exchange, ImplicitAPI):
|
|
1323
1324
|
result = self.safe_value(response, 'result', {})
|
1324
1325
|
return self.parse_order(result, market)
|
1325
1326
|
|
1327
|
+
async def cancel_orders(self, ids, symbol: Optional[str] = None, params={}):
|
1328
|
+
"""
|
1329
|
+
cancel multiple orders
|
1330
|
+
:see: https://exchange-docs.crypto.com/exchange/v1/rest-ws/index.html#private-cancel-order-list-list
|
1331
|
+
:param str[] ids: order ids
|
1332
|
+
:param str symbol: unified market symbol
|
1333
|
+
:param dict [params]: extra parameters specific to the okx api endpoint
|
1334
|
+
:returns dict: an list of `order structures <https://github.com/ccxt/ccxt/wiki/Manual#order-structure>`
|
1335
|
+
"""
|
1336
|
+
self.check_required_symbol('cancelOrders', symbol)
|
1337
|
+
await self.load_markets()
|
1338
|
+
market = self.market(symbol)
|
1339
|
+
orderRequests = []
|
1340
|
+
for i in range(0, len(ids)):
|
1341
|
+
id = ids[i]
|
1342
|
+
order = {
|
1343
|
+
'instrument_name': market['id'],
|
1344
|
+
'order_id': str(id),
|
1345
|
+
}
|
1346
|
+
orderRequests.append(order)
|
1347
|
+
request = {
|
1348
|
+
'contingency_type': 'LIST',
|
1349
|
+
'order_list': orderRequests,
|
1350
|
+
}
|
1351
|
+
response = await self.v1PrivatePostPrivateCancelOrderList(self.extend(request, params))
|
1352
|
+
result = self.safe_value(response, 'result', [])
|
1353
|
+
return self.parse_orders(result, market, None, None, params)
|
1354
|
+
|
1326
1355
|
async def fetch_open_orders(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
1327
1356
|
"""
|
1328
1357
|
fetch all unfilled currently open orders
|