ccxt 4.0.72__tar.gz → 4.0.73__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ccxt might be problematic. Click here for more details.
- {ccxt-4.0.72/ccxt.egg-info → ccxt-4.0.73}/PKG-INFO +4 -4
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/__init__.py +1 -1
- ccxt-4.0.73/ccxt/abstract/lbank2.py +61 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/__init__.py +1 -1
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/base/exchange.py +8 -2
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/binance.py +95 -2
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bybit.py +92 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/cryptocom.py +1 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/delta.py +1 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/deribit.py +1 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/gate.py +175 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/lbank2.py +507 -185
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/okx.py +1 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/base/exchange.py +8 -2
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/binance.py +95 -2
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bybit.py +92 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/cryptocom.py +1 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/delta.py +1 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/deribit.py +1 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/gate.py +175 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/lbank2.py +506 -185
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/okx.py +1 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/__init__.py +1 -1
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bitmex.py +7 -6
- {ccxt-4.0.72 → ccxt-4.0.73/ccxt.egg-info}/PKG-INFO +4 -4
- {ccxt-4.0.72 → ccxt-4.0.73}/package.json +1 -1
- ccxt-4.0.72/ccxt/abstract/lbank2.py +0 -57
- {ccxt-4.0.72 → ccxt-4.0.73}/LICENSE.txt +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/MANIFEST.in +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/README.rst +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/__init__.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/ace.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/alpaca.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/ascendex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bequant.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bigone.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/binance.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/binancecoinm.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/binanceus.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/binanceusdm.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bingx.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bit2c.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitbank.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitbay.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitbns.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitcoincom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitfinex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitfinex2.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitflyer.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitforex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitget.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bithumb.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitmart.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitmex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitopro.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitpanda.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitrue.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitso.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitstamp.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitstamp1.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bittrex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bitvavo.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bkex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bl3p.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/blockchaincom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/btcalpha.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/btcbox.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/btcmarkets.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/btctradeua.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/btcturk.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/bybit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/cex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/coinbase.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/coinbaseprime.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/coinbasepro.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/coincheck.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/coinex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/coinfalcon.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/coinmate.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/coinone.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/coinsph.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/coinspot.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/cryptocom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/currencycom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/delta.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/deribit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/digifinex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/exmo.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/fmfwio.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/gate.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/gateio.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/gemini.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/hitbtc.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/hitbtc3.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/hollaex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/huobi.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/huobijp.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/huobipro.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/idex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/independentreserve.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/indodax.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/kraken.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/krakenfutures.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/kucoin.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/kucoinfutures.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/kuna.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/latoken.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/lbank.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/luno.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/lykke.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/mercado.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/mexc.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/mexc3.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/ndax.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/novadax.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/oceanex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/okcoin.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/okex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/okex5.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/okx.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/paymium.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/phemex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/poloniex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/poloniexfutures.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/probit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/tidex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/timex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/tokocrypto.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/upbit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/wavesexchange.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/wazirx.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/whitebit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/woo.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/yobit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/zaif.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/abstract/zonda.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/ace.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/alpaca.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/ascendex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/ace.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/alpaca.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/ascendex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/base/__init__.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/base/throttler.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/base/ws/__init__.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/base/ws/cache.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/base/ws/client.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/base/ws/fast_client.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/base/ws/functions.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/base/ws/future.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/base/ws/order_book.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/base/ws/order_book_side.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bequant.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bigone.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/binancecoinm.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/binanceus.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/binanceusdm.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bingx.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bit2c.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitbank.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitbay.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitbns.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitcoincom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitfinex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitfinex2.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitflyer.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitforex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitget.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bithumb.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitmart.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitmex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitopro.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitpanda.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitrue.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitso.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitstamp.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitstamp1.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bittrex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bitvavo.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bkex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/bl3p.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/blockchaincom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/btcalpha.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/btcbox.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/btcmarkets.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/btctradeua.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/btcturk.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/cex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/coinbase.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/coinbaseprime.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/coinbasepro.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/coincheck.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/coinex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/coinfalcon.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/coinmate.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/coinone.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/coinsph.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/coinspot.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/currencycom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/digifinex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/exmo.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/flowbtc.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/fmfwio.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/gateio.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/gemini.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/hitbtc.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/hitbtc3.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/hollaex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/huobi.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/huobijp.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/huobipro.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/idex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/independentreserve.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/indodax.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/kraken.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/krakenfutures.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/kucoin.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/kucoinfutures.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/kuna.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/latoken.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/lbank.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/luno.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/lykke.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/mercado.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/mexc.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/mexc3.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/ndax.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/novadax.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/oceanex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/okcoin.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/okex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/okex5.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/paymium.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/phemex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/poloniex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/poloniexfutures.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/probit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/tidex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/timex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/tokocrypto.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/upbit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/wavesexchange.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/wazirx.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/whitebit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/woo.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/yobit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/zaif.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/async_support/zonda.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/base/__init__.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/base/decimal_to_precision.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/base/errors.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/base/precise.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/base/types.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bequant.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bigone.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/binancecoinm.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/binanceus.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/binanceusdm.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bingx.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bit2c.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitbank.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitbay.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitbns.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitcoincom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitfinex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitfinex2.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitflyer.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitforex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitget.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bithumb.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitmart.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitmex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitopro.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitpanda.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitrue.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitso.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitstamp.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitstamp1.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bittrex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bitvavo.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bkex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/bl3p.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/blockchaincom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/btcalpha.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/btcbox.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/btcmarkets.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/btctradeua.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/btcturk.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/cex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/coinbase.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/coinbaseprime.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/coinbasepro.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/coincheck.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/coinex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/coinfalcon.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/coinmate.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/coinone.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/coinsph.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/coinspot.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/currencycom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/digifinex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/exmo.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/flowbtc.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/fmfwio.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/gateio.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/gemini.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/hitbtc.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/hitbtc3.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/hollaex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/huobi.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/huobijp.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/huobipro.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/idex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/independentreserve.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/indodax.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/kraken.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/krakenfutures.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/kucoin.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/kucoinfutures.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/kuna.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/latoken.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/lbank.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/luno.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/lykke.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/mercado.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/mexc.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/mexc3.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/ndax.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/novadax.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/oceanex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/okcoin.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/okex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/okex5.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/paymium.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/phemex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/poloniex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/poloniexfutures.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/alpaca.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/ascendex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bequant.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/binance.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/binancecoinm.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/binanceus.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/binanceusdm.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bitcoincom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bitfinex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bitfinex2.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bitget.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bitmart.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bitopro.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bitpanda.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bitrue.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bitstamp.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bittrex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bitvavo.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/blockchaincom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/btcex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/bybit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/cex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/coinbase.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/coinbaseprime.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/coinbasepro.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/coinex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/cryptocom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/currencycom.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/deribit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/exmo.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/gate.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/gateio.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/gemini.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/hitbtc.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/hollaex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/huobi.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/huobijp.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/huobipro.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/idex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/independentreserve.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/kraken.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/krakenfutures.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/kucoin.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/kucoinfutures.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/luno.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/mexc.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/mexc3.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/ndax.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/okcoin.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/okex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/okx.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/phemex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/poloniex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/poloniexfutures.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/probit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/ripio.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/upbit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/wazirx.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/whitebit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/woo.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/pro/zb.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/probit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/static_dependencies/__init__.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/static_dependencies/ecdsa/der.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/static_dependencies/ecdsa/util.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/static_dependencies/keccak/__init__.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/static_dependencies/keccak/keccak.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/__init__.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/__init__.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_account.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_balance.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_borrow_interest.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_borrow_rate.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_calculate_fee.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_crypto.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_currency.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_datetime.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_decimal_to_precision.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_deep_extend.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_funding_rate_history.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_ledger_entry.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_ledger_item.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_leverage_tier.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_margin_modification.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_market.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_number.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_ohlcv.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_open_interest.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_order.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_order_book.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_position.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_shared_methods.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_status.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_throttle.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_ticker.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_trade.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_trading_fee.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/base/test_transaction.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/test_async.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/test/test_sync.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/tidex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/timex.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/tokocrypto.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/upbit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/wavesexchange.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/wazirx.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/whitebit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/woo.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/yobit.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/zaif.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt/zonda.py +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt.egg-info/SOURCES.txt +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt.egg-info/dependency_links.txt +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt.egg-info/requires.txt +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/ccxt.egg-info/top_level.txt +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/setup.cfg +0 -0
- {ccxt-4.0.72 → ccxt-4.0.73}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.0.
|
3
|
+
Version: 4.0.73
|
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
|
@@ -228,13 +228,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
|
|
228
228
|
|
229
229
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
230
230
|
|
231
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.
|
232
|
-
* unpkg: https://unpkg.com/ccxt@4.0.
|
231
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.73/dist/ccxt.browser.js
|
232
|
+
* unpkg: https://unpkg.com/ccxt@4.0.73/dist/ccxt.browser.js
|
233
233
|
|
234
234
|
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.
|
235
235
|
|
236
236
|
```HTML
|
237
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.
|
237
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.73/dist/ccxt.browser.js"></script>
|
238
238
|
```
|
239
239
|
|
240
240
|
Creates a global `ccxt` object:
|
@@ -0,0 +1,61 @@
|
|
1
|
+
from ccxt.base.types import Entry
|
2
|
+
|
3
|
+
|
4
|
+
class ImplicitAPI:
|
5
|
+
spot_public_get_currencypairs = spotPublicGetCurrencyPairs = Entry('currencyPairs', ['spot', 'public'], 'GET', {'cost': 2.5})
|
6
|
+
spot_public_get_accuracy = spotPublicGetAccuracy = Entry('accuracy', ['spot', 'public'], 'GET', {'cost': 2.5})
|
7
|
+
spot_public_get_usdtocny = spotPublicGetUsdToCny = Entry('usdToCny', ['spot', 'public'], 'GET', {'cost': 2.5})
|
8
|
+
spot_public_get_withdrawconfigs = spotPublicGetWithdrawConfigs = Entry('withdrawConfigs', ['spot', 'public'], 'GET', {'cost': 2.5})
|
9
|
+
spot_public_get_timestamp = spotPublicGetTimestamp = Entry('timestamp', ['spot', 'public'], 'GET', {'cost': 2.5})
|
10
|
+
spot_public_get_ticker_24hr = spotPublicGetTicker24hr = Entry('ticker/24hr', ['spot', 'public'], 'GET', {'cost': 2.5})
|
11
|
+
spot_public_get_ticker = spotPublicGetTicker = Entry('ticker', ['spot', 'public'], 'GET', {'cost': 2.5})
|
12
|
+
spot_public_get_depth = spotPublicGetDepth = Entry('depth', ['spot', 'public'], 'GET', {'cost': 2.5})
|
13
|
+
spot_public_get_incrdepth = spotPublicGetIncrDepth = Entry('incrDepth', ['spot', 'public'], 'GET', {'cost': 2.5})
|
14
|
+
spot_public_get_trades = spotPublicGetTrades = Entry('trades', ['spot', 'public'], 'GET', {'cost': 2.5})
|
15
|
+
spot_public_get_kline = spotPublicGetKline = Entry('kline', ['spot', 'public'], 'GET', {'cost': 2.5})
|
16
|
+
spot_public_get_supplement_system_ping = spotPublicGetSupplementSystemPing = Entry('supplement/system_ping', ['spot', 'public'], 'GET', {'cost': 2.5})
|
17
|
+
spot_public_get_supplement_incrdepth = spotPublicGetSupplementIncrDepth = Entry('supplement/incrDepth', ['spot', 'public'], 'GET', {'cost': 2.5})
|
18
|
+
spot_public_get_supplement_trades = spotPublicGetSupplementTrades = Entry('supplement/trades', ['spot', 'public'], 'GET', {'cost': 2.5})
|
19
|
+
spot_public_get_supplement_ticker_price = spotPublicGetSupplementTickerPrice = Entry('supplement/ticker/price', ['spot', 'public'], 'GET', {'cost': 2.5})
|
20
|
+
spot_public_get_supplement_ticker_bookticker = spotPublicGetSupplementTickerBookTicker = Entry('supplement/ticker/bookTicker', ['spot', 'public'], 'GET', {'cost': 2.5})
|
21
|
+
spot_public_post_supplement_system_status = spotPublicPostSupplementSystemStatus = Entry('supplement/system_status', ['spot', 'public'], 'POST', {'cost': 2.5})
|
22
|
+
spot_private_post_user_info = spotPrivatePostUserInfo = Entry('user_info', ['spot', 'private'], 'POST', {'cost': 2.5})
|
23
|
+
spot_private_post_subscribe_get_key = spotPrivatePostSubscribeGetKey = Entry('subscribe/get_key', ['spot', 'private'], 'POST', {'cost': 2.5})
|
24
|
+
spot_private_post_subscribe_refresh_key = spotPrivatePostSubscribeRefreshKey = Entry('subscribe/refresh_key', ['spot', 'private'], 'POST', {'cost': 2.5})
|
25
|
+
spot_private_post_subscribe_destroy_key = spotPrivatePostSubscribeDestroyKey = Entry('subscribe/destroy_key', ['spot', 'private'], 'POST', {'cost': 2.5})
|
26
|
+
spot_private_post_get_deposit_address = spotPrivatePostGetDepositAddress = Entry('get_deposit_address', ['spot', 'private'], 'POST', {'cost': 2.5})
|
27
|
+
spot_private_post_deposit_history = spotPrivatePostDepositHistory = Entry('deposit_history', ['spot', 'private'], 'POST', {'cost': 2.5})
|
28
|
+
spot_private_post_create_order = spotPrivatePostCreateOrder = Entry('create_order', ['spot', 'private'], 'POST', {'cost': 1})
|
29
|
+
spot_private_post_batch_create_order = spotPrivatePostBatchCreateOrder = Entry('batch_create_order', ['spot', 'private'], 'POST', {'cost': 1})
|
30
|
+
spot_private_post_cancel_order = spotPrivatePostCancelOrder = Entry('cancel_order', ['spot', 'private'], 'POST', {'cost': 1})
|
31
|
+
spot_private_post_cancel_clientorders = spotPrivatePostCancelClientOrders = Entry('cancel_clientOrders', ['spot', 'private'], 'POST', {'cost': 1})
|
32
|
+
spot_private_post_orders_info = spotPrivatePostOrdersInfo = Entry('orders_info', ['spot', 'private'], 'POST', {'cost': 2.5})
|
33
|
+
spot_private_post_orders_info_history = spotPrivatePostOrdersInfoHistory = Entry('orders_info_history', ['spot', 'private'], 'POST', {'cost': 2.5})
|
34
|
+
spot_private_post_order_transaction_detail = spotPrivatePostOrderTransactionDetail = Entry('order_transaction_detail', ['spot', 'private'], 'POST', {'cost': 2.5})
|
35
|
+
spot_private_post_transaction_history = spotPrivatePostTransactionHistory = Entry('transaction_history', ['spot', 'private'], 'POST', {'cost': 2.5})
|
36
|
+
spot_private_post_orders_info_no_deal = spotPrivatePostOrdersInfoNoDeal = Entry('orders_info_no_deal', ['spot', 'private'], 'POST', {'cost': 2.5})
|
37
|
+
spot_private_post_withdraw = spotPrivatePostWithdraw = Entry('withdraw', ['spot', 'private'], 'POST', {'cost': 2.5})
|
38
|
+
spot_private_post_withdrawcancel = spotPrivatePostWithdrawCancel = Entry('withdrawCancel', ['spot', 'private'], 'POST', {'cost': 2.5})
|
39
|
+
spot_private_post_withdraws = spotPrivatePostWithdraws = Entry('withdraws', ['spot', 'private'], 'POST', {'cost': 2.5})
|
40
|
+
spot_private_post_supplement_user_info = spotPrivatePostSupplementUserInfo = Entry('supplement/user_info', ['spot', 'private'], 'POST', {'cost': 2.5})
|
41
|
+
spot_private_post_supplement_withdraw = spotPrivatePostSupplementWithdraw = Entry('supplement/withdraw', ['spot', 'private'], 'POST', {'cost': 2.5})
|
42
|
+
spot_private_post_supplement_deposit_history = spotPrivatePostSupplementDepositHistory = Entry('supplement/deposit_history', ['spot', 'private'], 'POST', {'cost': 2.5})
|
43
|
+
spot_private_post_supplement_withdraws = spotPrivatePostSupplementWithdraws = Entry('supplement/withdraws', ['spot', 'private'], 'POST', {'cost': 2.5})
|
44
|
+
spot_private_post_supplement_get_deposit_address = spotPrivatePostSupplementGetDepositAddress = Entry('supplement/get_deposit_address', ['spot', 'private'], 'POST', {'cost': 2.5})
|
45
|
+
spot_private_post_supplement_asset_detail = spotPrivatePostSupplementAssetDetail = Entry('supplement/asset_detail', ['spot', 'private'], 'POST', {'cost': 2.5})
|
46
|
+
spot_private_post_supplement_customer_trade_fee = spotPrivatePostSupplementCustomerTradeFee = Entry('supplement/customer_trade_fee', ['spot', 'private'], 'POST', {'cost': 2.5})
|
47
|
+
spot_private_post_supplement_api_restrictions = spotPrivatePostSupplementApiRestrictions = Entry('supplement/api_Restrictions', ['spot', 'private'], 'POST', {'cost': 2.5})
|
48
|
+
spot_private_post_supplement_system_ping = spotPrivatePostSupplementSystemPing = Entry('supplement/system_ping', ['spot', 'private'], 'POST', {'cost': 2.5})
|
49
|
+
spot_private_post_supplement_create_order_test = spotPrivatePostSupplementCreateOrderTest = Entry('supplement/create_order_test', ['spot', 'private'], 'POST', {'cost': 1})
|
50
|
+
spot_private_post_supplement_create_order = spotPrivatePostSupplementCreateOrder = Entry('supplement/create_order', ['spot', 'private'], 'POST', {'cost': 1})
|
51
|
+
spot_private_post_supplement_cancel_order = spotPrivatePostSupplementCancelOrder = Entry('supplement/cancel_order', ['spot', 'private'], 'POST', {'cost': 1})
|
52
|
+
spot_private_post_supplement_cancel_order_by_symbol = spotPrivatePostSupplementCancelOrderBySymbol = Entry('supplement/cancel_order_by_symbol', ['spot', 'private'], 'POST', {'cost': 1})
|
53
|
+
spot_private_post_supplement_orders_info = spotPrivatePostSupplementOrdersInfo = Entry('supplement/orders_info', ['spot', 'private'], 'POST', {'cost': 2.5})
|
54
|
+
spot_private_post_supplement_orders_info_no_deal = spotPrivatePostSupplementOrdersInfoNoDeal = Entry('supplement/orders_info_no_deal', ['spot', 'private'], 'POST', {'cost': 2.5})
|
55
|
+
spot_private_post_supplement_orders_info_history = spotPrivatePostSupplementOrdersInfoHistory = Entry('supplement/orders_info_history', ['spot', 'private'], 'POST', {'cost': 2.5})
|
56
|
+
spot_private_post_supplement_user_info_account = spotPrivatePostSupplementUserInfoAccount = Entry('supplement/user_info_account', ['spot', 'private'], 'POST', {'cost': 2.5})
|
57
|
+
spot_private_post_supplement_transaction_history = spotPrivatePostSupplementTransactionHistory = Entry('supplement/transaction_history', ['spot', 'private'], 'POST', {'cost': 2.5})
|
58
|
+
contract_public_get_cfd_openapi_v1_pub_gettime = contractPublicGetCfdOpenApiV1PubGetTime = Entry('cfd/openApi/v1/pub/getTime', ['contract', 'public'], 'GET', {'cost': 2.5})
|
59
|
+
contract_public_get_cfd_openapi_v1_pub_instrument = contractPublicGetCfdOpenApiV1PubInstrument = Entry('cfd/openApi/v1/pub/instrument', ['contract', 'public'], 'GET', {'cost': 2.5})
|
60
|
+
contract_public_get_cfd_openapi_v1_pub_marketdata = contractPublicGetCfdOpenApiV1PubMarketData = Entry('cfd/openApi/v1/pub/marketData', ['contract', 'public'], 'GET', {'cost': 2.5})
|
61
|
+
contract_public_get_cfd_openapi_v1_pub_marketorder = contractPublicGetCfdOpenApiV1PubMarketOrder = Entry('cfd/openApi/v1/pub/marketOrder', ['contract', 'public'], 'GET', {'cost': 2.5})
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# -----------------------------------------------------------------------------
|
4
4
|
|
5
|
-
__version__ = '4.0.
|
5
|
+
__version__ = '4.0.73'
|
6
6
|
|
7
7
|
# -----------------------------------------------------------------------------
|
8
8
|
|
@@ -743,7 +743,7 @@ class Exchange(BaseExchange):
|
|
743
743
|
raise NotSupported(self.id + ' parseWsOrderTrade() is not supported yet')
|
744
744
|
|
745
745
|
def parse_ws_ohlcv(self, ohlcv, market=None):
|
746
|
-
|
746
|
+
return self.parse_ohlcv(ohlcv, market)
|
747
747
|
|
748
748
|
async def fetch_funding_rates(self, symbols: Optional[List[str]] = None, params={}):
|
749
749
|
raise NotSupported(self.id + ' fetchFundingRates() is not supported yet')
|
@@ -2967,6 +2967,12 @@ class Exchange(BaseExchange):
|
|
2967
2967
|
market = self.market(firstMarket)
|
2968
2968
|
return market
|
2969
2969
|
|
2970
|
+
def parse_ws_ohlcvs(self, ohlcvs: List[object], market: Optional[Any] = None, timeframe: str = '1m', since: Optional[int] = None, limit: Optional[int] = None):
|
2971
|
+
results = []
|
2972
|
+
for i in range(0, len(ohlcvs)):
|
2973
|
+
results.append(self.parse_ws_ohlcv(ohlcvs[i], market))
|
2974
|
+
return results
|
2975
|
+
|
2970
2976
|
async def fetch_transactions(self, code: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
2971
2977
|
"""
|
2972
2978
|
* @deprecated
|
@@ -103,6 +103,7 @@ class binance(Exchange, ImplicitAPI):
|
|
103
103
|
'fetchMarketLeverageTiers': 'emulated',
|
104
104
|
'fetchMarkets': True,
|
105
105
|
'fetchMarkOHLCV': True,
|
106
|
+
'fetchMySettlementHistory': True,
|
106
107
|
'fetchMyTrades': True,
|
107
108
|
'fetchOHLCV': True,
|
108
109
|
'fetchOpenInterest': True,
|
@@ -7176,7 +7177,57 @@ class binance(Exchange, ImplicitAPI):
|
|
7176
7177
|
sorted = self.sort_by(settlements, 'timestamp')
|
7177
7178
|
return self.filter_by_symbol_since_limit(sorted, symbol, since, limit)
|
7178
7179
|
|
7180
|
+
async def fetch_my_settlement_history(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
7181
|
+
"""
|
7182
|
+
fetches historical settlement records of the user
|
7183
|
+
see https://binance-docs.github.io/apidocs/voptions/en/#user-exercise-record-user_data
|
7184
|
+
:param str symbol: unified market symbol of the settlement history
|
7185
|
+
:param int [since]: timestamp in ms
|
7186
|
+
:param int [limit]: number of records
|
7187
|
+
:param dict [params]: exchange specific params
|
7188
|
+
:returns dict[]: a list of [settlement history objects]
|
7189
|
+
"""
|
7190
|
+
await self.load_markets()
|
7191
|
+
market = None if (symbol is None) else self.market(symbol)
|
7192
|
+
type = None
|
7193
|
+
type, params = self.handle_market_type_and_params('fetchMySettlementHistory', market, params)
|
7194
|
+
if type != 'option':
|
7195
|
+
raise NotSupported(self.id + ' fetchMySettlementHistory() supports option markets only')
|
7196
|
+
request = {}
|
7197
|
+
if symbol is not None:
|
7198
|
+
request['symbol'] = market['id']
|
7199
|
+
if since is not None:
|
7200
|
+
request['startTime'] = since
|
7201
|
+
if limit is not None:
|
7202
|
+
request['limit'] = limit
|
7203
|
+
response = await self.eapiPrivateGetExerciseRecord(self.extend(request, params))
|
7204
|
+
#
|
7205
|
+
# [
|
7206
|
+
# {
|
7207
|
+
# "id": "1125899906842897036",
|
7208
|
+
# "currency": "USDT",
|
7209
|
+
# "symbol": "BTC-230728-30000-C",
|
7210
|
+
# "exercisePrice": "30000.00000000",
|
7211
|
+
# "markPrice": "29160.71284993",
|
7212
|
+
# "quantity": "1.00000000",
|
7213
|
+
# "amount": "0.00000000",
|
7214
|
+
# "fee": "0.00000000",
|
7215
|
+
# "createDate": 1690531200000,
|
7216
|
+
# "priceScale": 0,
|
7217
|
+
# "quantityScale": 2,
|
7218
|
+
# "optionSide": "CALL",
|
7219
|
+
# "positionSide": "LONG",
|
7220
|
+
# "quoteAsset": "USDT"
|
7221
|
+
# }
|
7222
|
+
# ]
|
7223
|
+
#
|
7224
|
+
settlements = self.parse_settlements(response, market)
|
7225
|
+
sorted = self.sort_by(settlements, 'timestamp')
|
7226
|
+
return self.filter_by_symbol_since_limit(sorted, market['symbol'], since, limit)
|
7227
|
+
|
7179
7228
|
def parse_settlement(self, settlement, market):
|
7229
|
+
#
|
7230
|
+
# fetchSettlementHistory
|
7180
7231
|
#
|
7181
7232
|
# {
|
7182
7233
|
# "symbol": "ETH-230223-1900-P",
|
@@ -7186,17 +7237,38 @@ class binance(Exchange, ImplicitAPI):
|
|
7186
7237
|
# "strikeResult": "REALISTIC_VALUE_STRICKEN"
|
7187
7238
|
# }
|
7188
7239
|
#
|
7189
|
-
|
7240
|
+
# fetchMySettlementHistory
|
7241
|
+
#
|
7242
|
+
# {
|
7243
|
+
# "id": "1125899906842897036",
|
7244
|
+
# "currency": "USDT",
|
7245
|
+
# "symbol": "BTC-230728-30000-C",
|
7246
|
+
# "exercisePrice": "30000.00000000",
|
7247
|
+
# "markPrice": "29160.71284993",
|
7248
|
+
# "quantity": "1.00000000",
|
7249
|
+
# "amount": "0.00000000",
|
7250
|
+
# "fee": "0.00000000",
|
7251
|
+
# "createDate": 1690531200000,
|
7252
|
+
# "priceScale": 0,
|
7253
|
+
# "quantityScale": 2,
|
7254
|
+
# "optionSide": "CALL",
|
7255
|
+
# "positionSide": "LONG",
|
7256
|
+
# "quoteAsset": "USDT"
|
7257
|
+
# }
|
7258
|
+
#
|
7259
|
+
timestamp = self.safe_integer_2(settlement, 'expiryDate', 'createDate')
|
7190
7260
|
marketId = self.safe_string(settlement, 'symbol')
|
7191
7261
|
return {
|
7192
7262
|
'info': settlement,
|
7193
7263
|
'symbol': self.safe_symbol(marketId, market),
|
7194
|
-
'price': self.
|
7264
|
+
'price': self.safe_number_2(settlement, 'realStrikePrice', 'exercisePrice'),
|
7195
7265
|
'timestamp': timestamp,
|
7196
7266
|
'datetime': self.iso8601(timestamp),
|
7197
7267
|
}
|
7198
7268
|
|
7199
7269
|
def parse_settlements(self, settlements, market):
|
7270
|
+
#
|
7271
|
+
# fetchSettlementHistory
|
7200
7272
|
#
|
7201
7273
|
# [
|
7202
7274
|
# {
|
@@ -7208,6 +7280,27 @@ class binance(Exchange, ImplicitAPI):
|
|
7208
7280
|
# }
|
7209
7281
|
# ]
|
7210
7282
|
#
|
7283
|
+
# fetchMySettlementHistory
|
7284
|
+
#
|
7285
|
+
# [
|
7286
|
+
# {
|
7287
|
+
# "id": "1125899906842897036",
|
7288
|
+
# "currency": "USDT",
|
7289
|
+
# "symbol": "BTC-230728-30000-C",
|
7290
|
+
# "exercisePrice": "30000.00000000",
|
7291
|
+
# "markPrice": "29160.71284993",
|
7292
|
+
# "quantity": "1.00000000",
|
7293
|
+
# "amount": "0.00000000",
|
7294
|
+
# "fee": "0.00000000",
|
7295
|
+
# "createDate": 1690531200000,
|
7296
|
+
# "priceScale": 0,
|
7297
|
+
# "quantityScale": 2,
|
7298
|
+
# "optionSide": "CALL",
|
7299
|
+
# "positionSide": "LONG",
|
7300
|
+
# "quoteAsset": "USDT"
|
7301
|
+
# }
|
7302
|
+
# ]
|
7303
|
+
#
|
7211
7304
|
result = []
|
7212
7305
|
for i in range(0, len(settlements)):
|
7213
7306
|
result.append(self.parse_settlement(settlements[i], market))
|
@@ -81,6 +81,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
81
81
|
'fetchMarketLeverageTiers': True,
|
82
82
|
'fetchMarkets': True,
|
83
83
|
'fetchMarkOHLCV': True,
|
84
|
+
'fetchMySettlementHistory': True,
|
84
85
|
'fetchMyTrades': True,
|
85
86
|
'fetchOHLCV': True,
|
86
87
|
'fetchOpenInterest': True,
|
@@ -8309,7 +8310,68 @@ class bybit(Exchange, ImplicitAPI):
|
|
8309
8310
|
sorted = self.sort_by(settlements, 'timestamp')
|
8310
8311
|
return self.filter_by_symbol_since_limit(sorted, market['symbol'], since, limit)
|
8311
8312
|
|
8313
|
+
async def fetch_my_settlement_history(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
8314
|
+
"""
|
8315
|
+
fetches historical settlement records of the user
|
8316
|
+
see https://bybit-exchange.github.io/docs/v5/asset/delivery
|
8317
|
+
:param str symbol: unified market symbol of the settlement history
|
8318
|
+
:param int [since]: timestamp in ms
|
8319
|
+
:param int [limit]: number of records
|
8320
|
+
:param dict [params]: exchange specific params
|
8321
|
+
:returns dict[]: a list of [settlement history objects]
|
8322
|
+
"""
|
8323
|
+
await self.load_markets()
|
8324
|
+
request = {}
|
8325
|
+
market = None
|
8326
|
+
if symbol is not None:
|
8327
|
+
market = self.market(symbol)
|
8328
|
+
request['symbol'] = market['id']
|
8329
|
+
type = None
|
8330
|
+
type, params = self.handle_market_type_and_params('fetchMySettlementHistory', market, params)
|
8331
|
+
if type == 'option':
|
8332
|
+
request['category'] = 'option'
|
8333
|
+
else:
|
8334
|
+
subType = None
|
8335
|
+
subType, params = self.handle_sub_type_and_params('fetchMySettlementHistory', market, params, 'linear')
|
8336
|
+
if subType == 'inverse':
|
8337
|
+
raise NotSupported(self.id + ' fetchMySettlementHistory() doesn\'t support inverse markets')
|
8338
|
+
request['category'] = 'linear'
|
8339
|
+
if limit is not None:
|
8340
|
+
request['limit'] = limit
|
8341
|
+
response = await self.privateGetV5AssetDeliveryRecord(self.extend(request, params))
|
8342
|
+
#
|
8343
|
+
# {
|
8344
|
+
# "retCode": 0,
|
8345
|
+
# "retMsg": "success",
|
8346
|
+
# "result": {
|
8347
|
+
# "category": "option",
|
8348
|
+
# "nextPageCursor": "0%2C3",
|
8349
|
+
# "list": [
|
8350
|
+
# {
|
8351
|
+
# "symbol": "SOL-27JUN23-20-C",
|
8352
|
+
# "deliveryPrice": "16.62258889",
|
8353
|
+
# "deliveryTime": "1687852800000",
|
8354
|
+
# "side": "Buy",
|
8355
|
+
# "strike": "20",
|
8356
|
+
# "fee": "0.00000000",
|
8357
|
+
# "position": "0.01",
|
8358
|
+
# "deliveryRpl": "3.5"
|
8359
|
+
# },
|
8360
|
+
# ]
|
8361
|
+
# },
|
8362
|
+
# "retExtInfo": {},
|
8363
|
+
# "time": 1689043527231
|
8364
|
+
# }
|
8365
|
+
#
|
8366
|
+
result = self.safe_value(response, 'result', {})
|
8367
|
+
data = self.safe_value(result, 'list', [])
|
8368
|
+
settlements = self.parse_settlements(data, market)
|
8369
|
+
sorted = self.sort_by(settlements, 'timestamp')
|
8370
|
+
return self.filter_by_symbol_since_limit(sorted, market['symbol'], since, limit)
|
8371
|
+
|
8312
8372
|
def parse_settlement(self, settlement, market):
|
8373
|
+
#
|
8374
|
+
# fetchSettlementHistory
|
8313
8375
|
#
|
8314
8376
|
# {
|
8315
8377
|
# "symbol": "SOL-27JUN23-20-C",
|
@@ -8317,6 +8379,19 @@ class bybit(Exchange, ImplicitAPI):
|
|
8317
8379
|
# "deliveryTime": "1687852800000"
|
8318
8380
|
# }
|
8319
8381
|
#
|
8382
|
+
# fetchMySettlementHistory
|
8383
|
+
#
|
8384
|
+
# {
|
8385
|
+
# "symbol": "SOL-27JUN23-20-C",
|
8386
|
+
# "deliveryPrice": "16.62258889",
|
8387
|
+
# "deliveryTime": "1687852800000",
|
8388
|
+
# "side": "Buy",
|
8389
|
+
# "strike": "20",
|
8390
|
+
# "fee": "0.00000000",
|
8391
|
+
# "position": "0.01",
|
8392
|
+
# "deliveryRpl": "3.5"
|
8393
|
+
# }
|
8394
|
+
#
|
8320
8395
|
timestamp = self.safe_integer(settlement, 'deliveryTime')
|
8321
8396
|
marketId = self.safe_string(settlement, 'symbol')
|
8322
8397
|
return {
|
@@ -8328,6 +8403,8 @@ class bybit(Exchange, ImplicitAPI):
|
|
8328
8403
|
}
|
8329
8404
|
|
8330
8405
|
def parse_settlements(self, settlements, market):
|
8406
|
+
#
|
8407
|
+
# fetchSettlementHistory
|
8331
8408
|
#
|
8332
8409
|
# [
|
8333
8410
|
# {
|
@@ -8337,6 +8414,21 @@ class bybit(Exchange, ImplicitAPI):
|
|
8337
8414
|
# }
|
8338
8415
|
# ]
|
8339
8416
|
#
|
8417
|
+
# fetchMySettlementHistory
|
8418
|
+
#
|
8419
|
+
# [
|
8420
|
+
# {
|
8421
|
+
# "symbol": "SOL-27JUN23-20-C",
|
8422
|
+
# "deliveryPrice": "16.62258889",
|
8423
|
+
# "deliveryTime": "1687852800000",
|
8424
|
+
# "side": "Buy",
|
8425
|
+
# "strike": "20",
|
8426
|
+
# "fee": "0.00000000",
|
8427
|
+
# "position": "0.01",
|
8428
|
+
# "deliveryRpl": "3.5"
|
8429
|
+
# }
|
8430
|
+
# ]
|
8431
|
+
#
|
8340
8432
|
result = []
|
8341
8433
|
for i in range(0, len(settlements)):
|
8342
8434
|
result.append(self.parse_settlement(settlements[i], market))
|
@@ -130,6 +130,7 @@ class gate(Exchange, ImplicitAPI):
|
|
130
130
|
'fetchMarketLeverageTiers': 'emulated',
|
131
131
|
'fetchMarkets': True,
|
132
132
|
'fetchMarkOHLCV': True,
|
133
|
+
'fetchMySettlementHistory': True,
|
133
134
|
'fetchMyTrades': True,
|
134
135
|
'fetchNetworkDepositAddress': True,
|
135
136
|
'fetchOHLCV': True,
|
@@ -834,6 +835,97 @@ class gate(Exchange, ImplicitAPI):
|
|
834
835
|
super(gate, self).set_sandbox_mode(enable)
|
835
836
|
self.options['sandboxMode'] = enable
|
836
837
|
|
838
|
+
def convert_expire_date(self, date):
|
839
|
+
# parse YYMMDD to timestamp
|
840
|
+
year = date[0:2]
|
841
|
+
month = date[2:4]
|
842
|
+
day = date[4:6]
|
843
|
+
reconstructedDate = '20' + year + '-' + month + '-' + day + 'T00:00:00Z'
|
844
|
+
return reconstructedDate
|
845
|
+
|
846
|
+
def create_expired_option_market(self, symbol):
|
847
|
+
# support expired option contracts
|
848
|
+
quote = 'USDT'
|
849
|
+
settle = quote
|
850
|
+
optionParts = symbol.split('-')
|
851
|
+
symbolBase = symbol.split('/')
|
852
|
+
marketIdBase = symbol.split('_')
|
853
|
+
base = None
|
854
|
+
expiry = self.safe_string(optionParts, 1)
|
855
|
+
if symbol.find('/') > -1:
|
856
|
+
base = self.safe_string(symbolBase, 0)
|
857
|
+
else:
|
858
|
+
base = self.safe_string(marketIdBase, 0)
|
859
|
+
expiry = expiry[2:8] # convert 20230728 to 230728
|
860
|
+
strike = self.safe_string(optionParts, 2)
|
861
|
+
optionType = self.safe_string(optionParts, 3)
|
862
|
+
datetime = self.convert_expire_date(expiry)
|
863
|
+
timestamp = self.parse8601(datetime)
|
864
|
+
return {
|
865
|
+
'id': base + '_' + quote + '-' + '20' + expiry + '-' + strike + '-' + optionType,
|
866
|
+
'symbol': base + '/' + quote + ':' + settle + '-' + expiry + '-' + strike + '-' + optionType,
|
867
|
+
'base': base,
|
868
|
+
'quote': quote,
|
869
|
+
'settle': settle,
|
870
|
+
'baseId': base,
|
871
|
+
'quoteId': quote,
|
872
|
+
'settleId': settle,
|
873
|
+
'active': False,
|
874
|
+
'type': 'option',
|
875
|
+
'linear': None,
|
876
|
+
'inverse': None,
|
877
|
+
'spot': False,
|
878
|
+
'swap': False,
|
879
|
+
'future': False,
|
880
|
+
'option': True,
|
881
|
+
'margin': False,
|
882
|
+
'contract': True,
|
883
|
+
'contractSize': self.parse_number('1'),
|
884
|
+
'expiry': timestamp,
|
885
|
+
'expiryDatetime': datetime,
|
886
|
+
'optionType': 'call' if (optionType == 'C') else 'put',
|
887
|
+
'strike': self.parse_number(strike),
|
888
|
+
'precision': {
|
889
|
+
'amount': self.parse_number('1'),
|
890
|
+
'price': None,
|
891
|
+
},
|
892
|
+
'limits': {
|
893
|
+
'amount': {
|
894
|
+
'min': None,
|
895
|
+
'max': None,
|
896
|
+
},
|
897
|
+
'price': {
|
898
|
+
'min': None,
|
899
|
+
'max': None,
|
900
|
+
},
|
901
|
+
'cost': {
|
902
|
+
'min': None,
|
903
|
+
'max': None,
|
904
|
+
},
|
905
|
+
},
|
906
|
+
'info': None,
|
907
|
+
}
|
908
|
+
|
909
|
+
def market(self, symbol):
|
910
|
+
if self.markets is None:
|
911
|
+
raise ExchangeError(self.id + ' markets not loaded')
|
912
|
+
if isinstance(symbol, str):
|
913
|
+
if symbol in self.markets:
|
914
|
+
return self.markets[symbol]
|
915
|
+
elif symbol in self.markets_by_id:
|
916
|
+
markets = self.markets_by_id[symbol]
|
917
|
+
return markets[0]
|
918
|
+
elif (symbol.find('-C') > -1) or (symbol.find('-P') > -1):
|
919
|
+
return self.create_expired_option_market(symbol)
|
920
|
+
raise BadSymbol(self.id + ' does not have market symbol ' + symbol)
|
921
|
+
|
922
|
+
def safe_market(self, marketId=None, market=None, delimiter=None, marketType=None):
|
923
|
+
isOption = (marketId is not None) and ((marketId.find('-C') > -1) or (marketId.find('-P') > -1))
|
924
|
+
if isOption and not (marketId in self.markets_by_id):
|
925
|
+
# handle expired option contracts
|
926
|
+
return self.create_expired_option_market(marketId)
|
927
|
+
return super(gate, self).safe_market(marketId, market, delimiter, marketType)
|
928
|
+
|
837
929
|
async def fetch_markets(self, params={}):
|
838
930
|
"""
|
839
931
|
retrieves data on all markets for gate
|
@@ -5401,7 +5493,58 @@ class gate(Exchange, ImplicitAPI):
|
|
5401
5493
|
sorted = self.sort_by(settlements, 'timestamp')
|
5402
5494
|
return self.filter_by_symbol_since_limit(sorted, symbol, since, limit)
|
5403
5495
|
|
5496
|
+
async def fetch_my_settlement_history(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
5497
|
+
"""
|
5498
|
+
fetches historical settlement records of the user
|
5499
|
+
see https://www.gate.io/docs/developers/apiv4/en/#list-my-options-settlements
|
5500
|
+
:param str symbol: unified market symbol of the settlement history
|
5501
|
+
:param int [since]: timestamp in ms
|
5502
|
+
:param int [limit]: number of records
|
5503
|
+
:param dict [params]: exchange specific params
|
5504
|
+
:returns dict[]: a list of [settlement history objects]
|
5505
|
+
"""
|
5506
|
+
self.check_required_symbol('fetchMySettlementHistory', symbol)
|
5507
|
+
await self.load_markets()
|
5508
|
+
market = self.market(symbol)
|
5509
|
+
type = None
|
5510
|
+
type, params = self.handle_market_type_and_params('fetchMySettlementHistory', market, params)
|
5511
|
+
if type != 'option':
|
5512
|
+
raise NotSupported(self.id + ' fetchMySettlementHistory() supports option markets only')
|
5513
|
+
marketId = market['id']
|
5514
|
+
optionParts = marketId.split('-')
|
5515
|
+
request = {
|
5516
|
+
'underlying': self.safe_string(optionParts, 0),
|
5517
|
+
'contract': marketId,
|
5518
|
+
}
|
5519
|
+
if since is not None:
|
5520
|
+
request['from'] = since
|
5521
|
+
if limit is not None:
|
5522
|
+
request['limit'] = limit
|
5523
|
+
response = await self.privateOptionsGetMySettlements(self.extend(request, params))
|
5524
|
+
#
|
5525
|
+
# [
|
5526
|
+
# {
|
5527
|
+
# "size": -1,
|
5528
|
+
# "settle_profit": "0",
|
5529
|
+
# "contract": "BTC_USDT-20220624-26000-C",
|
5530
|
+
# "strike_price": "26000",
|
5531
|
+
# "time": 1656057600,
|
5532
|
+
# "settle_price": "20917.461281337048",
|
5533
|
+
# "underlying": "BTC_USDT",
|
5534
|
+
# "realised_pnl": "-0.00116042",
|
5535
|
+
# "fee": "0"
|
5536
|
+
# }
|
5537
|
+
# ]
|
5538
|
+
#
|
5539
|
+
result = self.safe_value(response, 'result', {})
|
5540
|
+
data = self.safe_value(result, 'list', [])
|
5541
|
+
settlements = self.parse_settlements(data, market)
|
5542
|
+
sorted = self.sort_by(settlements, 'timestamp')
|
5543
|
+
return self.filter_by_symbol_since_limit(sorted, market['symbol'], since, limit)
|
5544
|
+
|
5404
5545
|
def parse_settlement(self, settlement, market):
|
5546
|
+
#
|
5547
|
+
# fetchSettlementHistory
|
5405
5548
|
#
|
5406
5549
|
# {
|
5407
5550
|
# "time": 1685952000,
|
@@ -5412,6 +5555,20 @@ class gate(Exchange, ImplicitAPI):
|
|
5412
5555
|
# "strike_price": "25000"
|
5413
5556
|
# }
|
5414
5557
|
#
|
5558
|
+
# fetchMySettlementHistory
|
5559
|
+
#
|
5560
|
+
# {
|
5561
|
+
# "size": -1,
|
5562
|
+
# "settle_profit": "0",
|
5563
|
+
# "contract": "BTC_USDT-20220624-26000-C",
|
5564
|
+
# "strike_price": "26000",
|
5565
|
+
# "time": 1656057600,
|
5566
|
+
# "settle_price": "20917.461281337048",
|
5567
|
+
# "underlying": "BTC_USDT",
|
5568
|
+
# "realised_pnl": "-0.00116042",
|
5569
|
+
# "fee": "0"
|
5570
|
+
# }
|
5571
|
+
#
|
5415
5572
|
timestamp = self.safe_timestamp(settlement, 'time')
|
5416
5573
|
marketId = self.safe_string(settlement, 'contract')
|
5417
5574
|
return {
|
@@ -5423,6 +5580,8 @@ class gate(Exchange, ImplicitAPI):
|
|
5423
5580
|
}
|
5424
5581
|
|
5425
5582
|
def parse_settlements(self, settlements, market):
|
5583
|
+
#
|
5584
|
+
# fetchSettlementHistory
|
5426
5585
|
#
|
5427
5586
|
# [
|
5428
5587
|
# {
|
@@ -5435,6 +5594,22 @@ class gate(Exchange, ImplicitAPI):
|
|
5435
5594
|
# }
|
5436
5595
|
# ]
|
5437
5596
|
#
|
5597
|
+
# fetchMySettlementHistory
|
5598
|
+
#
|
5599
|
+
# [
|
5600
|
+
# {
|
5601
|
+
# "size": -1,
|
5602
|
+
# "settle_profit": "0",
|
5603
|
+
# "contract": "BTC_USDT-20220624-26000-C",
|
5604
|
+
# "strike_price": "26000",
|
5605
|
+
# "time": 1656057600,
|
5606
|
+
# "settle_price": "20917.461281337048",
|
5607
|
+
# "underlying": "BTC_USDT",
|
5608
|
+
# "realised_pnl": "-0.00116042",
|
5609
|
+
# "fee": "0"
|
5610
|
+
# }
|
5611
|
+
# ]
|
5612
|
+
#
|
5438
5613
|
result = []
|
5439
5614
|
for i in range(0, len(settlements)):
|
5440
5615
|
result.append(self.parse_settlement(settlements[i], market))
|