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/okxus.py
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
# PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
|
|
4
|
+
# https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
|
|
5
|
+
|
|
6
|
+
from ccxt.pro.okx import okx
|
|
7
|
+
from ccxt.base.types import Any
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class okxus(okx):
|
|
11
|
+
|
|
12
|
+
def describe(self) -> Any:
|
|
13
|
+
return self.deep_extend(super(okxus, self).describe(), {
|
|
14
|
+
'id': 'okxus',
|
|
15
|
+
'name': 'OKX(US)',
|
|
16
|
+
'hostname': 'us.okx.com',
|
|
17
|
+
'urls': {
|
|
18
|
+
'api': {
|
|
19
|
+
'rest': 'https://{hostname}',
|
|
20
|
+
'ws': 'wss://wsus.okx.com:8443/ws/v5',
|
|
21
|
+
},
|
|
22
|
+
'www': 'https://app.okx.com',
|
|
23
|
+
'doc': 'https://app.okx.com/docs-v5/en/#overview',
|
|
24
|
+
'fees': 'https://app.okx.com/pages/products/fees.html',
|
|
25
|
+
'referral': {
|
|
26
|
+
'url': 'https://www.app.okx.com/join/CCXT2023',
|
|
27
|
+
'discount': 0.2,
|
|
28
|
+
},
|
|
29
|
+
'test': {
|
|
30
|
+
'ws': 'wss://wsuspap.okx.com:8443/ws/v5',
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
'has': {
|
|
34
|
+
'swap': False,
|
|
35
|
+
'future': False,
|
|
36
|
+
'option': False,
|
|
37
|
+
},
|
|
38
|
+
})
|
ccxt/pro/onetrading.py
CHANGED
|
@@ -5,16 +5,17 @@
|
|
|
5
5
|
|
|
6
6
|
import ccxt.async_support
|
|
7
7
|
from ccxt.async_support.base.ws.cache import ArrayCacheBySymbolById, ArrayCacheByTimestamp
|
|
8
|
-
from ccxt.base.types import Balances, Int, Order, OrderBook, Str, Strings, Ticker, Tickers, 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 ExchangeError
|
|
12
12
|
from ccxt.base.errors import NotSupported
|
|
13
|
+
from ccxt.base.precise import Precise
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
class onetrading(ccxt.async_support.onetrading):
|
|
16
17
|
|
|
17
|
-
def describe(self):
|
|
18
|
+
def describe(self) -> Any:
|
|
18
19
|
return self.deep_extend(super(onetrading, self).describe(), {
|
|
19
20
|
'has': {
|
|
20
21
|
'ws': True,
|
|
@@ -22,6 +23,7 @@ class onetrading(ccxt.async_support.onetrading):
|
|
|
22
23
|
'watchTicker': True,
|
|
23
24
|
'watchTickers': True,
|
|
24
25
|
'watchTrades': False,
|
|
26
|
+
'watchTradesForSymbols': False,
|
|
25
27
|
'watchMyTrades': True,
|
|
26
28
|
'watchOrders': True,
|
|
27
29
|
'watchOrderBook': True,
|
|
@@ -81,7 +83,9 @@ class onetrading(ccxt.async_support.onetrading):
|
|
|
81
83
|
|
|
82
84
|
async def watch_balance(self, params={}) -> Balances:
|
|
83
85
|
"""
|
|
84
|
-
|
|
86
|
+
|
|
87
|
+
https://developers.bitpanda.com/exchange/#account-history-channel
|
|
88
|
+
|
|
85
89
|
watch balance and get the amount of funds available for trading or funds locked in orders
|
|
86
90
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
87
91
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
|
@@ -138,7 +142,9 @@ class onetrading(ccxt.async_support.onetrading):
|
|
|
138
142
|
|
|
139
143
|
async def watch_ticker(self, symbol: str, params={}) -> Ticker:
|
|
140
144
|
"""
|
|
141
|
-
|
|
145
|
+
|
|
146
|
+
https://developers.bitpanda.com/exchange/#market-ticker-channel
|
|
147
|
+
|
|
142
148
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
143
149
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
|
144
150
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -162,7 +168,9 @@ class onetrading(ccxt.async_support.onetrading):
|
|
|
162
168
|
|
|
163
169
|
async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
|
164
170
|
"""
|
|
165
|
-
|
|
171
|
+
|
|
172
|
+
https://developers.bitpanda.com/exchange/#market-ticker-channel
|
|
173
|
+
|
|
166
174
|
watches price tickers, a statistical calculation with the information for all markets or those specified.
|
|
167
175
|
:param str symbols: unified symbols of the markets to fetch the ticker for
|
|
168
176
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -254,7 +262,9 @@ class onetrading(ccxt.async_support.onetrading):
|
|
|
254
262
|
|
|
255
263
|
async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
256
264
|
"""
|
|
257
|
-
|
|
265
|
+
|
|
266
|
+
https://developers.bitpanda.com/exchange/#account-history-channel
|
|
267
|
+
|
|
258
268
|
get the list of trades associated with the user
|
|
259
269
|
:param str symbol: unified symbol of the market to fetch trades for. Use 'any' to watch all trades
|
|
260
270
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
|
@@ -293,7 +303,9 @@ class onetrading(ccxt.async_support.onetrading):
|
|
|
293
303
|
|
|
294
304
|
async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
|
295
305
|
"""
|
|
296
|
-
|
|
306
|
+
|
|
307
|
+
https://developers.bitpanda.com/exchange/#market-ticker-channel
|
|
308
|
+
|
|
297
309
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
|
298
310
|
:param str symbol: unified symbol of the market to fetch the order book for
|
|
299
311
|
:param int [limit]: the maximum amount of order book entries to return
|
|
@@ -399,7 +411,9 @@ class onetrading(ccxt.async_support.onetrading):
|
|
|
399
411
|
|
|
400
412
|
async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
401
413
|
"""
|
|
402
|
-
|
|
414
|
+
|
|
415
|
+
https://developers.bitpanda.com/exchange/#account-history-channel
|
|
416
|
+
|
|
403
417
|
watches information on multiple orders made by the user
|
|
404
418
|
:param str symbol: unified market symbol of the market orders were made in
|
|
405
419
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
@@ -934,9 +948,9 @@ class onetrading(ccxt.async_support.onetrading):
|
|
|
934
948
|
previousOrderArray = self.filter_by_array(self.orders, 'id', orderId, False)
|
|
935
949
|
previousOrder = self.safe_value(previousOrderArray, 0, {})
|
|
936
950
|
symbol = previousOrder['symbol']
|
|
937
|
-
filled = self.
|
|
951
|
+
filled = self.safe_string(update, 'filled_amount')
|
|
938
952
|
status = self.parse_ws_order_status(updateType)
|
|
939
|
-
if updateType == 'ORDER_CLOSED' and filled
|
|
953
|
+
if updateType == 'ORDER_CLOSED' and Precise.string_eq(filled, '0'):
|
|
940
954
|
status = 'canceled'
|
|
941
955
|
orderObject: dict = {
|
|
942
956
|
'id': orderId,
|
|
@@ -963,7 +977,8 @@ class onetrading(ccxt.async_support.onetrading):
|
|
|
963
977
|
if updateType == 'TRADE_SETTLED':
|
|
964
978
|
parsed = self.parse_trade(update)
|
|
965
979
|
symbol = self.safe_string(parsed, 'symbol', '')
|
|
966
|
-
self.myTrades
|
|
980
|
+
myTrades = self.myTrades
|
|
981
|
+
myTrades.append(parsed)
|
|
967
982
|
client.resolve(self.myTrades, 'myTrades:' + symbol)
|
|
968
983
|
client.resolve(self.myTrades, 'myTrades')
|
|
969
984
|
|
|
@@ -994,7 +1009,9 @@ class onetrading(ccxt.async_support.onetrading):
|
|
|
994
1009
|
|
|
995
1010
|
async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
|
996
1011
|
"""
|
|
997
|
-
|
|
1012
|
+
|
|
1013
|
+
https://developers.bitpanda.com/exchange/#candlesticks-channel
|
|
1014
|
+
|
|
998
1015
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
999
1016
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
|
1000
1017
|
:param str timeframe: the length of time each candle represents
|
|
@@ -1149,7 +1166,7 @@ class onetrading(ccxt.async_support.onetrading):
|
|
|
1149
1166
|
#
|
|
1150
1167
|
return message
|
|
1151
1168
|
|
|
1152
|
-
def handle_error_message(self, client: Client, message):
|
|
1169
|
+
def handle_error_message(self, client: Client, message) -> Bool:
|
|
1153
1170
|
#
|
|
1154
1171
|
# {
|
|
1155
1172
|
# "error": "MALFORMED_JSON",
|
ccxt/pro/oxfun.py
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import ccxt.async_support
|
|
7
7
|
from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById, ArrayCacheBySymbolBySide, ArrayCacheByTimestamp
|
|
8
8
|
import hashlib
|
|
9
|
-
from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade
|
|
9
|
+
from ccxt.base.types import Any, Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade
|
|
10
10
|
from ccxt.async_support.base.ws.client import Client
|
|
11
11
|
from typing import List
|
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
|
@@ -16,7 +16,7 @@ from ccxt.base.errors import BadRequest
|
|
|
16
16
|
|
|
17
17
|
class oxfun(ccxt.async_support.oxfun):
|
|
18
18
|
|
|
19
|
-
def describe(self):
|
|
19
|
+
def describe(self) -> Any:
|
|
20
20
|
return self.deep_extend(super(oxfun, self).describe(), {
|
|
21
21
|
'has': {
|
|
22
22
|
'ws': True,
|
|
@@ -30,6 +30,7 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
30
30
|
'watchMyTrades': False,
|
|
31
31
|
'watchTicker': True,
|
|
32
32
|
'watchTickers': True,
|
|
33
|
+
'watchBidsAsks': True,
|
|
33
34
|
'watchBalance': True,
|
|
34
35
|
'createOrderWs': True,
|
|
35
36
|
'editOrderWs': True,
|
|
@@ -77,21 +78,25 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
77
78
|
async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
78
79
|
"""
|
|
79
80
|
watches information on multiple trades made in a market
|
|
80
|
-
|
|
81
|
+
|
|
82
|
+
https://docs.ox.fun/?json#trade
|
|
83
|
+
|
|
81
84
|
:param str symbol: unified market symbol of the market trades were made in
|
|
82
85
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
83
86
|
:param int [limit]: the maximum number of trade structures to retrieve
|
|
84
87
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
85
88
|
:param int|str [params.tag]: If given it will be echoed in the reply and the max size of tag is 32
|
|
86
|
-
:returns dict[]: a list of
|
|
89
|
+
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
|
87
90
|
"""
|
|
88
91
|
return await self.watch_trades_for_symbols([symbol], since, limit, params)
|
|
89
92
|
|
|
90
93
|
async def watch_trades_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
91
94
|
"""
|
|
92
95
|
get the list of most recent trades for a particular symbol
|
|
93
|
-
|
|
94
|
-
|
|
96
|
+
|
|
97
|
+
https://docs.ox.fun/?json#trade
|
|
98
|
+
|
|
99
|
+
:param str[] symbols:
|
|
95
100
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
|
96
101
|
:param int [limit]: the maximum amount of trades to fetch
|
|
97
102
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -180,7 +185,9 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
180
185
|
async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
|
181
186
|
"""
|
|
182
187
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
183
|
-
|
|
188
|
+
|
|
189
|
+
https://docs.ox.fun/?json#candles
|
|
190
|
+
|
|
184
191
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
|
185
192
|
:param str timeframe: the length of time each candle represents
|
|
186
193
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
|
@@ -208,7 +215,9 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
208
215
|
async def watch_ohlcv_for_symbols(self, symbolsAndTimeframes: List[List[str]], since: Int = None, limit: Int = None, params={}):
|
|
209
216
|
"""
|
|
210
217
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
211
|
-
|
|
218
|
+
|
|
219
|
+
https://docs.ox.fun/?json#candles
|
|
220
|
+
|
|
212
221
|
:param str[][] symbolsAndTimeframes: array of arrays containing unified symbols and timeframes to fetch OHLCV data for, example [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]
|
|
213
222
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
|
214
223
|
:param int [limit]: the maximum amount of candles to fetch
|
|
@@ -309,8 +318,10 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
309
318
|
async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
|
310
319
|
"""
|
|
311
320
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
|
312
|
-
|
|
313
|
-
|
|
321
|
+
|
|
322
|
+
https://docs.ox.fun/?json#fixed-size-order-book
|
|
323
|
+
https://docs.ox.fun/?json#full-order-book
|
|
324
|
+
|
|
314
325
|
:param str symbol: unified symbol of the market to fetch the order book for
|
|
315
326
|
:param int [limit]: the maximum amount of order book entries to return
|
|
316
327
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -321,8 +332,10 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
321
332
|
async def watch_order_book_for_symbols(self, symbols: List[str], limit: Int = None, params={}) -> OrderBook:
|
|
322
333
|
"""
|
|
323
334
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
|
324
|
-
|
|
325
|
-
|
|
335
|
+
|
|
336
|
+
https://docs.ox.fun/?json#fixed-size-order-book
|
|
337
|
+
https://docs.ox.fun/?json#full-order-book
|
|
338
|
+
|
|
326
339
|
:param str[] symbols: unified array of symbols
|
|
327
340
|
:param int [limit]: the maximum amount of order book entries to return
|
|
328
341
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -392,7 +405,9 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
392
405
|
|
|
393
406
|
async def watch_ticker(self, symbol: str, params={}) -> Ticker:
|
|
394
407
|
"""
|
|
395
|
-
|
|
408
|
+
|
|
409
|
+
https://docs.ox.fun/?json#ticker
|
|
410
|
+
|
|
396
411
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
397
412
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
|
398
413
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -404,7 +419,9 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
404
419
|
|
|
405
420
|
async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
|
406
421
|
"""
|
|
407
|
-
|
|
422
|
+
|
|
423
|
+
https://docs.ox.fun/?json#ticker
|
|
424
|
+
|
|
408
425
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
|
|
409
426
|
:param str[] [symbols]: unified symbol of the market to fetch the ticker for
|
|
410
427
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -466,9 +483,80 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
466
483
|
self.tickers[symbol] = ticker
|
|
467
484
|
client.resolve(ticker, messageHash)
|
|
468
485
|
|
|
486
|
+
async def watch_bids_asks(self, symbols: Strings = None, params={}) -> Tickers:
|
|
487
|
+
"""
|
|
488
|
+
|
|
489
|
+
https://docs.ox.fun/?json#best-bid-ask
|
|
490
|
+
|
|
491
|
+
watches best bid & ask for symbols
|
|
492
|
+
:param str[] symbols: unified symbol of the market to fetch the ticker for
|
|
493
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
494
|
+
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
495
|
+
"""
|
|
496
|
+
await self.load_markets()
|
|
497
|
+
symbols = self.market_symbols(symbols, None, False)
|
|
498
|
+
messageHashes = []
|
|
499
|
+
args = []
|
|
500
|
+
for i in range(0, len(symbols)):
|
|
501
|
+
market = self.market(symbols[i])
|
|
502
|
+
args.append('bestBidAsk:' + market['id'])
|
|
503
|
+
messageHashes.append('bidask:' + market['symbol'])
|
|
504
|
+
newTickers = await self.subscribe_multiple(messageHashes, args, params)
|
|
505
|
+
if self.newUpdates:
|
|
506
|
+
tickers: dict = {}
|
|
507
|
+
tickers[newTickers['symbol']] = newTickers
|
|
508
|
+
return tickers
|
|
509
|
+
return self.filter_by_array(self.bidsasks, 'symbol', symbols)
|
|
510
|
+
|
|
511
|
+
def handle_bid_ask(self, client: Client, message):
|
|
512
|
+
#
|
|
513
|
+
# {
|
|
514
|
+
# "table": "bestBidAsk",
|
|
515
|
+
# "data": {
|
|
516
|
+
# "ask": [
|
|
517
|
+
# 19045.0,
|
|
518
|
+
# 1.0
|
|
519
|
+
# ],
|
|
520
|
+
# "checksum": 3790706311,
|
|
521
|
+
# "marketCode": "BTC-USD-SWAP-LIN",
|
|
522
|
+
# "bid": [
|
|
523
|
+
# 19015.0,
|
|
524
|
+
# 1.0
|
|
525
|
+
# ],
|
|
526
|
+
# "timestamp": "1665456882928"
|
|
527
|
+
# }
|
|
528
|
+
# }
|
|
529
|
+
#
|
|
530
|
+
data = self.safe_dict(message, 'data', {})
|
|
531
|
+
parsedTicker = self.parse_ws_bid_ask(data)
|
|
532
|
+
symbol = parsedTicker['symbol']
|
|
533
|
+
self.bidsasks[symbol] = parsedTicker
|
|
534
|
+
messageHash = 'bidask:' + symbol
|
|
535
|
+
client.resolve(parsedTicker, messageHash)
|
|
536
|
+
|
|
537
|
+
def parse_ws_bid_ask(self, ticker, market=None):
|
|
538
|
+
marketId = self.safe_string(ticker, 'marketCode')
|
|
539
|
+
market = self.safe_market(marketId, market)
|
|
540
|
+
symbol = self.safe_string(market, 'symbol')
|
|
541
|
+
timestamp = self.safe_integer(ticker, 'timestamp')
|
|
542
|
+
ask = self.safe_list(ticker, 'ask', [])
|
|
543
|
+
bid = self.safe_list(ticker, 'bid', [])
|
|
544
|
+
return self.safe_ticker({
|
|
545
|
+
'symbol': symbol,
|
|
546
|
+
'timestamp': timestamp,
|
|
547
|
+
'datetime': self.iso8601(timestamp),
|
|
548
|
+
'ask': self.safe_number(ask, 0),
|
|
549
|
+
'askVolume': self.safe_number(ask, 1),
|
|
550
|
+
'bid': self.safe_number(bid, 0),
|
|
551
|
+
'bidVolume': self.safe_number(bid, 1),
|
|
552
|
+
'info': ticker,
|
|
553
|
+
}, market)
|
|
554
|
+
|
|
469
555
|
async def watch_balance(self, params={}) -> Balances:
|
|
470
556
|
"""
|
|
471
|
-
|
|
557
|
+
|
|
558
|
+
https://docs.ox.fun/?json#balance-channel
|
|
559
|
+
|
|
472
560
|
watch balance and get the amount of funds available for trading or funds locked in orders
|
|
473
561
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
474
562
|
:param int|str [params.tag]: If given it will be echoed in the reply and the max size of tag is 32
|
|
@@ -526,9 +614,13 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
526
614
|
|
|
527
615
|
async def watch_positions(self, symbols: Strings = None, since: Int = None, limit: Int = None, params={}) -> List[Position]:
|
|
528
616
|
"""
|
|
529
|
-
|
|
617
|
+
|
|
618
|
+
https://docs.ox.fun/?json#position-channel
|
|
619
|
+
|
|
530
620
|
watch all open positions
|
|
531
621
|
:param str[]|None symbols: list of unified market symbols
|
|
622
|
+
@param since
|
|
623
|
+
@param limit
|
|
532
624
|
:param dict params: extra parameters specific to the exchange API endpoint
|
|
533
625
|
:param int|str [params.tag]: If given it will be echoed in the reply and the max size of tag is 32
|
|
534
626
|
:returns dict[]: a list of `position structure <https://docs.ccxt.com/en/latest/manual.html#position-structure>`
|
|
@@ -637,7 +729,9 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
637
729
|
async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
638
730
|
"""
|
|
639
731
|
watches information on multiple orders made by the user
|
|
640
|
-
|
|
732
|
+
|
|
733
|
+
https://docs.ox.fun/?json#order-channel
|
|
734
|
+
|
|
641
735
|
:param str symbol: unified market symbol of the market orders were made in
|
|
642
736
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
643
737
|
:param int [limit]: the maximum number of order structures to retrieve
|
|
@@ -709,13 +803,15 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
709
803
|
|
|
710
804
|
async def create_order_ws(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}) -> Order:
|
|
711
805
|
"""
|
|
712
|
-
|
|
806
|
+
|
|
807
|
+
https://docs.ox.fun/?json#order-commands
|
|
808
|
+
|
|
713
809
|
create a trade order
|
|
714
810
|
:param str symbol: unified symbol of the market to create an order in
|
|
715
811
|
:param str type: 'market', 'limit', 'STOP_LIMIT' or 'STOP_MARKET'
|
|
716
812
|
:param str side: 'buy' or 'sell'
|
|
717
813
|
:param float amount: how much of currency you want to trade in units of base currency
|
|
718
|
-
:param float [price]: the price at which the order is to be
|
|
814
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
|
719
815
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
720
816
|
:param int [params.clientOrderId]: a unique id for the order
|
|
721
817
|
:param int [params.timestamp]: in milliseconds. If an order reaches the matching engine and the current timestamp exceeds timestamp + recvWindow, then the order will be rejected.
|
|
@@ -748,16 +844,18 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
748
844
|
async def edit_order_ws(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}) -> Order:
|
|
749
845
|
"""
|
|
750
846
|
edit a trade order
|
|
751
|
-
|
|
847
|
+
|
|
848
|
+
https://docs.ox.fun/?json#modify-order
|
|
849
|
+
|
|
752
850
|
:param str id: order id
|
|
753
851
|
:param str symbol: unified symbol of the market to create an order in
|
|
754
852
|
:param str type: 'market' or 'limit'
|
|
755
853
|
:param str side: 'buy' or 'sell'
|
|
756
854
|
:param float amount: how much of the currency you want to trade in units of the base currency
|
|
757
|
-
:param float|None [price]: the price at which the order is to be
|
|
855
|
+
:param float|None [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
|
856
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
758
857
|
:param int [params.timestamp]: in milliseconds. If an order reaches the matching engine and the current timestamp exceeds timestamp + recvWindow, then the order will be rejected.
|
|
759
858
|
:param int [params.recvWindow]: in milliseconds. If an order reaches the matching engine and the current timestamp exceeds timestamp + recvWindow, then the order will be rejected. If timestamp is provided without recvWindow, then a default recvWindow of 1000ms is used.
|
|
760
|
-
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
761
859
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
|
762
860
|
"""
|
|
763
861
|
await self.load_markets()
|
|
@@ -814,14 +912,16 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
814
912
|
method = self.safe_string(message, 'event')
|
|
815
913
|
stringMsg = self.json(message)
|
|
816
914
|
code = self.safe_integer(message, 'code')
|
|
817
|
-
self.handle_errors(code,
|
|
915
|
+
self.handle_errors(code, '', client.url, method, {}, stringMsg, message, {}, {})
|
|
818
916
|
data = self.safe_value(message, 'data', {})
|
|
819
917
|
order = self.parse_order(data)
|
|
820
918
|
client.resolve(order, messageHash)
|
|
821
919
|
|
|
822
920
|
async def cancel_order_ws(self, id: str, symbol: Str = None, params={}) -> Order:
|
|
823
921
|
"""
|
|
824
|
-
|
|
922
|
+
|
|
923
|
+
https://docs.ox.fun/?json#cancel-order
|
|
924
|
+
|
|
825
925
|
cancels an open order
|
|
826
926
|
:param str id: order id
|
|
827
927
|
:param str symbol: unified market symbol, default is None
|
|
@@ -847,14 +947,16 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
847
947
|
|
|
848
948
|
async def cancel_orders_ws(self, ids: List[str], symbol: Str = None, params={}):
|
|
849
949
|
"""
|
|
850
|
-
|
|
950
|
+
|
|
951
|
+
https://www.okx.com/docs-v5/en/#order-book-trading-trade-ws-mass-cancel-order
|
|
952
|
+
|
|
851
953
|
cancel multiple orders
|
|
852
954
|
:param str[] ids: order ids
|
|
853
955
|
:param str symbol: unified market symbol, default is None
|
|
854
956
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
855
957
|
:returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
|
856
958
|
"""
|
|
857
|
-
idsLength = len(ids)
|
|
959
|
+
idsLength: number = len(ids)
|
|
858
960
|
if idsLength > 20:
|
|
859
961
|
raise BadRequest(self.id + ' cancelOrdersWs() accepts up to 20 ids at a time')
|
|
860
962
|
if symbol is None:
|
|
@@ -914,7 +1016,7 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
914
1016
|
if messageHash in client.subscriptions:
|
|
915
1017
|
del client.subscriptions[messageHash]
|
|
916
1018
|
|
|
917
|
-
def ping(self, client):
|
|
1019
|
+
def ping(self, client: Client):
|
|
918
1020
|
return 'ping'
|
|
919
1021
|
|
|
920
1022
|
def handle_pong(self, client: Client, message):
|
|
@@ -943,6 +1045,8 @@ class oxfun(ccxt.async_support.oxfun):
|
|
|
943
1045
|
self.handle_positions(client, message)
|
|
944
1046
|
if table.find('order') > -1:
|
|
945
1047
|
self.handle_orders(client, message)
|
|
1048
|
+
if table == 'bestBidAsk':
|
|
1049
|
+
self.handle_bid_ask(client, message)
|
|
946
1050
|
else:
|
|
947
1051
|
if event == 'login':
|
|
948
1052
|
self.handle_authentication_message(client, message)
|