ccxt 3.1.13__tar.gz → 3.1.15__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-3.1.13/ccxt.egg-info → ccxt-3.1.15}/PKG-INFO +5 -5
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/__init__.py +1 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/__init__.py +1 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/base/exchange.py +30 -13
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/huobi.py +4 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/okx.py +1 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/poloniex.py +1 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/base/exchange.py +30 -13
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/huobi.py +4 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/okx.py +1 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/poloniex.py +1 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/__init__.py +3 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/alpaca.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/ascendex.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/binance.py +7 -5
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bitfinex.py +1 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bitfinex2.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bitget.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bitmart.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bitmex.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bitopro.py +1 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bitpanda.py +1 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bitstamp.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bittrex.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bitvavo.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/blockchaincom.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/btcex.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bybit.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/cex.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/coinbasepro.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/coinex.py +18 -12
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/cryptocom.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/currencycom.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/deribit.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/exmo.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/gate.py +4 -4
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/gemini.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/hitbtc.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/hollaex.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/huobi.py +4 -4
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/huobijp.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/idex.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/independentreserve.py +1 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/kraken.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/krakenfutures.py +4 -4
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/kucoin.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/kucoinfutures.py +1 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/luno.py +1 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/mexc.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/ndax.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/okcoin.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/okx.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/phemex.py +3 -3
- ccxt-3.1.15/ccxt/pro/poloniex.py +973 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/poloniexfutures.py +1 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/probit.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/upbit.py +1 -1
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/wazirx.py +3 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/whitebit.py +4 -4
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/woo.py +2 -2
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_shared_methods.py +13 -13
- {ccxt-3.1.13 → ccxt-3.1.15/ccxt.egg-info}/PKG-INFO +5 -5
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt.egg-info/SOURCES.txt +1 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/package.json +4 -3
- {ccxt-3.1.13 → ccxt-3.1.15}/LICENSE.txt +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/MANIFEST.in +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/README.rst +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/__init__.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/ace.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/alpaca.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/ascendex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bequant.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bigone.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/binance.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/binancecoinm.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/binanceus.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/binanceusdm.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bit2c.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitbank.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitbay.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitbns.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitcoincom.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitfinex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitfinex2.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitflyer.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitforex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitget.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bithumb.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitmart.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitmex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitopro.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitpanda.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitrue.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitso.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitstamp.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitstamp1.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bittrex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bitvavo.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bkex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bl3p.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/blockchaincom.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/btcalpha.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/btcbox.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/btcex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/btcmarkets.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/btctradeua.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/btcturk.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/bybit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/cex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/coinbase.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/coinbaseprime.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/coinbasepro.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/coincheck.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/coinex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/coinfalcon.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/coinmate.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/coinone.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/coinsph.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/coinspot.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/cryptocom.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/currencycom.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/delta.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/deribit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/digifinex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/exmo.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/fmfwio.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/gate.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/gateio.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/gemini.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/hitbtc.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/hitbtc3.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/hollaex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/huobi.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/huobijp.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/huobipro.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/idex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/independentreserve.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/indodax.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/kraken.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/krakenfutures.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/kucoin.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/kucoinfutures.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/kuna.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/latoken.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/lbank.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/lbank2.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/luno.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/lykke.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/mercado.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/mexc.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/mexc3.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/ndax.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/novadax.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/oceanex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/okcoin.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/okex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/okex5.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/okx.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/paymium.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/phemex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/poloniex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/poloniexfutures.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/probit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/stex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/tidex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/timex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/tokocrypto.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/upbit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/wavesexchange.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/wazirx.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/whitebit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/woo.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/xt.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/yobit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/zaif.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/abstract/zonda.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/ace.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/alpaca.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/ascendex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/ace.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/alpaca.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/ascendex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/base/__init__.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/base/throttler.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/base/ws/__init__.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/base/ws/cache.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/base/ws/client.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/base/ws/fast_client.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/base/ws/functions.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/base/ws/future.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/base/ws/order_book.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/base/ws/order_book_side.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bequant.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bigone.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/binance.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/binancecoinm.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/binanceus.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/binanceusdm.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bit2c.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitbank.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitbay.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitbns.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitcoincom.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitfinex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitfinex2.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitflyer.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitforex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitget.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bithumb.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitmart.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitmex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitopro.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitpanda.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitrue.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitso.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitstamp.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitstamp1.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bittrex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bitvavo.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bkex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bl3p.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/blockchaincom.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/btcalpha.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/btcbox.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/btcex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/btcmarkets.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/btctradeua.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/btcturk.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/buda.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/bybit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/cex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/coinbase.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/coinbaseprime.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/coinbasepro.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/coincheck.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/coinex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/coinfalcon.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/coinmate.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/coinone.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/coinsph.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/coinspot.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/cryptocom.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/currencycom.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/delta.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/deribit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/digifinex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/exmo.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/flowbtc.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/fmfwio.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/gate.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/gateio.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/gemini.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/hitbtc.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/hitbtc3.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/hollaex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/huobijp.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/huobipro.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/idex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/independentreserve.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/indodax.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/itbit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/kraken.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/krakenfutures.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/kucoin.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/kucoinfutures.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/kuna.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/latoken.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/lbank.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/lbank2.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/luno.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/lykke.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/mercado.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/mexc.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/mexc3.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/ndax.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/novadax.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/oceanex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/okcoin.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/okex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/okex5.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/paymium.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/phemex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/poloniexfutures.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/probit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/ripio.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/stex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/tidex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/timex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/tokocrypto.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/upbit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/wavesexchange.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/wazirx.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/whitebit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/woo.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/xt.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/yobit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/zaif.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/zb.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/async_support/zonda.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/base/__init__.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/base/decimal_to_precision.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/base/errors.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/base/precise.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/base/types.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bequant.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bigone.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/binance.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/binancecoinm.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/binanceus.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/binanceusdm.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bit2c.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitbank.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitbay.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitbns.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitcoincom.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitfinex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitfinex2.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitflyer.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitforex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitget.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bithumb.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitmart.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitmex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitopro.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitpanda.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitrue.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitso.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitstamp.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitstamp1.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bittrex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bitvavo.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bkex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bl3p.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/blockchaincom.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/btcalpha.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/btcbox.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/btcex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/btcmarkets.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/btctradeua.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/btcturk.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/buda.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/bybit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/cex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/coinbase.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/coinbaseprime.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/coinbasepro.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/coincheck.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/coinex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/coinfalcon.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/coinmate.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/coinone.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/coinsph.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/coinspot.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/cryptocom.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/currencycom.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/delta.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/deribit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/digifinex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/exmo.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/flowbtc.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/fmfwio.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/gate.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/gateio.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/gemini.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/hitbtc.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/hitbtc3.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/hollaex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/huobijp.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/huobipro.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/idex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/independentreserve.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/indodax.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/itbit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/kraken.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/krakenfutures.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/kucoin.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/kucoinfutures.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/kuna.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/latoken.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/lbank.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/lbank2.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/luno.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/lykke.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/mercado.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/mexc.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/mexc3.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/ndax.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/novadax.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/oceanex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/okcoin.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/okex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/okex5.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/paymium.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/phemex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/poloniexfutures.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bequant.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/binancecoinm.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/binanceus.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/binanceusdm.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bitcoincom.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/bitrue.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/coinbaseprime.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/gateio.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/huobipro.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/mexc3.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/okex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/ripio.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/pro/zb.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/probit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/ripio.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/static_dependencies/__init__.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/static_dependencies/ecdsa/der.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/static_dependencies/ecdsa/util.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/static_dependencies/keccak/__init__.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/static_dependencies/keccak/keccak.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/stex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/__init__.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/__init__.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_account.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_balance.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_borrow_interest.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_borrow_rate.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_calculate_fee.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_crypto.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_currency.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_datetime.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_decimal_to_precision.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_deep_extend.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_funding_rate_history.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_ledger_entry.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_ledger_item.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_leverage_tier.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_margin_modification.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_market.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_number.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_ohlcv.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_open_interest.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_order.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_order_book.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_position.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_status.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_throttle.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_ticker.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_trade.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_trading_fee.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/base/test_transaction.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/test_async.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/test/test_sync.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/tidex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/timex.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/tokocrypto.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/upbit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/wavesexchange.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/wazirx.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/whitebit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/woo.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/xt.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/yobit.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/zaif.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/zb.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt/zonda.py +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt.egg-info/dependency_links.txt +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt.egg-info/requires.txt +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/ccxt.egg-info/top_level.txt +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/setup.cfg +0 -0
- {ccxt-3.1.13 → ccxt-3.1.15}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 3.1.
|
3
|
+
Version: 3.1.15
|
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
|
@@ -161,7 +161,7 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
|
|
161
161
|
| [](https://www.okx.com/join/1888677) | okx | [OKX](https://www.okx.com/join/1888677) | [](https://www.okx.com/docs-v5/en/) | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) |
|
162
162
|
| [](https://www.paymium.com/page/sign-up?referral=eDAzPoRQFMvaAB8sf-qj) | paymium | [Paymium](https://www.paymium.com/page/sign-up?referral=eDAzPoRQFMvaAB8sf-qj) | [](https://github.com/Paymium/api-documentation) | | |
|
163
163
|
| [](https://phemex.com/register?referralCode=EDNVJ) | phemex | [Phemex](https://phemex.com/register?referralCode=EDNVJ) | [](https://github.com/phemex/phemex-api-docs) | | [](https://ccxt.pro) |
|
164
|
-
| [](https://poloniex.com/signup?c=UBFZJRPJ) | poloniex | [Poloniex](https://poloniex.com/signup?c=UBFZJRPJ) | [](https://docs.poloniex.com) | |
|
164
|
+
| [](https://poloniex.com/signup?c=UBFZJRPJ) | poloniex | [Poloniex](https://poloniex.com/signup?c=UBFZJRPJ) | [](https://docs.poloniex.com) | | [](https://ccxt.pro) |
|
165
165
|
| [](https://poloniex.com/signup?c=UBFZJRPJ) | poloniexfutures | [Poloniex Futures](https://poloniex.com/signup?c=UBFZJRPJ) | [](https://futures-docs.poloniex.com) | | [](https://ccxt.pro) |
|
166
166
|
| [](https://www.probit.com/r/34608773) | probit | [ProBit](https://www.probit.com/r/34608773) | [](https://docs-en.probit.com) | | [](https://ccxt.pro) |
|
167
167
|
| [](https://app.stex.com?ref=36416021) | stex | [STEX](https://app.stex.com?ref=36416021) | [](https://apidocs.stex.com/) | | |
|
@@ -234,13 +234,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
|
|
234
234
|
|
235
235
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
236
236
|
|
237
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@3.1.
|
238
|
-
* unpkg: https://unpkg.com/ccxt@3.1.
|
237
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@3.1.15/dist/ccxt.browser.js
|
238
|
+
* unpkg: https://unpkg.com/ccxt@3.1.15/dist/ccxt.browser.js
|
239
239
|
|
240
240
|
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.
|
241
241
|
|
242
242
|
```HTML
|
243
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@3.1.
|
243
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@3.1.15/dist/ccxt.browser.js"></script>
|
244
244
|
```
|
245
245
|
|
246
246
|
Creates a global `ccxt` object:
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# -----------------------------------------------------------------------------
|
4
4
|
|
5
|
-
__version__ = '3.1.
|
5
|
+
__version__ = '3.1.15'
|
6
6
|
|
7
7
|
# -----------------------------------------------------------------------------
|
8
8
|
|
@@ -482,6 +482,15 @@ class Exchange(BaseExchange):
|
|
482
482
|
|
483
483
|
# METHODS BELOW THIS LINE ARE TRANSPILED FROM JAVASCRIPT TO PYTHON AND PHP
|
484
484
|
|
485
|
+
def find_message_hashes(self, client, element: str):
|
486
|
+
result = []
|
487
|
+
messageHashes = list(client.futures.keys())
|
488
|
+
for i in range(0, len(messageHashes)):
|
489
|
+
messageHash = messageHashes[i]
|
490
|
+
if messageHash.find(element) >= 0:
|
491
|
+
result.append(messageHash)
|
492
|
+
return result
|
493
|
+
|
485
494
|
def filter_by_limit(self, array: List[object], limit: Optional[int] = None, key: IndexType = 'timestamp'):
|
486
495
|
if self.valueIsDefined(limit):
|
487
496
|
arrayLength = len(array)
|
@@ -495,22 +504,25 @@ class Exchange(BaseExchange):
|
|
495
504
|
array = self.arraySlice(array, -limit) if ascending else self.arraySlice(array, 0, limit)
|
496
505
|
return array
|
497
506
|
|
498
|
-
def filter_by_since_limit(self, array: List[object], since: Optional[int] = None, limit: Optional[int] = None, key: IndexType = 'timestamp'):
|
507
|
+
def filter_by_since_limit(self, array: List[object], since: Optional[int] = None, limit: Optional[int] = None, key: IndexType = 'timestamp', tail=False):
|
499
508
|
sinceIsDefined = self.valueIsDefined(since)
|
500
509
|
parsedArray = self.to_array(array)
|
510
|
+
result = parsedArray
|
501
511
|
if sinceIsDefined:
|
502
512
|
result = []
|
503
513
|
for i in range(0, len(parsedArray)):
|
504
514
|
entry = parsedArray[i]
|
505
515
|
if entry[key] >= since:
|
506
516
|
result.append(entry)
|
507
|
-
|
508
|
-
|
517
|
+
if tail:
|
518
|
+
return result[-limit:]
|
519
|
+
return self.filter_by_limit(result, limit, key)
|
509
520
|
|
510
|
-
def filter_by_value_since_limit(self, array: List[object], field: IndexType, value=None, since: Optional[int] = None, limit: Optional[int] = None, key='timestamp'):
|
521
|
+
def filter_by_value_since_limit(self, array: List[object], field: IndexType, value=None, since: Optional[int] = None, limit: Optional[int] = None, key='timestamp', tail=False):
|
511
522
|
valueIsDefined = self.valueIsDefined(value)
|
512
523
|
sinceIsDefined = self.valueIsDefined(since)
|
513
524
|
parsedArray = self.to_array(array)
|
525
|
+
result = parsedArray
|
514
526
|
# single-pass filter for both symbol and since
|
515
527
|
if valueIsDefined or sinceIsDefined:
|
516
528
|
result = []
|
@@ -522,8 +534,9 @@ class Exchange(BaseExchange):
|
|
522
534
|
secondCondition = entryKeyGESince if sinceIsDefined else True
|
523
535
|
if firstCondition and secondCondition:
|
524
536
|
result.append(entry)
|
525
|
-
|
526
|
-
|
537
|
+
if tail:
|
538
|
+
return result[-limit:]
|
539
|
+
return self.filter_by_limit(result, limit, key)
|
527
540
|
|
528
541
|
def sign(self, path, api: Any = 'public', method='GET', params={}, headers: Optional[Any] = None, body: Optional[Any] = None):
|
529
542
|
return {}
|
@@ -1303,12 +1316,16 @@ class Exchange(BaseExchange):
|
|
1303
1316
|
result.append(self.market_id(symbols[i]))
|
1304
1317
|
return result
|
1305
1318
|
|
1306
|
-
def market_symbols(self, symbols):
|
1319
|
+
def market_symbols(self, symbols, type: Optional[str] = None):
|
1307
1320
|
if symbols is None:
|
1308
1321
|
return symbols
|
1309
1322
|
result = []
|
1310
1323
|
for i in range(0, len(symbols)):
|
1311
|
-
|
1324
|
+
market = self.market(symbols[i])
|
1325
|
+
if type is not None and market['type'] != type:
|
1326
|
+
raise BadRequest(self.id + ' symbols must be of same type ' + type + '. If the type is incorrect you can change it in options or the params of the request')
|
1327
|
+
symbol = self.safe_string(market, 'symbol', symbols[i])
|
1328
|
+
result.append(symbol)
|
1312
1329
|
return result
|
1313
1330
|
|
1314
1331
|
def market_codes(self, codes):
|
@@ -2270,11 +2287,11 @@ class Exchange(BaseExchange):
|
|
2270
2287
|
currency = self.safe_currency(currencyId, currency)
|
2271
2288
|
return currency['code']
|
2272
2289
|
|
2273
|
-
def filter_by_symbol_since_limit(self, array, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None):
|
2274
|
-
return self.filter_by_value_since_limit(array, 'symbol', symbol, since, limit, 'timestamp')
|
2290
|
+
def filter_by_symbol_since_limit(self, array, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, tail=False):
|
2291
|
+
return self.filter_by_value_since_limit(array, 'symbol', symbol, since, limit, 'timestamp', tail)
|
2275
2292
|
|
2276
|
-
def filter_by_currency_since_limit(self, array, code=None, since: Optional[int] = None, limit: Optional[int] = None):
|
2277
|
-
return self.filter_by_value_since_limit(array, 'currency', code, since, limit, 'timestamp')
|
2293
|
+
def filter_by_currency_since_limit(self, array, code=None, since: Optional[int] = None, limit: Optional[int] = None, tail=False):
|
2294
|
+
return self.filter_by_value_since_limit(array, 'currency', code, since, limit, 'timestamp', tail)
|
2278
2295
|
|
2279
2296
|
def parse_last_prices(self, pricesData, symbols: Optional[List[str]] = None, params={}):
|
2280
2297
|
#
|
@@ -5136,10 +5136,13 @@ class huobi(Exchange, ImplicitAPI):
|
|
5136
5136
|
if feeCost is not None:
|
5137
5137
|
feeCost = Precise.string_abs(feeCost)
|
5138
5138
|
networkId = self.safe_string(transaction, 'chain')
|
5139
|
+
txHash = self.safe_string(transaction, 'tx-hash')
|
5140
|
+
if networkId == 'ETH' and txHash.find('0x') < 0:
|
5141
|
+
txHash = '0x' + txHash
|
5139
5142
|
return {
|
5140
5143
|
'info': transaction,
|
5141
5144
|
'id': self.safe_string_2(transaction, 'id', 'data'),
|
5142
|
-
'txid':
|
5145
|
+
'txid': txHash,
|
5143
5146
|
'timestamp': timestamp,
|
5144
5147
|
'datetime': self.iso8601(timestamp),
|
5145
5148
|
'network': self.network_id_to_code(networkId, code),
|
@@ -2649,6 +2649,7 @@ class okx(Exchange, ImplicitAPI):
|
|
2649
2649
|
timeInForce = 'IOC'
|
2650
2650
|
type = 'limit'
|
2651
2651
|
marketId = self.safe_string(order, 'instId')
|
2652
|
+
market = self.safe_market(marketId, market)
|
2652
2653
|
symbol = self.safe_symbol(marketId, market, '-')
|
2653
2654
|
filled = self.safe_string(order, 'accFillSz')
|
2654
2655
|
price = self.safe_string_2(order, 'px', 'ordPx')
|
@@ -38,7 +38,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
38
38
|
# 200 requests per second for some unauthenticated market endpoints => 1000ms / 200 = 5ms between requests
|
39
39
|
'rateLimit': 5,
|
40
40
|
'certified': False,
|
41
|
-
'pro':
|
41
|
+
'pro': True,
|
42
42
|
'has': {
|
43
43
|
'CORS': None,
|
44
44
|
'spot': True,
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '3.1.
|
7
|
+
__version__ = '3.1.15'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -1670,6 +1670,15 @@ class Exchange(object):
|
|
1670
1670
|
|
1671
1671
|
# METHODS BELOW THIS LINE ARE TRANSPILED FROM JAVASCRIPT TO PYTHON AND PHP
|
1672
1672
|
|
1673
|
+
def find_message_hashes(self, client, element: str):
|
1674
|
+
result = []
|
1675
|
+
messageHashes = list(client.futures.keys())
|
1676
|
+
for i in range(0, len(messageHashes)):
|
1677
|
+
messageHash = messageHashes[i]
|
1678
|
+
if messageHash.find(element) >= 0:
|
1679
|
+
result.append(messageHash)
|
1680
|
+
return result
|
1681
|
+
|
1673
1682
|
def filter_by_limit(self, array: List[object], limit: Optional[int] = None, key: IndexType = 'timestamp'):
|
1674
1683
|
if self.valueIsDefined(limit):
|
1675
1684
|
arrayLength = len(array)
|
@@ -1683,22 +1692,25 @@ class Exchange(object):
|
|
1683
1692
|
array = self.arraySlice(array, -limit) if ascending else self.arraySlice(array, 0, limit)
|
1684
1693
|
return array
|
1685
1694
|
|
1686
|
-
def filter_by_since_limit(self, array: List[object], since: Optional[int] = None, limit: Optional[int] = None, key: IndexType = 'timestamp'):
|
1695
|
+
def filter_by_since_limit(self, array: List[object], since: Optional[int] = None, limit: Optional[int] = None, key: IndexType = 'timestamp', tail=False):
|
1687
1696
|
sinceIsDefined = self.valueIsDefined(since)
|
1688
1697
|
parsedArray = self.to_array(array)
|
1698
|
+
result = parsedArray
|
1689
1699
|
if sinceIsDefined:
|
1690
1700
|
result = []
|
1691
1701
|
for i in range(0, len(parsedArray)):
|
1692
1702
|
entry = parsedArray[i]
|
1693
1703
|
if entry[key] >= since:
|
1694
1704
|
result.append(entry)
|
1695
|
-
|
1696
|
-
|
1705
|
+
if tail:
|
1706
|
+
return result[-limit:]
|
1707
|
+
return self.filter_by_limit(result, limit, key)
|
1697
1708
|
|
1698
|
-
def filter_by_value_since_limit(self, array: List[object], field: IndexType, value=None, since: Optional[int] = None, limit: Optional[int] = None, key='timestamp'):
|
1709
|
+
def filter_by_value_since_limit(self, array: List[object], field: IndexType, value=None, since: Optional[int] = None, limit: Optional[int] = None, key='timestamp', tail=False):
|
1699
1710
|
valueIsDefined = self.valueIsDefined(value)
|
1700
1711
|
sinceIsDefined = self.valueIsDefined(since)
|
1701
1712
|
parsedArray = self.to_array(array)
|
1713
|
+
result = parsedArray
|
1702
1714
|
# single-pass filter for both symbol and since
|
1703
1715
|
if valueIsDefined or sinceIsDefined:
|
1704
1716
|
result = []
|
@@ -1710,8 +1722,9 @@ class Exchange(object):
|
|
1710
1722
|
secondCondition = entryKeyGESince if sinceIsDefined else True
|
1711
1723
|
if firstCondition and secondCondition:
|
1712
1724
|
result.append(entry)
|
1713
|
-
|
1714
|
-
|
1725
|
+
if tail:
|
1726
|
+
return result[-limit:]
|
1727
|
+
return self.filter_by_limit(result, limit, key)
|
1715
1728
|
|
1716
1729
|
def sign(self, path, api: Any = 'public', method='GET', params={}, headers: Optional[Any] = None, body: Optional[Any] = None):
|
1717
1730
|
return {}
|
@@ -2491,12 +2504,16 @@ class Exchange(object):
|
|
2491
2504
|
result.append(self.market_id(symbols[i]))
|
2492
2505
|
return result
|
2493
2506
|
|
2494
|
-
def market_symbols(self, symbols):
|
2507
|
+
def market_symbols(self, symbols, type: Optional[str] = None):
|
2495
2508
|
if symbols is None:
|
2496
2509
|
return symbols
|
2497
2510
|
result = []
|
2498
2511
|
for i in range(0, len(symbols)):
|
2499
|
-
|
2512
|
+
market = self.market(symbols[i])
|
2513
|
+
if type is not None and market['type'] != type:
|
2514
|
+
raise BadRequest(self.id + ' symbols must be of same type ' + type + '. If the type is incorrect you can change it in options or the params of the request')
|
2515
|
+
symbol = self.safe_string(market, 'symbol', symbols[i])
|
2516
|
+
result.append(symbol)
|
2500
2517
|
return result
|
2501
2518
|
|
2502
2519
|
def market_codes(self, codes):
|
@@ -3458,11 +3475,11 @@ class Exchange(object):
|
|
3458
3475
|
currency = self.safe_currency(currencyId, currency)
|
3459
3476
|
return currency['code']
|
3460
3477
|
|
3461
|
-
def filter_by_symbol_since_limit(self, array, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None):
|
3462
|
-
return self.filter_by_value_since_limit(array, 'symbol', symbol, since, limit, 'timestamp')
|
3478
|
+
def filter_by_symbol_since_limit(self, array, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, tail=False):
|
3479
|
+
return self.filter_by_value_since_limit(array, 'symbol', symbol, since, limit, 'timestamp', tail)
|
3463
3480
|
|
3464
|
-
def filter_by_currency_since_limit(self, array, code=None, since: Optional[int] = None, limit: Optional[int] = None):
|
3465
|
-
return self.filter_by_value_since_limit(array, 'currency', code, since, limit, 'timestamp')
|
3481
|
+
def filter_by_currency_since_limit(self, array, code=None, since: Optional[int] = None, limit: Optional[int] = None, tail=False):
|
3482
|
+
return self.filter_by_value_since_limit(array, 'currency', code, since, limit, 'timestamp', tail)
|
3466
3483
|
|
3467
3484
|
def parse_last_prices(self, pricesData, symbols: Optional[List[str]] = None, params={}):
|
3468
3485
|
#
|
@@ -5135,10 +5135,13 @@ class huobi(Exchange, ImplicitAPI):
|
|
5135
5135
|
if feeCost is not None:
|
5136
5136
|
feeCost = Precise.string_abs(feeCost)
|
5137
5137
|
networkId = self.safe_string(transaction, 'chain')
|
5138
|
+
txHash = self.safe_string(transaction, 'tx-hash')
|
5139
|
+
if networkId == 'ETH' and txHash.find('0x') < 0:
|
5140
|
+
txHash = '0x' + txHash
|
5138
5141
|
return {
|
5139
5142
|
'info': transaction,
|
5140
5143
|
'id': self.safe_string_2(transaction, 'id', 'data'),
|
5141
|
-
'txid':
|
5144
|
+
'txid': txHash,
|
5142
5145
|
'timestamp': timestamp,
|
5143
5146
|
'datetime': self.iso8601(timestamp),
|
5144
5147
|
'network': self.network_id_to_code(networkId, code),
|
@@ -2648,6 +2648,7 @@ class okx(Exchange, ImplicitAPI):
|
|
2648
2648
|
timeInForce = 'IOC'
|
2649
2649
|
type = 'limit'
|
2650
2650
|
marketId = self.safe_string(order, 'instId')
|
2651
|
+
market = self.safe_market(marketId, market)
|
2651
2652
|
symbol = self.safe_symbol(marketId, market, '-')
|
2652
2653
|
filled = self.safe_string(order, 'accFillSz')
|
2653
2654
|
price = self.safe_string_2(order, 'px', 'ordPx')
|
@@ -38,7 +38,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
38
38
|
# 200 requests per second for some unauthenticated market endpoints => 1000ms / 200 = 5ms between requests
|
39
39
|
'rateLimit': 5,
|
40
40
|
'certified': False,
|
41
|
-
'pro':
|
41
|
+
'pro': True,
|
42
42
|
'has': {
|
43
43
|
'CORS': None,
|
44
44
|
'spot': True,
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# ----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '3.1.
|
7
|
+
__version__ = '3.1.15'
|
8
8
|
|
9
9
|
# ----------------------------------------------------------------------------
|
10
10
|
|
@@ -64,6 +64,7 @@ from ccxt.pro.okcoin import okcoin # noqa
|
|
64
64
|
from ccxt.pro.okex import okex # noqa: F401
|
65
65
|
from ccxt.pro.okx import okx # noqa: F401
|
66
66
|
from ccxt.pro.phemex import phemex # noqa: F401
|
67
|
+
from ccxt.pro.poloniex import poloniex # noqa: F401
|
67
68
|
from ccxt.pro.poloniexfutures import poloniexfutures # noqa: F401
|
68
69
|
from ccxt.pro.probit import probit # noqa: F401
|
69
70
|
from ccxt.pro.upbit import upbit # noqa: F401
|
@@ -124,6 +125,7 @@ exchanges = [
|
|
124
125
|
'okex',
|
125
126
|
'okx',
|
126
127
|
'phemex',
|
128
|
+
'poloniex',
|
127
129
|
'poloniexfutures',
|
128
130
|
'probit',
|
129
131
|
'upbit',
|
@@ -148,7 +148,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
148
148
|
ohlcv = await self.watch(url, messageHash, self.extend(request, params), messageHash)
|
149
149
|
if self.newUpdates:
|
150
150
|
limit = ohlcv.getLimit(symbol, limit)
|
151
|
-
return self.filter_by_since_limit(ohlcv, since, limit, 0)
|
151
|
+
return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
|
152
152
|
|
153
153
|
def handle_ohlcv(self, client: Client, message):
|
154
154
|
#
|
@@ -272,7 +272,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
272
272
|
trades = await self.watch(url, messageHash, self.extend(request, params), messageHash)
|
273
273
|
if self.newUpdates:
|
274
274
|
limit = trades.getLimit(symbol, limit)
|
275
|
-
return self.filter_by_since_limit(trades, since, limit, 'timestamp')
|
275
|
+
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
276
276
|
|
277
277
|
def handle_trades(self, client: Client, message):
|
278
278
|
#
|
@@ -324,7 +324,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
324
324
|
trades = await self.watch(url, messageHash, self.extend(request, params), messageHash)
|
325
325
|
if self.newUpdates:
|
326
326
|
limit = trades.getLimit(symbol, limit)
|
327
|
-
return self.filter_by_since_limit(trades, since, limit, 'timestamp')
|
327
|
+
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
328
328
|
|
329
329
|
async def watch_orders(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
330
330
|
"""
|
@@ -99,7 +99,7 @@ class ascendex(ccxt.async_support.ascendex):
|
|
99
99
|
ohlcv = await self.watch_public(channel, params)
|
100
100
|
if self.newUpdates:
|
101
101
|
limit = ohlcv.getLimit(symbol, limit)
|
102
|
-
return self.filter_by_since_limit(ohlcv, since, limit, 0)
|
102
|
+
return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
|
103
103
|
|
104
104
|
def handle_ohlcv(self, client: Client, message):
|
105
105
|
#
|
@@ -155,7 +155,7 @@ class ascendex(ccxt.async_support.ascendex):
|
|
155
155
|
trades = await self.watch_public(channel, params)
|
156
156
|
if self.newUpdates:
|
157
157
|
limit = trades.getLimit(symbol, limit)
|
158
|
-
return self.filter_by_since_limit(trades, since, limit, 'timestamp')
|
158
|
+
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
159
159
|
|
160
160
|
def handle_trades(self, client: Client, message):
|
161
161
|
#
|
@@ -398,7 +398,7 @@ class binance(ccxt.async_support.binance):
|
|
398
398
|
trades = await self.watch(url, messageHash, self.extend(request, query), messageHash, subscribe)
|
399
399
|
if self.newUpdates:
|
400
400
|
limit = trades.getLimit(market['symbol'], limit)
|
401
|
-
return self.filter_by_since_limit(trades, since, limit, 'timestamp')
|
401
|
+
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
402
402
|
|
403
403
|
def parse_trade(self, trade, market=None):
|
404
404
|
#
|
@@ -615,7 +615,7 @@ class binance(ccxt.async_support.binance):
|
|
615
615
|
ohlcv = await self.watch(url, messageHash, self.extend(request, params), messageHash, subscribe)
|
616
616
|
if self.newUpdates:
|
617
617
|
limit = ohlcv.getLimit(symbol, limit)
|
618
|
-
return self.filter_by_since_limit(ohlcv, since, limit, 0)
|
618
|
+
return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
|
619
619
|
|
620
620
|
def handle_ohlcv(self, client: Client, message):
|
621
621
|
#
|
@@ -1465,7 +1465,7 @@ class binance(ccxt.async_support.binance):
|
|
1465
1465
|
trades = await self.watch(url, messageHash, message, type)
|
1466
1466
|
if self.newUpdates:
|
1467
1467
|
limit = trades.getLimit(symbol, limit)
|
1468
|
-
return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
|
1468
|
+
return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
|
1469
1469
|
|
1470
1470
|
def handle_my_trade(self, client: Client, message):
|
1471
1471
|
messageHash = 'myTrades'
|
@@ -1541,8 +1541,10 @@ class binance(ccxt.async_support.binance):
|
|
1541
1541
|
if fees is not None:
|
1542
1542
|
parsed['fees'] = fees
|
1543
1543
|
parsed['trades'] = self.safe_value(order, 'trades')
|
1544
|
-
|
1545
|
-
|
1544
|
+
timestamp = self.safe_integer(parsed, 'timestamp')
|
1545
|
+
if timestamp is None:
|
1546
|
+
parsed['timestamp'] = self.safe_integer(order, 'timestamp')
|
1547
|
+
parsed['datetime'] = self.safe_string(order, 'datetime')
|
1546
1548
|
cachedOrders.append(parsed)
|
1547
1549
|
client.resolve(self.orders, messageHash)
|
1548
1550
|
messageHashSymbol = messageHash + ':' + symbol
|
@@ -72,7 +72,7 @@ class bitfinex(ccxt.async_support.bitfinex):
|
|
72
72
|
trades = await self.subscribe('trades', symbol, params)
|
73
73
|
if self.newUpdates:
|
74
74
|
limit = trades.getLimit(symbol, limit)
|
75
|
-
return self.filter_by_since_limit(trades, since, limit, 'timestamp')
|
75
|
+
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
76
76
|
|
77
77
|
async def watch_ticker(self, symbol: str, params={}):
|
78
78
|
"""
|
@@ -102,7 +102,7 @@ class bitfinex2(ccxt.async_support.bitfinex2):
|
|
102
102
|
ohlcv = await self.watch(url, messageHash, self.deep_extend(request, params), messageHash)
|
103
103
|
if self.newUpdates:
|
104
104
|
limit = ohlcv.getLimit(symbol, limit)
|
105
|
-
return self.filter_by_since_limit(ohlcv, since, limit, 0)
|
105
|
+
return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
|
106
106
|
|
107
107
|
def handle_ohlcv(self, client: Client, message, subscription):
|
108
108
|
#
|
@@ -195,7 +195,7 @@ class bitfinex2(ccxt.async_support.bitfinex2):
|
|
195
195
|
trades = await self.subscribe('trades', symbol, params)
|
196
196
|
if self.newUpdates:
|
197
197
|
limit = trades.getLimit(symbol, limit)
|
198
|
-
return self.filter_by_since_limit(trades, since, limit, 'timestamp')
|
198
|
+
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
199
199
|
|
200
200
|
async def watch_my_trades(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
201
201
|
"""
|
@@ -214,7 +214,7 @@ class bitfinex2(ccxt.async_support.bitfinex2):
|
|
214
214
|
trades = await self.subscribe_private(messageHash)
|
215
215
|
if self.newUpdates:
|
216
216
|
limit = trades.getLimit(symbol, limit)
|
217
|
-
return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
|
217
|
+
return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
|
218
218
|
|
219
219
|
async def watch_ticker(self, symbol: str, params={}):
|
220
220
|
"""
|
@@ -257,7 +257,7 @@ class bitget(ccxt.async_support.bitget):
|
|
257
257
|
ohlcv = await self.watch_public(messageHash, args, params)
|
258
258
|
if self.newUpdates:
|
259
259
|
limit = ohlcv.getLimit(symbol, limit)
|
260
|
-
return self.filter_by_since_limit(ohlcv, since, limit, 0)
|
260
|
+
return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
|
261
261
|
|
262
262
|
def handle_ohlcv(self, client: Client, message):
|
263
263
|
#
|
@@ -468,7 +468,7 @@ class bitget(ccxt.async_support.bitget):
|
|
468
468
|
trades = await self.watch_public(messageHash, args, params)
|
469
469
|
if self.newUpdates:
|
470
470
|
limit = trades.getLimit(symbol, limit)
|
471
|
-
return self.filter_by_since_limit(trades, since, limit, 'timestamp')
|
471
|
+
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
472
472
|
|
473
473
|
def handle_trades(self, client: Client, message):
|
474
474
|
#
|
@@ -834,7 +834,7 @@ class bitget(ccxt.async_support.bitget):
|
|
834
834
|
trades = await self.watch_private(messageHash, subscriptionHash, args, params)
|
835
835
|
if self.newUpdates:
|
836
836
|
limit = trades.getLimit(symbol, limit)
|
837
|
-
return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
|
837
|
+
return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
|
838
838
|
|
839
839
|
def handle_my_trades(self, client: Client, message):
|
840
840
|
#
|
@@ -98,7 +98,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
98
98
|
trades = await self.subscribe('trade', symbol, params)
|
99
99
|
if self.newUpdates:
|
100
100
|
limit = trades.getLimit(symbol, limit)
|
101
|
-
return self.filter_by_since_limit(trades, since, limit, 'timestamp')
|
101
|
+
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
102
102
|
|
103
103
|
async def watch_ticker(self, symbol: str, params={}):
|
104
104
|
"""
|
@@ -312,7 +312,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
312
312
|
ohlcv = await self.subscribe(name, symbol, params)
|
313
313
|
if self.newUpdates:
|
314
314
|
limit = ohlcv.getLimit(symbol, limit)
|
315
|
-
return self.filter_by_since_limit(ohlcv, since, limit, 0)
|
315
|
+
return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
|
316
316
|
|
317
317
|
def handle_ohlcv(self, client: Client, message):
|
318
318
|
#
|
@@ -543,7 +543,7 @@ class bitmex(ccxt.async_support.bitmex):
|
|
543
543
|
trades = await self.watch(url, messageHash, self.extend(request, params), messageHash)
|
544
544
|
if self.newUpdates:
|
545
545
|
limit = trades.getLimit(symbol, limit)
|
546
|
-
return self.filter_by_since_limit(trades, since, limit, 'timestamp')
|
546
|
+
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
547
547
|
|
548
548
|
def authenticate(self, params={}):
|
549
549
|
url = self.urls['api']['ws']
|
@@ -813,7 +813,7 @@ class bitmex(ccxt.async_support.bitmex):
|
|
813
813
|
trades = await self.watch(url, messageHash, request, subscriptionHash)
|
814
814
|
if self.newUpdates:
|
815
815
|
limit = trades.getLimit(symbol, limit)
|
816
|
-
return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
|
816
|
+
return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
|
817
817
|
|
818
818
|
def handle_my_trades(self, client: Client, message):
|
819
819
|
#
|
@@ -950,7 +950,7 @@ class bitmex(ccxt.async_support.bitmex):
|
|
950
950
|
ohlcv = await self.watch(url, messageHash, self.extend(request, params), messageHash)
|
951
951
|
if self.newUpdates:
|
952
952
|
limit = ohlcv.getLimit(symbol, limit)
|
953
|
-
return self.filter_by_since_limit(ohlcv, since, limit, 0)
|
953
|
+
return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
|
954
954
|
|
955
955
|
def handle_ohlcv(self, client: Client, message):
|
956
956
|
#
|
@@ -127,7 +127,7 @@ class bitopro(ccxt.async_support.bitopro):
|
|
127
127
|
trades = await self.watch_public('trades', messageHash, market['id'])
|
128
128
|
if self.newUpdates:
|
129
129
|
limit = trades.getLimit(symbol, limit)
|
130
|
-
return self.filter_by_since_limit(trades, since, limit, 'timestamp')
|
130
|
+
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
131
131
|
|
132
132
|
def handle_trade(self, client: Client, message):
|
133
133
|
#
|
@@ -1053,7 +1053,7 @@ class bitpanda(ccxt.async_support.bitpanda):
|
|
1053
1053
|
ohlcv = await self.watch(url, messageHash, self.deep_extend(request, params), subscriptionHash, subscription)
|
1054
1054
|
if self.newUpdates:
|
1055
1055
|
limit = ohlcv.getLimit(symbol, limit)
|
1056
|
-
return self.filter_by_since_limit(ohlcv, since, limit, 0)
|
1056
|
+
return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
|
1057
1057
|
|
1058
1058
|
def handle_ohlcv(self, client: Client, message):
|
1059
1059
|
#
|
@@ -174,7 +174,7 @@ class bitstamp(ccxt.async_support.bitstamp):
|
|
174
174
|
trades = await self.watch(url, messageHash, message, messageHash)
|
175
175
|
if self.newUpdates:
|
176
176
|
limit = trades.getLimit(symbol, limit)
|
177
|
-
return self.filter_by_since_limit(trades, since, limit, 'timestamp')
|
177
|
+
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
178
178
|
|
179
179
|
def parse_ws_trade(self, trade, market=None):
|
180
180
|
#
|
@@ -277,7 +277,7 @@ class bitstamp(ccxt.async_support.bitstamp):
|
|
277
277
|
orders = await self.subscribe_private(subscription, messageHash, params)
|
278
278
|
if self.newUpdates:
|
279
279
|
limit = orders.getLimit(symbol, limit)
|
280
|
-
return self.filter_by_since_limit(orders, since, limit, 'timestamp')
|
280
|
+
return self.filter_by_since_limit(orders, since, limit, 'timestamp', True)
|
281
281
|
|
282
282
|
def handle_orders(self, client: Client, message):
|
283
283
|
#
|
@@ -381,7 +381,7 @@ class bittrex(ccxt.async_support.bittrex):
|
|
381
381
|
ohlcv = await self.subscribe_to_ohlcv(negotiation, symbol, timeframe, params)
|
382
382
|
if self.newUpdates:
|
383
383
|
limit = ohlcv.getLimit(symbol, limit)
|
384
|
-
return self.filter_by_since_limit(ohlcv, since, limit, 0)
|
384
|
+
return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
|
385
385
|
|
386
386
|
async def subscribe_to_ohlcv(self, negotiation, symbol, timeframe='1m', params={}):
|
387
387
|
await self.load_markets()
|
@@ -446,7 +446,7 @@ class bittrex(ccxt.async_support.bittrex):
|
|
446
446
|
trades = await self.subscribe_to_trades(negotiation, symbol, params)
|
447
447
|
if self.newUpdates:
|
448
448
|
limit = trades.getLimit(symbol, limit)
|
449
|
-
return self.filter_by_since_limit(trades, since, limit, 'timestamp')
|
449
|
+
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
450
450
|
|
451
451
|
async def subscribe_to_trades(self, negotiation, symbol, params={}):
|
452
452
|
await self.load_markets()
|
@@ -507,7 +507,7 @@ class bittrex(ccxt.async_support.bittrex):
|
|
507
507
|
trades = await self.subscribe_to_my_trades(authentication, params)
|
508
508
|
if self.newUpdates:
|
509
509
|
limit = trades.getLimit(symbol, limit)
|
510
|
-
return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
|
510
|
+
return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
|
511
511
|
|
512
512
|
async def subscribe_to_my_trades(self, authentication, params={}):
|
513
513
|
messageHash = 'execution'
|