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