ccxt-ir 4.3.46.0.3__py2.py3-none-any.whl → 4.5.0__py2.py3-none-any.whl
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/__init__.py +39 -35
- ccxt/abantether.py +8 -8
- ccxt/abstract/alpaca.py +4 -0
- ccxt/abstract/apex.py +31 -0
- ccxt/abstract/bigone.py +1 -1
- ccxt/abstract/binance.py +106 -48
- ccxt/abstract/binancecoinm.py +106 -48
- ccxt/abstract/binanceus.py +141 -83
- ccxt/abstract/binanceusdm.py +106 -48
- ccxt/abstract/bingx.py +50 -1
- ccxt/abstract/bitbank.py +5 -0
- ccxt/abstract/bitfinex.py +136 -65
- ccxt/abstract/bitflyer.py +1 -0
- ccxt/abstract/bitget.py +67 -0
- ccxt/abstract/bitmart.py +19 -1
- ccxt/abstract/bitopro.py +1 -0
- ccxt/abstract/bitrue.py +68 -68
- ccxt/abstract/bitstamp.py +1 -0
- ccxt/abstract/blofin.py +30 -0
- ccxt/abstract/btcbox.py +2 -0
- ccxt/abstract/bybit.py +28 -13
- ccxt/abstract/cex.py +28 -29
- ccxt/abstract/coinbaseexchange.py +1 -0
- ccxt/abstract/coinbaseinternational.py +1 -1
- ccxt/abstract/cryptocom.py +16 -0
- ccxt/abstract/cryptomus.py +20 -0
- ccxt/abstract/defx.py +69 -0
- ccxt/abstract/deribit.py +1 -0
- ccxt/abstract/derive.py +117 -0
- ccxt/abstract/digifinex.py +1 -0
- ccxt/abstract/ellipx.py +25 -0
- ccxt/abstract/foxbit.py +26 -0
- ccxt/abstract/gate.py +19 -0
- ccxt/abstract/gateio.py +19 -0
- ccxt/abstract/gemini.py +1 -0
- ccxt/abstract/hibachi.py +26 -0
- ccxt/abstract/hyperliquid.py +1 -1
- ccxt/abstract/independentreserve.py +6 -0
- ccxt/abstract/kraken.py +1 -0
- ccxt/abstract/krakenfutures.py +4 -0
- ccxt/abstract/kucoin.py +10 -0
- ccxt/abstract/kucoinfutures.py +18 -0
- ccxt/abstract/lbank.py +2 -1
- ccxt/abstract/luno.py +1 -0
- ccxt/abstract/mexc.py +2 -0
- ccxt/abstract/modetrade.py +119 -0
- ccxt/abstract/myokx.py +349 -0
- ccxt/abstract/oceanex.py +5 -0
- ccxt/abstract/okx.py +25 -0
- ccxt/abstract/okxus.py +349 -0
- ccxt/abstract/onetrading.py +0 -12
- ccxt/abstract/paradex.py +23 -0
- ccxt/abstract/phemex.py +2 -0
- ccxt/abstract/poloniex.py +36 -0
- ccxt/abstract/tradeogre.py +3 -1
- ccxt/abstract/upbit.py +51 -34
- ccxt/abstract/whitebit.py +16 -0
- ccxt/abstract/woo.py +64 -6
- ccxt/abstract/xt.py +10 -5
- ccxt/afratether.py +7 -7
- ccxt/alpaca.py +828 -51
- ccxt/apex.py +1875 -0
- ccxt/arzinja.py +7 -7
- ccxt/arzplus.py +9 -9
- ccxt/ascendex.py +501 -306
- ccxt/async_support/__init__.py +39 -35
- ccxt/async_support/abantether.py +8 -8
- ccxt/async_support/afratether.py +9 -9
- ccxt/async_support/alpaca.py +828 -51
- ccxt/async_support/apex.py +1875 -0
- ccxt/async_support/arzinja.py +10 -10
- ccxt/async_support/arzplus.py +12 -12
- ccxt/async_support/ascendex.py +502 -306
- ccxt/async_support/base/exchange.py +303 -89
- ccxt/async_support/base/ws/cache.py +9 -3
- ccxt/async_support/base/ws/client.py +173 -38
- ccxt/async_support/base/ws/future.py +25 -37
- ccxt/async_support/bequant.py +5 -3
- ccxt/async_support/bigone.py +279 -144
- ccxt/async_support/binance.py +2347 -1158
- ccxt/async_support/binancecoinm.py +9 -3
- ccxt/async_support/binanceus.py +17 -3
- ccxt/async_support/binanceusdm.py +9 -4
- ccxt/async_support/bingx.py +2962 -920
- ccxt/async_support/bit2c.py +147 -27
- ccxt/async_support/bitbank.py +151 -23
- ccxt/async_support/bitbns.py +104 -30
- ccxt/async_support/bitfinex.py +3291 -1113
- ccxt/async_support/bitflyer.py +202 -27
- ccxt/async_support/bitget.py +3683 -1538
- ccxt/async_support/bithumb.py +195 -38
- ccxt/async_support/bitimen.py +12 -12
- ccxt/async_support/bitir.py +38 -38
- ccxt/async_support/bitmart.py +1288 -350
- ccxt/async_support/bitmex.py +260 -75
- ccxt/async_support/bitopro.py +262 -62
- ccxt/async_support/bitpin.py +17 -16
- ccxt/async_support/bitrue.py +459 -290
- ccxt/async_support/bitso.py +199 -54
- ccxt/async_support/bitstamp.py +230 -96
- ccxt/async_support/bitteam.py +167 -25
- ccxt/async_support/{huobijp.py → bittrade.py} +158 -30
- ccxt/async_support/bitvavo.py +213 -49
- ccxt/async_support/blockchaincom.py +160 -46
- ccxt/async_support/blofin.py +502 -120
- ccxt/async_support/btcalpha.py +169 -31
- ccxt/async_support/btcbox.py +292 -23
- ccxt/async_support/btcmarkets.py +211 -58
- ccxt/async_support/btcturk.py +161 -38
- ccxt/async_support/bybit.py +1775 -1030
- ccxt/async_support/cex.py +1440 -1303
- ccxt/async_support/coinbase.py +724 -212
- ccxt/async_support/coinbaseadvanced.py +2 -1
- ccxt/async_support/coinbaseexchange.py +388 -89
- ccxt/async_support/coinbaseinternational.py +412 -57
- ccxt/async_support/coincatch.py +177 -78
- ccxt/async_support/coincheck.py +135 -19
- ccxt/async_support/coinex.py +606 -232
- ccxt/async_support/coinmate.py +189 -63
- ccxt/async_support/coinmetro.py +195 -54
- ccxt/async_support/coinone.py +158 -51
- ccxt/async_support/coinsph.py +336 -61
- ccxt/async_support/coinspot.py +151 -52
- ccxt/async_support/cryptocom.py +661 -111
- ccxt/async_support/cryptomus.py +1137 -0
- ccxt/async_support/defx.py +2071 -0
- ccxt/async_support/delta.py +299 -99
- ccxt/async_support/deribit.py +348 -126
- ccxt/async_support/derive.py +2572 -0
- ccxt/async_support/digifinex.py +430 -214
- ccxt/async_support/ellipx.py +2029 -0
- ccxt/async_support/eterex.py +10 -10
- ccxt/async_support/excoino.py +31 -31
- ccxt/async_support/exir.py +14 -14
- ccxt/async_support/exmo.py +344 -131
- ccxt/async_support/exnovin.py +10 -10
- ccxt/async_support/farhadexchange.py +12 -12
- ccxt/async_support/fmfwio.py +2 -1
- ccxt/async_support/foxbit.py +1935 -0
- ccxt/async_support/gate.py +1351 -529
- ccxt/async_support/gateio.py +2 -1
- ccxt/async_support/gemini.py +144 -39
- ccxt/async_support/hashkey.py +152 -109
- ccxt/async_support/hibachi.py +2080 -0
- ccxt/async_support/hitbtc.py +395 -167
- ccxt/async_support/hitobit.py +12 -12
- ccxt/async_support/hollaex.py +307 -119
- ccxt/async_support/htx.py +851 -383
- ccxt/async_support/huobi.py +2 -1
- ccxt/async_support/hyperliquid.py +1848 -536
- ccxt/async_support/independentreserve.py +288 -15
- ccxt/async_support/indodax.py +190 -33
- ccxt/async_support/jibitex.py +12 -12
- ccxt/async_support/kraken.py +795 -351
- ccxt/async_support/krakenfutures.py +214 -62
- ccxt/async_support/kucoin.py +715 -396
- ccxt/async_support/kucoinfutures.py +652 -89
- ccxt/async_support/latoken.py +217 -113
- ccxt/async_support/lbank.py +425 -97
- ccxt/async_support/luno.py +382 -35
- ccxt/async_support/mercado.py +113 -6
- ccxt/async_support/mexc.py +874 -437
- ccxt/async_support/modetrade.py +2818 -0
- ccxt/async_support/myokx.py +54 -0
- ccxt/async_support/ndax.py +221 -64
- ccxt/async_support/nobitex.py +31 -37
- ccxt/async_support/novadax.py +190 -34
- ccxt/async_support/oceanex.py +217 -28
- ccxt/async_support/okcoin.py +253 -145
- ccxt/async_support/okexchange.py +11 -11
- ccxt/async_support/okx.py +1088 -351
- ccxt/async_support/okxus.py +54 -0
- ccxt/async_support/ompfinex.py +25 -24
- ccxt/async_support/onetrading.py +213 -392
- ccxt/async_support/oxfun.py +245 -166
- ccxt/async_support/p2b.py +151 -29
- ccxt/async_support/paradex.py +562 -49
- ccxt/async_support/paymium.py +82 -19
- ccxt/async_support/phemex.py +713 -172
- ccxt/async_support/poloniex.py +1602 -283
- ccxt/async_support/probit.py +224 -95
- ccxt/async_support/ramzinex.py +30 -27
- ccxt/async_support/sarmayex.py +9 -9
- ccxt/async_support/sarrafex.py +13 -13
- ccxt/async_support/tabdeal.py +14 -13
- ccxt/async_support/tetherland.py +9 -9
- ccxt/async_support/timex.py +210 -51
- ccxt/async_support/tokocrypto.py +167 -47
- ccxt/async_support/tradeogre.py +266 -31
- ccxt/async_support/twox.py +9 -9
- ccxt/async_support/ubitex.py +12 -12
- ccxt/async_support/upbit.py +568 -165
- ccxt/async_support/vertex.py +160 -32
- ccxt/async_support/wallex.py +12 -12
- ccxt/async_support/wavesexchange.py +165 -30
- ccxt/async_support/whitebit.py +975 -127
- ccxt/async_support/woo.py +1918 -1016
- ccxt/async_support/woofipro.py +433 -141
- ccxt/async_support/xt.py +649 -193
- ccxt/async_support/yobit.py +195 -70
- ccxt/async_support/zaif.py +91 -15
- ccxt/async_support/zonda.py +151 -36
- ccxt/base/decimal_to_precision.py +14 -10
- ccxt/base/errors.py +49 -18
- ccxt/base/exchange.py +1556 -450
- ccxt/base/precise.py +10 -0
- ccxt/base/types.py +114 -6
- ccxt/bequant.py +5 -3
- ccxt/bigone.py +279 -144
- ccxt/binance.py +2347 -1158
- ccxt/binancecoinm.py +9 -3
- ccxt/binanceus.py +17 -3
- ccxt/binanceusdm.py +9 -4
- ccxt/bingx.py +2962 -920
- ccxt/bit2c.py +147 -27
- ccxt/bitbank.py +151 -23
- ccxt/bitbns.py +104 -30
- ccxt/bitfinex.py +3290 -1113
- ccxt/bitflyer.py +202 -27
- ccxt/bitget.py +3683 -1538
- ccxt/bithumb.py +194 -38
- ccxt/bitimen.py +9 -9
- ccxt/bitir.py +35 -35
- ccxt/bitmart.py +1288 -350
- ccxt/bitmex.py +260 -75
- ccxt/bitopro.py +262 -62
- ccxt/bitpin.py +15 -14
- ccxt/bitrue.py +459 -290
- ccxt/bitso.py +199 -54
- ccxt/bitstamp.py +230 -96
- ccxt/bitteam.py +167 -25
- ccxt/{huobijp.py → bittrade.py} +158 -30
- ccxt/bitvavo.py +213 -49
- ccxt/blockchaincom.py +160 -46
- ccxt/blofin.py +502 -120
- ccxt/btcalpha.py +169 -31
- ccxt/btcbox.py +291 -23
- ccxt/btcmarkets.py +211 -58
- ccxt/btcturk.py +161 -38
- ccxt/bybit.py +1775 -1030
- ccxt/cex.py +1439 -1303
- ccxt/coinbase.py +724 -212
- ccxt/coinbaseadvanced.py +2 -1
- ccxt/coinbaseexchange.py +388 -89
- ccxt/coinbaseinternational.py +412 -57
- ccxt/coincatch.py +177 -78
- ccxt/coincheck.py +135 -19
- ccxt/coinex.py +606 -232
- ccxt/coinmate.py +189 -63
- ccxt/coinmetro.py +194 -54
- ccxt/coinone.py +158 -51
- ccxt/coinsph.py +336 -61
- ccxt/coinspot.py +151 -52
- ccxt/cryptocom.py +661 -111
- ccxt/cryptomus.py +1137 -0
- ccxt/defx.py +2070 -0
- ccxt/delta.py +299 -99
- ccxt/deribit.py +348 -126
- ccxt/derive.py +2571 -0
- ccxt/digifinex.py +430 -214
- ccxt/ellipx.py +2029 -0
- ccxt/eterex.py +7 -7
- ccxt/excoino.py +29 -29
- ccxt/exir.py +11 -11
- ccxt/exmo.py +343 -131
- ccxt/exnovin.py +8 -8
- ccxt/farhadexchange.py +10 -10
- ccxt/fmfwio.py +2 -1
- ccxt/foxbit.py +1935 -0
- ccxt/gate.py +1351 -529
- ccxt/gateio.py +2 -1
- ccxt/gemini.py +144 -39
- ccxt/hashkey.py +152 -109
- ccxt/hibachi.py +2079 -0
- ccxt/hitbtc.py +395 -167
- ccxt/hitobit.py +9 -9
- ccxt/hollaex.py +307 -119
- ccxt/htx.py +851 -383
- ccxt/huobi.py +2 -1
- ccxt/hyperliquid.py +1848 -536
- ccxt/independentreserve.py +287 -15
- ccxt/indodax.py +190 -33
- ccxt/jibitex.py +9 -9
- ccxt/kraken.py +794 -351
- ccxt/krakenfutures.py +214 -62
- ccxt/kucoin.py +715 -396
- ccxt/kucoinfutures.py +652 -89
- ccxt/latoken.py +217 -113
- ccxt/lbank.py +425 -97
- ccxt/luno.py +382 -35
- ccxt/mercado.py +113 -6
- ccxt/mexc.py +873 -437
- ccxt/modetrade.py +2818 -0
- ccxt/myokx.py +54 -0
- ccxt/ndax.py +221 -64
- ccxt/nobitex.py +29 -35
- ccxt/novadax.py +190 -34
- ccxt/oceanex.py +217 -28
- ccxt/okcoin.py +253 -145
- ccxt/okexchange.py +9 -9
- ccxt/okx.py +1088 -351
- ccxt/okxus.py +54 -0
- ccxt/ompfinex.py +22 -21
- ccxt/onetrading.py +213 -392
- ccxt/oxfun.py +245 -166
- ccxt/p2b.py +151 -29
- ccxt/paradex.py +562 -49
- ccxt/paymium.py +82 -19
- ccxt/phemex.py +712 -172
- ccxt/poloniex.py +1601 -283
- ccxt/pro/__init__.py +76 -17
- ccxt/pro/alpaca.py +21 -6
- ccxt/pro/apex.py +984 -0
- ccxt/pro/ascendex.py +58 -10
- ccxt/pro/bequant.py +6 -1
- ccxt/pro/binance.py +728 -156
- ccxt/pro/binancecoinm.py +6 -2
- ccxt/pro/binanceus.py +8 -4
- ccxt/pro/binanceusdm.py +7 -2
- ccxt/pro/bingx.py +333 -142
- ccxt/pro/bitfinex.py +727 -262
- ccxt/pro/bitget.py +570 -79
- ccxt/pro/bithumb.py +20 -6
- ccxt/pro/bitmart.py +216 -87
- ccxt/pro/bitmex.py +47 -9
- ccxt/pro/bitopro.py +26 -14
- ccxt/pro/bitrue.py +22 -22
- ccxt/pro/bitstamp.py +54 -21
- ccxt/pro/{huobijp.py → bittrade.py} +7 -6
- ccxt/pro/bitvavo.py +191 -67
- ccxt/pro/blockchaincom.py +21 -8
- ccxt/pro/blofin.py +9 -1
- ccxt/pro/bybit.py +632 -245
- ccxt/pro/cex.py +59 -24
- ccxt/pro/coinbase.py +102 -73
- ccxt/pro/coinbaseadvanced.py +2 -1
- ccxt/pro/coinbaseexchange.py +8 -8
- ccxt/pro/coinbaseinternational.py +181 -25
- ccxt/pro/coincatch.py +6 -7
- ccxt/pro/coincheck.py +11 -6
- ccxt/pro/coinex.py +967 -665
- ccxt/pro/coinone.py +16 -9
- ccxt/pro/cryptocom.py +448 -45
- ccxt/pro/defx.py +831 -0
- ccxt/pro/deribit.py +150 -14
- ccxt/pro/derive.py +704 -0
- ccxt/pro/exmo.py +239 -6
- ccxt/pro/gate.py +623 -65
- ccxt/pro/gateio.py +2 -1
- ccxt/pro/gemini.py +27 -11
- ccxt/pro/hashkey.py +2 -2
- ccxt/pro/hitbtc.py +196 -91
- ccxt/pro/hollaex.py +23 -7
- ccxt/pro/htx.py +51 -14
- ccxt/pro/huobi.py +2 -1
- ccxt/pro/hyperliquid.py +591 -27
- ccxt/pro/independentreserve.py +9 -6
- ccxt/pro/kraken.py +640 -320
- ccxt/pro/krakenfutures.py +62 -35
- ccxt/pro/kucoin.py +267 -46
- ccxt/pro/kucoinfutures.py +165 -21
- ccxt/pro/lbank.py +102 -21
- ccxt/pro/luno.py +12 -8
- ccxt/pro/mexc.py +877 -111
- ccxt/pro/modetrade.py +1271 -0
- ccxt/pro/myokx.py +38 -0
- ccxt/pro/ndax.py +15 -2
- ccxt/pro/okcoin.py +23 -4
- ccxt/pro/okx.py +573 -98
- ccxt/pro/okxus.py +38 -0
- ccxt/pro/onetrading.py +30 -13
- ccxt/pro/oxfun.py +131 -27
- ccxt/pro/p2b.py +88 -22
- ccxt/pro/paradex.py +3 -3
- ccxt/pro/phemex.py +75 -21
- ccxt/pro/poloniex.py +124 -41
- ccxt/pro/probit.py +87 -80
- ccxt/pro/tradeogre.py +272 -0
- ccxt/pro/upbit.py +152 -12
- ccxt/pro/vertex.py +8 -3
- ccxt/pro/whitebit.py +58 -5
- ccxt/pro/woo.py +228 -37
- ccxt/pro/woofipro.py +106 -18
- ccxt/pro/xt.py +111 -5
- ccxt/probit.py +224 -95
- ccxt/protobuf/__init__.py +0 -0
- ccxt/protobuf/mexc/PrivateAccountV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PrivateDealsV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PrivateOrdersV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PublicAggreBookTickerV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PublicAggreDealsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicAggreDepthsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicBookTickerBatchV3Api_pb2.py +38 -0
- ccxt/protobuf/mexc/PublicBookTickerV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PublicDealsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
- ccxt/protobuf/mexc/PublicIncreaseDepthsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicLimitDepthsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicMiniTickerV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PublicMiniTickersV3Api_pb2.py +38 -0
- ccxt/protobuf/mexc/PublicSpotKlineV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PushDataV3ApiWrapper_pb2.py +52 -0
- ccxt/protobuf/mexc/__init__.py +0 -0
- ccxt/ramzinex.py +28 -25
- ccxt/sarmayex.py +7 -7
- ccxt/sarrafex.py +10 -10
- ccxt/static_dependencies/__init__.py +1 -1
- ccxt/static_dependencies/lark/py.typed +0 -0
- ccxt/static_dependencies/marshmallow/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- ccxt/tabdeal.py +12 -11
- ccxt/test/tests_async.py +261 -57
- ccxt/test/tests_helpers.py +1 -3
- ccxt/test/tests_init.py +4 -3
- ccxt/test/tests_sync.py +261 -57
- ccxt/tetherland.py +7 -7
- ccxt/timex.py +210 -51
- ccxt/tokocrypto.py +167 -47
- ccxt/tradeogre.py +266 -31
- ccxt/twox.py +7 -7
- ccxt/ubitex.py +9 -9
- ccxt/upbit.py +568 -165
- ccxt/vertex.py +160 -32
- ccxt/wallex.py +9 -9
- ccxt/wavesexchange.py +165 -30
- ccxt/whitebit.py +975 -127
- ccxt/woo.py +1917 -1016
- ccxt/woofipro.py +432 -141
- ccxt/xt.py +649 -193
- ccxt/yobit.py +194 -70
- ccxt/zaif.py +91 -15
- ccxt/zonda.py +151 -36
- {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/METADATA +225 -73
- ccxt_ir-4.5.0.dist-info/RECORD +743 -0
- {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
- ccxt/__test__.py +0 -7
- ccxt/abstract/ace.py +0 -15
- ccxt/abstract/bitbay.py +0 -53
- ccxt/abstract/bitcoincom.py +0 -115
- ccxt/abstract/bitfinex2.py +0 -139
- ccxt/abstract/bitpanda.py +0 -35
- ccxt/abstract/bl3p.py +0 -19
- ccxt/abstract/coinlist.py +0 -54
- ccxt/abstract/currencycom.py +0 -68
- ccxt/abstract/hitbtc3.py +0 -115
- ccxt/abstract/idex.py +0 -26
- ccxt/abstract/kuna.py +0 -182
- ccxt/abstract/lykke.py +0 -29
- ccxt/abstract/poloniexfutures.py +0 -48
- ccxt/abstract/wazirx.py +0 -30
- ccxt/ace.py +0 -1012
- ccxt/async_support/ace.py +0 -1012
- ccxt/async_support/base/ws/aiohttp_client.py +0 -125
- ccxt/async_support/base/ws/fast_client.py +0 -96
- ccxt/async_support/bitbay.py +0 -17
- ccxt/async_support/bitcoincom.py +0 -17
- ccxt/async_support/bitfinex2.py +0 -3552
- ccxt/async_support/bitpanda.py +0 -16
- ccxt/async_support/bl3p.py +0 -485
- ccxt/async_support/coinlist.py +0 -2243
- ccxt/async_support/currencycom.py +0 -1950
- ccxt/async_support/hitbtc3.py +0 -16
- ccxt/async_support/idex.py +0 -1766
- ccxt/async_support/kuna.py +0 -1841
- ccxt/async_support/lykke.py +0 -1270
- ccxt/async_support/poloniexfutures.py +0 -1717
- ccxt/async_support/wazirx.py +0 -1224
- ccxt/bitbay.py +0 -17
- ccxt/bitcoincom.py +0 -17
- ccxt/bitfinex2.py +0 -3552
- ccxt/bitpanda.py +0 -16
- ccxt/bl3p.py +0 -485
- ccxt/coinlist.py +0 -2243
- ccxt/currencycom.py +0 -1950
- ccxt/hitbtc3.py +0 -16
- ccxt/idex.py +0 -1766
- ccxt/kuna.py +0 -1841
- ccxt/lykke.py +0 -1270
- ccxt/poloniexfutures.py +0 -1717
- ccxt/pro/bitcoincom.py +0 -34
- ccxt/pro/bitfinex2.py +0 -1083
- ccxt/pro/bitpanda.py +0 -15
- ccxt/pro/currencycom.py +0 -536
- ccxt/pro/idex.py +0 -672
- ccxt/pro/poloniexfutures.py +0 -990
- ccxt/pro/wazirx.py +0 -749
- ccxt/test/base/__init__.py +0 -29
- ccxt/test/base/test_account.py +0 -26
- ccxt/test/base/test_balance.py +0 -56
- ccxt/test/base/test_borrow_interest.py +0 -35
- ccxt/test/base/test_borrow_rate.py +0 -32
- ccxt/test/base/test_calculate_fee.py +0 -51
- ccxt/test/base/test_crypto.py +0 -127
- ccxt/test/base/test_currency.py +0 -76
- ccxt/test/base/test_datetime.py +0 -109
- ccxt/test/base/test_decimal_to_precision.py +0 -392
- ccxt/test/base/test_deep_extend.py +0 -68
- ccxt/test/base/test_deposit_withdrawal.py +0 -50
- ccxt/test/base/test_exchange_datetime_functions.py +0 -76
- ccxt/test/base/test_funding_rate_history.py +0 -29
- ccxt/test/base/test_last_price.py +0 -31
- ccxt/test/base/test_ledger_entry.py +0 -45
- ccxt/test/base/test_ledger_item.py +0 -48
- ccxt/test/base/test_leverage_tier.py +0 -33
- ccxt/test/base/test_liquidation.py +0 -50
- ccxt/test/base/test_margin_mode.py +0 -24
- ccxt/test/base/test_margin_modification.py +0 -35
- ccxt/test/base/test_market.py +0 -193
- ccxt/test/base/test_number.py +0 -411
- ccxt/test/base/test_ohlcv.py +0 -33
- ccxt/test/base/test_open_interest.py +0 -32
- ccxt/test/base/test_order.py +0 -64
- ccxt/test/base/test_order_book.py +0 -69
- ccxt/test/base/test_position.py +0 -60
- ccxt/test/base/test_shared_methods.py +0 -353
- ccxt/test/base/test_status.py +0 -24
- ccxt/test/base/test_throttle.py +0 -126
- ccxt/test/base/test_ticker.py +0 -92
- ccxt/test/base/test_trade.py +0 -47
- ccxt/test/base/test_trading_fee.py +0 -26
- ccxt/test/base/test_transaction.py +0 -39
- ccxt/test/test_async.py +0 -1649
- ccxt/test/test_sync.py +0 -1648
- ccxt/wazirx.py +0 -1224
- ccxt_ir-4.3.46.0.3.dist-info/RECORD +0 -773
- /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
- {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
- {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
ccxt/pro/upbit.py
CHANGED
|
@@ -5,20 +5,24 @@
|
|
|
5
5
|
|
|
6
6
|
import ccxt.async_support
|
|
7
7
|
from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById
|
|
8
|
-
from ccxt.base.types import Balances, Int, Order, OrderBook, Str, Ticker, Trade
|
|
8
|
+
from ccxt.base.types import Any, Balances, Int, Order, OrderBook, Str, Strings, Ticker, Tickers, Trade
|
|
9
9
|
from ccxt.async_support.base.ws.client import Client
|
|
10
10
|
from typing import List
|
|
11
|
+
from ccxt.base.errors import NotSupported
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
class upbit(ccxt.async_support.upbit):
|
|
14
15
|
|
|
15
|
-
def describe(self):
|
|
16
|
+
def describe(self) -> Any:
|
|
16
17
|
return self.deep_extend(super(upbit, self).describe(), {
|
|
17
18
|
'has': {
|
|
18
19
|
'ws': True,
|
|
19
20
|
'watchOrderBook': True,
|
|
20
21
|
'watchTicker': True,
|
|
22
|
+
'watchTickers': True,
|
|
21
23
|
'watchTrades': True,
|
|
24
|
+
'watchTradesForSymbols': True,
|
|
25
|
+
'watchOHLCV': True,
|
|
22
26
|
'watchOrders': True,
|
|
23
27
|
'watchMyTrades': True,
|
|
24
28
|
'watchBalance': True,
|
|
@@ -59,37 +63,127 @@ class upbit(ccxt.async_support.upbit):
|
|
|
59
63
|
messageHash = channel + ':' + marketId
|
|
60
64
|
return await self.watch(url, messageHash, request, messageHash)
|
|
61
65
|
|
|
66
|
+
async def watch_public_multiple(self, symbols: Strings, channel, params={}):
|
|
67
|
+
await self.load_markets()
|
|
68
|
+
if symbols is None:
|
|
69
|
+
symbols = self.symbols
|
|
70
|
+
symbols = self.market_symbols(symbols)
|
|
71
|
+
marketIds = self.market_ids(symbols)
|
|
72
|
+
url = self.implode_params(self.urls['api']['ws'], {
|
|
73
|
+
'hostname': self.hostname,
|
|
74
|
+
})
|
|
75
|
+
messageHashes = []
|
|
76
|
+
for i in range(0, len(marketIds)):
|
|
77
|
+
messageHashes.append(channel + ':' + marketIds[i])
|
|
78
|
+
request = [
|
|
79
|
+
{
|
|
80
|
+
'ticket': self.uuid(),
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
'type': channel,
|
|
84
|
+
'codes': marketIds,
|
|
85
|
+
# 'isOnlySnapshot': False,
|
|
86
|
+
# 'isOnlyRealtime': False,
|
|
87
|
+
},
|
|
88
|
+
]
|
|
89
|
+
return await self.watch_multiple(url, messageHashes, request, messageHashes)
|
|
90
|
+
|
|
62
91
|
async def watch_ticker(self, symbol: str, params={}) -> Ticker:
|
|
63
92
|
"""
|
|
64
93
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
65
|
-
|
|
94
|
+
|
|
95
|
+
https://global-docs.upbit.com/reference/websocket-ticker
|
|
96
|
+
|
|
66
97
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
|
67
98
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
68
99
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
69
100
|
"""
|
|
70
101
|
return await self.watch_public(symbol, 'ticker')
|
|
71
102
|
|
|
103
|
+
async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
|
104
|
+
"""
|
|
105
|
+
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
|
|
106
|
+
|
|
107
|
+
https://global-docs.upbit.com/reference/websocket-ticker
|
|
108
|
+
|
|
109
|
+
:param str[] symbols: unified symbol of the market to fetch the ticker for
|
|
110
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
111
|
+
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
112
|
+
"""
|
|
113
|
+
newTickers = await self.watch_public_multiple(symbols, 'ticker')
|
|
114
|
+
if self.newUpdates:
|
|
115
|
+
tickers: dict = {}
|
|
116
|
+
tickers[newTickers['symbol']] = newTickers
|
|
117
|
+
return tickers
|
|
118
|
+
return self.filter_by_array(self.tickers, 'symbol', symbols)
|
|
119
|
+
|
|
72
120
|
async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
73
121
|
"""
|
|
74
122
|
get the list of most recent trades for a particular symbol
|
|
75
|
-
|
|
123
|
+
|
|
124
|
+
https://global-docs.upbit.com/reference/websocket-trade
|
|
125
|
+
|
|
76
126
|
:param str symbol: unified symbol of the market to fetch trades for
|
|
77
127
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
|
78
128
|
:param int [limit]: the maximum amount of trades to fetch
|
|
79
129
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
80
130
|
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
|
|
81
131
|
"""
|
|
132
|
+
return await self.watch_trades_for_symbols([symbol], since, limit, params)
|
|
133
|
+
|
|
134
|
+
async def watch_trades_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
135
|
+
"""
|
|
136
|
+
get the list of most recent trades for a list of symbols
|
|
137
|
+
|
|
138
|
+
https://global-docs.upbit.com/reference/websocket-trade
|
|
139
|
+
|
|
140
|
+
:param str[] symbols: unified symbol of the market to fetch trades for
|
|
141
|
+
:param int [since]: timestamp in ms of the earliest trade to fetch
|
|
142
|
+
:param int [limit]: the maximum amount of trades to fetch
|
|
143
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
144
|
+
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
|
|
145
|
+
"""
|
|
82
146
|
await self.load_markets()
|
|
83
|
-
|
|
84
|
-
|
|
147
|
+
symbols = self.market_symbols(symbols, None, False, True, True)
|
|
148
|
+
channel = 'trade'
|
|
149
|
+
messageHashes = []
|
|
150
|
+
url = self.implode_params(self.urls['api']['ws'], {
|
|
151
|
+
'hostname': self.hostname,
|
|
152
|
+
})
|
|
153
|
+
if symbols is not None:
|
|
154
|
+
for i in range(0, len(symbols)):
|
|
155
|
+
market = self.market(symbols[i])
|
|
156
|
+
marketId = market['id']
|
|
157
|
+
symbol = market['symbol']
|
|
158
|
+
self.options[channel] = self.safe_value(self.options, channel, {})
|
|
159
|
+
self.options[channel][symbol] = True
|
|
160
|
+
messageHashes.append(channel + ':' + marketId)
|
|
161
|
+
optionSymbols = list(self.options[channel].keys())
|
|
162
|
+
marketIds = self.market_ids(optionSymbols)
|
|
163
|
+
request = [
|
|
164
|
+
{
|
|
165
|
+
'ticket': self.uuid(),
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
'type': channel,
|
|
169
|
+
'codes': marketIds,
|
|
170
|
+
# 'isOnlySnapshot': False,
|
|
171
|
+
# 'isOnlyRealtime': False,
|
|
172
|
+
},
|
|
173
|
+
]
|
|
174
|
+
trades = await self.watch_multiple(url, messageHashes, request, messageHashes)
|
|
85
175
|
if self.newUpdates:
|
|
86
|
-
|
|
176
|
+
first = self.safe_value(trades, 0)
|
|
177
|
+
tradeSymbol = self.safe_string(first, 'symbol')
|
|
178
|
+
limit = trades.getLimit(tradeSymbol, limit)
|
|
87
179
|
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
|
88
180
|
|
|
89
181
|
async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
|
90
182
|
"""
|
|
91
183
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
|
92
|
-
|
|
184
|
+
|
|
185
|
+
https://global-docs.upbit.com/reference/websocket-orderbook
|
|
186
|
+
|
|
93
187
|
:param str symbol: unified symbol of the market to fetch the order book for
|
|
94
188
|
:param int [limit]: the maximum amount of order book entries to return
|
|
95
189
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -98,6 +192,25 @@ class upbit(ccxt.async_support.upbit):
|
|
|
98
192
|
orderbook = await self.watch_public(symbol, 'orderbook')
|
|
99
193
|
return orderbook.limit()
|
|
100
194
|
|
|
195
|
+
async def watch_ohlcv(self, symbol: str, timeframe='1s', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
|
196
|
+
"""
|
|
197
|
+
watches information an OHLCV with timestamp, openingPrice, highPrice, lowPrice, tradePrice, baseVolume in 1s.
|
|
198
|
+
|
|
199
|
+
https://docs.upbit.com/kr/reference/websocket-candle for Upbit KR
|
|
200
|
+
https://global-docs.upbit.com/reference/websocket-candle for Upbit Global
|
|
201
|
+
|
|
202
|
+
:param str symbol: unified market symbol of the market orders were made in
|
|
203
|
+
:param str timeframe: specifies the OHLCV candle interval to watch. As of now, Upbit only supports 1s candles.
|
|
204
|
+
:param int [since]: the earliest time in ms to fetch orders for
|
|
205
|
+
:param int [limit]: the maximum number of order structures to retrieve
|
|
206
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
207
|
+
:returns OHLCV[]: a list of `OHLCV structures <https://docs.ccxt.com/#/?id=ohlcv-structure>`
|
|
208
|
+
"""
|
|
209
|
+
if timeframe != '1s':
|
|
210
|
+
raise NotSupported(self.id + ' watchOHLCV does not support' + timeframe + ' candle.')
|
|
211
|
+
timeFrameOHLCV = 'candle.' + timeframe
|
|
212
|
+
return await self.watch_public(symbol, timeFrameOHLCV)
|
|
213
|
+
|
|
101
214
|
def handle_ticker(self, client: Client, message):
|
|
102
215
|
# 2020-03-17T23:07:36.511Z "onMessage" <Buffer 7b 22 74 79 70 65 22 3a 22 74 69 63 6b 65 72 22 2c 22 63 6f 64 65 22 3a 22 42 54 43 2d 45 54 48 22 2c 22 6f 70 65 6e 69 6e 67 5f 70 72 69 63 65 22 3a ... >
|
|
103
216
|
# {type: "ticker",
|
|
@@ -221,6 +334,26 @@ class upbit(ccxt.async_support.upbit):
|
|
|
221
334
|
messageHash = 'trade:' + marketId
|
|
222
335
|
client.resolve(stored, messageHash)
|
|
223
336
|
|
|
337
|
+
def handle_ohlcv(self, client: Client, message):
|
|
338
|
+
# {
|
|
339
|
+
# type: 'candle.1s',
|
|
340
|
+
# code: 'KRW-USDT',
|
|
341
|
+
# candle_date_time_utc: '2025-04-22T09:50:34',
|
|
342
|
+
# candle_date_time_kst: '2025-04-22T18:50:34',
|
|
343
|
+
# opening_price: 1438,
|
|
344
|
+
# high_price: 1438,
|
|
345
|
+
# low_price: 1438,
|
|
346
|
+
# trade_price: 1438,
|
|
347
|
+
# candle_acc_trade_volume: 1145.8935,
|
|
348
|
+
# candle_acc_trade_price: 1647794.853,
|
|
349
|
+
# timestamp: 1745315434125,
|
|
350
|
+
# stream_type: 'REALTIME'
|
|
351
|
+
# }
|
|
352
|
+
marketId = self.safe_string(message, 'code')
|
|
353
|
+
messageHash = 'candle.1s:' + marketId
|
|
354
|
+
ohlcv = self.parse_ohlcv(message)
|
|
355
|
+
client.resolve(ohlcv, messageHash)
|
|
356
|
+
|
|
224
357
|
async def authenticate(self, params={}):
|
|
225
358
|
self.check_required_credentials()
|
|
226
359
|
wsOptions: dict = self.safe_dict(self.options, 'ws', {})
|
|
@@ -270,7 +403,9 @@ class upbit(ccxt.async_support.upbit):
|
|
|
270
403
|
async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
271
404
|
"""
|
|
272
405
|
watches information on multiple orders made by the user
|
|
273
|
-
|
|
406
|
+
|
|
407
|
+
https://global-docs.upbit.com/reference/websocket-myorder
|
|
408
|
+
|
|
274
409
|
:param str symbol: unified market symbol of the market orders were made in
|
|
275
410
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
276
411
|
:param int [limit]: the maximum number of order structures to retrieve
|
|
@@ -288,12 +423,14 @@ class upbit(ccxt.async_support.upbit):
|
|
|
288
423
|
async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
289
424
|
"""
|
|
290
425
|
watches information on multiple trades made by the user
|
|
291
|
-
|
|
426
|
+
|
|
427
|
+
https://global-docs.upbit.com/reference/websocket-myorder
|
|
428
|
+
|
|
292
429
|
:param str symbol: unified market symbol of the market orders were made in
|
|
293
430
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
294
431
|
:param int [limit]: the maximum number of order structures to retrieve
|
|
295
432
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
296
|
-
:returns dict[]: a list of
|
|
433
|
+
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
|
297
434
|
"""
|
|
298
435
|
await self.load_markets()
|
|
299
436
|
channel = 'myOrder'
|
|
@@ -461,7 +598,9 @@ class upbit(ccxt.async_support.upbit):
|
|
|
461
598
|
|
|
462
599
|
async def watch_balance(self, params={}) -> Balances:
|
|
463
600
|
"""
|
|
464
|
-
|
|
601
|
+
|
|
602
|
+
https://global-docs.upbit.com/reference/websocket-myasset
|
|
603
|
+
|
|
465
604
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
|
466
605
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
467
606
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
|
@@ -513,6 +652,7 @@ class upbit(ccxt.async_support.upbit):
|
|
|
513
652
|
'trade': self.handle_trades,
|
|
514
653
|
'myOrder': self.handle_my_order,
|
|
515
654
|
'myAsset': self.handle_balance,
|
|
655
|
+
'candle.1s': self.handle_ohlcv,
|
|
516
656
|
}
|
|
517
657
|
methodName = self.safe_string(message, 'type')
|
|
518
658
|
method = self.safe_value(methods, methodName)
|
ccxt/pro/vertex.py
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import ccxt.async_support
|
|
7
7
|
from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById, ArrayCacheBySymbolBySide
|
|
8
|
-
from ccxt.base.types import Int, Market, Order, OrderBook, Position, Str, Strings, Ticker, Trade
|
|
8
|
+
from ccxt.base.types import Any, Bool, Int, Market, Order, OrderBook, Position, Str, Strings, Ticker, Trade
|
|
9
9
|
from ccxt.async_support.base.ws.client import Client
|
|
10
10
|
from typing import List
|
|
11
11
|
from ccxt.base.errors import AuthenticationError
|
|
@@ -16,7 +16,7 @@ from ccxt.base.precise import Precise
|
|
|
16
16
|
|
|
17
17
|
class vertex(ccxt.async_support.vertex):
|
|
18
18
|
|
|
19
|
-
def describe(self):
|
|
19
|
+
def describe(self) -> Any:
|
|
20
20
|
return self.deep_extend(super(vertex, self).describe(), {
|
|
21
21
|
'has': {
|
|
22
22
|
'ws': True,
|
|
@@ -55,6 +55,11 @@ class vertex(ccxt.async_support.vertex):
|
|
|
55
55
|
},
|
|
56
56
|
'ws': {
|
|
57
57
|
'inflate': True,
|
|
58
|
+
'options': {
|
|
59
|
+
'headers': {
|
|
60
|
+
'Sec-WebSocket-Extensions': 'permessage-deflate', # requires permessage-deflate extension, maybe we can set self in client implementation when self.inflateis True
|
|
61
|
+
},
|
|
62
|
+
},
|
|
58
63
|
},
|
|
59
64
|
},
|
|
60
65
|
'streaming': {
|
|
@@ -893,7 +898,7 @@ class vertex(ccxt.async_support.vertex):
|
|
|
893
898
|
cachedOrders.append(parsed)
|
|
894
899
|
client.resolve(self.orders, marketId + '@' + topic)
|
|
895
900
|
|
|
896
|
-
def handle_error_message(self, client: Client, message):
|
|
901
|
+
def handle_error_message(self, client: Client, message) -> Bool:
|
|
897
902
|
#
|
|
898
903
|
# {
|
|
899
904
|
# result: null,
|
ccxt/pro/whitebit.py
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import ccxt.async_support
|
|
7
7
|
from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById, ArrayCacheByTimestamp
|
|
8
|
-
from ccxt.base.types import Balances, Int, Order, OrderBook, Str, Ticker, Trade
|
|
8
|
+
from ccxt.base.types import Any, Balances, Bool, Int, Order, OrderBook, Str, Strings, Ticker, Tickers, Trade
|
|
9
9
|
from ccxt.async_support.base.ws.client import Client
|
|
10
10
|
from typing import List
|
|
11
11
|
from ccxt.base.errors import AuthenticationError
|
|
@@ -16,7 +16,7 @@ from ccxt.base.precise import Precise
|
|
|
16
16
|
|
|
17
17
|
class whitebit(ccxt.async_support.whitebit):
|
|
18
18
|
|
|
19
|
-
def describe(self):
|
|
19
|
+
def describe(self) -> Any:
|
|
20
20
|
return self.deep_extend(super(whitebit, self).describe(), {
|
|
21
21
|
'has': {
|
|
22
22
|
'ws': True,
|
|
@@ -26,7 +26,9 @@ class whitebit(ccxt.async_support.whitebit):
|
|
|
26
26
|
'watchOrderBook': True,
|
|
27
27
|
'watchOrders': True,
|
|
28
28
|
'watchTicker': True,
|
|
29
|
+
'watchTickers': True,
|
|
29
30
|
'watchTrades': True,
|
|
31
|
+
'watchTradesForSymbols': False,
|
|
30
32
|
},
|
|
31
33
|
'urls': {
|
|
32
34
|
'api': {
|
|
@@ -67,6 +69,9 @@ class whitebit(ccxt.async_support.whitebit):
|
|
|
67
69
|
async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
|
68
70
|
"""
|
|
69
71
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
72
|
+
|
|
73
|
+
https://docs.whitebit.com/public/websocket/#kline
|
|
74
|
+
|
|
70
75
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
|
71
76
|
:param str timeframe: the length of time each candle represents
|
|
72
77
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
|
@@ -135,6 +140,9 @@ class whitebit(ccxt.async_support.whitebit):
|
|
|
135
140
|
async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
|
136
141
|
"""
|
|
137
142
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
|
143
|
+
|
|
144
|
+
https://docs.whitebit.com/public/websocket/#market-depth
|
|
145
|
+
|
|
138
146
|
:param str symbol: unified symbol of the market to fetch the order book for
|
|
139
147
|
:param int [limit]: the maximum amount of order book entries to return
|
|
140
148
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -233,6 +241,9 @@ class whitebit(ccxt.async_support.whitebit):
|
|
|
233
241
|
async def watch_ticker(self, symbol: str, params={}) -> Ticker:
|
|
234
242
|
"""
|
|
235
243
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
244
|
+
|
|
245
|
+
https://docs.whitebit.com/public/websocket/#market-statistics
|
|
246
|
+
|
|
236
247
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
|
237
248
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
238
249
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
@@ -245,6 +256,35 @@ class whitebit(ccxt.async_support.whitebit):
|
|
|
245
256
|
# every time we want to subscribe to another market we have to "re-subscribe" sending it all again
|
|
246
257
|
return await self.watch_multiple_subscription(messageHash, method, symbol, False, params)
|
|
247
258
|
|
|
259
|
+
async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
|
260
|
+
"""
|
|
261
|
+
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
|
|
262
|
+
|
|
263
|
+
https://docs.whitebit.com/public/websocket/#market-statistics
|
|
264
|
+
|
|
265
|
+
:param str[] [symbols]: unified symbol of the market to fetch the ticker for
|
|
266
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
267
|
+
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
268
|
+
"""
|
|
269
|
+
await self.load_markets()
|
|
270
|
+
symbols = self.market_symbols(symbols, None, False)
|
|
271
|
+
method = 'market_subscribe'
|
|
272
|
+
url = self.urls['api']['ws']
|
|
273
|
+
id = self.nonce()
|
|
274
|
+
messageHashes = []
|
|
275
|
+
args = []
|
|
276
|
+
for i in range(0, len(symbols)):
|
|
277
|
+
market = self.market(symbols[i])
|
|
278
|
+
messageHashes.append('ticker:' + market['symbol'])
|
|
279
|
+
args.append(market['id'])
|
|
280
|
+
request: dict = {
|
|
281
|
+
'id': id,
|
|
282
|
+
'method': method,
|
|
283
|
+
'params': args,
|
|
284
|
+
}
|
|
285
|
+
await self.watch_multiple(url, messageHashes, self.extend(request, params), messageHashes)
|
|
286
|
+
return self.filter_by_array(self.tickers, 'symbol', symbols)
|
|
287
|
+
|
|
248
288
|
def handle_ticker(self, client: Client, message):
|
|
249
289
|
#
|
|
250
290
|
# {
|
|
@@ -295,6 +335,9 @@ class whitebit(ccxt.async_support.whitebit):
|
|
|
295
335
|
async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
296
336
|
"""
|
|
297
337
|
get the list of most recent trades for a particular symbol
|
|
338
|
+
|
|
339
|
+
https://docs.whitebit.com/public/websocket/#market-trades
|
|
340
|
+
|
|
298
341
|
:param str symbol: unified symbol of the market to fetch trades for
|
|
299
342
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
|
300
343
|
:param int [limit]: the maximum amount of trades to fetch
|
|
@@ -356,6 +399,9 @@ class whitebit(ccxt.async_support.whitebit):
|
|
|
356
399
|
async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
357
400
|
"""
|
|
358
401
|
watches trades made by the user
|
|
402
|
+
|
|
403
|
+
https://docs.whitebit.com/private/websocket/#deals
|
|
404
|
+
|
|
359
405
|
:param str symbol: unified market symbol
|
|
360
406
|
:param int [since]: the earliest time in ms to fetch trades for
|
|
361
407
|
:param int [limit]: the maximum number of trades structures to retrieve
|
|
@@ -449,11 +495,14 @@ class whitebit(ccxt.async_support.whitebit):
|
|
|
449
495
|
async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
450
496
|
"""
|
|
451
497
|
watches information on multiple orders made by the user
|
|
498
|
+
|
|
499
|
+
https://docs.whitebit.com/private/websocket/#orders-pending
|
|
500
|
+
|
|
452
501
|
:param str symbol: unified market symbol of the market orders were made in
|
|
453
502
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
454
503
|
:param int [limit]: the maximum number of order structures to retrieve
|
|
455
504
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
456
|
-
:returns dict[]: a list of
|
|
505
|
+
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
|
457
506
|
"""
|
|
458
507
|
if symbol is None:
|
|
459
508
|
raise ArgumentsRequired(self.id + ' watchOrders() requires a symbol argument')
|
|
@@ -612,6 +661,10 @@ class whitebit(ccxt.async_support.whitebit):
|
|
|
612
661
|
async def watch_balance(self, params={}) -> Balances:
|
|
613
662
|
"""
|
|
614
663
|
watch balance and get the amount of funds available for trading or funds locked in orders
|
|
664
|
+
|
|
665
|
+
https://docs.whitebit.com/private/websocket/#balance-spot
|
|
666
|
+
https://docs.whitebit.com/private/websocket/#balance-margin
|
|
667
|
+
|
|
615
668
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
616
669
|
:param str [params.type]: spot or contract if not provided self.options['defaultType'] is used
|
|
617
670
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
|
@@ -781,7 +834,7 @@ class whitebit(ccxt.async_support.whitebit):
|
|
|
781
834
|
future.resolve(1)
|
|
782
835
|
return message
|
|
783
836
|
|
|
784
|
-
def handle_error_message(self, client: Client, message):
|
|
837
|
+
def handle_error_message(self, client: Client, message) -> Bool:
|
|
785
838
|
#
|
|
786
839
|
# {
|
|
787
840
|
# "error": {code: 1, message: "invalid argument"},
|
|
@@ -856,7 +909,7 @@ class whitebit(ccxt.async_support.whitebit):
|
|
|
856
909
|
client.lastPong = self.milliseconds()
|
|
857
910
|
return message
|
|
858
911
|
|
|
859
|
-
def ping(self, client):
|
|
912
|
+
def ping(self, client: Client):
|
|
860
913
|
return {
|
|
861
914
|
'id': 0,
|
|
862
915
|
'method': 'ping',
|