ccxt-ir 4.3.46.0.2__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 +9 -9
- 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 +10 -10
- 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.2.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.2.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
- 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.2.dist-info/RECORD +0 -772
- /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
- {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
- {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
ccxt/async_support/hashkey.py
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.hashkey import ImplicitAPI
|
|
8
8
|
import hashlib
|
|
9
|
-
from ccxt.base.types import Account, Balances, Bool, Currencies, Currency, DepositAddress, Int, LastPrice, LastPrices, LedgerEntry, Leverage, LeverageTier, LeverageTiers, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
|
|
9
|
+
from ccxt.base.types import Account, Any, Balances, Bool, Currencies, Currency, DepositAddress, Int, LastPrice, LastPrices, LedgerEntry, Leverage, LeverageTier, LeverageTiers, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
|
|
10
10
|
from typing import List
|
|
11
11
|
from ccxt.base.errors import ExchangeError
|
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
|
@@ -38,7 +38,7 @@ from ccxt.base.precise import Precise
|
|
|
38
38
|
|
|
39
39
|
class hashkey(Exchange, ImplicitAPI):
|
|
40
40
|
|
|
41
|
-
def describe(self):
|
|
41
|
+
def describe(self) -> Any:
|
|
42
42
|
return self.deep_extend(super(hashkey, self).describe(), {
|
|
43
43
|
'id': 'hashkey',
|
|
44
44
|
'name': 'HashKey Global',
|
|
@@ -55,11 +55,15 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
55
55
|
'future': False,
|
|
56
56
|
'option': False,
|
|
57
57
|
'addMargin': False,
|
|
58
|
+
'borrowCrossMargin': False,
|
|
59
|
+
'borrowIsolatedMargin': False,
|
|
60
|
+
'borrowMargin': False,
|
|
58
61
|
'cancelAllOrders': True,
|
|
59
62
|
'cancelAllOrdersAfter': False,
|
|
60
63
|
'cancelOrder': True,
|
|
61
64
|
'cancelOrders': True,
|
|
62
65
|
'cancelWithdraw': False,
|
|
66
|
+
'closeAllPositions': False,
|
|
63
67
|
'closePosition': False,
|
|
64
68
|
'createConvertTrade': False,
|
|
65
69
|
'createDepositAddress': False,
|
|
@@ -79,7 +83,14 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
79
83
|
'createTrailingPercentOrder': False,
|
|
80
84
|
'createTriggerOrder': True,
|
|
81
85
|
'fetchAccounts': True,
|
|
86
|
+
'fetchAllGreeks': False,
|
|
82
87
|
'fetchBalance': True,
|
|
88
|
+
'fetchBorrowInterest': False,
|
|
89
|
+
'fetchBorrowRate': False,
|
|
90
|
+
'fetchBorrowRateHistories': False,
|
|
91
|
+
'fetchBorrowRateHistory': False,
|
|
92
|
+
'fetchBorrowRates': False,
|
|
93
|
+
'fetchBorrowRatesPerSymbol': False,
|
|
83
94
|
'fetchCanceledAndClosedOrders': True,
|
|
84
95
|
'fetchCanceledOrders': True,
|
|
85
96
|
'fetchClosedOrder': True,
|
|
@@ -88,6 +99,8 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
88
99
|
'fetchConvertQuote': False,
|
|
89
100
|
'fetchConvertTrade': False,
|
|
90
101
|
'fetchConvertTradeHistory': False,
|
|
102
|
+
'fetchCrossBorrowRate': False,
|
|
103
|
+
'fetchCrossBorrowRates': False,
|
|
91
104
|
'fetchCurrencies': True,
|
|
92
105
|
'fetchDepositAddress': True,
|
|
93
106
|
'fetchDepositAddresses': False,
|
|
@@ -95,23 +108,42 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
95
108
|
'fetchDeposits': True,
|
|
96
109
|
'fetchDepositsWithdrawals': False,
|
|
97
110
|
'fetchFundingHistory': False,
|
|
111
|
+
'fetchFundingInterval': False,
|
|
112
|
+
'fetchFundingIntervals': False,
|
|
98
113
|
'fetchFundingRate': True,
|
|
99
114
|
'fetchFundingRateHistory': True,
|
|
100
115
|
'fetchFundingRates': True,
|
|
116
|
+
'fetchGreeks': False,
|
|
101
117
|
'fetchIndexOHLCV': False,
|
|
118
|
+
'fetchIsolatedBorrowRate': False,
|
|
119
|
+
'fetchIsolatedBorrowRates': False,
|
|
120
|
+
'fetchIsolatedPositions': False,
|
|
102
121
|
'fetchLedger': True,
|
|
103
122
|
'fetchLeverage': True,
|
|
123
|
+
'fetchLeverages': False,
|
|
104
124
|
'fetchLeverageTiers': True,
|
|
125
|
+
'fetchLiquidations': False,
|
|
126
|
+
'fetchLongShortRatio': False,
|
|
127
|
+
'fetchLongShortRatioHistory': False,
|
|
105
128
|
'fetchMarginAdjustmentHistory': False,
|
|
106
129
|
'fetchMarginMode': False,
|
|
130
|
+
'fetchMarginModes': False,
|
|
107
131
|
'fetchMarketLeverageTiers': 'emulated',
|
|
108
132
|
'fetchMarkets': True,
|
|
109
133
|
'fetchMarkOHLCV': False,
|
|
134
|
+
'fetchMarkPrice': False,
|
|
135
|
+
'fetchMarkPrices': False,
|
|
136
|
+
'fetchMyLiquidations': False,
|
|
137
|
+
'fetchMySettlementHistory': False,
|
|
110
138
|
'fetchMyTrades': True,
|
|
111
139
|
'fetchOHLCV': True,
|
|
140
|
+
'fetchOpenInterest': False,
|
|
112
141
|
'fetchOpenInterestHistory': False,
|
|
142
|
+
'fetchOpenInterests': False,
|
|
113
143
|
'fetchOpenOrder': False,
|
|
114
144
|
'fetchOpenOrders': True,
|
|
145
|
+
'fetchOption': False,
|
|
146
|
+
'fetchOptionChain': False,
|
|
115
147
|
'fetchOrder': True,
|
|
116
148
|
'fetchOrderBook': True,
|
|
117
149
|
'fetchOrders': False,
|
|
@@ -122,7 +154,9 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
122
154
|
'fetchPositions': True,
|
|
123
155
|
'fetchPositionsForSymbol': True,
|
|
124
156
|
'fetchPositionsHistory': False,
|
|
157
|
+
'fetchPositionsRisk': False,
|
|
125
158
|
'fetchPremiumIndexOHLCV': False,
|
|
159
|
+
'fetchSettlementHistory': False,
|
|
126
160
|
'fetchStatus': True,
|
|
127
161
|
'fetchTicker': True,
|
|
128
162
|
'fetchTickers': True,
|
|
@@ -132,11 +166,16 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
132
166
|
'fetchTradingFees': True, # for spot markets only
|
|
133
167
|
'fetchTransactions': False,
|
|
134
168
|
'fetchTransfers': False,
|
|
169
|
+
'fetchUnderlyingAssets': False,
|
|
170
|
+
'fetchVolatilityHistory': False,
|
|
135
171
|
'fetchWithdrawals': True,
|
|
136
172
|
'reduceMargin': False,
|
|
173
|
+
'repayCrossMargin': False,
|
|
174
|
+
'repayIsolatedMargin': False,
|
|
137
175
|
'sandbox': False,
|
|
138
176
|
'setLeverage': True,
|
|
139
177
|
'setMargin': False,
|
|
178
|
+
'setMarginMode': False,
|
|
140
179
|
'setPositionMode': False,
|
|
141
180
|
'transfer': True,
|
|
142
181
|
'withdraw': True,
|
|
@@ -361,6 +400,85 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
361
400
|
},
|
|
362
401
|
'defaultNetwork': 'ERC20',
|
|
363
402
|
},
|
|
403
|
+
'features': {
|
|
404
|
+
'default': {
|
|
405
|
+
'sandbox': True,
|
|
406
|
+
'createOrder': {
|
|
407
|
+
'marginMode': False,
|
|
408
|
+
'triggerPrice': False,
|
|
409
|
+
'triggerPriceType': None,
|
|
410
|
+
'triggerDirection': False,
|
|
411
|
+
'stopLossPrice': False,
|
|
412
|
+
'takeProfitPrice': False,
|
|
413
|
+
'attachedStopLossTakeProfit': None,
|
|
414
|
+
'timeInForce': {
|
|
415
|
+
'IOC': True,
|
|
416
|
+
'FOK': True,
|
|
417
|
+
'PO': True,
|
|
418
|
+
'GTD': False,
|
|
419
|
+
},
|
|
420
|
+
'hedged': False,
|
|
421
|
+
'trailing': False,
|
|
422
|
+
'leverage': False,
|
|
423
|
+
'marketBuyByCost': True,
|
|
424
|
+
'marketBuyRequiresPrice': True, # todo fix
|
|
425
|
+
'selfTradePrevention': True, # todo implement
|
|
426
|
+
'iceberg': False,
|
|
427
|
+
},
|
|
428
|
+
'createOrders': {
|
|
429
|
+
'max': 20,
|
|
430
|
+
},
|
|
431
|
+
'fetchMyTrades': {
|
|
432
|
+
'marginMode': False,
|
|
433
|
+
'limit': 1000,
|
|
434
|
+
'daysBack': 30,
|
|
435
|
+
'untilDays': 30,
|
|
436
|
+
'symbolRequired': False,
|
|
437
|
+
},
|
|
438
|
+
'fetchOrder': {
|
|
439
|
+
'marginMode': False,
|
|
440
|
+
'trigger': False,
|
|
441
|
+
'trailing': False,
|
|
442
|
+
'symbolRequired': False,
|
|
443
|
+
},
|
|
444
|
+
'fetchOpenOrders': {
|
|
445
|
+
'marginMode': False,
|
|
446
|
+
'limit': 1000,
|
|
447
|
+
'trigger': False,
|
|
448
|
+
'trailing': False,
|
|
449
|
+
'symbolRequired': False,
|
|
450
|
+
},
|
|
451
|
+
'fetchOrders': None,
|
|
452
|
+
'fetchClosedOrders': None, # todo
|
|
453
|
+
'fetchOHLCV': {
|
|
454
|
+
'limit': 1000,
|
|
455
|
+
},
|
|
456
|
+
},
|
|
457
|
+
'spot': {
|
|
458
|
+
'extends': 'default',
|
|
459
|
+
},
|
|
460
|
+
'forDerivatives': {
|
|
461
|
+
'extends': 'default',
|
|
462
|
+
'createOrder': {
|
|
463
|
+
'triggerPrice': True,
|
|
464
|
+
'selfTradePrevention': True,
|
|
465
|
+
},
|
|
466
|
+
'fetchOpenOrders': {
|
|
467
|
+
'trigger': True,
|
|
468
|
+
'limit': 500,
|
|
469
|
+
},
|
|
470
|
+
},
|
|
471
|
+
'swap': {
|
|
472
|
+
'linear': {
|
|
473
|
+
'extends': 'forDerivatives',
|
|
474
|
+
},
|
|
475
|
+
'inverse': None,
|
|
476
|
+
},
|
|
477
|
+
'future': {
|
|
478
|
+
'linear': None,
|
|
479
|
+
'inverse': None,
|
|
480
|
+
},
|
|
481
|
+
},
|
|
364
482
|
'commonCurrencies': {},
|
|
365
483
|
'exceptions': {
|
|
366
484
|
'exact': {
|
|
@@ -582,11 +700,7 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
582
700
|
:param str [params.symbol]: the id of the market to fetch
|
|
583
701
|
:returns dict[]: an array of objects representing market data
|
|
584
702
|
"""
|
|
585
|
-
symbol: Str = None
|
|
586
703
|
request: dict = {}
|
|
587
|
-
symbol, params = self.handle_option_and_params(params, 'fetchMarkets', 'symbol')
|
|
588
|
-
if symbol is not None:
|
|
589
|
-
request['symbol'] = symbol
|
|
590
704
|
response = await self.publicGetApiV1ExchangeInfo(self.extend(request, params))
|
|
591
705
|
#
|
|
592
706
|
# {
|
|
@@ -1076,47 +1190,43 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
1076
1190
|
currecy = coins[i]
|
|
1077
1191
|
currencyId = self.safe_string(currecy, 'coinId')
|
|
1078
1192
|
code = self.safe_currency_code(currencyId)
|
|
1079
|
-
allowWithdraw = self.safe_bool(currecy, 'allowWithdraw')
|
|
1080
|
-
allowDeposit = self.safe_bool(currecy, 'allowDeposit')
|
|
1081
1193
|
networks = self.safe_list(currecy, 'chainTypes')
|
|
1082
|
-
networksById = self.safe_dict(self.options, 'networksById')
|
|
1083
1194
|
parsedNetworks: dict = {}
|
|
1084
1195
|
for j in range(0, len(networks)):
|
|
1085
1196
|
network = networks[j]
|
|
1086
1197
|
networkId = self.safe_string(network, 'chainType')
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
networkDeposit = self.safe_bool(network, 'allowDeposit')
|
|
1090
|
-
networkWithdraw = self.safe_bool(network, 'allowWithdraw')
|
|
1091
|
-
parsedNetworks[networkName] = {
|
|
1198
|
+
networkCode = self.network_code_to_id(networkId)
|
|
1199
|
+
parsedNetworks[networkCode] = {
|
|
1092
1200
|
'id': networkId,
|
|
1093
|
-
'network':
|
|
1201
|
+
'network': networkCode,
|
|
1094
1202
|
'limits': {
|
|
1095
1203
|
'withdraw': {
|
|
1096
1204
|
'min': self.safe_number(network, 'minWithdrawQuantity'),
|
|
1097
|
-
'max': self.parse_number(maxWithdrawQuantity),
|
|
1205
|
+
'max': self.parse_number(self.omit_zero(self.safe_string(network, 'maxWithdrawQuantity'))),
|
|
1098
1206
|
},
|
|
1099
1207
|
'deposit': {
|
|
1100
1208
|
'min': self.safe_number(network, 'minDepositQuantity'),
|
|
1101
1209
|
'max': None,
|
|
1102
1210
|
},
|
|
1103
1211
|
},
|
|
1104
|
-
'active':
|
|
1105
|
-
'deposit':
|
|
1106
|
-
'withdraw':
|
|
1212
|
+
'active': None,
|
|
1213
|
+
'deposit': self.safe_bool(network, 'allowDeposit'),
|
|
1214
|
+
'withdraw': self.safe_bool(network, 'allowWithdraw'),
|
|
1107
1215
|
'fee': self.safe_number(network, 'withdrawFee'),
|
|
1108
1216
|
'precision': None,
|
|
1109
1217
|
'info': network,
|
|
1110
1218
|
}
|
|
1111
|
-
|
|
1219
|
+
rawType = self.safe_string(currecy, 'tokenType')
|
|
1220
|
+
type = 'fiat' if (rawType == 'REAL_MONEY') else 'crypto'
|
|
1221
|
+
result[code] = self.safe_currency_structure({
|
|
1112
1222
|
'id': currencyId,
|
|
1113
1223
|
'code': code,
|
|
1114
1224
|
'precision': None,
|
|
1115
|
-
'type':
|
|
1225
|
+
'type': type,
|
|
1116
1226
|
'name': self.safe_string(currecy, 'coinFullName'),
|
|
1117
|
-
'active':
|
|
1118
|
-
'deposit': allowDeposit,
|
|
1119
|
-
'withdraw': allowWithdraw,
|
|
1227
|
+
'active': None,
|
|
1228
|
+
'deposit': self.safe_bool(currecy, 'allowDeposit'),
|
|
1229
|
+
'withdraw': self.safe_bool(currecy, 'allowWithdraw'),
|
|
1120
1230
|
'fee': None,
|
|
1121
1231
|
'limits': {
|
|
1122
1232
|
'deposit': {
|
|
@@ -1130,18 +1240,9 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
1130
1240
|
},
|
|
1131
1241
|
'networks': parsedNetworks,
|
|
1132
1242
|
'info': currecy,
|
|
1133
|
-
}
|
|
1243
|
+
})
|
|
1134
1244
|
return result
|
|
1135
1245
|
|
|
1136
|
-
def parse_currency_type(self, type):
|
|
1137
|
-
types = {
|
|
1138
|
-
'CHAIN_TOKEN': 'crypto',
|
|
1139
|
-
'ERC20_TOKEN': 'crypto',
|
|
1140
|
-
'BSC_TOKEN': 'crypto',
|
|
1141
|
-
'REAL_MONEY': 'fiat',
|
|
1142
|
-
}
|
|
1143
|
-
return self.safe_string(types, type)
|
|
1144
|
-
|
|
1145
1246
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
|
1146
1247
|
"""
|
|
1147
1248
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
|
@@ -1254,10 +1355,6 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
1254
1355
|
if marketType == 'spot':
|
|
1255
1356
|
if market is not None:
|
|
1256
1357
|
request['symbol'] = market['id']
|
|
1257
|
-
clientOrderId: Str = None
|
|
1258
|
-
clientOrderId, params = self.handle_option_and_params(params, methodName, 'clientOrderId')
|
|
1259
|
-
if clientOrderId is not None:
|
|
1260
|
-
request['clientOrderId'] = clientOrderId
|
|
1261
1358
|
if accountId is not None:
|
|
1262
1359
|
request['accountId'] = accountId
|
|
1263
1360
|
response = await self.privateGetApiV1AccountTrades(self.extend(request, params))
|
|
@@ -1386,9 +1483,14 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
1386
1483
|
if isBuyer is not None:
|
|
1387
1484
|
side = 'buy' if isBuyer else 'sell'
|
|
1388
1485
|
takerOrMaker = None
|
|
1389
|
-
isMaker = self.safe_bool_n(trade, ['isMaker', 'isMarker'
|
|
1486
|
+
isMaker = self.safe_bool_n(trade, ['isMaker', 'isMarker'])
|
|
1390
1487
|
if isMaker is not None:
|
|
1391
1488
|
takerOrMaker = 'maker' if isMaker else 'taker'
|
|
1489
|
+
isBuyerMaker = self.safe_bool(trade, 'ibm')
|
|
1490
|
+
# if public trade
|
|
1491
|
+
if isBuyerMaker is not None:
|
|
1492
|
+
takerOrMaker = 'taker'
|
|
1493
|
+
side = 'sell' if isBuyerMaker else 'buy'
|
|
1392
1494
|
feeCost = self.safe_string(trade, 'commission')
|
|
1393
1495
|
feeCurrncyId = self.safe_string(trade, 'commissionAsset')
|
|
1394
1496
|
feeInfo = self.safe_dict(trade, 'fee')
|
|
@@ -1601,10 +1703,6 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
1601
1703
|
await self.load_markets()
|
|
1602
1704
|
symbols = self.market_symbols(symbols)
|
|
1603
1705
|
request: dict = {}
|
|
1604
|
-
symbol: Str = None
|
|
1605
|
-
symbol, params = self.handle_option_and_params(params, 'fetchLastPrices', 'symbol')
|
|
1606
|
-
if symbol is not None:
|
|
1607
|
-
request['symbol'] = symbol
|
|
1608
1706
|
response = await self.publicGetQuoteV1TickerPrice(self.extend(request, params))
|
|
1609
1707
|
#
|
|
1610
1708
|
# [
|
|
@@ -1662,10 +1760,6 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
1662
1760
|
balance = self.safe_dict(response, 0, {})
|
|
1663
1761
|
return self.parse_swap_balance(balance)
|
|
1664
1762
|
elif marketType == 'spot':
|
|
1665
|
-
accountId: Str = None
|
|
1666
|
-
accountId, params = self.handle_option_and_params(params, methodName, 'accountId')
|
|
1667
|
-
if accountId is not None:
|
|
1668
|
-
request['accountId'] = accountId
|
|
1669
1763
|
response = await self.privateGetApiV1Account(self.extend(request, params))
|
|
1670
1764
|
#
|
|
1671
1765
|
# {
|
|
@@ -1905,7 +1999,7 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
1905
1999
|
#
|
|
1906
2000
|
return self.parse_transactions(response, currency, since, limit, {'type': 'withdrawal'})
|
|
1907
2001
|
|
|
1908
|
-
async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
|
2002
|
+
async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
|
|
1909
2003
|
"""
|
|
1910
2004
|
make a withdrawal
|
|
1911
2005
|
|
|
@@ -1931,18 +2025,10 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
1931
2025
|
}
|
|
1932
2026
|
if tag is not None:
|
|
1933
2027
|
request['addressExt'] = tag
|
|
1934
|
-
clientOrderId: Str = None
|
|
1935
|
-
clientOrderId, params = self.handle_option_and_params(params, 'withdraw', 'clientOrderId')
|
|
1936
|
-
if clientOrderId is not None:
|
|
1937
|
-
request['clientOrderId'] = clientOrderId
|
|
1938
2028
|
networkCode: Str = None
|
|
1939
2029
|
networkCode, params = self.handle_network_code_and_params(params)
|
|
1940
2030
|
if networkCode is not None:
|
|
1941
2031
|
request['chainType'] = self.network_code_to_id(networkCode)
|
|
1942
|
-
platform: Str = None
|
|
1943
|
-
platform, params = self.handle_option_and_params(params, 'withdraw', 'platform')
|
|
1944
|
-
if platform is not None:
|
|
1945
|
-
request['platform'] = platform
|
|
1946
2032
|
response = await self.privatePostApiV1AccountWithdraw(self.extend(request, params))
|
|
1947
2033
|
#
|
|
1948
2034
|
# {
|
|
@@ -2081,14 +2167,6 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
2081
2167
|
'fromAccountId': fromAccount,
|
|
2082
2168
|
'toAccountId': toAccount,
|
|
2083
2169
|
}
|
|
2084
|
-
clientOrderId: Str = None
|
|
2085
|
-
clientOrderId, params = self.handle_option_and_params(params, 'transfer', 'clientOrderId')
|
|
2086
|
-
if clientOrderId is not None:
|
|
2087
|
-
request['clientOrderId'] = clientOrderId
|
|
2088
|
-
remark: Str = None
|
|
2089
|
-
remark, params = self.handle_option_and_params(params, 'transfer', 'remark')
|
|
2090
|
-
if remark is not None:
|
|
2091
|
-
request['remark'] = remark
|
|
2092
2170
|
response = await self.privatePostApiV1AccountAssetTransfer(self.extend(request, params))
|
|
2093
2171
|
#
|
|
2094
2172
|
# {
|
|
@@ -2199,7 +2277,7 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
2199
2277
|
:param int [params.until]: the latest time in ms to fetch entries for
|
|
2200
2278
|
:param int [params.flowType]: trade, fee, transfer, deposit, withdrawal
|
|
2201
2279
|
:param int [params.accountType]: spot, swap, custody
|
|
2202
|
-
:returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger
|
|
2280
|
+
:returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
|
|
2203
2281
|
"""
|
|
2204
2282
|
methodName = 'fetchLedger'
|
|
2205
2283
|
if since is None:
|
|
@@ -2347,8 +2425,10 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
2347
2425
|
market = self.market(symbol)
|
|
2348
2426
|
if not market['spot']:
|
|
2349
2427
|
raise NotSupported(self.id + ' createMarketBuyOrderWithCost() is supported for spot markets only')
|
|
2350
|
-
|
|
2351
|
-
|
|
2428
|
+
req = {
|
|
2429
|
+
'cost': cost,
|
|
2430
|
+
}
|
|
2431
|
+
return await self.create_order(symbol, 'market', 'buy', cost, None, self.extend(req, params))
|
|
2352
2432
|
|
|
2353
2433
|
async def create_spot_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}) -> Order:
|
|
2354
2434
|
"""
|
|
@@ -2926,10 +3006,6 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
2926
3006
|
if marketType == 'spot':
|
|
2927
3007
|
if clientOrderId is not None:
|
|
2928
3008
|
request['origClientOrderId'] = clientOrderId
|
|
2929
|
-
accountId: Str = None
|
|
2930
|
-
accountId, params = self.handle_option_and_params(params, methodName, 'accountId')
|
|
2931
|
-
if accountId is not None:
|
|
2932
|
-
request['accountId'] = accountId
|
|
2933
3009
|
response = await self.privateGetApiV1SpotOrder(self.extend(request, params))
|
|
2934
3010
|
#
|
|
2935
3011
|
# {
|
|
@@ -3065,14 +3141,6 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
3065
3141
|
request['symbol'] = market['id']
|
|
3066
3142
|
if limit is not None:
|
|
3067
3143
|
request['limit'] = limit
|
|
3068
|
-
orderId: Str = None
|
|
3069
|
-
orderId, params = self.handle_option_and_params(params, methodName, 'orderId')
|
|
3070
|
-
if orderId is not None:
|
|
3071
|
-
request['orderId'] = orderId
|
|
3072
|
-
side: Str = None
|
|
3073
|
-
side, params = self.handle_option_and_params(params, methodName, 'side')
|
|
3074
|
-
if side is not None:
|
|
3075
|
-
request['side'] = side.upper()
|
|
3076
3144
|
response = await self.privateGetApiV1SpotOpenOrders(self.extend(request, params))
|
|
3077
3145
|
#
|
|
3078
3146
|
# [
|
|
@@ -3138,10 +3206,6 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
3138
3206
|
request['type'] = 'LIMIT'
|
|
3139
3207
|
if limit is not None:
|
|
3140
3208
|
request['limit'] = limit
|
|
3141
|
-
fromOrderId: Str = None
|
|
3142
|
-
fromOrderId, params = self.handle_option_and_params(params, methodName, 'fromOrderId')
|
|
3143
|
-
if fromOrderId is not None:
|
|
3144
|
-
request['fromOrderId'] = fromOrderId
|
|
3145
3209
|
response = None
|
|
3146
3210
|
accountId: Str = None
|
|
3147
3211
|
accountId, params = self.handle_option_and_params(params, methodName, 'accountId')
|
|
@@ -3240,14 +3304,6 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
3240
3304
|
if marketType == 'spot':
|
|
3241
3305
|
if market is not None:
|
|
3242
3306
|
request['symbol'] = market['id']
|
|
3243
|
-
orderId: Str = None
|
|
3244
|
-
orderId, params = self.handle_option_and_params(params, methodName, 'orderId')
|
|
3245
|
-
if orderId is not None:
|
|
3246
|
-
request['orderId'] = orderId
|
|
3247
|
-
side: Str = None
|
|
3248
|
-
side, params = self.handle_option_and_params(params, methodName, 'side')
|
|
3249
|
-
if side is not None:
|
|
3250
|
-
request['side'] = side.upper()
|
|
3251
3307
|
if accountId is not None:
|
|
3252
3308
|
request['accountId'] = accountId
|
|
3253
3309
|
response = await self.privateGetApiV1SpotTradeOrders(self.extend(request, params))
|
|
@@ -3290,10 +3346,6 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
3290
3346
|
request['type'] = 'STOP'
|
|
3291
3347
|
else:
|
|
3292
3348
|
request['type'] = 'LIMIT'
|
|
3293
|
-
fromOrderId: Str = None
|
|
3294
|
-
fromOrderId, params = self.handle_option_and_params(params, methodName, 'fromOrderId')
|
|
3295
|
-
if fromOrderId is not None:
|
|
3296
|
-
request['fromOrderId'] = fromOrderId
|
|
3297
3349
|
if accountId is not None:
|
|
3298
3350
|
request['subAccountId'] = accountId
|
|
3299
3351
|
response = await self.privateGetApiV1FuturesSubAccountHistoryOrders(self.extend(request, params))
|
|
@@ -3337,10 +3389,8 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
3337
3389
|
raise BadRequest(self.id + ' ' + methodName + '() type parameter can not be "' + paramsType + '". It should define the type of the market("spot" or "swap"). To define the type of an order use the trigger parameter(True for trigger orders)')
|
|
3338
3390
|
|
|
3339
3391
|
def handle_trigger_option_and_params(self, params: object, methodName: str, defaultValue=None):
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
isTrigger = isStop
|
|
3343
|
-
isTrigger, params = self.handle_option_and_params(params, methodName, 'trigger', isTrigger)
|
|
3392
|
+
isTrigger = defaultValue
|
|
3393
|
+
isTrigger, params = self.handle_option_and_params_2(params, methodName, 'stop', 'trigger', isTrigger)
|
|
3344
3394
|
return [isTrigger, params]
|
|
3345
3395
|
|
|
3346
3396
|
def parse_order(self, order: dict, market: Market = None) -> Order:
|
|
@@ -3479,7 +3529,6 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
3479
3529
|
feeCurrncyId = self.safe_string(order, 'feeCoin')
|
|
3480
3530
|
if feeCurrncyId == '':
|
|
3481
3531
|
feeCurrncyId = None
|
|
3482
|
-
triggerPrice = self.omit_zero(self.safe_string(order, 'stopPrice'))
|
|
3483
3532
|
return self.safe_order({
|
|
3484
3533
|
'id': self.safe_string(order, 'orderId'),
|
|
3485
3534
|
'clientOrderId': self.safe_string(order, 'clientOrderId'),
|
|
@@ -3497,8 +3546,7 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
3497
3546
|
'amount': self.omit_zero(self.safe_string(order, 'origQty')),
|
|
3498
3547
|
'filled': self.safe_string(order, 'executedQty'),
|
|
3499
3548
|
'remaining': None,
|
|
3500
|
-
'
|
|
3501
|
-
'triggerPrice': triggerPrice,
|
|
3549
|
+
'triggerPrice': self.omit_zero(self.safe_string(order, 'stopPrice')),
|
|
3502
3550
|
'takeProfitPrice': None,
|
|
3503
3551
|
'stopLossPrice': None,
|
|
3504
3552
|
'cost': self.omit_zero(self.safe_string_2(order, 'cumulativeQuoteQty', 'cummulativeQuoteQty')),
|
|
@@ -3604,8 +3652,7 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
3604
3652
|
# {"symbol": "ETHUSDT-PERPETUAL", "rate": "0.0001", "nextSettleTime": "1722297600000"}
|
|
3605
3653
|
# ]
|
|
3606
3654
|
#
|
|
3607
|
-
|
|
3608
|
-
return self.filter_by_array(fundingRates, 'symbol', symbols)
|
|
3655
|
+
return self.parse_funding_rates(response, symbols)
|
|
3609
3656
|
|
|
3610
3657
|
def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
|
|
3611
3658
|
#
|
|
@@ -3732,10 +3779,6 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
3732
3779
|
request: dict = {
|
|
3733
3780
|
'symbol': market['id'],
|
|
3734
3781
|
}
|
|
3735
|
-
side: Str = None
|
|
3736
|
-
side, params = self.handle_option_and_params(params, methodName, 'side')
|
|
3737
|
-
if side is not None:
|
|
3738
|
-
request['side'] = side.upper()
|
|
3739
3782
|
response = await self.privateGetApiV1FuturesPositions(self.extend(request, params))
|
|
3740
3783
|
#
|
|
3741
3784
|
# [
|
|
@@ -3834,7 +3877,7 @@ class hashkey(Exchange, ImplicitAPI):
|
|
|
3834
3877
|
'shortLeverage': leverageValue,
|
|
3835
3878
|
}
|
|
3836
3879
|
|
|
3837
|
-
async def set_leverage(self, leverage:
|
|
3880
|
+
async def set_leverage(self, leverage: int, symbol: Str = None, params={}):
|
|
3838
3881
|
"""
|
|
3839
3882
|
set the level of leverage for a market
|
|
3840
3883
|
|