ccxt 4.3.16__tar.gz → 4.3.18__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.3.16/ccxt.egg-info → ccxt-4.3.18}/PKG-INFO +4 -4
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/__init__.py +1 -1
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/__init__.py +1 -1
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/base/exchange.py +1 -1
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/binance.py +34 -17
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bybit.py +10 -7
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/htx.py +2 -2
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/okx.py +18 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/base/exchange.py +2 -2
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/binance.py +34 -17
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bybit.py +10 -7
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/htx.py +2 -2
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/okx.py +18 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/__init__.py +1 -1
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bitfinex2.py +2 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bitget.py +3 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bitvavo.py +1 -1
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bybit.py +7 -6
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/htx.py +2 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/independentreserve.py +2 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/kraken.py +2 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/okx.py +22 -18
- {ccxt-4.3.16 → ccxt-4.3.18/ccxt.egg-info}/PKG-INFO +4 -4
- {ccxt-4.3.16 → ccxt-4.3.18}/package.json +1 -1
- {ccxt-4.3.16 → ccxt-4.3.18}/LICENSE.txt +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/MANIFEST.in +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/README.rst +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/ace.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/alpaca.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/ascendex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bequant.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bigone.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/binance.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/binancecoinm.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/binanceus.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/binanceusdm.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bingx.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bit2c.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitbank.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitbay.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitbns.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitcoincom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitfinex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitfinex2.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitflyer.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitget.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bithumb.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitmart.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitmex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitopro.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitpanda.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitrue.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitso.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitstamp.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitteam.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bitvavo.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bl3p.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/blockchaincom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/blofin.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/btcalpha.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/btcbox.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/btcmarkets.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/btcturk.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/bybit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/cex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/coinbase.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/coinbaseinternational.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/coinbasepro.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/coincheck.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/coinex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/coinlist.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/coinmate.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/coinmetro.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/coinone.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/coinsph.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/coinspot.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/cryptocom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/currencycom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/delta.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/deribit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/digifinex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/exmo.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/fmfwio.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/gate.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/gateio.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/gemini.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/hitbtc.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/hitbtc3.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/hollaex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/htx.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/huobi.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/huobijp.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/hyperliquid.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/idex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/independentreserve.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/indodax.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/kraken.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/krakenfutures.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/kucoin.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/kucoinfutures.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/kuna.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/latoken.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/lbank.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/luno.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/lykke.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/mercado.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/mexc.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/ndax.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/novadax.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/oceanex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/okcoin.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/okx.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/onetrading.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/p2b.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/paymium.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/phemex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/poloniex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/poloniexfutures.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/probit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/timex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/tokocrypto.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/tradeogre.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/upbit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/wavesexchange.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/wazirx.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/whitebit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/woo.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/yobit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/zaif.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/abstract/zonda.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/ace.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/alpaca.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/ascendex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/ace.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/alpaca.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/ascendex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/base/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/base/throttler.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/base/ws/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/base/ws/cache.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/base/ws/client.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/base/ws/fast_client.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/base/ws/functions.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/base/ws/future.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/base/ws/order_book.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/base/ws/order_book_side.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bequant.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bigone.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/binancecoinm.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/binanceus.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/binanceusdm.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bingx.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bit2c.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitbank.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitbay.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitbns.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitcoincom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitfinex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitfinex2.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitflyer.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitget.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bithumb.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitmart.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitmex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitopro.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitpanda.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitrue.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitso.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitstamp.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitteam.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bitvavo.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/bl3p.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/blockchaincom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/blofin.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/btcalpha.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/btcbox.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/btcmarkets.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/btcturk.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/cex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/coinbase.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/coinbaseinternational.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/coinbasepro.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/coincheck.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/coinex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/coinlist.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/coinmate.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/coinmetro.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/coinone.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/coinsph.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/coinspot.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/cryptocom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/currencycom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/delta.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/deribit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/digifinex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/exmo.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/fmfwio.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/gate.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/gateio.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/gemini.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/hitbtc.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/hitbtc3.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/hollaex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/huobi.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/huobijp.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/hyperliquid.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/idex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/independentreserve.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/indodax.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/kraken.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/krakenfutures.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/kucoin.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/kucoinfutures.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/kuna.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/latoken.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/lbank.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/luno.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/lykke.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/mercado.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/mexc.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/ndax.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/novadax.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/oceanex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/okcoin.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/onetrading.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/p2b.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/paymium.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/phemex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/poloniex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/poloniexfutures.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/probit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/timex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/tokocrypto.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/tradeogre.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/upbit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/wavesexchange.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/wazirx.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/whitebit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/woo.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/yobit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/zaif.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/async_support/zonda.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/base/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/base/decimal_to_precision.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/base/errors.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/base/precise.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/base/types.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bequant.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bigone.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/binancecoinm.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/binanceus.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/binanceusdm.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bingx.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bit2c.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitbank.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitbay.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitbns.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitcoincom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitfinex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitfinex2.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitflyer.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitget.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bithumb.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitmart.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitmex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitopro.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitpanda.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitrue.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitso.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitstamp.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitteam.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bitvavo.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/bl3p.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/blockchaincom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/blofin.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/btcalpha.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/btcbox.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/btcmarkets.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/btcturk.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/cex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/coinbase.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/coinbaseinternational.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/coinbasepro.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/coincheck.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/coinex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/coinlist.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/coinmate.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/coinmetro.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/coinone.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/coinsph.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/coinspot.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/cryptocom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/currencycom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/delta.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/deribit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/digifinex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/exmo.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/fmfwio.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/gate.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/gateio.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/gemini.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/hitbtc.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/hitbtc3.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/hollaex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/huobi.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/huobijp.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/hyperliquid.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/idex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/independentreserve.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/indodax.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/kraken.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/krakenfutures.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/kucoin.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/kucoinfutures.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/kuna.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/latoken.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/lbank.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/luno.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/lykke.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/mercado.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/mexc.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/ndax.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/novadax.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/oceanex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/okcoin.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/onetrading.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/p2b.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/paymium.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/phemex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/poloniex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/poloniexfutures.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/alpaca.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/ascendex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bequant.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/binance.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/binancecoinm.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/binanceus.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/binanceusdm.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bingx.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bitcoincom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bitfinex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bithumb.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bitmart.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bitmex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bitopro.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bitpanda.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bitrue.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/bitstamp.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/blockchaincom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/cex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/coinbase.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/coinbaseinternational.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/coinbasepro.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/coincheck.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/coinex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/coinone.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/cryptocom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/currencycom.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/deribit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/exmo.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/gate.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/gateio.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/gemini.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/hitbtc.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/hollaex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/huobi.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/huobijp.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/hyperliquid.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/idex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/krakenfutures.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/kucoin.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/kucoinfutures.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/lbank.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/luno.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/mexc.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/ndax.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/okcoin.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/onetrading.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/p2b.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/phemex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/poloniex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/poloniexfutures.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/probit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/upbit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/wazirx.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/whitebit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/pro/woo.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/probit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ecdsa/der.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ecdsa/util.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/keccak/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/keccak/keccak.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/msgpack/ext.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/toolz/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/toolz/_version.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/toolz/recipes.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/static_dependencies/toolz/utils.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/__init__.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_account.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_balance.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_borrow_interest.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_borrow_rate.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_calculate_fee.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_crypto.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_currency.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_datetime.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_decimal_to_precision.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_deep_extend.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_funding_rate_history.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_last_price.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_ledger_entry.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_ledger_item.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_leverage_tier.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_margin_mode.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_margin_modification.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_market.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_number.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_ohlcv.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_open_interest.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_order.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_order_book.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_position.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_shared_methods.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_status.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_throttle.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_ticker.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_trade.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_trading_fee.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/base/test_transaction.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/test_async.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/test/test_sync.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/timex.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/tokocrypto.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/tradeogre.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/upbit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/wavesexchange.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/wazirx.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/whitebit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/woo.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/yobit.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/zaif.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt/zonda.py +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt.egg-info/SOURCES.txt +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt.egg-info/dependency_links.txt +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt.egg-info/requires.txt +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/ccxt.egg-info/top_level.txt +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/setup.cfg +0 -0
- {ccxt-4.3.16 → ccxt-4.3.18}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.3.
|
3
|
+
Version: 4.3.18
|
4
4
|
Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
|
5
5
|
Home-page: https://ccxt.com
|
6
6
|
Author: Igor Kroitor
|
@@ -226,13 +226,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
|
|
226
226
|
|
227
227
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
228
228
|
|
229
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
230
|
-
* unpkg: https://unpkg.com/ccxt@4.3.
|
229
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.18/dist/ccxt.browser.js
|
230
|
+
* unpkg: https://unpkg.com/ccxt@4.3.18/dist/ccxt.browser.js
|
231
231
|
|
232
232
|
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.
|
233
233
|
|
234
234
|
```HTML
|
235
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
235
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.18/dist/ccxt.browser.js"></script>
|
236
236
|
```
|
237
237
|
|
238
238
|
Creates a global `ccxt` object:
|
@@ -2612,7 +2612,7 @@ class binance(Exchange, ImplicitAPI):
|
|
2612
2612
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
2613
2613
|
:returns dict: an associative dictionary of currencies
|
2614
2614
|
"""
|
2615
|
-
fetchCurrenciesEnabled = self.
|
2615
|
+
fetchCurrenciesEnabled = self.safe_bool(self.options, 'fetchCurrencies')
|
2616
2616
|
if not fetchCurrenciesEnabled:
|
2617
2617
|
return None
|
2618
2618
|
# self endpoint requires authentication
|
@@ -4399,7 +4399,7 @@ class binance(Exchange, ImplicitAPI):
|
|
4399
4399
|
market = self.safe_market(marketId, market, None, marketType)
|
4400
4400
|
symbol = market['symbol']
|
4401
4401
|
side = None
|
4402
|
-
buyerMaker = self.
|
4402
|
+
buyerMaker = self.safe_bool_2(trade, 'm', 'isBuyerMaker')
|
4403
4403
|
takerOrMaker = None
|
4404
4404
|
if buyerMaker is not None:
|
4405
4405
|
side = 'sell' if buyerMaker else 'buy' # self is reversed intentionally
|
@@ -4675,14 +4675,14 @@ class binance(Exchange, ImplicitAPI):
|
|
4675
4675
|
uppercaseType = 'STOP_LOSS'
|
4676
4676
|
elif uppercaseType == 'LIMIT':
|
4677
4677
|
uppercaseType = 'STOP_LOSS_LIMIT'
|
4678
|
-
validOrderTypes = self.
|
4678
|
+
validOrderTypes = self.safe_list(market['info'], 'orderTypes')
|
4679
4679
|
if not self.in_array(uppercaseType, validOrderTypes):
|
4680
4680
|
if initialUppercaseType != uppercaseType:
|
4681
4681
|
raise InvalidOrder(self.id + ' stopPrice parameter is not allowed for ' + symbol + ' ' + type + ' orders')
|
4682
4682
|
else:
|
4683
4683
|
raise InvalidOrder(self.id + ' ' + type + ' is not a valid order type for the ' + symbol + ' market')
|
4684
4684
|
if clientOrderId is None:
|
4685
|
-
broker = self.
|
4685
|
+
broker = self.safe_dict(self.options, 'broker')
|
4686
4686
|
if broker is not None:
|
4687
4687
|
brokerId = self.safe_string(broker, 'spot')
|
4688
4688
|
if brokerId is not None:
|
@@ -5516,6 +5516,7 @@ class binance(Exchange, ImplicitAPI):
|
|
5516
5516
|
:param float [params.stopLossPrice]: the price that a stop loss order is triggered at
|
5517
5517
|
:param float [params.takeProfitPrice]: the price that a take profit order is triggered at
|
5518
5518
|
:param boolean [params.portfolioMargin]: set to True if you would like to create an order in a portfolio margin account
|
5519
|
+
:param str [params.stopLossOrTakeProfit]: 'stopLoss' or 'takeProfit', required for spot trailing orders
|
5519
5520
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
5520
5521
|
"""
|
5521
5522
|
await self.load_markets()
|
@@ -5614,8 +5615,8 @@ class binance(Exchange, ImplicitAPI):
|
|
5614
5615
|
stopLossPrice = self.safe_string(params, 'stopLossPrice', triggerPrice) # fallback to stopLoss
|
5615
5616
|
takeProfitPrice = self.safe_string(params, 'takeProfitPrice')
|
5616
5617
|
trailingDelta = self.safe_string(params, 'trailingDelta')
|
5617
|
-
trailingTriggerPrice = self.safe_string_2(params, 'trailingTriggerPrice', 'activationPrice'
|
5618
|
-
trailingPercent = self.
|
5618
|
+
trailingTriggerPrice = self.safe_string_2(params, 'trailingTriggerPrice', 'activationPrice')
|
5619
|
+
trailingPercent = self.safe_string_n(params, ['trailingPercent', 'callbackRate', 'trailingDelta'])
|
5619
5620
|
priceMatch = self.safe_string(params, 'priceMatch')
|
5620
5621
|
isTrailingPercentOrder = trailingPercent is not None
|
5621
5622
|
isStopLoss = stopLossPrice is not None or trailingDelta is not None
|
@@ -5627,10 +5628,26 @@ class binance(Exchange, ImplicitAPI):
|
|
5627
5628
|
uppercaseType = type.upper()
|
5628
5629
|
stopPrice = None
|
5629
5630
|
if isTrailingPercentOrder:
|
5630
|
-
|
5631
|
-
|
5632
|
-
|
5633
|
-
|
5631
|
+
if market['swap']:
|
5632
|
+
uppercaseType = 'TRAILING_STOP_MARKET'
|
5633
|
+
request['callbackRate'] = trailingPercent
|
5634
|
+
if trailingTriggerPrice is not None:
|
5635
|
+
request['activationPrice'] = self.price_to_precision(symbol, trailingTriggerPrice)
|
5636
|
+
else:
|
5637
|
+
if isMarketOrder:
|
5638
|
+
raise InvalidOrder(self.id + ' trailingPercent orders are not supported for ' + symbol + ' ' + type + ' orders')
|
5639
|
+
stopLossOrTakeProfit = self.safe_string(params, 'stopLossOrTakeProfit')
|
5640
|
+
params = self.omit(params, 'stopLossOrTakeProfit')
|
5641
|
+
if stopLossOrTakeProfit != 'stopLoss' and stopLossOrTakeProfit != 'takeProfit':
|
5642
|
+
raise InvalidOrder(self.id + symbol + ' trailingPercent orders require a stopLossOrTakeProfit parameter of either stopLoss or takeProfit')
|
5643
|
+
if stopLossOrTakeProfit == 'stopLoss':
|
5644
|
+
uppercaseType = 'STOP_LOSS_LIMIT'
|
5645
|
+
elif stopLossOrTakeProfit == 'takeProfit':
|
5646
|
+
uppercaseType = 'TAKE_PROFIT_LIMIT'
|
5647
|
+
if trailingTriggerPrice is not None:
|
5648
|
+
stopPrice = self.price_to_precision(symbol, trailingTriggerPrice)
|
5649
|
+
trailingPercentConverted = Precise.string_mul(trailingPercent, '100')
|
5650
|
+
request['trailingDelta'] = trailingPercentConverted
|
5634
5651
|
elif isStopLoss:
|
5635
5652
|
stopPrice = stopLossPrice
|
5636
5653
|
if isMarketOrder:
|
@@ -5770,8 +5787,8 @@ class binance(Exchange, ImplicitAPI):
|
|
5770
5787
|
raise InvalidOrder(self.id + ' createOrder() requires a stopPrice extra param for a ' + type + ' order')
|
5771
5788
|
else:
|
5772
5789
|
# check for delta price
|
5773
|
-
if trailingDelta is None and stopPrice is None:
|
5774
|
-
raise InvalidOrder(self.id + ' createOrder() requires a stopPrice or
|
5790
|
+
if trailingDelta is None and stopPrice is None and trailingPercent is None:
|
5791
|
+
raise InvalidOrder(self.id + ' createOrder() requires a stopPrice, trailingDelta or trailingPercent param for a ' + type + ' order')
|
5775
5792
|
if stopPrice is not None:
|
5776
5793
|
request['stopPrice'] = self.price_to_precision(symbol, stopPrice)
|
5777
5794
|
if timeInForceIsRequired and (self.safe_string(params, 'timeInForce') is None):
|
@@ -7150,7 +7167,7 @@ class binance(Exchange, ImplicitAPI):
|
|
7150
7167
|
if until is not None:
|
7151
7168
|
request['endTime'] = until
|
7152
7169
|
raw = await self.sapiGetFiatOrders(self.extend(request, params))
|
7153
|
-
response = self.
|
7170
|
+
response = self.safe_list(raw, 'data', [])
|
7154
7171
|
# {
|
7155
7172
|
# "code": "000000",
|
7156
7173
|
# "message": "success",
|
@@ -7252,7 +7269,7 @@ class binance(Exchange, ImplicitAPI):
|
|
7252
7269
|
if since is not None:
|
7253
7270
|
request['beginTime'] = since
|
7254
7271
|
raw = await self.sapiGetFiatOrders(self.extend(request, params))
|
7255
|
-
response = self.
|
7272
|
+
response = self.safe_list(raw, 'data', [])
|
7256
7273
|
# {
|
7257
7274
|
# "code": "000000",
|
7258
7275
|
# "message": "success",
|
@@ -7459,7 +7476,7 @@ class binance(Exchange, ImplicitAPI):
|
|
7459
7476
|
txType = self.safe_string(transaction, 'transactionType')
|
7460
7477
|
if txType is not None:
|
7461
7478
|
type = 'deposit' if (txType == '0') else 'withdrawal'
|
7462
|
-
legalMoneyCurrenciesById = self.
|
7479
|
+
legalMoneyCurrenciesById = self.safe_dict(self.options, 'legalMoneyCurrenciesById')
|
7463
7480
|
code = self.safe_string(legalMoneyCurrenciesById, code, code)
|
7464
7481
|
status = self.parse_transaction_status_by_type(self.safe_string(transaction, 'status'), type)
|
7465
7482
|
amount = self.safe_number(transaction, 'amount')
|
@@ -7773,7 +7790,7 @@ class binance(Exchange, ImplicitAPI):
|
|
7773
7790
|
if subLevel is not None:
|
7774
7791
|
topLevel = topLevel + '/' + subLevel
|
7775
7792
|
impliedNetwork = self.safe_string(reverseNetworks, topLevel)
|
7776
|
-
impliedNetworks = self.
|
7793
|
+
impliedNetworks = self.safe_dict(self.options, 'impliedNetworks', {
|
7777
7794
|
'ETH': {'ERC20': 'ETH'},
|
7778
7795
|
'TRX': {'TRC20': 'TRX'},
|
7779
7796
|
})
|
@@ -8981,7 +8998,7 @@ class binance(Exchange, ImplicitAPI):
|
|
8981
8998
|
await self.load_markets()
|
8982
8999
|
# by default cache the leverage bracket
|
8983
9000
|
# it contains useful stuff like the maintenance margin and initial margin for positions
|
8984
|
-
leverageBrackets = self.
|
9001
|
+
leverageBrackets = self.safe_dict(self.options, 'leverageBrackets', {})
|
8985
9002
|
if (leverageBrackets is None) or (reload):
|
8986
9003
|
defaultType = self.safe_string(self.options, 'defaultType', 'future')
|
8987
9004
|
type = self.safe_string(params, 'type', defaultType)
|
@@ -1470,6 +1470,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1470
1470
|
# "quoteCoin": "USDT",
|
1471
1471
|
# "innovation": "0",
|
1472
1472
|
# "status": "Trading",
|
1473
|
+
# "marginTrading": "both",
|
1473
1474
|
# "lotSizeFilter": {
|
1474
1475
|
# "basePrecision": "0.000001",
|
1475
1476
|
# "quotePrecision": "0.00000001",
|
@@ -1506,7 +1507,9 @@ class bybit(Exchange, ImplicitAPI):
|
|
1506
1507
|
lotSizeFilter = self.safe_dict(market, 'lotSizeFilter')
|
1507
1508
|
priceFilter = self.safe_dict(market, 'priceFilter')
|
1508
1509
|
quotePrecision = self.safe_number(lotSizeFilter, 'quotePrecision')
|
1509
|
-
|
1510
|
+
marginTrading = self.safe_string(market, 'marginTrading', 'none')
|
1511
|
+
allowsMargin = marginTrading != 'none'
|
1512
|
+
result.append(self.safe_market_structure({
|
1510
1513
|
'id': id,
|
1511
1514
|
'symbol': symbol,
|
1512
1515
|
'base': base,
|
@@ -1517,7 +1520,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1517
1520
|
'settleId': None,
|
1518
1521
|
'type': 'spot',
|
1519
1522
|
'spot': True,
|
1520
|
-
'margin':
|
1523
|
+
'margin': allowsMargin,
|
1521
1524
|
'swap': False,
|
1522
1525
|
'future': False,
|
1523
1526
|
'option': False,
|
@@ -1556,7 +1559,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1556
1559
|
},
|
1557
1560
|
'created': None,
|
1558
1561
|
'info': market,
|
1559
|
-
})
|
1562
|
+
}))
|
1560
1563
|
return result
|
1561
1564
|
|
1562
1565
|
async def fetch_future_markets(self, params):
|
@@ -1669,7 +1672,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1669
1672
|
if expiry is not None:
|
1670
1673
|
symbol = symbol + '-' + self.yymmdd(expiry)
|
1671
1674
|
contractSize = self.safe_number_2(lotSizeFilter, 'minTradingQty', 'minOrderQty') if inverse else self.parse_number('1')
|
1672
|
-
result.append({
|
1675
|
+
result.append(self.safe_market_structure({
|
1673
1676
|
'id': id,
|
1674
1677
|
'symbol': symbol,
|
1675
1678
|
'base': base,
|
@@ -1719,7 +1722,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1719
1722
|
},
|
1720
1723
|
'created': self.safe_integer(market, 'launchTime'),
|
1721
1724
|
'info': market,
|
1722
|
-
})
|
1725
|
+
}))
|
1723
1726
|
return result
|
1724
1727
|
|
1725
1728
|
async def fetch_option_markets(self, params):
|
@@ -1797,7 +1800,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1797
1800
|
optionLetter = self.safe_string(splitId, 3)
|
1798
1801
|
isActive = (status == 'Trading')
|
1799
1802
|
if isActive or (self.options['loadAllOptions']) or (self.options['loadExpiredOptions']):
|
1800
|
-
result.append({
|
1803
|
+
result.append(self.safe_market_structure({
|
1801
1804
|
'id': id,
|
1802
1805
|
'symbol': base + '/' + quote + ':' + settle + '-' + self.yymmdd(expiry) + '-' + strike + '-' + optionLetter,
|
1803
1806
|
'base': base,
|
@@ -1847,7 +1850,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1847
1850
|
},
|
1848
1851
|
'created': self.safe_integer(market, 'launchTime'),
|
1849
1852
|
'info': market,
|
1850
|
-
})
|
1853
|
+
}))
|
1851
1854
|
return result
|
1852
1855
|
|
1853
1856
|
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
@@ -3124,7 +3124,7 @@ class htx(Exchange, ImplicitAPI):
|
|
3124
3124
|
}
|
3125
3125
|
return result
|
3126
3126
|
|
3127
|
-
def network_id_to_code(self, networkId, currencyCode=None):
|
3127
|
+
def network_id_to_code(self, networkId: Str = None, currencyCode: Str = None):
|
3128
3128
|
# here network-id is provided pair of currency & chain(i.e. trc20usdt)
|
3129
3129
|
keys = list(self.options['networkNamesByChainIds'].keys())
|
3130
3130
|
keysLength = len(keys)
|
@@ -3133,7 +3133,7 @@ class htx(Exchange, ImplicitAPI):
|
|
3133
3133
|
networkTitle = self.safe_value(self.options['networkNamesByChainIds'], networkId, networkId)
|
3134
3134
|
return super(htx, self).network_id_to_code(networkTitle)
|
3135
3135
|
|
3136
|
-
def network_code_to_id(self, networkCode, currencyCode=None):
|
3136
|
+
def network_code_to_id(self, networkCode: str, currencyCode: Str = None):
|
3137
3137
|
if currencyCode is None:
|
3138
3138
|
raise ArgumentsRequired(self.id + ' networkCodeToId() requires a currencyCode argument')
|
3139
3139
|
keys = list(self.options['networkChainIdsByNames'].keys())
|
@@ -26,6 +26,7 @@ from ccxt.base.errors import CancelPending
|
|
26
26
|
from ccxt.base.errors import ContractUnavailable
|
27
27
|
from ccxt.base.errors import NotSupported
|
28
28
|
from ccxt.base.errors import NetworkError
|
29
|
+
from ccxt.base.errors import DDoSProtection
|
29
30
|
from ccxt.base.errors import RateLimitExceeded
|
30
31
|
from ccxt.base.errors import ExchangeNotAvailable
|
31
32
|
from ccxt.base.errors import OnMaintenance
|
@@ -913,7 +914,24 @@ class okx(Exchange, ImplicitAPI):
|
|
913
914
|
'60017': BadRequest, # Invalid url path
|
914
915
|
'60018': BadRequest, # The {0} {1} {2} {3} {4} does not exist
|
915
916
|
'60019': BadRequest, # Invalid op {op}
|
917
|
+
'60020': ExchangeError, # APIKey subscription amount exceeds the limit
|
918
|
+
'60021': AccountNotEnabled, # This operation does not support multiple accounts login
|
919
|
+
'60022': AuthenticationError, # Bulk login partially succeeded
|
920
|
+
'60023': DDoSProtection, # Bulk login requests too frequent
|
921
|
+
'60024': AuthenticationError, # Wrong passphrase
|
922
|
+
'60025': ExchangeError, # Token subscription amount exceeds the limit
|
923
|
+
'60026': AuthenticationError, # Batch login by APIKey and token simultaneously is not supported
|
924
|
+
'60027': ArgumentsRequired, # Parameter {0} can not be empty
|
925
|
+
'60028': NotSupported, # The current operation is not supported by self URL
|
926
|
+
'60029': AccountNotEnabled, # Only users who are VIP5 and above in trading fee tier are allowed to subscribe to books-l2-tbt channel
|
927
|
+
'60030': AccountNotEnabled, # Only users who are VIP4 and above in trading fee tier are allowed to subscribe to books50-l2-tbt channel
|
928
|
+
'60031': AuthenticationError, # The WebSocket endpoint does not support multiple account batch login,
|
929
|
+
'60032': AuthenticationError, # API key doesn't exist,
|
916
930
|
'63999': ExchangeError, # Internal system error
|
931
|
+
'64000': BadRequest, # Subscription parameter uly is unavailable anymore, please replace uly with instFamily. More details can refer to: https://www.okx.com/help-center/changes-to-v5-api-websocket-subscription-parameter-and-url,
|
932
|
+
'64001': BadRequest, # This channel has been migrated to the business URL. Please subscribe using the new URL. More details can refer to: https://www.okx.com/help-center/changes-to-v5-api-websocket-subscription-parameter-and-url,
|
933
|
+
'64002': BadRequest, # This channel is not supported by business URL. Please use "/private" URL(for private channels), or "/public" URL(for public channels). More details can refer to: https://www.okx.com/help-center/changes-to-v5-api-websocket-subscription-parameter-and-url,
|
934
|
+
'64003': AccountNotEnabled, # Your trading fee tier doesnt meet the requirement to access self channel
|
917
935
|
'70010': BadRequest, # Timestamp parameters need to be in Unix timestamp format in milliseconds.
|
918
936
|
'70013': BadRequest, # endTs needs to be bigger than or equal to beginTs.
|
919
937
|
'70016': BadRequest, # Please specify your instrument settings for at least one instType.
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.3.
|
7
|
+
__version__ = '4.3.18'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -3362,7 +3362,7 @@ class Exchange(object):
|
|
3362
3362
|
networkId = networkCode
|
3363
3363
|
return networkId
|
3364
3364
|
|
3365
|
-
def network_id_to_code(self, networkId:
|
3365
|
+
def network_id_to_code(self, networkId: Str = None, currencyCode: Str = None):
|
3366
3366
|
"""
|
3367
3367
|
* @ignore
|
3368
3368
|
tries to convert the provided exchange-specific networkId to an unified network Code. In order to achieve self, derived class needs to have "options['networksById']" defined.
|
@@ -2611,7 +2611,7 @@ class binance(Exchange, ImplicitAPI):
|
|
2611
2611
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
2612
2612
|
:returns dict: an associative dictionary of currencies
|
2613
2613
|
"""
|
2614
|
-
fetchCurrenciesEnabled = self.
|
2614
|
+
fetchCurrenciesEnabled = self.safe_bool(self.options, 'fetchCurrencies')
|
2615
2615
|
if not fetchCurrenciesEnabled:
|
2616
2616
|
return None
|
2617
2617
|
# self endpoint requires authentication
|
@@ -4398,7 +4398,7 @@ class binance(Exchange, ImplicitAPI):
|
|
4398
4398
|
market = self.safe_market(marketId, market, None, marketType)
|
4399
4399
|
symbol = market['symbol']
|
4400
4400
|
side = None
|
4401
|
-
buyerMaker = self.
|
4401
|
+
buyerMaker = self.safe_bool_2(trade, 'm', 'isBuyerMaker')
|
4402
4402
|
takerOrMaker = None
|
4403
4403
|
if buyerMaker is not None:
|
4404
4404
|
side = 'sell' if buyerMaker else 'buy' # self is reversed intentionally
|
@@ -4674,14 +4674,14 @@ class binance(Exchange, ImplicitAPI):
|
|
4674
4674
|
uppercaseType = 'STOP_LOSS'
|
4675
4675
|
elif uppercaseType == 'LIMIT':
|
4676
4676
|
uppercaseType = 'STOP_LOSS_LIMIT'
|
4677
|
-
validOrderTypes = self.
|
4677
|
+
validOrderTypes = self.safe_list(market['info'], 'orderTypes')
|
4678
4678
|
if not self.in_array(uppercaseType, validOrderTypes):
|
4679
4679
|
if initialUppercaseType != uppercaseType:
|
4680
4680
|
raise InvalidOrder(self.id + ' stopPrice parameter is not allowed for ' + symbol + ' ' + type + ' orders')
|
4681
4681
|
else:
|
4682
4682
|
raise InvalidOrder(self.id + ' ' + type + ' is not a valid order type for the ' + symbol + ' market')
|
4683
4683
|
if clientOrderId is None:
|
4684
|
-
broker = self.
|
4684
|
+
broker = self.safe_dict(self.options, 'broker')
|
4685
4685
|
if broker is not None:
|
4686
4686
|
brokerId = self.safe_string(broker, 'spot')
|
4687
4687
|
if brokerId is not None:
|
@@ -5515,6 +5515,7 @@ class binance(Exchange, ImplicitAPI):
|
|
5515
5515
|
:param float [params.stopLossPrice]: the price that a stop loss order is triggered at
|
5516
5516
|
:param float [params.takeProfitPrice]: the price that a take profit order is triggered at
|
5517
5517
|
:param boolean [params.portfolioMargin]: set to True if you would like to create an order in a portfolio margin account
|
5518
|
+
:param str [params.stopLossOrTakeProfit]: 'stopLoss' or 'takeProfit', required for spot trailing orders
|
5518
5519
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
5519
5520
|
"""
|
5520
5521
|
self.load_markets()
|
@@ -5613,8 +5614,8 @@ class binance(Exchange, ImplicitAPI):
|
|
5613
5614
|
stopLossPrice = self.safe_string(params, 'stopLossPrice', triggerPrice) # fallback to stopLoss
|
5614
5615
|
takeProfitPrice = self.safe_string(params, 'takeProfitPrice')
|
5615
5616
|
trailingDelta = self.safe_string(params, 'trailingDelta')
|
5616
|
-
trailingTriggerPrice = self.safe_string_2(params, 'trailingTriggerPrice', 'activationPrice'
|
5617
|
-
trailingPercent = self.
|
5617
|
+
trailingTriggerPrice = self.safe_string_2(params, 'trailingTriggerPrice', 'activationPrice')
|
5618
|
+
trailingPercent = self.safe_string_n(params, ['trailingPercent', 'callbackRate', 'trailingDelta'])
|
5618
5619
|
priceMatch = self.safe_string(params, 'priceMatch')
|
5619
5620
|
isTrailingPercentOrder = trailingPercent is not None
|
5620
5621
|
isStopLoss = stopLossPrice is not None or trailingDelta is not None
|
@@ -5626,10 +5627,26 @@ class binance(Exchange, ImplicitAPI):
|
|
5626
5627
|
uppercaseType = type.upper()
|
5627
5628
|
stopPrice = None
|
5628
5629
|
if isTrailingPercentOrder:
|
5629
|
-
|
5630
|
-
|
5631
|
-
|
5632
|
-
|
5630
|
+
if market['swap']:
|
5631
|
+
uppercaseType = 'TRAILING_STOP_MARKET'
|
5632
|
+
request['callbackRate'] = trailingPercent
|
5633
|
+
if trailingTriggerPrice is not None:
|
5634
|
+
request['activationPrice'] = self.price_to_precision(symbol, trailingTriggerPrice)
|
5635
|
+
else:
|
5636
|
+
if isMarketOrder:
|
5637
|
+
raise InvalidOrder(self.id + ' trailingPercent orders are not supported for ' + symbol + ' ' + type + ' orders')
|
5638
|
+
stopLossOrTakeProfit = self.safe_string(params, 'stopLossOrTakeProfit')
|
5639
|
+
params = self.omit(params, 'stopLossOrTakeProfit')
|
5640
|
+
if stopLossOrTakeProfit != 'stopLoss' and stopLossOrTakeProfit != 'takeProfit':
|
5641
|
+
raise InvalidOrder(self.id + symbol + ' trailingPercent orders require a stopLossOrTakeProfit parameter of either stopLoss or takeProfit')
|
5642
|
+
if stopLossOrTakeProfit == 'stopLoss':
|
5643
|
+
uppercaseType = 'STOP_LOSS_LIMIT'
|
5644
|
+
elif stopLossOrTakeProfit == 'takeProfit':
|
5645
|
+
uppercaseType = 'TAKE_PROFIT_LIMIT'
|
5646
|
+
if trailingTriggerPrice is not None:
|
5647
|
+
stopPrice = self.price_to_precision(symbol, trailingTriggerPrice)
|
5648
|
+
trailingPercentConverted = Precise.string_mul(trailingPercent, '100')
|
5649
|
+
request['trailingDelta'] = trailingPercentConverted
|
5633
5650
|
elif isStopLoss:
|
5634
5651
|
stopPrice = stopLossPrice
|
5635
5652
|
if isMarketOrder:
|
@@ -5769,8 +5786,8 @@ class binance(Exchange, ImplicitAPI):
|
|
5769
5786
|
raise InvalidOrder(self.id + ' createOrder() requires a stopPrice extra param for a ' + type + ' order')
|
5770
5787
|
else:
|
5771
5788
|
# check for delta price
|
5772
|
-
if trailingDelta is None and stopPrice is None:
|
5773
|
-
raise InvalidOrder(self.id + ' createOrder() requires a stopPrice or
|
5789
|
+
if trailingDelta is None and stopPrice is None and trailingPercent is None:
|
5790
|
+
raise InvalidOrder(self.id + ' createOrder() requires a stopPrice, trailingDelta or trailingPercent param for a ' + type + ' order')
|
5774
5791
|
if stopPrice is not None:
|
5775
5792
|
request['stopPrice'] = self.price_to_precision(symbol, stopPrice)
|
5776
5793
|
if timeInForceIsRequired and (self.safe_string(params, 'timeInForce') is None):
|
@@ -7149,7 +7166,7 @@ class binance(Exchange, ImplicitAPI):
|
|
7149
7166
|
if until is not None:
|
7150
7167
|
request['endTime'] = until
|
7151
7168
|
raw = self.sapiGetFiatOrders(self.extend(request, params))
|
7152
|
-
response = self.
|
7169
|
+
response = self.safe_list(raw, 'data', [])
|
7153
7170
|
# {
|
7154
7171
|
# "code": "000000",
|
7155
7172
|
# "message": "success",
|
@@ -7251,7 +7268,7 @@ class binance(Exchange, ImplicitAPI):
|
|
7251
7268
|
if since is not None:
|
7252
7269
|
request['beginTime'] = since
|
7253
7270
|
raw = self.sapiGetFiatOrders(self.extend(request, params))
|
7254
|
-
response = self.
|
7271
|
+
response = self.safe_list(raw, 'data', [])
|
7255
7272
|
# {
|
7256
7273
|
# "code": "000000",
|
7257
7274
|
# "message": "success",
|
@@ -7458,7 +7475,7 @@ class binance(Exchange, ImplicitAPI):
|
|
7458
7475
|
txType = self.safe_string(transaction, 'transactionType')
|
7459
7476
|
if txType is not None:
|
7460
7477
|
type = 'deposit' if (txType == '0') else 'withdrawal'
|
7461
|
-
legalMoneyCurrenciesById = self.
|
7478
|
+
legalMoneyCurrenciesById = self.safe_dict(self.options, 'legalMoneyCurrenciesById')
|
7462
7479
|
code = self.safe_string(legalMoneyCurrenciesById, code, code)
|
7463
7480
|
status = self.parse_transaction_status_by_type(self.safe_string(transaction, 'status'), type)
|
7464
7481
|
amount = self.safe_number(transaction, 'amount')
|
@@ -7772,7 +7789,7 @@ class binance(Exchange, ImplicitAPI):
|
|
7772
7789
|
if subLevel is not None:
|
7773
7790
|
topLevel = topLevel + '/' + subLevel
|
7774
7791
|
impliedNetwork = self.safe_string(reverseNetworks, topLevel)
|
7775
|
-
impliedNetworks = self.
|
7792
|
+
impliedNetworks = self.safe_dict(self.options, 'impliedNetworks', {
|
7776
7793
|
'ETH': {'ERC20': 'ETH'},
|
7777
7794
|
'TRX': {'TRC20': 'TRX'},
|
7778
7795
|
})
|
@@ -8980,7 +8997,7 @@ class binance(Exchange, ImplicitAPI):
|
|
8980
8997
|
self.load_markets()
|
8981
8998
|
# by default cache the leverage bracket
|
8982
8999
|
# it contains useful stuff like the maintenance margin and initial margin for positions
|
8983
|
-
leverageBrackets = self.
|
9000
|
+
leverageBrackets = self.safe_dict(self.options, 'leverageBrackets', {})
|
8984
9001
|
if (leverageBrackets is None) or (reload):
|
8985
9002
|
defaultType = self.safe_string(self.options, 'defaultType', 'future')
|
8986
9003
|
type = self.safe_string(params, 'type', defaultType)
|
@@ -1469,6 +1469,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1469
1469
|
# "quoteCoin": "USDT",
|
1470
1470
|
# "innovation": "0",
|
1471
1471
|
# "status": "Trading",
|
1472
|
+
# "marginTrading": "both",
|
1472
1473
|
# "lotSizeFilter": {
|
1473
1474
|
# "basePrecision": "0.000001",
|
1474
1475
|
# "quotePrecision": "0.00000001",
|
@@ -1505,7 +1506,9 @@ class bybit(Exchange, ImplicitAPI):
|
|
1505
1506
|
lotSizeFilter = self.safe_dict(market, 'lotSizeFilter')
|
1506
1507
|
priceFilter = self.safe_dict(market, 'priceFilter')
|
1507
1508
|
quotePrecision = self.safe_number(lotSizeFilter, 'quotePrecision')
|
1508
|
-
|
1509
|
+
marginTrading = self.safe_string(market, 'marginTrading', 'none')
|
1510
|
+
allowsMargin = marginTrading != 'none'
|
1511
|
+
result.append(self.safe_market_structure({
|
1509
1512
|
'id': id,
|
1510
1513
|
'symbol': symbol,
|
1511
1514
|
'base': base,
|
@@ -1516,7 +1519,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1516
1519
|
'settleId': None,
|
1517
1520
|
'type': 'spot',
|
1518
1521
|
'spot': True,
|
1519
|
-
'margin':
|
1522
|
+
'margin': allowsMargin,
|
1520
1523
|
'swap': False,
|
1521
1524
|
'future': False,
|
1522
1525
|
'option': False,
|
@@ -1555,7 +1558,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1555
1558
|
},
|
1556
1559
|
'created': None,
|
1557
1560
|
'info': market,
|
1558
|
-
})
|
1561
|
+
}))
|
1559
1562
|
return result
|
1560
1563
|
|
1561
1564
|
def fetch_future_markets(self, params):
|
@@ -1668,7 +1671,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1668
1671
|
if expiry is not None:
|
1669
1672
|
symbol = symbol + '-' + self.yymmdd(expiry)
|
1670
1673
|
contractSize = self.safe_number_2(lotSizeFilter, 'minTradingQty', 'minOrderQty') if inverse else self.parse_number('1')
|
1671
|
-
result.append({
|
1674
|
+
result.append(self.safe_market_structure({
|
1672
1675
|
'id': id,
|
1673
1676
|
'symbol': symbol,
|
1674
1677
|
'base': base,
|
@@ -1718,7 +1721,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1718
1721
|
},
|
1719
1722
|
'created': self.safe_integer(market, 'launchTime'),
|
1720
1723
|
'info': market,
|
1721
|
-
})
|
1724
|
+
}))
|
1722
1725
|
return result
|
1723
1726
|
|
1724
1727
|
def fetch_option_markets(self, params):
|
@@ -1796,7 +1799,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1796
1799
|
optionLetter = self.safe_string(splitId, 3)
|
1797
1800
|
isActive = (status == 'Trading')
|
1798
1801
|
if isActive or (self.options['loadAllOptions']) or (self.options['loadExpiredOptions']):
|
1799
|
-
result.append({
|
1802
|
+
result.append(self.safe_market_structure({
|
1800
1803
|
'id': id,
|
1801
1804
|
'symbol': base + '/' + quote + ':' + settle + '-' + self.yymmdd(expiry) + '-' + strike + '-' + optionLetter,
|
1802
1805
|
'base': base,
|
@@ -1846,7 +1849,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
1846
1849
|
},
|
1847
1850
|
'created': self.safe_integer(market, 'launchTime'),
|
1848
1851
|
'info': market,
|
1849
|
-
})
|
1852
|
+
}))
|
1850
1853
|
return result
|
1851
1854
|
|
1852
1855
|
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
@@ -3123,7 +3123,7 @@ class htx(Exchange, ImplicitAPI):
|
|
3123
3123
|
}
|
3124
3124
|
return result
|
3125
3125
|
|
3126
|
-
def network_id_to_code(self, networkId, currencyCode=None):
|
3126
|
+
def network_id_to_code(self, networkId: Str = None, currencyCode: Str = None):
|
3127
3127
|
# here network-id is provided pair of currency & chain(i.e. trc20usdt)
|
3128
3128
|
keys = list(self.options['networkNamesByChainIds'].keys())
|
3129
3129
|
keysLength = len(keys)
|
@@ -3132,7 +3132,7 @@ class htx(Exchange, ImplicitAPI):
|
|
3132
3132
|
networkTitle = self.safe_value(self.options['networkNamesByChainIds'], networkId, networkId)
|
3133
3133
|
return super(htx, self).network_id_to_code(networkTitle)
|
3134
3134
|
|
3135
|
-
def network_code_to_id(self, networkCode, currencyCode=None):
|
3135
|
+
def network_code_to_id(self, networkCode: str, currencyCode: Str = None):
|
3136
3136
|
if currencyCode is None:
|
3137
3137
|
raise ArgumentsRequired(self.id + ' networkCodeToId() requires a currencyCode argument')
|
3138
3138
|
keys = list(self.options['networkChainIdsByNames'].keys())
|
@@ -25,6 +25,7 @@ from ccxt.base.errors import CancelPending
|
|
25
25
|
from ccxt.base.errors import ContractUnavailable
|
26
26
|
from ccxt.base.errors import NotSupported
|
27
27
|
from ccxt.base.errors import NetworkError
|
28
|
+
from ccxt.base.errors import DDoSProtection
|
28
29
|
from ccxt.base.errors import RateLimitExceeded
|
29
30
|
from ccxt.base.errors import ExchangeNotAvailable
|
30
31
|
from ccxt.base.errors import OnMaintenance
|
@@ -912,7 +913,24 @@ class okx(Exchange, ImplicitAPI):
|
|
912
913
|
'60017': BadRequest, # Invalid url path
|
913
914
|
'60018': BadRequest, # The {0} {1} {2} {3} {4} does not exist
|
914
915
|
'60019': BadRequest, # Invalid op {op}
|
916
|
+
'60020': ExchangeError, # APIKey subscription amount exceeds the limit
|
917
|
+
'60021': AccountNotEnabled, # This operation does not support multiple accounts login
|
918
|
+
'60022': AuthenticationError, # Bulk login partially succeeded
|
919
|
+
'60023': DDoSProtection, # Bulk login requests too frequent
|
920
|
+
'60024': AuthenticationError, # Wrong passphrase
|
921
|
+
'60025': ExchangeError, # Token subscription amount exceeds the limit
|
922
|
+
'60026': AuthenticationError, # Batch login by APIKey and token simultaneously is not supported
|
923
|
+
'60027': ArgumentsRequired, # Parameter {0} can not be empty
|
924
|
+
'60028': NotSupported, # The current operation is not supported by self URL
|
925
|
+
'60029': AccountNotEnabled, # Only users who are VIP5 and above in trading fee tier are allowed to subscribe to books-l2-tbt channel
|
926
|
+
'60030': AccountNotEnabled, # Only users who are VIP4 and above in trading fee tier are allowed to subscribe to books50-l2-tbt channel
|
927
|
+
'60031': AuthenticationError, # The WebSocket endpoint does not support multiple account batch login,
|
928
|
+
'60032': AuthenticationError, # API key doesn't exist,
|
915
929
|
'63999': ExchangeError, # Internal system error
|
930
|
+
'64000': BadRequest, # Subscription parameter uly is unavailable anymore, please replace uly with instFamily. More details can refer to: https://www.okx.com/help-center/changes-to-v5-api-websocket-subscription-parameter-and-url,
|
931
|
+
'64001': BadRequest, # This channel has been migrated to the business URL. Please subscribe using the new URL. More details can refer to: https://www.okx.com/help-center/changes-to-v5-api-websocket-subscription-parameter-and-url,
|
932
|
+
'64002': BadRequest, # This channel is not supported by business URL. Please use "/private" URL(for private channels), or "/public" URL(for public channels). More details can refer to: https://www.okx.com/help-center/changes-to-v5-api-websocket-subscription-parameter-and-url,
|
933
|
+
'64003': AccountNotEnabled, # Your trading fee tier doesnt meet the requirement to access self channel
|
916
934
|
'70010': BadRequest, # Timestamp parameters need to be in Unix timestamp format in milliseconds.
|
917
935
|
'70013': BadRequest, # endTs needs to be bigger than or equal to beginTs.
|
918
936
|
'70016': BadRequest, # Please specify your instrument settings for at least one instType.
|
@@ -642,6 +642,8 @@ class bitfinex2(ccxt.async_support.bitfinex2):
|
|
642
642
|
responseChecksum = self.safe_integer(message, 2)
|
643
643
|
if responseChecksum != localChecksum:
|
644
644
|
error = InvalidNonce(self.id + ' invalid checksum')
|
645
|
+
del client.subscriptions[messageHash]
|
646
|
+
del self.orderbooks[symbol]
|
645
647
|
client.reject(error, messageHash)
|
646
648
|
|
647
649
|
async def watch_balance(self, params={}) -> Balances:
|
@@ -541,7 +541,10 @@ class bitget(ccxt.async_support.bitget):
|
|
541
541
|
responseChecksum = self.safe_integer(rawOrderBook, 'checksum')
|
542
542
|
if calculatedChecksum != responseChecksum:
|
543
543
|
error = InvalidNonce(self.id + ' invalid checksum')
|
544
|
+
del client.subscriptions[messageHash]
|
545
|
+
del self.orderbooks[symbol]
|
544
546
|
client.reject(error, messageHash)
|
547
|
+
return
|
545
548
|
else:
|
546
549
|
orderbook = self.order_book({})
|
547
550
|
parsedOrderbook = self.parse_order_book(rawOrderBook, symbol, timestamp)
|