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/luno.py
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.luno import ImplicitAPI
|
|
8
|
-
from ccxt.base.types import Account, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface
|
|
8
|
+
from ccxt.base.types import Account, Any, Balances, Currencies, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface
|
|
9
9
|
from typing import List
|
|
10
10
|
from ccxt.base.errors import ExchangeError
|
|
11
11
|
from ccxt.base.errors import ArgumentsRequired
|
|
@@ -15,7 +15,7 @@ from ccxt.base.precise import Precise
|
|
|
15
15
|
|
|
16
16
|
class luno(Exchange, ImplicitAPI):
|
|
17
17
|
|
|
18
|
-
def describe(self):
|
|
18
|
+
def describe(self) -> Any:
|
|
19
19
|
return self.deep_extend(super(luno, self).describe(), {
|
|
20
20
|
'id': 'luno',
|
|
21
21
|
'name': 'luno',
|
|
@@ -32,52 +32,91 @@ class luno(Exchange, ImplicitAPI):
|
|
|
32
32
|
'future': False,
|
|
33
33
|
'option': False,
|
|
34
34
|
'addMargin': False,
|
|
35
|
+
'borrowCrossMargin': False,
|
|
36
|
+
'borrowIsolatedMargin': False,
|
|
37
|
+
'borrowMargin': False,
|
|
35
38
|
'cancelOrder': True,
|
|
36
39
|
'closeAllPositions': False,
|
|
37
40
|
'closePosition': False,
|
|
41
|
+
'createDepositAddress': True,
|
|
38
42
|
'createOrder': True,
|
|
39
43
|
'createReduceOnlyOrder': False,
|
|
40
44
|
'fetchAccounts': True,
|
|
45
|
+
'fetchAllGreeks': False,
|
|
41
46
|
'fetchBalance': True,
|
|
47
|
+
'fetchBorrowInterest': False,
|
|
48
|
+
'fetchBorrowRate': False,
|
|
49
|
+
'fetchBorrowRateHistories': False,
|
|
42
50
|
'fetchBorrowRateHistory': False,
|
|
51
|
+
'fetchBorrowRates': False,
|
|
52
|
+
'fetchBorrowRatesPerSymbol': False,
|
|
43
53
|
'fetchClosedOrders': True,
|
|
44
54
|
'fetchCrossBorrowRate': False,
|
|
45
55
|
'fetchCrossBorrowRates': False,
|
|
56
|
+
'fetchCurrencies': True,
|
|
57
|
+
'fetchDepositAddress': True,
|
|
46
58
|
'fetchFundingHistory': False,
|
|
59
|
+
'fetchFundingInterval': False,
|
|
60
|
+
'fetchFundingIntervals': False,
|
|
47
61
|
'fetchFundingRate': False,
|
|
48
62
|
'fetchFundingRateHistory': False,
|
|
49
63
|
'fetchFundingRates': False,
|
|
64
|
+
'fetchGreeks': False,
|
|
50
65
|
'fetchIndexOHLCV': False,
|
|
51
66
|
'fetchIsolatedBorrowRate': False,
|
|
52
67
|
'fetchIsolatedBorrowRates': False,
|
|
68
|
+
'fetchIsolatedPositions': False,
|
|
53
69
|
'fetchLedger': True,
|
|
54
70
|
'fetchLeverage': False,
|
|
71
|
+
'fetchLeverages': False,
|
|
55
72
|
'fetchLeverageTiers': False,
|
|
73
|
+
'fetchLiquidations': False,
|
|
74
|
+
'fetchLongShortRatio': False,
|
|
75
|
+
'fetchLongShortRatioHistory': False,
|
|
76
|
+
'fetchMarginAdjustmentHistory': False,
|
|
56
77
|
'fetchMarginMode': False,
|
|
78
|
+
'fetchMarginModes': False,
|
|
79
|
+
'fetchMarketLeverageTiers': False,
|
|
57
80
|
'fetchMarkets': True,
|
|
58
81
|
'fetchMarkOHLCV': False,
|
|
82
|
+
'fetchMarkPrice': False,
|
|
83
|
+
'fetchMarkPrices': False,
|
|
84
|
+
'fetchMyLiquidations': False,
|
|
85
|
+
'fetchMySettlementHistory': False,
|
|
59
86
|
'fetchMyTrades': True,
|
|
60
87
|
'fetchOHLCV': True,
|
|
88
|
+
'fetchOpenInterest': False,
|
|
61
89
|
'fetchOpenInterestHistory': False,
|
|
90
|
+
'fetchOpenInterests': False,
|
|
62
91
|
'fetchOpenOrders': True,
|
|
92
|
+
'fetchOption': False,
|
|
93
|
+
'fetchOptionChain': False,
|
|
63
94
|
'fetchOrder': True,
|
|
64
95
|
'fetchOrderBook': True,
|
|
65
96
|
'fetchOrders': True,
|
|
66
97
|
'fetchPosition': False,
|
|
98
|
+
'fetchPositionForSymbolWs': False,
|
|
67
99
|
'fetchPositionHistory': False,
|
|
68
100
|
'fetchPositionMode': False,
|
|
69
101
|
'fetchPositions': False,
|
|
70
102
|
'fetchPositionsForSymbol': False,
|
|
103
|
+
'fetchPositionsForSymbolWs': False,
|
|
71
104
|
'fetchPositionsHistory': False,
|
|
72
105
|
'fetchPositionsRisk': False,
|
|
73
106
|
'fetchPremiumIndexOHLCV': False,
|
|
107
|
+
'fetchSettlementHistory': False,
|
|
74
108
|
'fetchTicker': True,
|
|
75
109
|
'fetchTickers': True,
|
|
76
110
|
'fetchTrades': True,
|
|
77
111
|
'fetchTradingFee': True,
|
|
78
112
|
'fetchTradingFees': False,
|
|
113
|
+
'fetchUnderlyingAssets': False,
|
|
114
|
+
'fetchVolatilityHistory': False,
|
|
79
115
|
'reduceMargin': False,
|
|
116
|
+
'repayCrossMargin': False,
|
|
117
|
+
'repayIsolatedMargin': False,
|
|
80
118
|
'setLeverage': False,
|
|
119
|
+
'setMargin': False,
|
|
81
120
|
'setMarginMode': False,
|
|
82
121
|
'setPositionMode': False,
|
|
83
122
|
},
|
|
@@ -123,6 +162,7 @@ class luno(Exchange, ImplicitAPI):
|
|
|
123
162
|
'accounts/{id}/transactions': 1,
|
|
124
163
|
'balance': 1,
|
|
125
164
|
'beneficiaries': 1,
|
|
165
|
+
'send/networks': 1,
|
|
126
166
|
'fee_info': 1,
|
|
127
167
|
'funding_address': 1,
|
|
128
168
|
'listorders': 1,
|
|
@@ -183,12 +223,176 @@ class luno(Exchange, ImplicitAPI):
|
|
|
183
223
|
},
|
|
184
224
|
},
|
|
185
225
|
'precisionMode': TICK_SIZE,
|
|
226
|
+
'features': {
|
|
227
|
+
'spot': {
|
|
228
|
+
'sandbox': False,
|
|
229
|
+
'createOrder': {
|
|
230
|
+
'marginMode': False,
|
|
231
|
+
'triggerPrice': True, # todo
|
|
232
|
+
'triggerPriceType': None,
|
|
233
|
+
'triggerDirection': True, # todo
|
|
234
|
+
'stopLossPrice': False, # todo
|
|
235
|
+
'takeProfitPrice': False, # todo
|
|
236
|
+
'attachedStopLossTakeProfit': None,
|
|
237
|
+
'timeInForce': {
|
|
238
|
+
'IOC': True,
|
|
239
|
+
'FOK': True,
|
|
240
|
+
'PO': True,
|
|
241
|
+
'GTD': False,
|
|
242
|
+
},
|
|
243
|
+
'hedged': False,
|
|
244
|
+
'trailing': False,
|
|
245
|
+
'leverage': False,
|
|
246
|
+
'marketBuyByCost': True,
|
|
247
|
+
'marketBuyRequiresPrice': False,
|
|
248
|
+
'selfTradePrevention': False,
|
|
249
|
+
'iceberg': False,
|
|
250
|
+
},
|
|
251
|
+
'createOrders': None,
|
|
252
|
+
'fetchMyTrades': {
|
|
253
|
+
'marginMode': False,
|
|
254
|
+
'limit': 1000,
|
|
255
|
+
'daysBack': 100000, # todo
|
|
256
|
+
'untilDays': 100000, # todo
|
|
257
|
+
'symbolRequired': True,
|
|
258
|
+
},
|
|
259
|
+
'fetchOrder': {
|
|
260
|
+
'marginMode': False,
|
|
261
|
+
'trigger': False,
|
|
262
|
+
'trailing': False,
|
|
263
|
+
'symbolRequired': False,
|
|
264
|
+
},
|
|
265
|
+
'fetchOpenOrders': {
|
|
266
|
+
'marginMode': False,
|
|
267
|
+
'limit': 1000,
|
|
268
|
+
'trigger': False,
|
|
269
|
+
'trailing': False,
|
|
270
|
+
'symbolRequired': False,
|
|
271
|
+
},
|
|
272
|
+
'fetchOrders': {
|
|
273
|
+
'marginMode': False,
|
|
274
|
+
'limit': 1000,
|
|
275
|
+
'daysBack': 100000,
|
|
276
|
+
'untilDays': None,
|
|
277
|
+
'trigger': False,
|
|
278
|
+
'trailing': False,
|
|
279
|
+
'symbolRequired': False,
|
|
280
|
+
},
|
|
281
|
+
'fetchClosedOrders': {
|
|
282
|
+
'marginMode': False,
|
|
283
|
+
'limit': 1000,
|
|
284
|
+
'daysBack': 100000,
|
|
285
|
+
'daysBackCanceled': 1,
|
|
286
|
+
'untilDays': None,
|
|
287
|
+
'trigger': False,
|
|
288
|
+
'trailing': False,
|
|
289
|
+
'symbolRequired': False,
|
|
290
|
+
},
|
|
291
|
+
'fetchOHLCV': {
|
|
292
|
+
'limit': None,
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
'swap': {
|
|
296
|
+
'linear': None,
|
|
297
|
+
'inverse': None,
|
|
298
|
+
},
|
|
299
|
+
'future': {
|
|
300
|
+
'linear': None,
|
|
301
|
+
'inverse': None,
|
|
302
|
+
},
|
|
303
|
+
},
|
|
186
304
|
})
|
|
187
305
|
|
|
306
|
+
async def fetch_currencies(self, params={}) -> Currencies:
|
|
307
|
+
"""
|
|
308
|
+
fetches all available currencies on an exchange
|
|
309
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
310
|
+
:returns dict: an associative dictionary of currencies
|
|
311
|
+
"""
|
|
312
|
+
if not self.check_required_credentials(False):
|
|
313
|
+
return None
|
|
314
|
+
response = await self.privateGetSendNetworks(params)
|
|
315
|
+
#
|
|
316
|
+
# {
|
|
317
|
+
# "networks": [
|
|
318
|
+
# {
|
|
319
|
+
# "id": 0,
|
|
320
|
+
# "name": "Ethereum",
|
|
321
|
+
# "native_currency": "ETH"
|
|
322
|
+
# },
|
|
323
|
+
# ...
|
|
324
|
+
# ]
|
|
325
|
+
# }
|
|
326
|
+
#
|
|
327
|
+
currenciesData = self.safe_list(response, 'data', [])
|
|
328
|
+
result: dict = {}
|
|
329
|
+
for i in range(0, len(currenciesData)):
|
|
330
|
+
networkEntry = currenciesData[i]
|
|
331
|
+
id = self.safe_string(networkEntry, 'native_currency')
|
|
332
|
+
code = self.safe_currency_code(id)
|
|
333
|
+
if not (code in result):
|
|
334
|
+
result[code] = {
|
|
335
|
+
'id': id,
|
|
336
|
+
'code': code,
|
|
337
|
+
'precision': None,
|
|
338
|
+
'type': None,
|
|
339
|
+
'name': None,
|
|
340
|
+
'active': None,
|
|
341
|
+
'deposit': None,
|
|
342
|
+
'withdraw': None,
|
|
343
|
+
'fee': None,
|
|
344
|
+
'limits': {
|
|
345
|
+
'withdraw': {
|
|
346
|
+
'min': None,
|
|
347
|
+
'max': None,
|
|
348
|
+
},
|
|
349
|
+
'deposit': {
|
|
350
|
+
'min': None,
|
|
351
|
+
'max': None,
|
|
352
|
+
},
|
|
353
|
+
},
|
|
354
|
+
'networks': {},
|
|
355
|
+
'info': {},
|
|
356
|
+
}
|
|
357
|
+
networkId = self.safe_string(networkEntry, 'name')
|
|
358
|
+
networkCode = self.network_id_to_code(networkId)
|
|
359
|
+
result[code]['networks'][networkCode] = {
|
|
360
|
+
'id': networkId,
|
|
361
|
+
'network': networkCode,
|
|
362
|
+
'limits': {
|
|
363
|
+
'withdraw': {
|
|
364
|
+
'min': None,
|
|
365
|
+
'max': None,
|
|
366
|
+
},
|
|
367
|
+
'deposit': {
|
|
368
|
+
'min': None,
|
|
369
|
+
'max': None,
|
|
370
|
+
},
|
|
371
|
+
},
|
|
372
|
+
'active': None,
|
|
373
|
+
'deposit': None,
|
|
374
|
+
'withdraw': None,
|
|
375
|
+
'fee': None,
|
|
376
|
+
'precision': None,
|
|
377
|
+
'info': networkEntry,
|
|
378
|
+
}
|
|
379
|
+
# add entry in info
|
|
380
|
+
info = self.safe_list(result[code], 'info', [])
|
|
381
|
+
info.append(networkEntry)
|
|
382
|
+
result[code]['info'] = info
|
|
383
|
+
# only after all entries are formed in currencies, restructure each entry
|
|
384
|
+
allKeys = list(result.keys())
|
|
385
|
+
for i in range(0, len(allKeys)):
|
|
386
|
+
code = allKeys[i]
|
|
387
|
+
result[code] = self.safe_currency_structure(result[code]) # self is needed after adding network entry
|
|
388
|
+
return result
|
|
389
|
+
|
|
188
390
|
async def fetch_markets(self, params={}) -> List[Market]:
|
|
189
391
|
"""
|
|
190
392
|
retrieves data on all markets for luno
|
|
191
|
-
|
|
393
|
+
|
|
394
|
+
https://www.luno.com/en/developers/api#tag/Market/operation/Markets
|
|
395
|
+
|
|
192
396
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
193
397
|
:returns dict[]: an array of objects representing market data
|
|
194
398
|
"""
|
|
@@ -276,7 +480,9 @@ class luno(Exchange, ImplicitAPI):
|
|
|
276
480
|
async def fetch_accounts(self, params={}) -> List[Account]:
|
|
277
481
|
"""
|
|
278
482
|
fetch all the accounts associated with a profile
|
|
279
|
-
|
|
483
|
+
|
|
484
|
+
https://www.luno.com/en/developers/api#tag/Accounts/operation/getBalances
|
|
485
|
+
|
|
280
486
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
281
487
|
:returns dict: a dictionary of `account structures <https://docs.ccxt.com/#/?id=account-structure>` indexed by the account type
|
|
282
488
|
"""
|
|
@@ -325,7 +531,9 @@ class luno(Exchange, ImplicitAPI):
|
|
|
325
531
|
async def fetch_balance(self, params={}) -> Balances:
|
|
326
532
|
"""
|
|
327
533
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
|
328
|
-
|
|
534
|
+
|
|
535
|
+
https://www.luno.com/en/developers/api#tag/Accounts/operation/getBalances
|
|
536
|
+
|
|
329
537
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
330
538
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
|
331
539
|
"""
|
|
@@ -346,8 +554,10 @@ class luno(Exchange, ImplicitAPI):
|
|
|
346
554
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
|
347
555
|
"""
|
|
348
556
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
|
349
|
-
|
|
350
|
-
|
|
557
|
+
|
|
558
|
+
https://www.luno.com/en/developers/api#tag/Market/operation/GetOrderBookFull
|
|
559
|
+
https://www.luno.com/en/developers/api#tag/Market/operation/GetOrderBook
|
|
560
|
+
|
|
351
561
|
:param str symbol: unified symbol of the market to fetch the order book for
|
|
352
562
|
:param int [limit]: the maximum amount of order book entries to return
|
|
353
563
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -433,7 +643,6 @@ class luno(Exchange, ImplicitAPI):
|
|
|
433
643
|
'postOnly': None,
|
|
434
644
|
'side': side,
|
|
435
645
|
'price': price,
|
|
436
|
-
'stopPrice': None,
|
|
437
646
|
'triggerPrice': None,
|
|
438
647
|
'amount': amount,
|
|
439
648
|
'filled': filled,
|
|
@@ -448,7 +657,10 @@ class luno(Exchange, ImplicitAPI):
|
|
|
448
657
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
|
449
658
|
"""
|
|
450
659
|
fetches information on an order made by the user
|
|
451
|
-
|
|
660
|
+
|
|
661
|
+
https://www.luno.com/en/developers/api#tag/Orders/operation/GetOrder
|
|
662
|
+
|
|
663
|
+
:param str id: order id
|
|
452
664
|
:param str symbol: not used by luno fetchOrder
|
|
453
665
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
454
666
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
|
@@ -460,7 +672,7 @@ class luno(Exchange, ImplicitAPI):
|
|
|
460
672
|
response = await self.privateGetOrdersId(self.extend(request, params))
|
|
461
673
|
return self.parse_order(response)
|
|
462
674
|
|
|
463
|
-
async def fetch_orders_by_state(self, state
|
|
675
|
+
async def fetch_orders_by_state(self, state: Str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
464
676
|
await self.load_markets()
|
|
465
677
|
request: dict = {}
|
|
466
678
|
market = None
|
|
@@ -476,7 +688,9 @@ class luno(Exchange, ImplicitAPI):
|
|
|
476
688
|
async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
477
689
|
"""
|
|
478
690
|
fetches information on multiple orders made by the user
|
|
479
|
-
|
|
691
|
+
|
|
692
|
+
https://www.luno.com/en/developers/api#tag/Orders/operation/ListOrders
|
|
693
|
+
|
|
480
694
|
:param str symbol: unified market symbol of the market orders were made in
|
|
481
695
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
482
696
|
:param int [limit]: the maximum number of order structures to retrieve
|
|
@@ -488,7 +702,9 @@ class luno(Exchange, ImplicitAPI):
|
|
|
488
702
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
489
703
|
"""
|
|
490
704
|
fetch all unfilled currently open orders
|
|
491
|
-
|
|
705
|
+
|
|
706
|
+
https://www.luno.com/en/developers/api#tag/Orders/operation/ListOrders
|
|
707
|
+
|
|
492
708
|
:param str symbol: unified market symbol
|
|
493
709
|
:param int [since]: the earliest time in ms to fetch open orders for
|
|
494
710
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
|
@@ -500,7 +716,9 @@ class luno(Exchange, ImplicitAPI):
|
|
|
500
716
|
async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
501
717
|
"""
|
|
502
718
|
fetches information on multiple closed orders made by the user
|
|
503
|
-
|
|
719
|
+
|
|
720
|
+
https://www.luno.com/en/developers/api#tag/Orders/operation/ListOrders
|
|
721
|
+
|
|
504
722
|
:param str symbol: unified market symbol of the market orders were made in
|
|
505
723
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
506
724
|
:param int [limit]: the maximum number of order structures to retrieve
|
|
@@ -549,7 +767,9 @@ class luno(Exchange, ImplicitAPI):
|
|
|
549
767
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
|
550
768
|
"""
|
|
551
769
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
552
|
-
|
|
770
|
+
|
|
771
|
+
https://www.luno.com/en/developers/api#tag/Market/operation/GetTickers
|
|
772
|
+
|
|
553
773
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
554
774
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
555
775
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
@@ -571,7 +791,9 @@ class luno(Exchange, ImplicitAPI):
|
|
|
571
791
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
|
572
792
|
"""
|
|
573
793
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
574
|
-
|
|
794
|
+
|
|
795
|
+
https://www.luno.com/en/developers/api#tag/Market/operation/GetTicker
|
|
796
|
+
|
|
575
797
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
|
576
798
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
577
799
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
@@ -680,7 +902,9 @@ class luno(Exchange, ImplicitAPI):
|
|
|
680
902
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
681
903
|
"""
|
|
682
904
|
get the list of most recent trades for a particular symbol
|
|
683
|
-
|
|
905
|
+
|
|
906
|
+
https://www.luno.com/en/developers/api#tag/Market/operation/ListTrades
|
|
907
|
+
|
|
684
908
|
:param str symbol: unified symbol of the market to fetch trades for
|
|
685
909
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
|
686
910
|
:param int [limit]: the maximum amount of trades to fetch
|
|
@@ -713,7 +937,9 @@ class luno(Exchange, ImplicitAPI):
|
|
|
713
937
|
|
|
714
938
|
async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}):
|
|
715
939
|
"""
|
|
716
|
-
|
|
940
|
+
|
|
941
|
+
https://www.luno.com/en/developers/api#tag/Market/operation/GetCandles
|
|
942
|
+
|
|
717
943
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
718
944
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
|
719
945
|
:param str timeframe: the length of time each candle represents
|
|
@@ -774,7 +1000,9 @@ class luno(Exchange, ImplicitAPI):
|
|
|
774
1000
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
775
1001
|
"""
|
|
776
1002
|
fetch all trades made by the user
|
|
777
|
-
|
|
1003
|
+
|
|
1004
|
+
https://www.luno.com/en/developers/api#tag/Orders/operation/ListUserTrades
|
|
1005
|
+
|
|
778
1006
|
:param str symbol: unified market symbol
|
|
779
1007
|
:param int [since]: the earliest time in ms to fetch trades for
|
|
780
1008
|
:param int [limit]: the maximum number of trades structures to retrieve
|
|
@@ -820,7 +1048,9 @@ class luno(Exchange, ImplicitAPI):
|
|
|
820
1048
|
async def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
|
821
1049
|
"""
|
|
822
1050
|
fetch the trading fees for a market
|
|
823
|
-
|
|
1051
|
+
|
|
1052
|
+
https://www.luno.com/en/developers/api#tag/Orders/operation/getFeeInfo
|
|
1053
|
+
|
|
824
1054
|
:param str symbol: unified market symbol
|
|
825
1055
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
826
1056
|
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
|
|
@@ -850,13 +1080,15 @@ class luno(Exchange, ImplicitAPI):
|
|
|
850
1080
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
|
851
1081
|
"""
|
|
852
1082
|
create a trade order
|
|
853
|
-
|
|
854
|
-
|
|
1083
|
+
|
|
1084
|
+
https://www.luno.com/en/developers/api#tag/Orders/operation/PostMarketOrder
|
|
1085
|
+
https://www.luno.com/en/developers/api#tag/Orders/operation/PostLimitOrder
|
|
1086
|
+
|
|
855
1087
|
:param str symbol: unified symbol of the market to create an order in
|
|
856
1088
|
:param str type: 'market' or 'limit'
|
|
857
1089
|
:param str side: 'buy' or 'sell'
|
|
858
1090
|
:param float amount: how much of currency you want to trade in units of base currency
|
|
859
|
-
:param float [price]: the price at which the order is to be
|
|
1091
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
|
860
1092
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
861
1093
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
|
862
1094
|
"""
|
|
@@ -887,7 +1119,9 @@ class luno(Exchange, ImplicitAPI):
|
|
|
887
1119
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
|
888
1120
|
"""
|
|
889
1121
|
cancels an open order
|
|
890
|
-
|
|
1122
|
+
|
|
1123
|
+
https://www.luno.com/en/developers/api#tag/Orders/operation/StopOrder
|
|
1124
|
+
|
|
891
1125
|
:param str id: order id
|
|
892
1126
|
:param str symbol: unified symbol of the market the order was made in
|
|
893
1127
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -920,15 +1154,17 @@ class luno(Exchange, ImplicitAPI):
|
|
|
920
1154
|
}
|
|
921
1155
|
return await self.fetch_ledger(code, since, limit, self.extend(request, params))
|
|
922
1156
|
|
|
923
|
-
async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
1157
|
+
async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[LedgerEntry]:
|
|
924
1158
|
"""
|
|
925
|
-
fetch the history of changes, actions done by the user or operations that altered balance of the user
|
|
926
|
-
|
|
927
|
-
|
|
1159
|
+
fetch the history of changes, actions done by the user or operations that altered the balance of the user
|
|
1160
|
+
|
|
1161
|
+
https://www.luno.com/en/developers/api#tag/Accounts/operation/ListTransactions
|
|
1162
|
+
|
|
1163
|
+
:param str [code]: unified currency code, default is None
|
|
928
1164
|
:param int [since]: timestamp in ms of the earliest ledger entry, default is None
|
|
929
|
-
:param int [limit]: max number of ledger
|
|
1165
|
+
:param int [limit]: max number of ledger entries to return, default is None
|
|
930
1166
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
931
|
-
:returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger
|
|
1167
|
+
:returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
|
|
932
1168
|
"""
|
|
933
1169
|
await self.load_markets()
|
|
934
1170
|
await self.load_accounts()
|
|
@@ -995,13 +1231,14 @@ class luno(Exchange, ImplicitAPI):
|
|
|
995
1231
|
'referenceId': referenceId,
|
|
996
1232
|
}
|
|
997
1233
|
|
|
998
|
-
def parse_ledger_entry(self, entry, currency: Currency = None):
|
|
1234
|
+
def parse_ledger_entry(self, entry, currency: Currency = None) -> LedgerEntry:
|
|
999
1235
|
# details = self.safe_value(entry, 'details', {})
|
|
1000
1236
|
id = self.safe_string(entry, 'row_index')
|
|
1001
1237
|
account_id = self.safe_string(entry, 'account_id')
|
|
1002
1238
|
timestamp = self.safe_integer(entry, 'timestamp')
|
|
1003
1239
|
currencyId = self.safe_string(entry, 'currency')
|
|
1004
1240
|
code = self.safe_currency_code(currencyId, currency)
|
|
1241
|
+
currency = self.safe_currency(currencyId, currency)
|
|
1005
1242
|
available_delta = self.safe_string(entry, 'available_delta')
|
|
1006
1243
|
balance_delta = self.safe_string(entry, 'balance_delta')
|
|
1007
1244
|
after = self.safe_string(entry, 'balance')
|
|
@@ -1027,7 +1264,8 @@ class luno(Exchange, ImplicitAPI):
|
|
|
1027
1264
|
direction = 'in'
|
|
1028
1265
|
elif Precise.string_lt(balance_delta, '0') or Precise.string_lt(available_delta, '0'):
|
|
1029
1266
|
direction = 'out'
|
|
1030
|
-
return {
|
|
1267
|
+
return self.safe_ledger_entry({
|
|
1268
|
+
'info': entry,
|
|
1031
1269
|
'id': id,
|
|
1032
1270
|
'direction': direction,
|
|
1033
1271
|
'account': account_id,
|
|
@@ -1035,14 +1273,123 @@ class luno(Exchange, ImplicitAPI):
|
|
|
1035
1273
|
'referenceAccount': None,
|
|
1036
1274
|
'type': type,
|
|
1037
1275
|
'currency': code,
|
|
1038
|
-
'amount': self.
|
|
1276
|
+
'amount': self.parse_to_numeric(amount),
|
|
1039
1277
|
'timestamp': timestamp,
|
|
1040
1278
|
'datetime': self.iso8601(timestamp),
|
|
1041
|
-
'before': self.
|
|
1042
|
-
'after': self.
|
|
1279
|
+
'before': self.parse_to_numeric(before),
|
|
1280
|
+
'after': self.parse_to_numeric(after),
|
|
1043
1281
|
'status': status,
|
|
1044
1282
|
'fee': None,
|
|
1045
|
-
|
|
1283
|
+
}, currency)
|
|
1284
|
+
|
|
1285
|
+
async def create_deposit_address(self, code: str, params={}) -> DepositAddress:
|
|
1286
|
+
"""
|
|
1287
|
+
create a currency deposit address
|
|
1288
|
+
|
|
1289
|
+
https://www.luno.com/en/developers/api#tag/Receive/operation/createFundingAddress
|
|
1290
|
+
|
|
1291
|
+
:param str code: unified currency code of the currency for the deposit address
|
|
1292
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1293
|
+
:param str [params.name]: an optional name for the new address
|
|
1294
|
+
:param int [params.account_id]: an optional account id for the new address
|
|
1295
|
+
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
|
1296
|
+
"""
|
|
1297
|
+
await self.load_markets()
|
|
1298
|
+
currency = self.currency(code)
|
|
1299
|
+
request: dict = {
|
|
1300
|
+
'asset': currency['id'],
|
|
1301
|
+
}
|
|
1302
|
+
response = await self.privatePostFundingAddress(self.extend(request, params))
|
|
1303
|
+
#
|
|
1304
|
+
# {
|
|
1305
|
+
# "account_id": "string",
|
|
1306
|
+
# "address": "string",
|
|
1307
|
+
# "address_meta": [
|
|
1308
|
+
# {
|
|
1309
|
+
# "label": "string",
|
|
1310
|
+
# "value": "string"
|
|
1311
|
+
# }
|
|
1312
|
+
# ],
|
|
1313
|
+
# "asset": "string",
|
|
1314
|
+
# "assigned_at": 0,
|
|
1315
|
+
# "name": "string",
|
|
1316
|
+
# "network": 0,
|
|
1317
|
+
# "qr_code_uri": "string",
|
|
1318
|
+
# "receive_fee": "string",
|
|
1319
|
+
# "total_received": "string",
|
|
1320
|
+
# "total_unconfirmed": "string"
|
|
1321
|
+
# }
|
|
1322
|
+
#
|
|
1323
|
+
return self.parse_deposit_address(response, currency)
|
|
1324
|
+
|
|
1325
|
+
async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
|
1326
|
+
"""
|
|
1327
|
+
fetch the deposit address for a currency associated with self account
|
|
1328
|
+
|
|
1329
|
+
https://www.luno.com/en/developers/api#tag/Receive/operation/getFundingAddress
|
|
1330
|
+
|
|
1331
|
+
:param str code: unified currency code
|
|
1332
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1333
|
+
:param str [params.address]: a specific cryptocurrency address to retrieve
|
|
1334
|
+
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
|
1335
|
+
"""
|
|
1336
|
+
await self.load_markets()
|
|
1337
|
+
currency = self.currency(code)
|
|
1338
|
+
request: dict = {
|
|
1339
|
+
'asset': currency['id'],
|
|
1340
|
+
}
|
|
1341
|
+
response = await self.privateGetFundingAddress(self.extend(request, params))
|
|
1342
|
+
#
|
|
1343
|
+
# {
|
|
1344
|
+
# "account_id": "string",
|
|
1345
|
+
# "address": "string",
|
|
1346
|
+
# "address_meta": [
|
|
1347
|
+
# {
|
|
1348
|
+
# "label": "string",
|
|
1349
|
+
# "value": "string"
|
|
1350
|
+
# }
|
|
1351
|
+
# ],
|
|
1352
|
+
# "asset": "string",
|
|
1353
|
+
# "assigned_at": 0,
|
|
1354
|
+
# "name": "string",
|
|
1355
|
+
# "network": 0,
|
|
1356
|
+
# "qr_code_uri": "string",
|
|
1357
|
+
# "receive_fee": "string",
|
|
1358
|
+
# "total_received": "string",
|
|
1359
|
+
# "total_unconfirmed": "string"
|
|
1360
|
+
# }
|
|
1361
|
+
#
|
|
1362
|
+
return self.parse_deposit_address(response, currency)
|
|
1363
|
+
|
|
1364
|
+
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
|
1365
|
+
#
|
|
1366
|
+
# {
|
|
1367
|
+
# "account_id": "string",
|
|
1368
|
+
# "address": "string",
|
|
1369
|
+
# "address_meta": [
|
|
1370
|
+
# {
|
|
1371
|
+
# "label": "string",
|
|
1372
|
+
# "value": "string"
|
|
1373
|
+
# }
|
|
1374
|
+
# ],
|
|
1375
|
+
# "asset": "string",
|
|
1376
|
+
# "assigned_at": 0,
|
|
1377
|
+
# "name": "string",
|
|
1378
|
+
# "network": 0,
|
|
1379
|
+
# "qr_code_uri": "string",
|
|
1380
|
+
# "receive_fee": "string",
|
|
1381
|
+
# "total_received": "string",
|
|
1382
|
+
# "total_unconfirmed": "string"
|
|
1383
|
+
# }
|
|
1384
|
+
#
|
|
1385
|
+
currencyId = self.safe_string_upper(depositAddress, 'currency')
|
|
1386
|
+
code = self.safe_currency_code(currencyId, currency)
|
|
1387
|
+
return {
|
|
1388
|
+
'info': depositAddress,
|
|
1389
|
+
'currency': code,
|
|
1390
|
+
'network': None,
|
|
1391
|
+
'address': self.safe_string(depositAddress, 'address'),
|
|
1392
|
+
'tag': self.safe_string(depositAddress, 'name'),
|
|
1046
1393
|
}
|
|
1047
1394
|
|
|
1048
1395
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|