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