ccxt-ir 4.3.46.0.3__py2.py3-none-any.whl → 4.5.1__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 +8 -8
- 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 +10 -10
- 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 +32 -38
- 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 +32 -27
- 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 +34 -30
- ccxt/async_support/sarmayex.py +9 -9
- ccxt/async_support/sarrafex.py +13 -13
- ccxt/async_support/tabdeal.py +15 -14
- 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 +30 -36
- 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 +29 -24
- 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 +32 -28
- 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 +13 -12
- 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.1.dist-info}/METADATA +225 -73
- ccxt_ir-4.5.1.dist-info/RECORD +743 -0
- {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.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.1.dist-info/licenses}/LICENSE.txt +0 -0
- {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info}/top_level.txt +0 -0
ccxt/async_support/lbank.py
CHANGED
|
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
|
|
|
7
7
|
from ccxt.abstract.lbank import ImplicitAPI
|
|
8
8
|
import asyncio
|
|
9
9
|
import hashlib
|
|
10
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction
|
|
10
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFeeInterface, TradingFees, Transaction
|
|
11
11
|
from typing import List
|
|
12
12
|
from ccxt.base.errors import ExchangeError
|
|
13
13
|
from ccxt.base.errors import AuthenticationError
|
|
@@ -28,7 +28,7 @@ from ccxt.base.precise import Precise
|
|
|
28
28
|
|
|
29
29
|
class lbank(Exchange, ImplicitAPI):
|
|
30
30
|
|
|
31
|
-
def describe(self):
|
|
31
|
+
def describe(self) -> Any:
|
|
32
32
|
return self.deep_extend(super(lbank, self).describe(), {
|
|
33
33
|
'id': 'lbank',
|
|
34
34
|
'name': 'LBank',
|
|
@@ -62,13 +62,16 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
62
62
|
'fetchClosedOrders': False,
|
|
63
63
|
'fetchCrossBorrowRate': False,
|
|
64
64
|
'fetchCrossBorrowRates': False,
|
|
65
|
+
'fetchCurrencies': True,
|
|
65
66
|
'fetchDepositAddress': True,
|
|
67
|
+
'fetchDepositAddresses': False,
|
|
68
|
+
'fetchDepositAddressesByNetwork': False,
|
|
66
69
|
'fetchDepositWithdrawFee': 'emulated',
|
|
67
70
|
'fetchDepositWithdrawFees': True,
|
|
68
71
|
'fetchFundingHistory': False,
|
|
69
72
|
'fetchFundingRate': False,
|
|
70
73
|
'fetchFundingRateHistory': False,
|
|
71
|
-
'fetchFundingRates':
|
|
74
|
+
'fetchFundingRates': True,
|
|
72
75
|
'fetchIndexOHLCV': False,
|
|
73
76
|
'fetchIsolatedBorrowRate': False,
|
|
74
77
|
'fetchIsolatedBorrowRates': False,
|
|
@@ -134,7 +137,8 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
134
137
|
'currencyPairs': 2.5,
|
|
135
138
|
'accuracy': 2.5,
|
|
136
139
|
'usdToCny': 2.5,
|
|
137
|
-
'
|
|
140
|
+
'assetConfigs': 2.5,
|
|
141
|
+
'withdrawConfigs': 2.5 * 1.5, # frequently rate-limits, so increase self endpoint RL
|
|
138
142
|
'timestamp': 2.5,
|
|
139
143
|
'ticker/24hr': 2.5,
|
|
140
144
|
'ticker': 2.5,
|
|
@@ -220,6 +224,8 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
220
224
|
},
|
|
221
225
|
},
|
|
222
226
|
'commonCurrencies': {
|
|
227
|
+
'XBT': 'XBT', # not BTC!
|
|
228
|
+
'HIT': 'Hiver',
|
|
223
229
|
'VET_ERC20': 'VEN',
|
|
224
230
|
'PNT': 'Penta',
|
|
225
231
|
},
|
|
@@ -286,33 +292,100 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
286
292
|
# ptx: 1
|
|
287
293
|
# }
|
|
288
294
|
},
|
|
289
|
-
'
|
|
295
|
+
'networksById': {
|
|
290
296
|
'erc20': 'ERC20',
|
|
291
297
|
'trc20': 'TRC20',
|
|
292
|
-
'
|
|
293
|
-
'
|
|
294
|
-
'bep20
|
|
295
|
-
'bep20': 'BSC',
|
|
296
|
-
'heco': 'HT',
|
|
297
|
-
'bep2': 'BNB',
|
|
298
|
-
'btc': 'BTC',
|
|
299
|
-
'dogecoin': 'DOGE',
|
|
300
|
-
'matic': 'MATIC',
|
|
301
|
-
'oec': 'OEC',
|
|
302
|
-
'btctron': 'BTCTRON',
|
|
303
|
-
'xrp': 'XRP',
|
|
298
|
+
'TRX': 'TRC20',
|
|
299
|
+
'bep20(bsc)': 'BEP20',
|
|
300
|
+
'bep20': 'BEP20',
|
|
304
301
|
},
|
|
305
302
|
'defaultNetworks': {
|
|
306
303
|
'USDT': 'TRC20',
|
|
307
304
|
},
|
|
308
305
|
},
|
|
306
|
+
'features': {
|
|
307
|
+
'default': {
|
|
308
|
+
'sandbox': False,
|
|
309
|
+
'createOrder': {
|
|
310
|
+
'marginMode': False,
|
|
311
|
+
'triggerPrice': False,
|
|
312
|
+
'triggerPriceType': None,
|
|
313
|
+
'triggerDirection': False,
|
|
314
|
+
'stopLossPrice': False,
|
|
315
|
+
'takeProfitPrice': False,
|
|
316
|
+
'attachedStopLossTakeProfit': None,
|
|
317
|
+
'timeInForce': {
|
|
318
|
+
'IOC': True,
|
|
319
|
+
'FOK': True,
|
|
320
|
+
'PO': False,
|
|
321
|
+
'GTD': False,
|
|
322
|
+
},
|
|
323
|
+
'hedged': False,
|
|
324
|
+
'selfTradePrevention': False,
|
|
325
|
+
'trailing': False,
|
|
326
|
+
'leverage': False,
|
|
327
|
+
'marketBuyByCost': True,
|
|
328
|
+
'marketBuyRequiresPrice': False,
|
|
329
|
+
'iceberg': False,
|
|
330
|
+
},
|
|
331
|
+
'createOrders': None, # todo
|
|
332
|
+
'fetchMyTrades': {
|
|
333
|
+
'marginMode': False,
|
|
334
|
+
'limit': 100,
|
|
335
|
+
'daysBack': 100000, # todo
|
|
336
|
+
'untilDays': 2,
|
|
337
|
+
'symbolRequired': True,
|
|
338
|
+
},
|
|
339
|
+
'fetchOrder': {
|
|
340
|
+
'marginMode': False,
|
|
341
|
+
'trigger': False,
|
|
342
|
+
'trailing': False,
|
|
343
|
+
'symbolRequired': True,
|
|
344
|
+
},
|
|
345
|
+
'fetchOpenOrders': {
|
|
346
|
+
'marginMode': False,
|
|
347
|
+
'limit': 200,
|
|
348
|
+
'trigger': False,
|
|
349
|
+
'trailing': False,
|
|
350
|
+
'symbolRequired': True,
|
|
351
|
+
},
|
|
352
|
+
'fetchOrders': {
|
|
353
|
+
'marginMode': False,
|
|
354
|
+
'limit': 200,
|
|
355
|
+
'daysBack': None,
|
|
356
|
+
'untilDays': None,
|
|
357
|
+
'trigger': False,
|
|
358
|
+
'trailing': False,
|
|
359
|
+
'symbolRequired': True,
|
|
360
|
+
},
|
|
361
|
+
'fetchClosedOrders': None, # todo: through fetchOrders "status" -1: Cancelled 0: Unfilled 1: Partially filled 2: Completely filled 3: Partially filled has been cancelled 4: Cancellation is being processed
|
|
362
|
+
'fetchOHLCV': {
|
|
363
|
+
'limit': 2000,
|
|
364
|
+
},
|
|
365
|
+
},
|
|
366
|
+
'spot': {
|
|
367
|
+
'extends': 'default',
|
|
368
|
+
},
|
|
369
|
+
'swap': {
|
|
370
|
+
'linear': {
|
|
371
|
+
'extends': 'default',
|
|
372
|
+
},
|
|
373
|
+
'inverse': None,
|
|
374
|
+
},
|
|
375
|
+
'future': {
|
|
376
|
+
'linear': None,
|
|
377
|
+
'inverse': None,
|
|
378
|
+
},
|
|
379
|
+
},
|
|
309
380
|
})
|
|
310
381
|
|
|
311
|
-
async def fetch_time(self, params={}):
|
|
382
|
+
async def fetch_time(self, params={}) -> Int:
|
|
312
383
|
"""
|
|
313
384
|
fetches the current integer timestamp in milliseconds from the exchange server
|
|
314
|
-
|
|
315
|
-
|
|
385
|
+
|
|
386
|
+
https://www.lbank.com/en-US/docs/index.html#get-timestamp
|
|
387
|
+
https://www.lbank.com/en-US/docs/contract.html#get-the-current-time
|
|
388
|
+
|
|
316
389
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
317
390
|
:returns int: the current integer timestamp in milliseconds from the exchange server
|
|
318
391
|
"""
|
|
@@ -345,11 +418,111 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
345
418
|
#
|
|
346
419
|
return self.safe_integer(response, 'data')
|
|
347
420
|
|
|
421
|
+
async def fetch_currencies(self, params={}) -> Currencies:
|
|
422
|
+
"""
|
|
423
|
+
fetches all available currencies on an exchange
|
|
424
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
425
|
+
:returns dict: an associative dictionary of currencies
|
|
426
|
+
"""
|
|
427
|
+
response = await self.spotPublicGetWithdrawConfigs(params)
|
|
428
|
+
#
|
|
429
|
+
# {
|
|
430
|
+
# "msg": "Success",
|
|
431
|
+
# "result": "true",
|
|
432
|
+
# "data": [
|
|
433
|
+
# {
|
|
434
|
+
# "amountScale": "4",
|
|
435
|
+
# "chain": "bep20(bsc)",
|
|
436
|
+
# "assetCode": "usdt",
|
|
437
|
+
# "min": "10",
|
|
438
|
+
# "transferAmtScale": "4",
|
|
439
|
+
# "canWithDraw": True,
|
|
440
|
+
# "fee": "0.0000",
|
|
441
|
+
# "minTransfer": "0.0001",
|
|
442
|
+
# "type": "1"
|
|
443
|
+
# },
|
|
444
|
+
# {
|
|
445
|
+
# "amountScale": "4",
|
|
446
|
+
# "chain": "trc20",
|
|
447
|
+
# "assetCode": "usdt",
|
|
448
|
+
# "min": "1",
|
|
449
|
+
# "transferAmtScale": "4",
|
|
450
|
+
# "canWithDraw": True,
|
|
451
|
+
# "fee": "1.0000",
|
|
452
|
+
# "minTransfer": "0.0001",
|
|
453
|
+
# "type": "1"
|
|
454
|
+
# },
|
|
455
|
+
# ...
|
|
456
|
+
# ],
|
|
457
|
+
# "error_code": "0",
|
|
458
|
+
# "ts": "1747973911431"
|
|
459
|
+
# }
|
|
460
|
+
#
|
|
461
|
+
currenciesData = self.safe_list(response, 'data', [])
|
|
462
|
+
grouped = self.group_by(currenciesData, 'assetCode')
|
|
463
|
+
groupedKeys = list(grouped.keys())
|
|
464
|
+
result: dict = {}
|
|
465
|
+
for i in range(0, len(groupedKeys)):
|
|
466
|
+
id = str((groupedKeys[i])) # some currencies are numeric
|
|
467
|
+
code = self.safe_currency_code(id)
|
|
468
|
+
networksRaw = grouped[id]
|
|
469
|
+
networks = {}
|
|
470
|
+
for j in range(0, len(networksRaw)):
|
|
471
|
+
networkEntry = networksRaw[j]
|
|
472
|
+
networkId = self.safe_string(networkEntry, 'chain')
|
|
473
|
+
networkCode = self.network_id_to_code(networkId)
|
|
474
|
+
networks[networkCode] = {
|
|
475
|
+
'id': networkId,
|
|
476
|
+
'network': networkCode,
|
|
477
|
+
'limits': {
|
|
478
|
+
'withdraw': {
|
|
479
|
+
'min': self.safe_number(networkEntry, 'min'),
|
|
480
|
+
'max': None,
|
|
481
|
+
},
|
|
482
|
+
'deposit': {
|
|
483
|
+
'min': self.safe_number(networkEntry, 'minTransfer'),
|
|
484
|
+
'max': None,
|
|
485
|
+
},
|
|
486
|
+
},
|
|
487
|
+
'active': None,
|
|
488
|
+
'deposit': None,
|
|
489
|
+
'withdraw': self.safe_bool(networkEntry, 'canWithDraw'),
|
|
490
|
+
'fee': self.safe_number(networkEntry, 'fee'),
|
|
491
|
+
'precision': self.parse_number(self.parse_precision(self.safe_string(networkEntry, 'transferAmtScale'))),
|
|
492
|
+
'info': networkEntry,
|
|
493
|
+
}
|
|
494
|
+
result[code] = self.safe_currency_structure({
|
|
495
|
+
'id': id,
|
|
496
|
+
'code': code,
|
|
497
|
+
'precision': None,
|
|
498
|
+
'type': None,
|
|
499
|
+
'name': None,
|
|
500
|
+
'active': None,
|
|
501
|
+
'deposit': None,
|
|
502
|
+
'withdraw': None,
|
|
503
|
+
'fee': None,
|
|
504
|
+
'limits': {
|
|
505
|
+
'withdraw': {
|
|
506
|
+
'min': None,
|
|
507
|
+
'max': None,
|
|
508
|
+
},
|
|
509
|
+
'deposit': {
|
|
510
|
+
'min': None,
|
|
511
|
+
'max': None,
|
|
512
|
+
},
|
|
513
|
+
},
|
|
514
|
+
'networks': networks,
|
|
515
|
+
'info': networksRaw,
|
|
516
|
+
})
|
|
517
|
+
return result
|
|
518
|
+
|
|
348
519
|
async def fetch_markets(self, params={}) -> List[Market]:
|
|
349
520
|
"""
|
|
350
521
|
retrieves data on all markets for lbank
|
|
351
|
-
|
|
352
|
-
|
|
522
|
+
|
|
523
|
+
https://www.lbank.com/en-US/docs/index.html#trading-pairs
|
|
524
|
+
https://www.lbank.com/en-US/docs/contract.html#query-contract-information-list
|
|
525
|
+
|
|
353
526
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
354
527
|
:returns dict[]: an array of objects representing market data
|
|
355
528
|
"""
|
|
@@ -502,7 +675,7 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
502
675
|
'active': True,
|
|
503
676
|
'contract': True,
|
|
504
677
|
'linear': True,
|
|
505
|
-
'inverse':
|
|
678
|
+
'inverse': False,
|
|
506
679
|
'contractSize': self.safe_number(market, 'volumeMultiple'),
|
|
507
680
|
'expiry': None,
|
|
508
681
|
'expiryDatetime': None,
|
|
@@ -598,7 +771,9 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
598
771
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
|
599
772
|
"""
|
|
600
773
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
601
|
-
|
|
774
|
+
|
|
775
|
+
https://www.lbank.com/en-US/docs/index.html#query-current-market-data-new
|
|
776
|
+
|
|
602
777
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
|
603
778
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
604
779
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
@@ -640,8 +815,10 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
640
815
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
|
641
816
|
"""
|
|
642
817
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
643
|
-
|
|
644
|
-
|
|
818
|
+
|
|
819
|
+
https://www.lbank.com/en-US/docs/index.html#query-current-market-data-new
|
|
820
|
+
https://www.lbank.com/en-US/docs/contract.html#query-contract-market-list
|
|
821
|
+
|
|
645
822
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
646
823
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
647
824
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
@@ -714,8 +891,10 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
714
891
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
|
715
892
|
"""
|
|
716
893
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
|
717
|
-
|
|
718
|
-
|
|
894
|
+
|
|
895
|
+
https://www.lbank.com/en-US/docs/index.html#query-market-depth
|
|
896
|
+
https://www.lbank.com/en-US/docs/contract.html#get-handicap
|
|
897
|
+
|
|
719
898
|
:param str symbol: unified symbol of the market to fetch the order book for
|
|
720
899
|
:param int [limit]: the maximum amount of order book entries to return
|
|
721
900
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -789,7 +968,7 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
789
968
|
timestamp = self.milliseconds()
|
|
790
969
|
if market['swap']:
|
|
791
970
|
return self.parse_order_book(orderbook, market['symbol'], timestamp, 'bids', 'asks', 'price', 'volume')
|
|
792
|
-
return self.parse_order_book(orderbook, market['symbol'], timestamp)
|
|
971
|
+
return self.parse_order_book(orderbook, market['symbol'], timestamp, 'bids', 'asks')
|
|
793
972
|
|
|
794
973
|
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
|
795
974
|
#
|
|
@@ -887,8 +1066,10 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
887
1066
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
888
1067
|
"""
|
|
889
1068
|
get the list of most recent trades for a particular symbol
|
|
890
|
-
|
|
891
|
-
|
|
1069
|
+
|
|
1070
|
+
https://www.lbank.com/en-US/docs/index.html#query-historical-transactions
|
|
1071
|
+
https://www.lbank.com/en-US/docs/index.html#recent-transactions-list
|
|
1072
|
+
|
|
892
1073
|
:param str symbol: unified symbol of the market to fetch trades for
|
|
893
1074
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
|
894
1075
|
:param int [limit]: the maximum amount of trades to fetch
|
|
@@ -957,7 +1138,9 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
957
1138
|
async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
|
958
1139
|
"""
|
|
959
1140
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
960
|
-
|
|
1141
|
+
|
|
1142
|
+
https://www.lbank.com/en-US/docs/index.html#query-k-bar-data
|
|
1143
|
+
|
|
961
1144
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
|
962
1145
|
:param str timeframe: the length of time each candle represents
|
|
963
1146
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
|
@@ -974,15 +1157,15 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
974
1157
|
limit = min(limit, 2000)
|
|
975
1158
|
if since is None:
|
|
976
1159
|
duration = self.parse_timeframe(timeframe)
|
|
977
|
-
since = self.milliseconds() - duration * 1000 * limit
|
|
1160
|
+
since = self.milliseconds() - (duration * 1000 * limit)
|
|
978
1161
|
request: dict = {
|
|
979
1162
|
'symbol': market['id'],
|
|
980
1163
|
'type': self.safe_string(self.timeframes, timeframe, timeframe),
|
|
981
1164
|
'time': self.parse_to_int(since / 1000),
|
|
982
|
-
'size': limit, # max 2000
|
|
1165
|
+
'size': min(limit + 1, 2000), # max 2000
|
|
983
1166
|
}
|
|
984
1167
|
response = await self.spotPublicGetKline(self.extend(request, params))
|
|
985
|
-
ohlcvs = self.
|
|
1168
|
+
ohlcvs = self.safe_list(response, 'data', [])
|
|
986
1169
|
#
|
|
987
1170
|
#
|
|
988
1171
|
# [
|
|
@@ -1131,12 +1314,117 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1131
1314
|
return self.safe_balance(result)
|
|
1132
1315
|
return None
|
|
1133
1316
|
|
|
1317
|
+
def parse_funding_rate(self, ticker, market: Market = None) -> FundingRate:
|
|
1318
|
+
# {
|
|
1319
|
+
# "symbol": "BTCUSDT",
|
|
1320
|
+
# "highestPrice": "69495.5",
|
|
1321
|
+
# "underlyingPrice": "68455.904",
|
|
1322
|
+
# "lowestPrice": "68182.1",
|
|
1323
|
+
# "openPrice": "68762.4",
|
|
1324
|
+
# "positionFeeRate": "0.0001",
|
|
1325
|
+
# "volume": "33534.2858",
|
|
1326
|
+
# "markedPrice": "68434.1",
|
|
1327
|
+
# "turnover": "1200636218.210558",
|
|
1328
|
+
# "positionFeeTime": "28800",
|
|
1329
|
+
# "lastPrice": "68427.3",
|
|
1330
|
+
# "nextFeeTime": "1730736000000",
|
|
1331
|
+
# "fundingRate": "0.0001",
|
|
1332
|
+
# }
|
|
1333
|
+
marketId = self.safe_string(ticker, 'symbol')
|
|
1334
|
+
symbol = self.safe_symbol(marketId, market)
|
|
1335
|
+
markPrice = self.safe_number(ticker, 'markedPrice')
|
|
1336
|
+
indexPrice = self.safe_number(ticker, 'underlyingPrice')
|
|
1337
|
+
fundingRate = self.safe_number(ticker, 'fundingRate')
|
|
1338
|
+
fundingTime = self.safe_integer(ticker, 'nextFeeTime')
|
|
1339
|
+
positionFeeTime = self.safe_integer(ticker, 'positionFeeTime')
|
|
1340
|
+
intervalString = None
|
|
1341
|
+
if positionFeeTime is not None:
|
|
1342
|
+
interval = self.parse_to_int(positionFeeTime / 60 / 60)
|
|
1343
|
+
intervalString = str(interval) + 'h'
|
|
1344
|
+
return {
|
|
1345
|
+
'info': ticker,
|
|
1346
|
+
'symbol': symbol,
|
|
1347
|
+
'markPrice': markPrice,
|
|
1348
|
+
'indexPrice': indexPrice,
|
|
1349
|
+
'fundingRate': fundingRate,
|
|
1350
|
+
'fundingTimestamp': fundingTime,
|
|
1351
|
+
'fundingDatetime': self.iso8601(fundingTime),
|
|
1352
|
+
'timestamp': None,
|
|
1353
|
+
'datetime': None,
|
|
1354
|
+
'nextFundingRate': None,
|
|
1355
|
+
'nextFundingTimestamp': None,
|
|
1356
|
+
'nextFundingDatetime': None,
|
|
1357
|
+
'previousFundingRate': None,
|
|
1358
|
+
'previousFundingTimestamp': None,
|
|
1359
|
+
'previousFundingDatetime': None,
|
|
1360
|
+
'interval': intervalString,
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1363
|
+
async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
|
|
1364
|
+
"""
|
|
1365
|
+
fetch the current funding rate
|
|
1366
|
+
|
|
1367
|
+
https://www.lbank.com/en-US/docs/contract.html#query-contract-market-list
|
|
1368
|
+
|
|
1369
|
+
:param str symbol: unified market symbol
|
|
1370
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1371
|
+
:returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
|
|
1372
|
+
"""
|
|
1373
|
+
await self.load_markets()
|
|
1374
|
+
market = self.market(symbol)
|
|
1375
|
+
responseForSwap = await self.fetch_funding_rates([market['symbol']], params)
|
|
1376
|
+
return self.safe_value(responseForSwap, market['symbol'])
|
|
1377
|
+
|
|
1378
|
+
async def fetch_funding_rates(self, symbols: Strings = None, params={}) -> FundingRates:
|
|
1379
|
+
"""
|
|
1380
|
+
fetch the funding rate for multiple markets
|
|
1381
|
+
|
|
1382
|
+
https://www.lbank.com/en-US/docs/contract.html#query-contract-market-list
|
|
1383
|
+
|
|
1384
|
+
:param str[]|None symbols: list of unified market symbols
|
|
1385
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1386
|
+
:returns dict: a dictionary of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rates-structure>`, indexed by market symbols
|
|
1387
|
+
"""
|
|
1388
|
+
await self.load_markets()
|
|
1389
|
+
symbols = self.market_symbols(symbols)
|
|
1390
|
+
request: dict = {
|
|
1391
|
+
'productGroup': 'SwapU',
|
|
1392
|
+
}
|
|
1393
|
+
response = await self.contractPublicGetCfdOpenApiV1PubMarketData(self.extend(request, params))
|
|
1394
|
+
# {
|
|
1395
|
+
# "data": [
|
|
1396
|
+
# {
|
|
1397
|
+
# "symbol": "BTCUSDT",
|
|
1398
|
+
# "highestPrice": "69495.5",
|
|
1399
|
+
# "underlyingPrice": "68455.904",
|
|
1400
|
+
# "lowestPrice": "68182.1",
|
|
1401
|
+
# "openPrice": "68762.4",
|
|
1402
|
+
# "positionFeeRate": "0.0001",
|
|
1403
|
+
# "volume": "33534.2858",
|
|
1404
|
+
# "markedPrice": "68434.1",
|
|
1405
|
+
# "turnover": "1200636218.210558",
|
|
1406
|
+
# "positionFeeTime": "28800",
|
|
1407
|
+
# "lastPrice": "68427.3",
|
|
1408
|
+
# "nextFeeTime": "1730736000000",
|
|
1409
|
+
# "fundingRate": "0.0001",
|
|
1410
|
+
# }
|
|
1411
|
+
# ],
|
|
1412
|
+
# "error_code": "0",
|
|
1413
|
+
# "msg": "Success",
|
|
1414
|
+
# "result": "true",
|
|
1415
|
+
# "success": True,
|
|
1416
|
+
# }
|
|
1417
|
+
data = self.safe_list(response, 'data', [])
|
|
1418
|
+
return self.parse_funding_rates(data, symbols)
|
|
1419
|
+
|
|
1134
1420
|
async def fetch_balance(self, params={}) -> Balances:
|
|
1135
1421
|
"""
|
|
1136
1422
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1423
|
+
|
|
1424
|
+
https://www.lbank.com/en-US/docs/index.html#asset-information
|
|
1425
|
+
https://www.lbank.com/en-US/docs/index.html#account-information
|
|
1426
|
+
https://www.lbank.com/en-US/docs/index.html#get-all-coins-information
|
|
1427
|
+
|
|
1140
1428
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1141
1429
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
|
1142
1430
|
"""
|
|
@@ -1205,7 +1493,9 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1205
1493
|
async def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
|
1206
1494
|
"""
|
|
1207
1495
|
fetch the trading fees for a market
|
|
1208
|
-
|
|
1496
|
+
|
|
1497
|
+
https://www.lbank.com/en-US/docs/index.html#transaction-fee-rate-query
|
|
1498
|
+
|
|
1209
1499
|
:param str symbol: unified market symbol
|
|
1210
1500
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1211
1501
|
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
|
|
@@ -1217,7 +1507,9 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1217
1507
|
async def fetch_trading_fees(self, params={}) -> TradingFees:
|
|
1218
1508
|
"""
|
|
1219
1509
|
fetch the trading fees for multiple markets
|
|
1220
|
-
|
|
1510
|
+
|
|
1511
|
+
https://www.lbank.com/en-US/docs/index.html#transaction-fee-rate-query
|
|
1512
|
+
|
|
1221
1513
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1222
1514
|
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
|
|
1223
1515
|
"""
|
|
@@ -1235,8 +1527,10 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1235
1527
|
async def create_market_buy_order_with_cost(self, symbol: str, cost: float, params={}):
|
|
1236
1528
|
"""
|
|
1237
1529
|
create a market buy order by providing the symbol and cost
|
|
1238
|
-
|
|
1239
|
-
|
|
1530
|
+
|
|
1531
|
+
https://www.lbank.com/en-US/docs/index.html#place-order
|
|
1532
|
+
https://www.lbank.com/en-US/docs/index.html#place-an-order
|
|
1533
|
+
|
|
1240
1534
|
:param str symbol: unified symbol of the market to create an order in
|
|
1241
1535
|
:param float cost: how much you want to trade in units of the quote currency
|
|
1242
1536
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -1252,13 +1546,15 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1252
1546
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
|
1253
1547
|
"""
|
|
1254
1548
|
create a trade order
|
|
1255
|
-
|
|
1256
|
-
|
|
1549
|
+
|
|
1550
|
+
https://www.lbank.com/en-US/docs/index.html#place-order
|
|
1551
|
+
https://www.lbank.com/en-US/docs/index.html#place-an-order
|
|
1552
|
+
|
|
1257
1553
|
:param str symbol: unified symbol of the market to create an order in
|
|
1258
1554
|
:param str type: 'market' or 'limit'
|
|
1259
1555
|
:param str side: 'buy' or 'sell'
|
|
1260
1556
|
:param float amount: how much of currency you want to trade in units of base currency
|
|
1261
|
-
:param float [price]: the price at which the order is to be
|
|
1557
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
|
1262
1558
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1263
1559
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
|
1264
1560
|
"""
|
|
@@ -1417,6 +1713,27 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1417
1713
|
# "status":-1
|
|
1418
1714
|
# }
|
|
1419
1715
|
#
|
|
1716
|
+
# cancelOrder
|
|
1717
|
+
#
|
|
1718
|
+
# {
|
|
1719
|
+
# "executedQty":0.0,
|
|
1720
|
+
# "price":0.05,
|
|
1721
|
+
# "origQty":100.0,
|
|
1722
|
+
# "tradeType":"buy",
|
|
1723
|
+
# "status":0
|
|
1724
|
+
# }
|
|
1725
|
+
#
|
|
1726
|
+
# cancelAllOrders
|
|
1727
|
+
#
|
|
1728
|
+
# {
|
|
1729
|
+
# "executedQty":0.00000000000000000000,
|
|
1730
|
+
# "orderId":"293ef71b-3e67-4962-af93-aa06990a045f",
|
|
1731
|
+
# "price":0.05000000000000000000,
|
|
1732
|
+
# "origQty":100.00000000000000000000,
|
|
1733
|
+
# "tradeType":"buy",
|
|
1734
|
+
# "status":0
|
|
1735
|
+
# }
|
|
1736
|
+
#
|
|
1420
1737
|
id = self.safe_string_2(order, 'orderId', 'order_id')
|
|
1421
1738
|
clientOrderId = self.safe_string_2(order, 'clientOrderId', 'custom_id')
|
|
1422
1739
|
timestamp = self.safe_integer_2(order, 'time', 'create_time')
|
|
@@ -1426,7 +1743,7 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1426
1743
|
timeInForce = None
|
|
1427
1744
|
postOnly = False
|
|
1428
1745
|
type = 'limit'
|
|
1429
|
-
rawType = self.
|
|
1746
|
+
rawType = self.safe_string_2(order, 'type', 'tradeType') # buy, sell, buy_market, sell_market, buy_maker,sell_maker,buy_ioc,sell_ioc, buy_fok, sell_fok
|
|
1430
1747
|
parts = rawType.split('_')
|
|
1431
1748
|
side = self.safe_string(parts, 0)
|
|
1432
1749
|
typePart = self.safe_string(parts, 1) # market, maker, ioc, fok or None(limit)
|
|
@@ -1458,7 +1775,6 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1458
1775
|
'postOnly': postOnly,
|
|
1459
1776
|
'side': side,
|
|
1460
1777
|
'price': price,
|
|
1461
|
-
'stopPrice': None,
|
|
1462
1778
|
'triggerPrice': None,
|
|
1463
1779
|
'cost': costString,
|
|
1464
1780
|
'amount': amountString,
|
|
@@ -1473,8 +1789,11 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1473
1789
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
|
1474
1790
|
"""
|
|
1475
1791
|
fetches information on an order made by the user
|
|
1476
|
-
|
|
1477
|
-
|
|
1792
|
+
|
|
1793
|
+
https://www.lbank.com/en-US/docs/index.html#query-order
|
|
1794
|
+
https://www.lbank.com/en-US/docs/index.html#query-order-new
|
|
1795
|
+
|
|
1796
|
+
:param str id: order id
|
|
1478
1797
|
:param str symbol: unified symbol of the market the order was made in
|
|
1479
1798
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1480
1799
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
|
@@ -1569,7 +1888,9 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1569
1888
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
1570
1889
|
"""
|
|
1571
1890
|
fetch all trades made by the user
|
|
1572
|
-
|
|
1891
|
+
|
|
1892
|
+
https://www.lbank.com/en-US/docs/index.html#past-transaction-details
|
|
1893
|
+
|
|
1573
1894
|
:param str symbol: unified market symbol
|
|
1574
1895
|
:param int [since]: the earliest time in ms to fetch trades for
|
|
1575
1896
|
:param int [limit]: the maximum number of trade structures to retrieve
|
|
@@ -1623,7 +1944,9 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1623
1944
|
async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
1624
1945
|
"""
|
|
1625
1946
|
fetches information on multiple orders made by the user
|
|
1626
|
-
|
|
1947
|
+
|
|
1948
|
+
https://www.lbank.com/en-US/docs/index.html#query-all-orders
|
|
1949
|
+
|
|
1627
1950
|
:param str symbol: unified market symbol of the market orders were made in
|
|
1628
1951
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
1629
1952
|
:param int [limit]: the maximum number of order structures to retrieve
|
|
@@ -1679,7 +2002,9 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1679
2002
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
1680
2003
|
"""
|
|
1681
2004
|
fetch all unfilled currently open orders
|
|
1682
|
-
|
|
2005
|
+
|
|
2006
|
+
https://www.lbank.com/en-US/docs/index.html#current-pending-order
|
|
2007
|
+
|
|
1683
2008
|
:param str symbol: unified market symbol
|
|
1684
2009
|
:param int [since]: the earliest time in ms to fetch open orders for
|
|
1685
2010
|
:param int [limit]: the maximum number of open order structures to retrieve
|
|
@@ -1732,7 +2057,9 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1732
2057
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
|
1733
2058
|
"""
|
|
1734
2059
|
cancels an open order
|
|
1735
|
-
|
|
2060
|
+
|
|
2061
|
+
https://www.lbank.com/en-US/docs/index.html#cancel-order-new
|
|
2062
|
+
|
|
1736
2063
|
:param str id: order id
|
|
1737
2064
|
:param str symbol: unified symbol of the market the order was made in
|
|
1738
2065
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -1760,17 +2087,19 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1760
2087
|
# "origQty":100.0,
|
|
1761
2088
|
# "tradeType":"buy",
|
|
1762
2089
|
# "status":0
|
|
1763
|
-
#
|
|
2090
|
+
# },
|
|
1764
2091
|
# "error_code":0,
|
|
1765
2092
|
# "ts":1648501286196
|
|
1766
2093
|
# }
|
|
1767
|
-
|
|
1768
|
-
return
|
|
2094
|
+
data = self.safe_dict(response, 'data', {})
|
|
2095
|
+
return self.parse_order(data)
|
|
1769
2096
|
|
|
1770
2097
|
async def cancel_all_orders(self, symbol: Str = None, params={}):
|
|
1771
2098
|
"""
|
|
1772
2099
|
cancel all open orders in a market
|
|
1773
|
-
|
|
2100
|
+
|
|
2101
|
+
https://www.lbank.com/en-US/docs/index.html#cancel-all-pending-orders-for-a-single-trading-pair
|
|
2102
|
+
|
|
1774
2103
|
:param str symbol: unified market symbol of the market to cancel orders in
|
|
1775
2104
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1776
2105
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
|
@@ -1800,8 +2129,8 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1800
2129
|
# "ts":1648506641469
|
|
1801
2130
|
# }
|
|
1802
2131
|
#
|
|
1803
|
-
|
|
1804
|
-
return
|
|
2132
|
+
data = self.safe_list(response, 'data', [])
|
|
2133
|
+
return self.parse_orders(data)
|
|
1805
2134
|
|
|
1806
2135
|
def get_network_code_for_currency(self, currencyCode, params):
|
|
1807
2136
|
defaultNetworks = self.safe_value(self.options, 'defaultNetworks')
|
|
@@ -1811,11 +2140,13 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1811
2140
|
network = self.safe_string(networks, network, network) # handle ERC20>ETH alias
|
|
1812
2141
|
return network
|
|
1813
2142
|
|
|
1814
|
-
async def fetch_deposit_address(self, code: str, params={}):
|
|
2143
|
+
async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
|
1815
2144
|
"""
|
|
1816
2145
|
fetch the deposit address for a currency associated with self account
|
|
1817
|
-
|
|
1818
|
-
|
|
2146
|
+
|
|
2147
|
+
https://www.lbank.com/en-US/docs/index.html#get-deposit-address
|
|
2148
|
+
https://www.lbank.com/en-US/docs/index.html#the-user-obtains-the-deposit-address
|
|
2149
|
+
|
|
1819
2150
|
:param str code: unified currency code
|
|
1820
2151
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1821
2152
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
|
@@ -1832,7 +2163,7 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1832
2163
|
response = await self.fetch_deposit_address_default(code, params)
|
|
1833
2164
|
return response
|
|
1834
2165
|
|
|
1835
|
-
async def fetch_deposit_address_default(self, code: str, params={}):
|
|
2166
|
+
async def fetch_deposit_address_default(self, code: str, params={}) -> DepositAddress:
|
|
1836
2167
|
await self.load_markets()
|
|
1837
2168
|
currency = self.currency(code)
|
|
1838
2169
|
request: dict = {
|
|
@@ -1859,18 +2190,15 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1859
2190
|
result = self.safe_value(response, 'data')
|
|
1860
2191
|
address = self.safe_string(result, 'address')
|
|
1861
2192
|
tag = self.safe_string(result, 'memo')
|
|
1862
|
-
networkId = self.safe_string(result, 'netWork')
|
|
1863
|
-
inverseNetworks = self.safe_value(self.options, 'inverse-networks', {})
|
|
1864
|
-
networkCode = self.safe_string_upper(inverseNetworks, networkId, networkId)
|
|
1865
2193
|
return {
|
|
2194
|
+
'info': response,
|
|
1866
2195
|
'currency': code,
|
|
2196
|
+
'network': self.network_id_to_code(self.safe_string(result, 'netWork')),
|
|
1867
2197
|
'address': address,
|
|
1868
2198
|
'tag': tag,
|
|
1869
|
-
'network': networkCode,
|
|
1870
|
-
'info': response,
|
|
1871
2199
|
}
|
|
1872
2200
|
|
|
1873
|
-
async def fetch_deposit_address_supplement(self, code: str, params={}):
|
|
2201
|
+
async def fetch_deposit_address_supplement(self, code: str, params={}) -> DepositAddress:
|
|
1874
2202
|
# returns the address for whatever the default network is...
|
|
1875
2203
|
await self.load_markets()
|
|
1876
2204
|
currency = self.currency(code)
|
|
@@ -1899,20 +2227,20 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
1899
2227
|
result = self.safe_value(response, 'data')
|
|
1900
2228
|
address = self.safe_string(result, 'address')
|
|
1901
2229
|
tag = self.safe_string(result, 'memo')
|
|
1902
|
-
inverseNetworks = self.safe_value(self.options, 'inverse-networks', {})
|
|
1903
|
-
networkCode = self.safe_string_upper(inverseNetworks, network, network)
|
|
1904
2230
|
return {
|
|
2231
|
+
'info': response,
|
|
1905
2232
|
'currency': code,
|
|
2233
|
+
'network': None,
|
|
1906
2234
|
'address': address,
|
|
1907
2235
|
'tag': tag,
|
|
1908
|
-
'network': networkCode, # will be None if not specified in request
|
|
1909
|
-
'info': response,
|
|
1910
2236
|
}
|
|
1911
2237
|
|
|
1912
|
-
async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
|
2238
|
+
async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
|
|
1913
2239
|
"""
|
|
1914
2240
|
make a withdrawal
|
|
1915
|
-
|
|
2241
|
+
|
|
2242
|
+
https://www.lbank.com/en-US/docs/index.html#withdrawal
|
|
2243
|
+
|
|
1916
2244
|
:param str code: unified currency code
|
|
1917
2245
|
:param float amount: the amount to withdraw
|
|
1918
2246
|
:param str address: the address to withdraw to
|
|
@@ -2022,9 +2350,6 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
2022
2350
|
type = 'withdrawal'
|
|
2023
2351
|
txid = self.safe_string(transaction, 'txId')
|
|
2024
2352
|
timestamp = self.safe_integer_2(transaction, 'insertTime', 'applyTime')
|
|
2025
|
-
networks = self.safe_value(self.options, 'inverse-networks', {})
|
|
2026
|
-
networkId = self.safe_string(transaction, 'networkName')
|
|
2027
|
-
network = self.safe_string(networks, networkId, networkId)
|
|
2028
2353
|
address = self.safe_string(transaction, 'address')
|
|
2029
2354
|
addressFrom = None
|
|
2030
2355
|
addressTo = None
|
|
@@ -2049,7 +2374,7 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
2049
2374
|
'txid': txid,
|
|
2050
2375
|
'timestamp': timestamp,
|
|
2051
2376
|
'datetime': self.iso8601(timestamp),
|
|
2052
|
-
'network':
|
|
2377
|
+
'network': self.network_id_to_code(self.safe_string(transaction, 'networkName')),
|
|
2053
2378
|
'address': address,
|
|
2054
2379
|
'addressTo': addressTo,
|
|
2055
2380
|
'addressFrom': addressFrom,
|
|
@@ -2069,7 +2394,9 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
2069
2394
|
async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
|
2070
2395
|
"""
|
|
2071
2396
|
fetch all deposits made to an account
|
|
2072
|
-
|
|
2397
|
+
|
|
2398
|
+
https://www.lbank.com/en-US/docs/index.html#get-recharge-history
|
|
2399
|
+
|
|
2073
2400
|
:param str code: unified currency code
|
|
2074
2401
|
:param int [since]: the earliest time in ms to fetch deposits for
|
|
2075
2402
|
:param int [limit]: the maximum number of deposits structures to retrieve
|
|
@@ -2118,7 +2445,9 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
2118
2445
|
async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
|
2119
2446
|
"""
|
|
2120
2447
|
fetch all withdrawals made from an account
|
|
2121
|
-
|
|
2448
|
+
|
|
2449
|
+
https://www.lbank.com/en-US/docs/index.html#get-withdrawal-history
|
|
2450
|
+
|
|
2122
2451
|
:param str code: unified currency code
|
|
2123
2452
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
|
2124
2453
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
|
@@ -2170,7 +2499,7 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
2170
2499
|
|
|
2171
2500
|
async def fetch_transaction_fees(self, codes: Strings = None, params={}):
|
|
2172
2501
|
"""
|
|
2173
|
-
|
|
2502
|
+
@deprecated
|
|
2174
2503
|
please use fetchDepositWithdrawFees instead
|
|
2175
2504
|
:param str[]|None codes: not used by lbank fetchTransactionFees()
|
|
2176
2505
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -2238,10 +2567,9 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
2238
2567
|
withdrawFees[code] = {}
|
|
2239
2568
|
for j in range(0, len(networkList)):
|
|
2240
2569
|
networkEntry = networkList[j]
|
|
2241
|
-
networkId = self.safe_string(networkEntry, 'name')
|
|
2242
|
-
networkCode = self.safe_string(self.options['inverse-networks'], networkId, networkId)
|
|
2243
2570
|
fee = self.safe_number(networkEntry, 'withdrawFee')
|
|
2244
2571
|
if fee is not None:
|
|
2572
|
+
networkCode = self.network_id_to_code(self.safe_string(networkEntry, 'name'))
|
|
2245
2573
|
withdrawFees[code][networkCode] = fee
|
|
2246
2574
|
return {
|
|
2247
2575
|
'withdraw': withdrawFees,
|
|
@@ -2289,8 +2617,7 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
2289
2617
|
if canWithdraw == 'true':
|
|
2290
2618
|
currencyId = self.safe_string(item, 'assetCode')
|
|
2291
2619
|
codeInner = self.safe_currency_code(currencyId)
|
|
2292
|
-
|
|
2293
|
-
network = self.safe_string(self.options['inverse-networks'], chain, chain)
|
|
2620
|
+
network = self.network_id_to_code(self.safe_string(item, 'chain'))
|
|
2294
2621
|
if network is None:
|
|
2295
2622
|
network = codeInner
|
|
2296
2623
|
fee = self.safe_string(item, 'fee')
|
|
@@ -2306,9 +2633,11 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
2306
2633
|
async def fetch_deposit_withdraw_fees(self, codes: Strings = None, params={}):
|
|
2307
2634
|
"""
|
|
2308
2635
|
when using private endpoint, only returns information for currencies with non-zero balance, use public method by specifying self.options['fetchDepositWithdrawFees']['method'] = 'fetchPublicDepositWithdrawFees'
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2636
|
+
|
|
2637
|
+
https://www.lbank.com/en-US/docs/index.html#get-all-coins-information
|
|
2638
|
+
https://www.lbank.com/en-US/docs/index.html#withdrawal-configurations
|
|
2639
|
+
|
|
2640
|
+
:param str[] [codes]: array of unified currency codes
|
|
2312
2641
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
2313
2642
|
:returns dict: a list of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>`
|
|
2314
2643
|
"""
|
|
@@ -2321,11 +2650,11 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
2321
2650
|
method = self.safe_string(params, 'method', defaultMethod)
|
|
2322
2651
|
params = self.omit(params, 'method')
|
|
2323
2652
|
if method == 'fetchPublicDepositWithdrawFees':
|
|
2324
|
-
await self.fetch_public_deposit_withdraw_fees(codes, params)
|
|
2653
|
+
response = await self.fetch_public_deposit_withdraw_fees(codes, params)
|
|
2325
2654
|
else:
|
|
2326
|
-
await self.fetch_private_deposit_withdraw_fees(codes, params)
|
|
2655
|
+
response = await self.fetch_private_deposit_withdraw_fees(codes, params)
|
|
2327
2656
|
else:
|
|
2328
|
-
await self.fetch_public_deposit_withdraw_fees(codes, params)
|
|
2657
|
+
response = await self.fetch_public_deposit_withdraw_fees(codes, params)
|
|
2329
2658
|
return response
|
|
2330
2659
|
|
|
2331
2660
|
async def fetch_private_deposit_withdraw_fees(self, codes=None, params={}):
|
|
@@ -2427,9 +2756,9 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
2427
2756
|
if resultValue is None:
|
|
2428
2757
|
result[code] = self.deposit_withdraw_fee([fee])
|
|
2429
2758
|
else:
|
|
2430
|
-
result[code]['info']
|
|
2431
|
-
|
|
2432
|
-
networkCode = self.
|
|
2759
|
+
resultCodeInfo = result[code]['info']
|
|
2760
|
+
resultCodeInfo.append(fee)
|
|
2761
|
+
networkCode = self.network_id_to_code(self.safe_string(fee, 'chain'))
|
|
2433
2762
|
if networkCode is not None:
|
|
2434
2763
|
result[code]['networks'][networkCode] = {
|
|
2435
2764
|
'withdraw': {
|
|
@@ -2479,8 +2808,7 @@ class lbank(Exchange, ImplicitAPI):
|
|
|
2479
2808
|
networkList = self.safe_value(fee, 'networkList', [])
|
|
2480
2809
|
for j in range(0, len(networkList)):
|
|
2481
2810
|
networkEntry = networkList[j]
|
|
2482
|
-
|
|
2483
|
-
networkCode = self.safe_string_upper(self.options['inverse-networks'], networkId, networkId)
|
|
2811
|
+
networkCode = self.network_id_to_code(self.safe_string(networkEntry, 'name'))
|
|
2484
2812
|
withdrawFee = self.safe_number(networkEntry, 'withdrawFee')
|
|
2485
2813
|
isDefault = self.safe_value(networkEntry, 'isDefault')
|
|
2486
2814
|
if withdrawFee is not None:
|