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/coinmetro.py
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.coinmetro import ImplicitAPI
|
|
8
|
-
|
|
8
|
+
import asyncio
|
|
9
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, IndexType, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
|
|
9
10
|
from typing import List
|
|
10
11
|
from ccxt.base.errors import ExchangeError
|
|
11
12
|
from ccxt.base.errors import PermissionDenied
|
|
@@ -22,7 +23,7 @@ from ccxt.base.precise import Precise
|
|
|
22
23
|
|
|
23
24
|
class coinmetro(Exchange, ImplicitAPI):
|
|
24
25
|
|
|
25
|
-
def describe(self):
|
|
26
|
+
def describe(self) -> Any:
|
|
26
27
|
return self.deep_extend(super(coinmetro, self).describe(), {
|
|
27
28
|
'id': 'coinmetro',
|
|
28
29
|
'name': 'Coinmetro',
|
|
@@ -219,7 +220,79 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
219
220
|
# exchange-specific options
|
|
220
221
|
'options': {
|
|
221
222
|
'currenciesByIdForParseMarket': None,
|
|
222
|
-
'currencyIdsListForParseMarket':
|
|
223
|
+
'currencyIdsListForParseMarket': ['QRDO'],
|
|
224
|
+
},
|
|
225
|
+
'features': {
|
|
226
|
+
'spot': {
|
|
227
|
+
'sandbox': True,
|
|
228
|
+
'createOrder': {
|
|
229
|
+
'marginMode': True, # todo implement
|
|
230
|
+
'triggerPrice': True,
|
|
231
|
+
'triggerPriceType': None,
|
|
232
|
+
'triggerDirection': False,
|
|
233
|
+
'stopLossPrice': False, # todo
|
|
234
|
+
'takeProfitPrice': False, # todo
|
|
235
|
+
'attachedStopLossTakeProfit': {
|
|
236
|
+
'triggerPriceType': None,
|
|
237
|
+
'price': False,
|
|
238
|
+
},
|
|
239
|
+
'timeInForce': {
|
|
240
|
+
'IOC': True,
|
|
241
|
+
'FOK': True,
|
|
242
|
+
'PO': False,
|
|
243
|
+
'GTD': True,
|
|
244
|
+
},
|
|
245
|
+
'hedged': False,
|
|
246
|
+
'trailing': False,
|
|
247
|
+
'leverage': False,
|
|
248
|
+
'marketBuyByCost': True,
|
|
249
|
+
'marketBuyRequiresPrice': False,
|
|
250
|
+
'selfTradePrevention': False,
|
|
251
|
+
'iceberg': True,
|
|
252
|
+
},
|
|
253
|
+
'createOrders': None,
|
|
254
|
+
'fetchMyTrades': {
|
|
255
|
+
'marginMode': False,
|
|
256
|
+
'limit': None,
|
|
257
|
+
'daysBack': 100000,
|
|
258
|
+
'untilDays': None,
|
|
259
|
+
'symbolRequired': False,
|
|
260
|
+
},
|
|
261
|
+
'fetchOrder': {
|
|
262
|
+
'marginMode': False,
|
|
263
|
+
'trigger': False,
|
|
264
|
+
'trailing': False,
|
|
265
|
+
'symbolRequired': False,
|
|
266
|
+
},
|
|
267
|
+
'fetchOpenOrders': {
|
|
268
|
+
'marginMode': False,
|
|
269
|
+
'limit': None,
|
|
270
|
+
'trigger': False,
|
|
271
|
+
'trailing': False,
|
|
272
|
+
'symbolRequired': False,
|
|
273
|
+
},
|
|
274
|
+
'fetchOrders': {
|
|
275
|
+
'marginMode': False,
|
|
276
|
+
'limit': None,
|
|
277
|
+
'daysBack': 100000,
|
|
278
|
+
'untilDays': None,
|
|
279
|
+
'trigger': False,
|
|
280
|
+
'trailing': False,
|
|
281
|
+
'symbolRequired': False,
|
|
282
|
+
},
|
|
283
|
+
'fetchClosedOrders': None,
|
|
284
|
+
'fetchOHLCV': {
|
|
285
|
+
'limit': 1000,
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
'swap': {
|
|
289
|
+
'linear': None,
|
|
290
|
+
'inverse': None,
|
|
291
|
+
},
|
|
292
|
+
'future': {
|
|
293
|
+
'linear': None,
|
|
294
|
+
'inverse': None,
|
|
295
|
+
},
|
|
223
296
|
},
|
|
224
297
|
'exceptions': {
|
|
225
298
|
# https://trade-docs.coinmetro.co/?javascript--nodejs#message-codes
|
|
@@ -261,7 +334,9 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
261
334
|
async def fetch_currencies(self, params={}) -> Currencies:
|
|
262
335
|
"""
|
|
263
336
|
fetches all available currencies on an exchange
|
|
264
|
-
|
|
337
|
+
|
|
338
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#d5876d43-a3fe-4479-8c58-24d0f044edfb
|
|
339
|
+
|
|
265
340
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
266
341
|
:returns dict: an associative dictionary of currencies
|
|
267
342
|
"""
|
|
@@ -313,43 +388,64 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
313
388
|
currency = response[i]
|
|
314
389
|
id = self.safe_string(currency, 'symbol')
|
|
315
390
|
code = self.safe_currency_code(id)
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
391
|
+
typeRaw = self.safe_string(currency, 'type')
|
|
392
|
+
type = None
|
|
393
|
+
if typeRaw == 'coin' or typeRaw == 'token' or typeRaw == 'erc20':
|
|
394
|
+
type = 'crypto'
|
|
395
|
+
elif typeRaw == 'fiat':
|
|
396
|
+
type = 'fiat'
|
|
397
|
+
precisionDigits = self.safe_string_2(currency, 'digits', 'notabeneDecimals')
|
|
398
|
+
if code == 'RENDER':
|
|
399
|
+
# RENDER is an exception(with broken info)
|
|
400
|
+
precisionDigits = '4'
|
|
321
401
|
result[code] = self.safe_currency_structure({
|
|
322
402
|
'id': id,
|
|
323
403
|
'code': code,
|
|
324
404
|
'name': code,
|
|
405
|
+
'type': type,
|
|
325
406
|
'info': currency,
|
|
326
|
-
'active':
|
|
327
|
-
'deposit':
|
|
328
|
-
'withdraw':
|
|
407
|
+
'active': self.safe_bool(currency, 'canTrade'),
|
|
408
|
+
'deposit': self.safe_bool(currency, 'canDeposit'),
|
|
409
|
+
'withdraw': self.safe_bool(currency, 'canWithdraw'),
|
|
329
410
|
'fee': None,
|
|
330
|
-
'precision': self.parse_number(self.parse_precision(
|
|
411
|
+
'precision': self.parse_number(self.parse_precision(precisionDigits)),
|
|
331
412
|
'limits': {
|
|
332
|
-
'amount': {
|
|
333
|
-
|
|
413
|
+
'amount': {
|
|
414
|
+
'min': self.safe_number(currency, 'minQty'),
|
|
415
|
+
'max': None,
|
|
416
|
+
},
|
|
417
|
+
'withdraw': {
|
|
418
|
+
'min': None,
|
|
419
|
+
'max': None,
|
|
420
|
+
},
|
|
334
421
|
},
|
|
335
422
|
'networks': {},
|
|
336
423
|
})
|
|
337
424
|
if self.safe_value(self.options, 'currenciesByIdForParseMarket') is None:
|
|
338
425
|
currenciesById = self.index_by(result, 'id')
|
|
339
426
|
self.options['currenciesByIdForParseMarket'] = currenciesById
|
|
340
|
-
self.options
|
|
427
|
+
currentCurrencyIdsList = self.safe_list(self.options, 'currencyIdsListForParseMarket', [])
|
|
428
|
+
currencyIdsList = list(currenciesById.keys())
|
|
429
|
+
for i in range(0, len(currencyIdsList)):
|
|
430
|
+
currentCurrencyIdsList.append(currencyIdsList[i])
|
|
431
|
+
self.options['currencyIdsListForParseMarket'] = currentCurrencyIdsList
|
|
341
432
|
return result
|
|
342
433
|
|
|
343
434
|
async def fetch_markets(self, params={}) -> List[Market]:
|
|
344
435
|
"""
|
|
345
436
|
retrieves data on all markets for coinmetro
|
|
346
|
-
|
|
437
|
+
|
|
438
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#9fd18008-338e-4863-b07d-722878a46832
|
|
439
|
+
|
|
347
440
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
348
441
|
:returns dict[]: an array of objects representing market data
|
|
349
442
|
"""
|
|
350
|
-
|
|
443
|
+
promises = []
|
|
444
|
+
promises.append(self.publicGetMarkets(params))
|
|
351
445
|
if self.safe_value(self.options, 'currenciesByIdForParseMarket') is None:
|
|
352
|
-
|
|
446
|
+
promises.append(self.fetch_currencies())
|
|
447
|
+
responses = await asyncio.gather(*promises)
|
|
448
|
+
response = responses[0]
|
|
353
449
|
#
|
|
354
450
|
# [
|
|
355
451
|
# {
|
|
@@ -365,7 +461,14 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
365
461
|
# ...
|
|
366
462
|
# ]
|
|
367
463
|
#
|
|
368
|
-
|
|
464
|
+
result = []
|
|
465
|
+
for i in range(0, len(response)):
|
|
466
|
+
market = self.parse_market(response[i])
|
|
467
|
+
# there are several broken(unavailable info) markets
|
|
468
|
+
if market['base'] is None or market['quote'] is None:
|
|
469
|
+
continue
|
|
470
|
+
result.append(market)
|
|
471
|
+
return result
|
|
369
472
|
|
|
370
473
|
def parse_market(self, market: dict) -> Market:
|
|
371
474
|
id = self.safe_string(market, 'pair')
|
|
@@ -434,10 +537,19 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
434
537
|
baseId = None
|
|
435
538
|
quoteId = None
|
|
436
539
|
currencyIds = self.safe_value(self.options, 'currencyIdsListForParseMarket', [])
|
|
540
|
+
# Bubble sort by length(longest first)
|
|
541
|
+
currencyIdsLength = len(currencyIds)
|
|
542
|
+
for i in range(0, currencyIdsLength):
|
|
543
|
+
for j in range(0, currencyIdsLength - i - 1):
|
|
544
|
+
a = currencyIds[j]
|
|
545
|
+
b = currencyIds[j + 1]
|
|
546
|
+
if len(a) < len(b):
|
|
547
|
+
currencyIds[j] = b
|
|
548
|
+
currencyIds[j + 1] = a
|
|
437
549
|
for i in range(0, len(currencyIds)):
|
|
438
550
|
currencyId = currencyIds[i]
|
|
439
551
|
entryIndex = marketId.find(currencyId)
|
|
440
|
-
if entryIndex
|
|
552
|
+
if entryIndex == 0:
|
|
441
553
|
restId = marketId.replace(currencyId, '')
|
|
442
554
|
if self.in_array(restId, currencyIds):
|
|
443
555
|
if entryIndex == 0:
|
|
@@ -468,7 +580,9 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
468
580
|
async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
|
469
581
|
"""
|
|
470
582
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
471
|
-
|
|
583
|
+
|
|
584
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#13cfb5bc-7bfb-4847-85e1-e0f35dfb3573
|
|
585
|
+
|
|
472
586
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
|
473
587
|
:param str timeframe: the length of time each candle represents
|
|
474
588
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
|
@@ -541,7 +655,9 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
541
655
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
542
656
|
"""
|
|
543
657
|
get the list of most recent trades for a particular symbol
|
|
544
|
-
|
|
658
|
+
|
|
659
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ee5d698-06da-4570-8c84-914185e05065
|
|
660
|
+
|
|
545
661
|
:param str symbol: unified symbol of the market to fetch trades for
|
|
546
662
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
|
547
663
|
:param int [limit]: the maximum amount of trades to fetch(default 200, max 500)
|
|
@@ -593,7 +709,9 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
593
709
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
594
710
|
"""
|
|
595
711
|
fetch all trades made by the user
|
|
596
|
-
|
|
712
|
+
|
|
713
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
|
|
714
|
+
|
|
597
715
|
:param str symbol: unified market symbol
|
|
598
716
|
:param int [since]: the earliest time in ms to fetch trades for
|
|
599
717
|
:param int [limit]: the maximum number of trades structures to retrieve(default 500, max 1000)
|
|
@@ -698,7 +816,9 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
698
816
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
|
699
817
|
"""
|
|
700
818
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
|
701
|
-
|
|
819
|
+
|
|
820
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#26ad80d7-8c46-41b5-9208-386f439a8b87
|
|
821
|
+
|
|
702
822
|
:param str symbol: unified symbol of the market to fetch the order book for
|
|
703
823
|
:param int [limit]: the maximum amount of order book entries to return(default 100, max 200)
|
|
704
824
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -761,7 +881,9 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
761
881
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
|
762
882
|
"""
|
|
763
883
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
764
|
-
|
|
884
|
+
|
|
885
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
|
|
886
|
+
|
|
765
887
|
:param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
766
888
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
767
889
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
@@ -837,7 +959,9 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
837
959
|
async def fetch_bids_asks(self, symbols: Strings = None, params={}):
|
|
838
960
|
"""
|
|
839
961
|
fetches the bid and ask price and volume for multiple markets
|
|
840
|
-
|
|
962
|
+
|
|
963
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
|
|
964
|
+
|
|
841
965
|
:param str[] [symbols]: unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
|
|
842
966
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
843
967
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
@@ -903,7 +1027,9 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
903
1027
|
async def fetch_balance(self, params={}) -> Balances:
|
|
904
1028
|
"""
|
|
905
1029
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
|
906
|
-
|
|
1030
|
+
|
|
1031
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#741a1dcc-7307-40d0-acca-28d003d1506a
|
|
1032
|
+
|
|
907
1033
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
908
1034
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
|
909
1035
|
"""
|
|
@@ -948,16 +1074,18 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
948
1074
|
result[code] = account
|
|
949
1075
|
return self.safe_balance(result)
|
|
950
1076
|
|
|
951
|
-
async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
1077
|
+
async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[LedgerEntry]:
|
|
952
1078
|
"""
|
|
953
|
-
fetch the history of changes, actions done by the user or operations that altered balance of the user
|
|
954
|
-
|
|
955
|
-
|
|
1079
|
+
fetch the history of changes, actions done by the user or operations that altered the balance of the user
|
|
1080
|
+
|
|
1081
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#4e7831f7-a0e7-4c3e-9336-1d0e5dcb15cf
|
|
1082
|
+
|
|
1083
|
+
:param str [code]: unified currency code, default is None
|
|
956
1084
|
:param int [since]: timestamp in ms of the earliest ledger entry, default is None
|
|
957
|
-
:param int [limit]: max number of ledger
|
|
1085
|
+
:param int [limit]: max number of ledger entries to return(default 200, max 500)
|
|
958
1086
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
959
1087
|
:param int [params.until]: the latest time in ms to fetch entries for
|
|
960
|
-
:returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger
|
|
1088
|
+
:returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
|
|
961
1089
|
"""
|
|
962
1090
|
await self.load_markets()
|
|
963
1091
|
request: dict = {}
|
|
@@ -1070,7 +1198,7 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
1070
1198
|
ledger.append(rawLedgerEntry)
|
|
1071
1199
|
return self.parse_ledger(ledger, currency, since, limit)
|
|
1072
1200
|
|
|
1073
|
-
def parse_ledger_entry(self, item: dict, currency: Currency = None):
|
|
1201
|
+
def parse_ledger_entry(self, item: dict, currency: Currency = None) -> LedgerEntry:
|
|
1074
1202
|
datetime = self.safe_string(item, 'timestamp')
|
|
1075
1203
|
currencyId = self.safe_string(item, 'currencyId')
|
|
1076
1204
|
item = self.omit(item, 'currencyId')
|
|
@@ -1135,12 +1263,14 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
1135
1263
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
|
1136
1264
|
"""
|
|
1137
1265
|
create a trade order
|
|
1138
|
-
|
|
1266
|
+
|
|
1267
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#a4895a1d-3f50-40ae-8231-6962ef06c771
|
|
1268
|
+
|
|
1139
1269
|
:param str symbol: unified symbol of the market to create an order in
|
|
1140
1270
|
:param str type: 'market' or 'limit'
|
|
1141
1271
|
:param str side: 'buy' or 'sell'
|
|
1142
1272
|
:param float amount: how much of currency you want to trade in units of base currency
|
|
1143
|
-
:param float [price]: the price at which the order is to be
|
|
1273
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
|
1144
1274
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1145
1275
|
:param float [params.cost]: the quote quantity that can be used alternative for the amount in market orders
|
|
1146
1276
|
:param str [params.timeInForce]: "GTC", "IOC", "FOK", "GTD"
|
|
@@ -1158,32 +1288,32 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
1158
1288
|
request: dict = {
|
|
1159
1289
|
}
|
|
1160
1290
|
request['orderType'] = type
|
|
1161
|
-
|
|
1291
|
+
formattedAmount = None
|
|
1162
1292
|
if amount is not None:
|
|
1163
|
-
|
|
1293
|
+
formattedAmount = self.amount_to_precision(symbol, amount)
|
|
1164
1294
|
cost = self.safe_value(params, 'cost')
|
|
1165
1295
|
params = self.omit(params, 'cost')
|
|
1166
1296
|
if type == 'limit':
|
|
1167
1297
|
if (price is None) and (cost is None):
|
|
1168
1298
|
raise ArgumentsRequired(self.id + ' createOrder() requires a price or params.cost argument for a ' + type + ' order')
|
|
1169
1299
|
elif (price is not None) and (amount is not None):
|
|
1170
|
-
costString = Precise.string_mul(self.number_to_string(price), self.number_to_string(
|
|
1300
|
+
costString = Precise.string_mul(self.number_to_string(price), self.number_to_string(formattedAmount))
|
|
1171
1301
|
cost = self.parse_to_numeric(costString)
|
|
1172
1302
|
precisedCost = None
|
|
1173
1303
|
if cost is not None:
|
|
1174
1304
|
precisedCost = self.cost_to_precision(symbol, cost)
|
|
1175
1305
|
if side == 'sell':
|
|
1176
|
-
request = self.handle_create_order_side(market['baseId'], market['quoteId'],
|
|
1306
|
+
request = self.handle_create_order_side(market['baseId'], market['quoteId'], formattedAmount, precisedCost, request)
|
|
1177
1307
|
elif side == 'buy':
|
|
1178
|
-
request = self.handle_create_order_side(market['quoteId'], market['baseId'], precisedCost,
|
|
1308
|
+
request = self.handle_create_order_side(market['quoteId'], market['baseId'], precisedCost, formattedAmount, request)
|
|
1179
1309
|
timeInForce = self.safe_value(params, 'timeInForce')
|
|
1180
1310
|
if timeInForce is not None:
|
|
1181
1311
|
params = self.omit(params, 'timeInForce')
|
|
1182
1312
|
request['timeInForce'] = self.encode_order_time_in_force(timeInForce)
|
|
1183
|
-
|
|
1184
|
-
if
|
|
1313
|
+
triggerPrice = self.safe_string_2(params, 'triggerPrice', 'stopPrice')
|
|
1314
|
+
if triggerPrice is not None:
|
|
1185
1315
|
params = self.omit(params, ['triggerPrice'])
|
|
1186
|
-
request['stopPrice'] = self.price_to_precision(symbol,
|
|
1316
|
+
request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
|
|
1187
1317
|
userData = self.safe_value(params, 'userData', {})
|
|
1188
1318
|
comment = self.safe_string_2(params, 'clientOrderId', 'comment')
|
|
1189
1319
|
if comment is not None:
|
|
@@ -1251,8 +1381,10 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
1251
1381
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
|
1252
1382
|
"""
|
|
1253
1383
|
cancels an open order
|
|
1254
|
-
|
|
1255
|
-
|
|
1384
|
+
|
|
1385
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#eaea86da-16ca-4c56-9f00-5b1cb2ad89f8
|
|
1386
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
|
|
1387
|
+
|
|
1256
1388
|
:param str id: order id
|
|
1257
1389
|
:param str symbol: not used by coinmetro cancelOrder()
|
|
1258
1390
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -1296,7 +1428,9 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
1296
1428
|
async def close_position(self, symbol: str, side: OrderSide = None, params={}):
|
|
1297
1429
|
"""
|
|
1298
1430
|
closes an open position
|
|
1299
|
-
|
|
1431
|
+
|
|
1432
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
|
|
1433
|
+
|
|
1300
1434
|
:param str symbol: not used by coinmetro closePosition()
|
|
1301
1435
|
:param str [side]: not used by coinmetro closePosition()
|
|
1302
1436
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -1346,7 +1480,9 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
1346
1480
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
1347
1481
|
"""
|
|
1348
1482
|
fetch all unfilled currently open orders
|
|
1349
|
-
|
|
1483
|
+
|
|
1484
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#518afd7a-4338-439c-a651-d4fdaa964138
|
|
1485
|
+
|
|
1350
1486
|
:param str symbol: unified market symbol
|
|
1351
1487
|
:param int [since]: the earliest time in ms to fetch open orders for
|
|
1352
1488
|
:param int [limit]: the maximum number of open order structures to retrieve
|
|
@@ -1367,7 +1503,9 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
1367
1503
|
async def fetch_canceled_and_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
1368
1504
|
"""
|
|
1369
1505
|
fetches information on multiple canceled and closed orders made by the user
|
|
1370
|
-
|
|
1506
|
+
|
|
1507
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
|
|
1508
|
+
|
|
1371
1509
|
:param str symbol: unified market symbol of the market orders were made in
|
|
1372
1510
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
1373
1511
|
:param int [limit]: the maximum number of order structures to retrieve
|
|
@@ -1387,7 +1525,9 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
1387
1525
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
|
1388
1526
|
"""
|
|
1389
1527
|
fetches information on an order made by the user
|
|
1390
|
-
|
|
1528
|
+
|
|
1529
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#95bbed87-db1c-47a7-a03e-aa247e91d5a6
|
|
1530
|
+
|
|
1391
1531
|
:param int|str id: order id
|
|
1392
1532
|
:param str symbol: not used by coinmetro fetchOrder()
|
|
1393
1533
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -1674,7 +1814,6 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
1674
1814
|
}
|
|
1675
1815
|
trades = self.safe_value(order, 'fills', [])
|
|
1676
1816
|
userData = self.safe_value(order, 'userData', {})
|
|
1677
|
-
triggerPrice = self.safe_string(order, 'stopPrice')
|
|
1678
1817
|
clientOrderId = self.safe_string(userData, 'comment')
|
|
1679
1818
|
takeProfitPrice = self.safe_string(userData, 'takeProfit')
|
|
1680
1819
|
stopLossPrice = self.safe_string(userData, 'stopLoss')
|
|
@@ -1690,7 +1829,7 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
1690
1829
|
'timeInForce': self.parse_order_time_in_force(self.safe_integer(order, 'timeInForce')),
|
|
1691
1830
|
'side': side,
|
|
1692
1831
|
'price': price,
|
|
1693
|
-
'triggerPrice':
|
|
1832
|
+
'triggerPrice': self.safe_string(order, 'stopPrice'),
|
|
1694
1833
|
'takeProfitPrice': takeProfitPrice,
|
|
1695
1834
|
'stopLossPrice': stopLossPrice,
|
|
1696
1835
|
'average': None,
|
|
@@ -1717,7 +1856,9 @@ class coinmetro(Exchange, ImplicitAPI):
|
|
|
1717
1856
|
async def borrow_cross_margin(self, code: str, amount: float, params={}):
|
|
1718
1857
|
"""
|
|
1719
1858
|
create a loan to borrow margin
|
|
1720
|
-
|
|
1859
|
+
|
|
1860
|
+
https://documenter.getpostman.com/view/3653795/SVfWN6KS#5b90b3b9-e5db-4d07-ac9d-d680a06fd110
|
|
1861
|
+
|
|
1721
1862
|
:param str code: unified currency code of the currency to borrow
|
|
1722
1863
|
:param float amount: the amount to borrow
|
|
1723
1864
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|