ccxt-ir 4.3.46.0.3__py2.py3-none-any.whl → 4.5.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccxt/__init__.py +39 -35
- ccxt/abantether.py +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 +7 -7
- ccxt/alpaca.py +828 -51
- ccxt/apex.py +1875 -0
- ccxt/arzinja.py +7 -7
- ccxt/arzplus.py +9 -9
- ccxt/ascendex.py +501 -306
- ccxt/async_support/__init__.py +39 -35
- ccxt/async_support/abantether.py +8 -8
- ccxt/async_support/afratether.py +9 -9
- ccxt/async_support/alpaca.py +828 -51
- ccxt/async_support/apex.py +1875 -0
- ccxt/async_support/arzinja.py +10 -10
- ccxt/async_support/arzplus.py +12 -12
- ccxt/async_support/ascendex.py +502 -306
- ccxt/async_support/base/exchange.py +303 -89
- ccxt/async_support/base/ws/cache.py +9 -3
- ccxt/async_support/base/ws/client.py +173 -38
- ccxt/async_support/base/ws/future.py +25 -37
- ccxt/async_support/bequant.py +5 -3
- ccxt/async_support/bigone.py +279 -144
- ccxt/async_support/binance.py +2347 -1158
- ccxt/async_support/binancecoinm.py +9 -3
- ccxt/async_support/binanceus.py +17 -3
- ccxt/async_support/binanceusdm.py +9 -4
- ccxt/async_support/bingx.py +2962 -920
- ccxt/async_support/bit2c.py +147 -27
- ccxt/async_support/bitbank.py +151 -23
- ccxt/async_support/bitbns.py +104 -30
- ccxt/async_support/bitfinex.py +3291 -1113
- ccxt/async_support/bitflyer.py +202 -27
- ccxt/async_support/bitget.py +3683 -1538
- ccxt/async_support/bithumb.py +195 -38
- ccxt/async_support/bitimen.py +12 -12
- ccxt/async_support/bitir.py +38 -38
- ccxt/async_support/bitmart.py +1288 -350
- ccxt/async_support/bitmex.py +260 -75
- ccxt/async_support/bitopro.py +262 -62
- ccxt/async_support/bitpin.py +17 -16
- ccxt/async_support/bitrue.py +459 -290
- ccxt/async_support/bitso.py +199 -54
- ccxt/async_support/bitstamp.py +230 -96
- ccxt/async_support/bitteam.py +167 -25
- ccxt/async_support/{huobijp.py → bittrade.py} +158 -30
- ccxt/async_support/bitvavo.py +213 -49
- ccxt/async_support/blockchaincom.py +160 -46
- ccxt/async_support/blofin.py +502 -120
- ccxt/async_support/btcalpha.py +169 -31
- ccxt/async_support/btcbox.py +292 -23
- ccxt/async_support/btcmarkets.py +211 -58
- ccxt/async_support/btcturk.py +161 -38
- ccxt/async_support/bybit.py +1775 -1030
- ccxt/async_support/cex.py +1440 -1303
- ccxt/async_support/coinbase.py +724 -212
- ccxt/async_support/coinbaseadvanced.py +2 -1
- ccxt/async_support/coinbaseexchange.py +388 -89
- ccxt/async_support/coinbaseinternational.py +412 -57
- ccxt/async_support/coincatch.py +177 -78
- ccxt/async_support/coincheck.py +135 -19
- ccxt/async_support/coinex.py +606 -232
- ccxt/async_support/coinmate.py +189 -63
- ccxt/async_support/coinmetro.py +195 -54
- ccxt/async_support/coinone.py +158 -51
- ccxt/async_support/coinsph.py +336 -61
- ccxt/async_support/coinspot.py +151 -52
- ccxt/async_support/cryptocom.py +661 -111
- ccxt/async_support/cryptomus.py +1137 -0
- ccxt/async_support/defx.py +2071 -0
- ccxt/async_support/delta.py +299 -99
- ccxt/async_support/deribit.py +348 -126
- ccxt/async_support/derive.py +2572 -0
- ccxt/async_support/digifinex.py +430 -214
- ccxt/async_support/ellipx.py +2029 -0
- ccxt/async_support/eterex.py +10 -10
- ccxt/async_support/excoino.py +31 -31
- ccxt/async_support/exir.py +14 -14
- ccxt/async_support/exmo.py +344 -131
- ccxt/async_support/exnovin.py +10 -10
- ccxt/async_support/farhadexchange.py +12 -12
- ccxt/async_support/fmfwio.py +2 -1
- ccxt/async_support/foxbit.py +1935 -0
- ccxt/async_support/gate.py +1351 -529
- ccxt/async_support/gateio.py +2 -1
- ccxt/async_support/gemini.py +144 -39
- ccxt/async_support/hashkey.py +152 -109
- ccxt/async_support/hibachi.py +2080 -0
- ccxt/async_support/hitbtc.py +395 -167
- ccxt/async_support/hitobit.py +12 -12
- ccxt/async_support/hollaex.py +307 -119
- ccxt/async_support/htx.py +851 -383
- ccxt/async_support/huobi.py +2 -1
- ccxt/async_support/hyperliquid.py +1848 -536
- ccxt/async_support/independentreserve.py +288 -15
- ccxt/async_support/indodax.py +190 -33
- ccxt/async_support/jibitex.py +12 -12
- ccxt/async_support/kraken.py +795 -351
- ccxt/async_support/krakenfutures.py +214 -62
- ccxt/async_support/kucoin.py +715 -396
- ccxt/async_support/kucoinfutures.py +652 -89
- ccxt/async_support/latoken.py +217 -113
- ccxt/async_support/lbank.py +425 -97
- ccxt/async_support/luno.py +382 -35
- ccxt/async_support/mercado.py +113 -6
- ccxt/async_support/mexc.py +874 -437
- ccxt/async_support/modetrade.py +2818 -0
- ccxt/async_support/myokx.py +54 -0
- ccxt/async_support/ndax.py +221 -64
- ccxt/async_support/nobitex.py +31 -37
- ccxt/async_support/novadax.py +190 -34
- ccxt/async_support/oceanex.py +217 -28
- ccxt/async_support/okcoin.py +253 -145
- ccxt/async_support/okexchange.py +11 -11
- ccxt/async_support/okx.py +1088 -351
- ccxt/async_support/okxus.py +54 -0
- ccxt/async_support/ompfinex.py +25 -24
- ccxt/async_support/onetrading.py +213 -392
- ccxt/async_support/oxfun.py +245 -166
- ccxt/async_support/p2b.py +151 -29
- ccxt/async_support/paradex.py +562 -49
- ccxt/async_support/paymium.py +82 -19
- ccxt/async_support/phemex.py +713 -172
- ccxt/async_support/poloniex.py +1602 -283
- ccxt/async_support/probit.py +224 -95
- ccxt/async_support/ramzinex.py +30 -27
- ccxt/async_support/sarmayex.py +9 -9
- ccxt/async_support/sarrafex.py +13 -13
- ccxt/async_support/tabdeal.py +14 -13
- ccxt/async_support/tetherland.py +9 -9
- ccxt/async_support/timex.py +210 -51
- ccxt/async_support/tokocrypto.py +167 -47
- ccxt/async_support/tradeogre.py +266 -31
- ccxt/async_support/twox.py +9 -9
- ccxt/async_support/ubitex.py +12 -12
- ccxt/async_support/upbit.py +568 -165
- ccxt/async_support/vertex.py +160 -32
- ccxt/async_support/wallex.py +12 -12
- ccxt/async_support/wavesexchange.py +165 -30
- ccxt/async_support/whitebit.py +975 -127
- ccxt/async_support/woo.py +1918 -1016
- ccxt/async_support/woofipro.py +433 -141
- ccxt/async_support/xt.py +649 -193
- ccxt/async_support/yobit.py +195 -70
- ccxt/async_support/zaif.py +91 -15
- ccxt/async_support/zonda.py +151 -36
- ccxt/base/decimal_to_precision.py +14 -10
- ccxt/base/errors.py +49 -18
- ccxt/base/exchange.py +1556 -450
- ccxt/base/precise.py +10 -0
- ccxt/base/types.py +114 -6
- ccxt/bequant.py +5 -3
- ccxt/bigone.py +279 -144
- ccxt/binance.py +2347 -1158
- ccxt/binancecoinm.py +9 -3
- ccxt/binanceus.py +17 -3
- ccxt/binanceusdm.py +9 -4
- ccxt/bingx.py +2962 -920
- ccxt/bit2c.py +147 -27
- ccxt/bitbank.py +151 -23
- ccxt/bitbns.py +104 -30
- ccxt/bitfinex.py +3290 -1113
- ccxt/bitflyer.py +202 -27
- ccxt/bitget.py +3683 -1538
- ccxt/bithumb.py +194 -38
- ccxt/bitimen.py +9 -9
- ccxt/bitir.py +35 -35
- ccxt/bitmart.py +1288 -350
- ccxt/bitmex.py +260 -75
- ccxt/bitopro.py +262 -62
- ccxt/bitpin.py +15 -14
- ccxt/bitrue.py +459 -290
- ccxt/bitso.py +199 -54
- ccxt/bitstamp.py +230 -96
- ccxt/bitteam.py +167 -25
- ccxt/{huobijp.py → bittrade.py} +158 -30
- ccxt/bitvavo.py +213 -49
- ccxt/blockchaincom.py +160 -46
- ccxt/blofin.py +502 -120
- ccxt/btcalpha.py +169 -31
- ccxt/btcbox.py +291 -23
- ccxt/btcmarkets.py +211 -58
- ccxt/btcturk.py +161 -38
- ccxt/bybit.py +1775 -1030
- ccxt/cex.py +1439 -1303
- ccxt/coinbase.py +724 -212
- ccxt/coinbaseadvanced.py +2 -1
- ccxt/coinbaseexchange.py +388 -89
- ccxt/coinbaseinternational.py +412 -57
- ccxt/coincatch.py +177 -78
- ccxt/coincheck.py +135 -19
- ccxt/coinex.py +606 -232
- ccxt/coinmate.py +189 -63
- ccxt/coinmetro.py +194 -54
- ccxt/coinone.py +158 -51
- ccxt/coinsph.py +336 -61
- ccxt/coinspot.py +151 -52
- ccxt/cryptocom.py +661 -111
- ccxt/cryptomus.py +1137 -0
- ccxt/defx.py +2070 -0
- ccxt/delta.py +299 -99
- ccxt/deribit.py +348 -126
- ccxt/derive.py +2571 -0
- ccxt/digifinex.py +430 -214
- ccxt/ellipx.py +2029 -0
- ccxt/eterex.py +7 -7
- ccxt/excoino.py +29 -29
- ccxt/exir.py +11 -11
- ccxt/exmo.py +343 -131
- ccxt/exnovin.py +8 -8
- ccxt/farhadexchange.py +10 -10
- ccxt/fmfwio.py +2 -1
- ccxt/foxbit.py +1935 -0
- ccxt/gate.py +1351 -529
- ccxt/gateio.py +2 -1
- ccxt/gemini.py +144 -39
- ccxt/hashkey.py +152 -109
- ccxt/hibachi.py +2079 -0
- ccxt/hitbtc.py +395 -167
- ccxt/hitobit.py +9 -9
- ccxt/hollaex.py +307 -119
- ccxt/htx.py +851 -383
- ccxt/huobi.py +2 -1
- ccxt/hyperliquid.py +1848 -536
- ccxt/independentreserve.py +287 -15
- ccxt/indodax.py +190 -33
- ccxt/jibitex.py +9 -9
- ccxt/kraken.py +794 -351
- ccxt/krakenfutures.py +214 -62
- ccxt/kucoin.py +715 -396
- ccxt/kucoinfutures.py +652 -89
- ccxt/latoken.py +217 -113
- ccxt/lbank.py +425 -97
- ccxt/luno.py +382 -35
- ccxt/mercado.py +113 -6
- ccxt/mexc.py +873 -437
- ccxt/modetrade.py +2818 -0
- ccxt/myokx.py +54 -0
- ccxt/ndax.py +221 -64
- ccxt/nobitex.py +29 -35
- ccxt/novadax.py +190 -34
- ccxt/oceanex.py +217 -28
- ccxt/okcoin.py +253 -145
- ccxt/okexchange.py +9 -9
- ccxt/okx.py +1088 -351
- ccxt/okxus.py +54 -0
- ccxt/ompfinex.py +22 -21
- ccxt/onetrading.py +213 -392
- ccxt/oxfun.py +245 -166
- ccxt/p2b.py +151 -29
- ccxt/paradex.py +562 -49
- ccxt/paymium.py +82 -19
- ccxt/phemex.py +712 -172
- ccxt/poloniex.py +1601 -283
- ccxt/pro/__init__.py +76 -17
- ccxt/pro/alpaca.py +21 -6
- ccxt/pro/apex.py +984 -0
- ccxt/pro/ascendex.py +58 -10
- ccxt/pro/bequant.py +6 -1
- ccxt/pro/binance.py +728 -156
- ccxt/pro/binancecoinm.py +6 -2
- ccxt/pro/binanceus.py +8 -4
- ccxt/pro/binanceusdm.py +7 -2
- ccxt/pro/bingx.py +333 -142
- ccxt/pro/bitfinex.py +727 -262
- ccxt/pro/bitget.py +570 -79
- ccxt/pro/bithumb.py +20 -6
- ccxt/pro/bitmart.py +216 -87
- ccxt/pro/bitmex.py +47 -9
- ccxt/pro/bitopro.py +26 -14
- ccxt/pro/bitrue.py +22 -22
- ccxt/pro/bitstamp.py +54 -21
- ccxt/pro/{huobijp.py → bittrade.py} +7 -6
- ccxt/pro/bitvavo.py +191 -67
- ccxt/pro/blockchaincom.py +21 -8
- ccxt/pro/blofin.py +9 -1
- ccxt/pro/bybit.py +632 -245
- ccxt/pro/cex.py +59 -24
- ccxt/pro/coinbase.py +102 -73
- ccxt/pro/coinbaseadvanced.py +2 -1
- ccxt/pro/coinbaseexchange.py +8 -8
- ccxt/pro/coinbaseinternational.py +181 -25
- ccxt/pro/coincatch.py +6 -7
- ccxt/pro/coincheck.py +11 -6
- ccxt/pro/coinex.py +967 -665
- ccxt/pro/coinone.py +16 -9
- ccxt/pro/cryptocom.py +448 -45
- ccxt/pro/defx.py +831 -0
- ccxt/pro/deribit.py +150 -14
- ccxt/pro/derive.py +704 -0
- ccxt/pro/exmo.py +239 -6
- ccxt/pro/gate.py +623 -65
- ccxt/pro/gateio.py +2 -1
- ccxt/pro/gemini.py +27 -11
- ccxt/pro/hashkey.py +2 -2
- ccxt/pro/hitbtc.py +196 -91
- ccxt/pro/hollaex.py +23 -7
- ccxt/pro/htx.py +51 -14
- ccxt/pro/huobi.py +2 -1
- ccxt/pro/hyperliquid.py +591 -27
- ccxt/pro/independentreserve.py +9 -6
- ccxt/pro/kraken.py +640 -320
- ccxt/pro/krakenfutures.py +62 -35
- ccxt/pro/kucoin.py +267 -46
- ccxt/pro/kucoinfutures.py +165 -21
- ccxt/pro/lbank.py +102 -21
- ccxt/pro/luno.py +12 -8
- ccxt/pro/mexc.py +877 -111
- ccxt/pro/modetrade.py +1271 -0
- ccxt/pro/myokx.py +38 -0
- ccxt/pro/ndax.py +15 -2
- ccxt/pro/okcoin.py +23 -4
- ccxt/pro/okx.py +573 -98
- ccxt/pro/okxus.py +38 -0
- ccxt/pro/onetrading.py +30 -13
- ccxt/pro/oxfun.py +131 -27
- ccxt/pro/p2b.py +88 -22
- ccxt/pro/paradex.py +3 -3
- ccxt/pro/phemex.py +75 -21
- ccxt/pro/poloniex.py +124 -41
- ccxt/pro/probit.py +87 -80
- ccxt/pro/tradeogre.py +272 -0
- ccxt/pro/upbit.py +152 -12
- ccxt/pro/vertex.py +8 -3
- ccxt/pro/whitebit.py +58 -5
- ccxt/pro/woo.py +228 -37
- ccxt/pro/woofipro.py +106 -18
- ccxt/pro/xt.py +111 -5
- ccxt/probit.py +224 -95
- ccxt/protobuf/__init__.py +0 -0
- ccxt/protobuf/mexc/PrivateAccountV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PrivateDealsV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PrivateOrdersV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PublicAggreBookTickerV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PublicAggreDealsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicAggreDepthsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicBookTickerBatchV3Api_pb2.py +38 -0
- ccxt/protobuf/mexc/PublicBookTickerV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PublicDealsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
- ccxt/protobuf/mexc/PublicIncreaseDepthsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicLimitDepthsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicMiniTickerV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PublicMiniTickersV3Api_pb2.py +38 -0
- ccxt/protobuf/mexc/PublicSpotKlineV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PushDataV3ApiWrapper_pb2.py +52 -0
- ccxt/protobuf/mexc/__init__.py +0 -0
- ccxt/ramzinex.py +28 -25
- ccxt/sarmayex.py +7 -7
- ccxt/sarrafex.py +10 -10
- ccxt/static_dependencies/__init__.py +1 -1
- ccxt/static_dependencies/lark/py.typed +0 -0
- ccxt/static_dependencies/marshmallow/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- ccxt/tabdeal.py +12 -11
- ccxt/test/tests_async.py +261 -57
- ccxt/test/tests_helpers.py +1 -3
- ccxt/test/tests_init.py +4 -3
- ccxt/test/tests_sync.py +261 -57
- ccxt/tetherland.py +7 -7
- ccxt/timex.py +210 -51
- ccxt/tokocrypto.py +167 -47
- ccxt/tradeogre.py +266 -31
- ccxt/twox.py +7 -7
- ccxt/ubitex.py +9 -9
- ccxt/upbit.py +568 -165
- ccxt/vertex.py +160 -32
- ccxt/wallex.py +9 -9
- ccxt/wavesexchange.py +165 -30
- ccxt/whitebit.py +975 -127
- ccxt/woo.py +1917 -1016
- ccxt/woofipro.py +432 -141
- ccxt/xt.py +649 -193
- ccxt/yobit.py +194 -70
- ccxt/zaif.py +91 -15
- ccxt/zonda.py +151 -36
- {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/METADATA +225 -73
- ccxt_ir-4.5.0.dist-info/RECORD +743 -0
- {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.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.0.dist-info/licenses}/LICENSE.txt +0 -0
- {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
|
@@ -6,9 +6,8 @@
|
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.coinbaseinternational import ImplicitAPI
|
|
8
8
|
import hashlib
|
|
9
|
-
from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Order, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
|
9
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Int, MarginModification, Market, Order, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
|
10
10
|
from typing import List
|
|
11
|
-
from typing import Any
|
|
12
11
|
from ccxt.base.errors import ExchangeError
|
|
13
12
|
from ccxt.base.errors import AuthenticationError
|
|
14
13
|
from ccxt.base.errors import PermissionDenied
|
|
@@ -22,12 +21,12 @@ from ccxt.base.precise import Precise
|
|
|
22
21
|
|
|
23
22
|
class coinbaseinternational(Exchange, ImplicitAPI):
|
|
24
23
|
|
|
25
|
-
def describe(self):
|
|
24
|
+
def describe(self) -> Any:
|
|
26
25
|
return self.deep_extend(super(coinbaseinternational, self).describe(), {
|
|
27
26
|
'id': 'coinbaseinternational',
|
|
28
27
|
'name': 'Coinbase International',
|
|
29
28
|
'countries': ['US'],
|
|
30
|
-
'certified':
|
|
29
|
+
'certified': False,
|
|
31
30
|
'pro': True,
|
|
32
31
|
'rateLimit': 100, # 10 requests per second
|
|
33
32
|
'version': 'v1',
|
|
@@ -74,7 +73,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
74
73
|
'fetchCrossBorrowRates': False,
|
|
75
74
|
'fetchCurrencies': True,
|
|
76
75
|
'fetchDeposits': True,
|
|
77
|
-
'fetchFundingHistory':
|
|
76
|
+
'fetchFundingHistory': True,
|
|
78
77
|
'fetchFundingRate': False,
|
|
79
78
|
'fetchFundingRateHistory': True,
|
|
80
79
|
'fetchFundingRates': False,
|
|
@@ -92,7 +91,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
92
91
|
'fetchMyBuys': True,
|
|
93
92
|
'fetchMySells': True,
|
|
94
93
|
'fetchMyTrades': True,
|
|
95
|
-
'fetchOHLCV':
|
|
94
|
+
'fetchOHLCV': True,
|
|
96
95
|
'fetchOpenInterestHistory': False,
|
|
97
96
|
'fetchOpenOrders': True,
|
|
98
97
|
'fetchOrder': True,
|
|
@@ -111,6 +110,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
111
110
|
'fetchTrades': False,
|
|
112
111
|
'fetchTradingFee': False,
|
|
113
112
|
'fetchTradingFees': False,
|
|
113
|
+
'fetchTransfers': True,
|
|
114
114
|
'fetchWithdrawals': True,
|
|
115
115
|
'reduceMargin': False,
|
|
116
116
|
'sandbox': True,
|
|
@@ -153,7 +153,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
153
153
|
'instruments/{instrument}',
|
|
154
154
|
'instruments/{instrument}/quote',
|
|
155
155
|
'instruments/{instrument}/funding',
|
|
156
|
-
'',
|
|
156
|
+
'instruments/{instrument}/candles',
|
|
157
157
|
],
|
|
158
158
|
},
|
|
159
159
|
'private': {
|
|
@@ -263,6 +263,75 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
263
263
|
'bitcoin': 'BTC',
|
|
264
264
|
},
|
|
265
265
|
},
|
|
266
|
+
'features': {
|
|
267
|
+
'default': {
|
|
268
|
+
'sandbox': True,
|
|
269
|
+
'createOrder': {
|
|
270
|
+
'marginMode': False,
|
|
271
|
+
'triggerPrice': True,
|
|
272
|
+
'triggerPriceType': None,
|
|
273
|
+
'triggerDirection': True,
|
|
274
|
+
'stopLossPrice': False, # todo implementation
|
|
275
|
+
'takeProfitPrice': False, # todo implementation
|
|
276
|
+
'attachedStopLossTakeProfit': None,
|
|
277
|
+
'timeInForce': {
|
|
278
|
+
'IOC': True,
|
|
279
|
+
'FOK': True,
|
|
280
|
+
'PO': True,
|
|
281
|
+
'GTD': True,
|
|
282
|
+
'GTC': True, # has 30 days max
|
|
283
|
+
},
|
|
284
|
+
'hedged': False,
|
|
285
|
+
'trailing': False,
|
|
286
|
+
'leverage': False,
|
|
287
|
+
'marketBuyByCost': False,
|
|
288
|
+
'marketBuyRequiresPrice': True,
|
|
289
|
+
'selfTradePrevention': True, # todo: implement
|
|
290
|
+
'iceberg': False,
|
|
291
|
+
},
|
|
292
|
+
'createOrders': None,
|
|
293
|
+
'fetchMyTrades': {
|
|
294
|
+
'marginMode': False,
|
|
295
|
+
'limit': 100,
|
|
296
|
+
'daysBack': None,
|
|
297
|
+
'untilDays': 10000,
|
|
298
|
+
'symbolRequired': False,
|
|
299
|
+
},
|
|
300
|
+
'fetchOrder': {
|
|
301
|
+
'marginMode': False,
|
|
302
|
+
'trigger': False,
|
|
303
|
+
'trailing': False,
|
|
304
|
+
'symbolRequired': False,
|
|
305
|
+
},
|
|
306
|
+
'fetchOpenOrders': {
|
|
307
|
+
'marginMode': False,
|
|
308
|
+
'limit': 100,
|
|
309
|
+
'trigger': False,
|
|
310
|
+
'trailing': False,
|
|
311
|
+
'symbolRequired': False,
|
|
312
|
+
},
|
|
313
|
+
'fetchOrders': None,
|
|
314
|
+
'fetchClosedOrders': None,
|
|
315
|
+
'fetchOHLCV': {
|
|
316
|
+
'limit': 300,
|
|
317
|
+
},
|
|
318
|
+
},
|
|
319
|
+
'spot': {
|
|
320
|
+
'extends': 'default',
|
|
321
|
+
},
|
|
322
|
+
'swap': {
|
|
323
|
+
'linear': {
|
|
324
|
+
'extends': 'default',
|
|
325
|
+
},
|
|
326
|
+
'inverse': {
|
|
327
|
+
'extends': 'default',
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
'future': {
|
|
331
|
+
'linear': None,
|
|
332
|
+
'inverse': None,
|
|
333
|
+
},
|
|
334
|
+
},
|
|
266
335
|
})
|
|
267
336
|
|
|
268
337
|
async def handle_portfolio_and_params(self, methodName: str, params={}):
|
|
@@ -303,7 +372,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
303
372
|
async def fetch_accounts(self, params={}):
|
|
304
373
|
"""
|
|
305
374
|
fetch all the accounts associated with a profile
|
|
306
|
-
|
|
375
|
+
|
|
376
|
+
https://docs.cloud.coinbase.com/intx/reference/getportfolios
|
|
377
|
+
|
|
307
378
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
308
379
|
:returns dict: a dictionary of `account structures <https://docs.ccxt.com/#/?id=account-structure>` indexed by the account type
|
|
309
380
|
"""
|
|
@@ -351,15 +422,89 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
351
422
|
'info': account,
|
|
352
423
|
}
|
|
353
424
|
|
|
425
|
+
async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = 100, params={}) -> List[list]:
|
|
426
|
+
"""
|
|
427
|
+
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
428
|
+
|
|
429
|
+
https://docs.cdp.coinbase.com/intx/reference/getinstrumentcandles
|
|
430
|
+
|
|
431
|
+
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
|
432
|
+
:param str timeframe: the length of time each candle represents
|
|
433
|
+
:param int [since]: timestamp in ms of the earliest candle to fetch
|
|
434
|
+
:param int [limit]: the maximum amount of candles to fetch, default 100 max 10000
|
|
435
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
436
|
+
:returns int[][]: A list of candles ordered, open, high, low, close, volume
|
|
437
|
+
:param int [params.until]: timestamp in ms of the latest candle to fetch
|
|
438
|
+
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
439
|
+
"""
|
|
440
|
+
await self.load_markets()
|
|
441
|
+
paginate = False
|
|
442
|
+
paginate, params = self.handle_option_and_params(params, 'fetchOHLCV', 'paginate')
|
|
443
|
+
if paginate:
|
|
444
|
+
return await self.fetch_paginated_call_deterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 10000)
|
|
445
|
+
market = self.market(symbol)
|
|
446
|
+
request: dict = {
|
|
447
|
+
'instrument': market['id'],
|
|
448
|
+
'granularity': self.safe_string(self.timeframes, timeframe, timeframe),
|
|
449
|
+
}
|
|
450
|
+
if since is not None:
|
|
451
|
+
request['start'] = self.iso8601(since)
|
|
452
|
+
else:
|
|
453
|
+
raise ArgumentsRequired(self.id + ' fetchOHLCV() requires a since argument')
|
|
454
|
+
unitl = self.safe_integer(params, 'until')
|
|
455
|
+
if unitl is not None:
|
|
456
|
+
params = self.omit(params, 'until')
|
|
457
|
+
request['end'] = self.iso8601(unitl)
|
|
458
|
+
response = await self.v1PublicGetInstrumentsInstrumentCandles(self.extend(request, params))
|
|
459
|
+
#
|
|
460
|
+
# {
|
|
461
|
+
# "aggregations": [
|
|
462
|
+
# {
|
|
463
|
+
# "start": "2024-04-23T00:00:00Z",
|
|
464
|
+
# "open": "62884.4",
|
|
465
|
+
# "high": "64710.6",
|
|
466
|
+
# "low": "62884.4",
|
|
467
|
+
# "close": "63508.4",
|
|
468
|
+
# "volume": "3253.9983"
|
|
469
|
+
# }
|
|
470
|
+
# ]
|
|
471
|
+
# }
|
|
472
|
+
#
|
|
473
|
+
candles = self.safe_list(response, 'aggregations', [])
|
|
474
|
+
return self.parse_ohlcvs(candles, market, timeframe, since, limit)
|
|
475
|
+
|
|
476
|
+
def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
|
|
477
|
+
#
|
|
478
|
+
# {
|
|
479
|
+
# "start": "2024-04-23T00:00:00Z",
|
|
480
|
+
# "open": "62884.4",
|
|
481
|
+
# "high": "64710.6",
|
|
482
|
+
# "low": "62884.4",
|
|
483
|
+
# "close": "63508.4",
|
|
484
|
+
# "volume": "3253.9983"
|
|
485
|
+
# }
|
|
486
|
+
#
|
|
487
|
+
return [
|
|
488
|
+
self.parse8601(self.safe_string_2(ohlcv, 'start', 'time')),
|
|
489
|
+
self.safe_number(ohlcv, 'open'),
|
|
490
|
+
self.safe_number(ohlcv, 'high'),
|
|
491
|
+
self.safe_number(ohlcv, 'low'),
|
|
492
|
+
self.safe_number(ohlcv, 'close'),
|
|
493
|
+
self.safe_number(ohlcv, 'volume'),
|
|
494
|
+
]
|
|
495
|
+
|
|
354
496
|
async def fetch_funding_rate_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
355
497
|
"""
|
|
356
498
|
fetches historical funding rate prices
|
|
357
|
-
|
|
499
|
+
|
|
500
|
+
https://docs.cloud.coinbase.com/intx/reference/getinstrumentfunding
|
|
501
|
+
|
|
358
502
|
:param str symbol: unified symbol of the market to fetch the funding rate history for
|
|
359
503
|
:param int [since]: timestamp in ms of the earliest funding rate to fetch
|
|
360
504
|
:param int [limit]: the maximum amount of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-history-structure>` to fetch
|
|
361
505
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
362
506
|
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
507
|
+
:returns dict[]: a list of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-history-structure>`
|
|
363
508
|
"""
|
|
364
509
|
if symbol is None:
|
|
365
510
|
raise ArgumentsRequired(self.id + ' fetchFundingRateHistory() requires a symbol argument')
|
|
@@ -433,11 +578,171 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
433
578
|
'previousFundingDatetime': None,
|
|
434
579
|
}
|
|
435
580
|
|
|
436
|
-
async def
|
|
581
|
+
async def fetch_funding_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
582
|
+
"""
|
|
583
|
+
fetch the history of funding payments paid and received on self account
|
|
584
|
+
|
|
585
|
+
https://docs.cdp.coinbase.com/intx/reference/gettransfers
|
|
586
|
+
|
|
587
|
+
:param str [symbol]: unified market symbol
|
|
588
|
+
:param int [since]: the earliest time in ms to fetch funding history for
|
|
589
|
+
:param int [limit]: the maximum number of funding history structures to retrieve
|
|
590
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
591
|
+
:returns dict: a `funding history structure <https://docs.ccxt.com/#/?id=funding-history-structure>`
|
|
592
|
+
"""
|
|
593
|
+
await self.load_markets()
|
|
594
|
+
request: dict = {
|
|
595
|
+
'type': 'FUNDING',
|
|
596
|
+
}
|
|
597
|
+
market: Market = None
|
|
598
|
+
if symbol is not None:
|
|
599
|
+
market = self.market(symbol)
|
|
600
|
+
portfolios = None
|
|
601
|
+
portfolios, params = self.handle_option_and_params(params, 'fetchFundingHistory', 'portfolios')
|
|
602
|
+
if portfolios is not None:
|
|
603
|
+
request['portfolios'] = portfolios
|
|
604
|
+
if since is not None:
|
|
605
|
+
request['time_from'] = self.iso8601(since)
|
|
606
|
+
if limit is not None:
|
|
607
|
+
request['result_limit'] = limit
|
|
608
|
+
else:
|
|
609
|
+
request['result_limit'] = 100
|
|
610
|
+
response = await self.v1PrivateGetTransfers(self.extend(request, params))
|
|
611
|
+
fundings = self.safe_list(response, 'results', [])
|
|
612
|
+
return self.parse_incomes(fundings, market, since, limit)
|
|
613
|
+
|
|
614
|
+
def parse_income(self, income, market: Market = None):
|
|
615
|
+
#
|
|
616
|
+
# {
|
|
617
|
+
# "amount":"0.0008",
|
|
618
|
+
# "asset":"USDC",
|
|
619
|
+
# "created_at":"2024-02-22T16:00:00Z",
|
|
620
|
+
# "from_portfolio":{
|
|
621
|
+
# "id":"13yuk1fs-1-0",
|
|
622
|
+
# "name":"Eng Test Portfolio - 2",
|
|
623
|
+
# "uuid":"018712f2-5ff9-7de3-9010-xxxxxxxxx"
|
|
624
|
+
# },
|
|
625
|
+
# "instrument_id":"149264164756389888",
|
|
626
|
+
# "instrument_symbol":"ETH-PERP",
|
|
627
|
+
# "position_id":"1xy4v51m-1-2",
|
|
628
|
+
# "status":"PROCESSED",
|
|
629
|
+
# "to_portfolio":{
|
|
630
|
+
# "name":"CB_FUND"
|
|
631
|
+
# },
|
|
632
|
+
# "transfer_type":"FUNDING",
|
|
633
|
+
# "transfer_uuid":"a6b708df-2c44-32c5-bb98-xxxxxxxxxx",
|
|
634
|
+
# "updated_at":"2024-02-22T16:00:00Z"
|
|
635
|
+
# }
|
|
636
|
+
#
|
|
637
|
+
marketId = self.safe_string(income, 'symbol')
|
|
638
|
+
market = self.safe_market(marketId, market, None, 'contract')
|
|
639
|
+
datetime = self.safe_integer(income, 'created_at')
|
|
640
|
+
timestamp = self.parse8601(datetime)
|
|
641
|
+
currencyId = self.safe_string(income, 'asset')
|
|
642
|
+
code = self.safe_currency_code(currencyId)
|
|
643
|
+
return {
|
|
644
|
+
'info': income,
|
|
645
|
+
'symbol': market['symbol'],
|
|
646
|
+
'code': code,
|
|
647
|
+
'timestamp': timestamp,
|
|
648
|
+
'datetime': self.iso8601(timestamp),
|
|
649
|
+
'id': self.safe_string(income, 'transfer_uuid'),
|
|
650
|
+
'amount': self.safe_number(income, 'amount'),
|
|
651
|
+
'rate': None,
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
async def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[TransferEntry]:
|
|
655
|
+
"""
|
|
656
|
+
fetch a history of internal transfers made on an account
|
|
657
|
+
|
|
658
|
+
https://docs.cdp.coinbase.com/intx/reference/gettransfers
|
|
659
|
+
|
|
660
|
+
:param str code: unified currency code of the currency transferred
|
|
661
|
+
:param int [since]: the earliest time in ms to fetch transfers for
|
|
662
|
+
:param int [limit]: the maximum number of transfers structures to retrieve
|
|
663
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
664
|
+
:returns dict[]: a list of `transfer structures <https://docs.ccxt.com/#/?id=transfer-structure>`
|
|
665
|
+
"""
|
|
666
|
+
await self.load_markets()
|
|
667
|
+
request: dict = {
|
|
668
|
+
'type': 'INTERNAL',
|
|
669
|
+
}
|
|
670
|
+
currency = None
|
|
671
|
+
if code is not None:
|
|
672
|
+
currency = self.currency(code)
|
|
673
|
+
portfolios = None
|
|
674
|
+
portfolios, params = self.handle_option_and_params(params, 'fetchTransfers', 'portfolios')
|
|
675
|
+
if portfolios is not None:
|
|
676
|
+
request['portfolios'] = portfolios
|
|
677
|
+
if since is not None:
|
|
678
|
+
request['time_from'] = self.iso8601(since)
|
|
679
|
+
if limit is not None:
|
|
680
|
+
request['result_limit'] = limit
|
|
681
|
+
else:
|
|
682
|
+
request['result_limit'] = 100
|
|
683
|
+
response = await self.v1PrivateGetTransfers(self.extend(request, params))
|
|
684
|
+
transfers = self.safe_list(response, 'results', [])
|
|
685
|
+
return self.parse_transfers(transfers, currency, since, limit)
|
|
686
|
+
|
|
687
|
+
def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
|
|
688
|
+
#
|
|
689
|
+
# {
|
|
690
|
+
# "amount":"0.0008",
|
|
691
|
+
# "asset":"USDC",
|
|
692
|
+
# "created_at":"2024-02-22T16:00:00Z",
|
|
693
|
+
# "from_portfolio":{
|
|
694
|
+
# "id":"13yuk1fs-1-0",
|
|
695
|
+
# "name":"Eng Test Portfolio - 2",
|
|
696
|
+
# "uuid":"018712f2-5ff9-7de3-9010-xxxxxxxxx"
|
|
697
|
+
# },
|
|
698
|
+
# "instrument_id":"149264164756389888",
|
|
699
|
+
# "instrument_symbol":"ETH-PERP",
|
|
700
|
+
# "position_id":"1xy4v51m-1-2",
|
|
701
|
+
# "status":"PROCESSED",
|
|
702
|
+
# "to_portfolio":{
|
|
703
|
+
# "name":"CB_FUND"
|
|
704
|
+
# },
|
|
705
|
+
# "transfer_type":"FUNDING",
|
|
706
|
+
# "transfer_uuid":"a6b708df-2c44-32c5-bb98-xxxxxxxxxx",
|
|
707
|
+
# "updated_at":"2024-02-22T16:00:00Z"
|
|
708
|
+
# }
|
|
709
|
+
#
|
|
710
|
+
datetime = self.safe_integer(transfer, 'created_at')
|
|
711
|
+
timestamp = self.parse8601(datetime)
|
|
712
|
+
currencyId = self.safe_string(transfer, 'asset')
|
|
713
|
+
code = self.safe_currency_code(currencyId)
|
|
714
|
+
fromPorfolio = self.safe_dict(transfer, 'from_portfolio', {})
|
|
715
|
+
fromId = self.safe_string(fromPorfolio, 'id')
|
|
716
|
+
toPorfolio = self.safe_dict(transfer, 'to_portfolio', {})
|
|
717
|
+
toId = self.safe_string(toPorfolio, 'id')
|
|
718
|
+
return {
|
|
719
|
+
'info': transfer,
|
|
720
|
+
'id': self.safe_string(transfer, 'transfer_uuid'),
|
|
721
|
+
'timestamp': timestamp,
|
|
722
|
+
'datetime': self.iso8601(timestamp),
|
|
723
|
+
'currency': code,
|
|
724
|
+
'amount': self.safe_number(transfer, 'amount'),
|
|
725
|
+
'fromAccount': fromId,
|
|
726
|
+
'toAccount': toId,
|
|
727
|
+
'status': self.parse_transfer_status(self.safe_string(transfer, 'status')),
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
def parse_transfer_status(self, status: Str) -> Str:
|
|
731
|
+
statuses: dict = {
|
|
732
|
+
'FAILED': 'failed',
|
|
733
|
+
'PROCESSED': 'ok',
|
|
734
|
+
'NEW': 'pending',
|
|
735
|
+
'STARTED': 'pending',
|
|
736
|
+
}
|
|
737
|
+
return self.safe_string(statuses, status, status)
|
|
738
|
+
|
|
739
|
+
async def create_deposit_address(self, code: str, params={}) -> DepositAddress:
|
|
437
740
|
"""
|
|
438
741
|
create a currency deposit address
|
|
439
|
-
|
|
440
|
-
|
|
742
|
+
|
|
743
|
+
https://docs.cloud.coinbase.com/intx/reference/createaddress
|
|
744
|
+
https://docs.cloud.coinbase.com/intx/reference/createcounterpartyid
|
|
745
|
+
|
|
441
746
|
:param str code: unified currency code of the currency for the deposit address
|
|
442
747
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
443
748
|
:param str [params.network_arn_id]: Identifies the blockchain network(e.g., networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a) if not provided will pick default
|
|
@@ -478,6 +783,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
478
783
|
'currency': code,
|
|
479
784
|
'tag': tag,
|
|
480
785
|
'address': address,
|
|
786
|
+
'network': None,
|
|
481
787
|
'info': response,
|
|
482
788
|
}
|
|
483
789
|
|
|
@@ -494,7 +800,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
494
800
|
currency = self.currency(code)
|
|
495
801
|
networks = self.safe_dict(currency, 'networks')
|
|
496
802
|
if networks is not None:
|
|
497
|
-
return
|
|
803
|
+
return False
|
|
498
804
|
request: dict = {
|
|
499
805
|
'asset': currency['id'],
|
|
500
806
|
}
|
|
@@ -502,7 +808,23 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
502
808
|
#
|
|
503
809
|
# [
|
|
504
810
|
# {
|
|
505
|
-
# "asset_id"
|
|
811
|
+
# "asset_id":"1",
|
|
812
|
+
# "asset_uuid":"2b92315d-eab7-5bef-84fa-089a131333f5",
|
|
813
|
+
# "asset_name":"USDC",
|
|
814
|
+
# "network_arn_id":"networks/ethereum-mainnet/assets/9bc140b4-69c3-5fc9-bd0d-b041bcf40039",
|
|
815
|
+
# "min_withdrawal_amt":"1",
|
|
816
|
+
# "max_withdrawal_amt":"100000000",
|
|
817
|
+
# "network_confirms":35,
|
|
818
|
+
# "processing_time":485,
|
|
819
|
+
# "is_default":true,
|
|
820
|
+
# "network_name":"ethereum",
|
|
821
|
+
# "display_name":"Ethereum"
|
|
822
|
+
# },
|
|
823
|
+
# ....
|
|
824
|
+
# ]
|
|
825
|
+
#
|
|
826
|
+
currency['networks'] = self.parse_networks(rawNetworks)
|
|
827
|
+
return True
|
|
506
828
|
|
|
507
829
|
def parse_networks(self, networks, params={}):
|
|
508
830
|
result: dict = {}
|
|
@@ -530,11 +852,12 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
530
852
|
currencyId = self.safe_string(network, 'asset_name')
|
|
531
853
|
currencyCode = self.safe_currency_code(currencyId)
|
|
532
854
|
networkId = self.safe_string(network, 'network_arn_id')
|
|
855
|
+
networkIdForCode = self.safe_string_n(network, ['network_name', 'display_name', 'network_arn_id'], '')
|
|
533
856
|
return self.safe_network({
|
|
534
857
|
'info': network,
|
|
535
858
|
'id': networkId,
|
|
536
859
|
'name': self.safe_string(network, 'display_name'),
|
|
537
|
-
'network': self.network_id_to_code(
|
|
860
|
+
'network': self.network_id_to_code(networkIdForCode, currencyCode),
|
|
538
861
|
'active': None,
|
|
539
862
|
'deposit': None,
|
|
540
863
|
'withdraw': None,
|
|
@@ -552,10 +875,12 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
552
875
|
},
|
|
553
876
|
})
|
|
554
877
|
|
|
555
|
-
async def set_margin(self, symbol: str, amount: float, params={}) ->
|
|
878
|
+
async def set_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
|
|
556
879
|
"""
|
|
557
880
|
Either adds or reduces margin in order to set the margin to a specific value
|
|
558
|
-
|
|
881
|
+
|
|
882
|
+
https://docs.cloud.coinbase.com/intx/reference/setportfoliomarginoverride
|
|
883
|
+
|
|
559
884
|
:param str symbol: unified market symbol of the market to set margin in
|
|
560
885
|
:param float amount: the amount to set the margin to
|
|
561
886
|
:param dict [params]: parameters specific to the exchange API endpoint
|
|
@@ -571,10 +896,12 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
571
896
|
}
|
|
572
897
|
return await self.v1PrivatePostPortfoliosMargin(self.extend(request, params))
|
|
573
898
|
|
|
574
|
-
async def fetch_deposits_withdrawals(self, code:
|
|
899
|
+
async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
|
575
900
|
"""
|
|
576
901
|
fetch history of deposits and withdrawals
|
|
577
|
-
|
|
902
|
+
|
|
903
|
+
https://docs.cloud.coinbase.com/intx/reference/gettransfers
|
|
904
|
+
|
|
578
905
|
:param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
|
|
579
906
|
:param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
|
|
580
907
|
:param int [limit]: max number of deposit/withdrawals to return, default is None
|
|
@@ -643,7 +970,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
643
970
|
|
|
644
971
|
async def fetch_position(self, symbol: str, params={}):
|
|
645
972
|
"""
|
|
646
|
-
|
|
973
|
+
|
|
974
|
+
https://docs.cloud.coinbase.com/intx/reference/getportfolioposition
|
|
975
|
+
|
|
647
976
|
fetch data on an open position
|
|
648
977
|
:param str symbol: unified market symbol of the market the position is held in
|
|
649
978
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -726,11 +1055,12 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
726
1055
|
|
|
727
1056
|
async def fetch_positions(self, symbols: Strings = None, params={}) -> List[Position]:
|
|
728
1057
|
"""
|
|
729
|
-
|
|
1058
|
+
|
|
1059
|
+
https://docs.cloud.coinbase.com/intx/reference/getportfoliopositions
|
|
1060
|
+
|
|
730
1061
|
fetch all open positions
|
|
731
1062
|
:param str[] [symbols]: list of unified market symbols
|
|
732
1063
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
733
|
-
:param str [method]: method name to call, "positionRisk", "account" or "option", default is "positionRisk"
|
|
734
1064
|
:returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
|
|
735
1065
|
"""
|
|
736
1066
|
await self.load_markets()
|
|
@@ -766,7 +1096,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
766
1096
|
async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
|
767
1097
|
"""
|
|
768
1098
|
fetch all withdrawals made from an account
|
|
769
|
-
|
|
1099
|
+
|
|
1100
|
+
https://docs.cloud.coinbase.com/intx/reference/gettransfers
|
|
1101
|
+
|
|
770
1102
|
:param str code: unified currency code
|
|
771
1103
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
|
772
1104
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
|
@@ -900,7 +1232,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
900
1232
|
|
|
901
1233
|
async def fetch_markets(self, params={}) -> List[Market]:
|
|
902
1234
|
"""
|
|
903
|
-
|
|
1235
|
+
|
|
1236
|
+
https://docs.cloud.coinbase.com/intx/reference/getinstruments
|
|
1237
|
+
|
|
904
1238
|
retrieves data on all markets for coinbaseinternational
|
|
905
1239
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
906
1240
|
:returns dict[]: an array of objects representing market data
|
|
@@ -1072,7 +1406,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1072
1406
|
async def fetch_currencies(self, params={}) -> Currencies:
|
|
1073
1407
|
"""
|
|
1074
1408
|
fetches all available currencies on an exchange
|
|
1075
|
-
|
|
1409
|
+
|
|
1410
|
+
https://docs.cloud.coinbase.com/intx/reference/getassets
|
|
1411
|
+
|
|
1076
1412
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1077
1413
|
:returns dict: an associative dictionary of currencies
|
|
1078
1414
|
"""
|
|
@@ -1090,13 +1426,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1090
1426
|
# ...
|
|
1091
1427
|
# ]
|
|
1092
1428
|
#
|
|
1093
|
-
|
|
1094
|
-
for i in range(0, len(currencies)):
|
|
1095
|
-
currency = self.parse_currency(currencies[i])
|
|
1096
|
-
result[currency['code']] = currency
|
|
1097
|
-
return result
|
|
1429
|
+
return self.parse_currencies(currencies)
|
|
1098
1430
|
|
|
1099
|
-
def parse_currency(self, currency: dict):
|
|
1431
|
+
def parse_currency(self, currency: dict) -> Currency:
|
|
1100
1432
|
#
|
|
1101
1433
|
# {
|
|
1102
1434
|
# "asset_id":"1",
|
|
@@ -1110,7 +1442,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1110
1442
|
id = self.safe_string(currency, 'asset_name')
|
|
1111
1443
|
code = self.safe_currency_code(id)
|
|
1112
1444
|
statusId = self.safe_string(currency, 'status')
|
|
1113
|
-
return {
|
|
1445
|
+
return self.safe_currency_structure({
|
|
1114
1446
|
'id': id,
|
|
1115
1447
|
'name': code,
|
|
1116
1448
|
'code': code,
|
|
@@ -1123,12 +1455,14 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1123
1455
|
'fee': None,
|
|
1124
1456
|
'fees': None,
|
|
1125
1457
|
'limits': self.limits,
|
|
1126
|
-
}
|
|
1458
|
+
})
|
|
1127
1459
|
|
|
1128
1460
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
|
1129
1461
|
"""
|
|
1130
1462
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
1131
|
-
|
|
1463
|
+
|
|
1464
|
+
https://docs.cloud.coinbase.com/intx/reference/getinstruments
|
|
1465
|
+
|
|
1132
1466
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
1133
1467
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1134
1468
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
@@ -1148,7 +1482,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1148
1482
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
|
1149
1483
|
"""
|
|
1150
1484
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
1151
|
-
|
|
1485
|
+
|
|
1486
|
+
https://docs.cloud.coinbase.com/intx/reference/getinstrumentquote
|
|
1487
|
+
|
|
1152
1488
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
|
1153
1489
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1154
1490
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
@@ -1201,12 +1537,16 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1201
1537
|
'baseVolume': None,
|
|
1202
1538
|
'quoteVolume': None,
|
|
1203
1539
|
'previousClose': None,
|
|
1540
|
+
'markPrice': self.safe_number(ticker, 'mark_price'),
|
|
1541
|
+
'indexPrice': self.safe_number(ticker, 'index_price'),
|
|
1204
1542
|
})
|
|
1205
1543
|
|
|
1206
1544
|
async def fetch_balance(self, params={}) -> Balances:
|
|
1207
1545
|
"""
|
|
1208
1546
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
|
1209
|
-
|
|
1547
|
+
|
|
1548
|
+
https://docs.cloud.coinbase.com/intx/reference/getportfoliobalances
|
|
1549
|
+
|
|
1210
1550
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1211
1551
|
:param boolean [params.v3]: default False, set True to use v3 api endpoint
|
|
1212
1552
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
|
@@ -1269,7 +1609,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1269
1609
|
async def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
|
|
1270
1610
|
"""
|
|
1271
1611
|
Transfer an amount of asset from one portfolio to another.
|
|
1272
|
-
|
|
1612
|
+
|
|
1613
|
+
https://docs.cloud.coinbase.com/intx/reference/createportfolioassettransfer
|
|
1614
|
+
|
|
1273
1615
|
:param str code: unified currency code
|
|
1274
1616
|
:param float amount: amount to transfer
|
|
1275
1617
|
:param str fromAccount: account to transfer from
|
|
@@ -1302,14 +1644,16 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1302
1644
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: float = None, params={}):
|
|
1303
1645
|
"""
|
|
1304
1646
|
create a trade order
|
|
1305
|
-
|
|
1647
|
+
|
|
1648
|
+
https://docs.cloud.coinbase.com/intx/reference/createorder
|
|
1649
|
+
|
|
1306
1650
|
:param str symbol: unified symbol of the market to create an order in
|
|
1307
1651
|
:param str type: 'market' or 'limit'
|
|
1308
1652
|
:param str side: 'buy' or 'sell'
|
|
1309
1653
|
:param float amount: how much you want to trade in units of the base currency, quote currency for 'market' 'buy' orders
|
|
1310
1654
|
:param float [price]: the price to fulfill the order, in units of the quote currency, ignored in market orders
|
|
1311
1655
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1312
|
-
:param float [params.stopPrice]:
|
|
1656
|
+
:param float [params.stopPrice]: alias for triggerPrice
|
|
1313
1657
|
:param float [params.triggerPrice]: price to trigger stop orders
|
|
1314
1658
|
:param float [params.stopLossPrice]: price to trigger stop-loss orders
|
|
1315
1659
|
:param bool [params.postOnly]: True or False
|
|
@@ -1321,7 +1665,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1321
1665
|
await self.load_markets()
|
|
1322
1666
|
market = self.market(symbol)
|
|
1323
1667
|
typeId = type.upper()
|
|
1324
|
-
|
|
1668
|
+
triggerPrice = self.safe_number_n(params, ['triggerPrice', 'stopPrice', 'stop_price'])
|
|
1325
1669
|
clientOrderIdprefix = self.safe_string(self.options, 'brokerId', 'nfqkvdjp')
|
|
1326
1670
|
clientOrderId = clientOrderIdprefix + '-' + self.uuid()
|
|
1327
1671
|
clientOrderId = clientOrderId[0:17]
|
|
@@ -1331,16 +1675,16 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1331
1675
|
'instrument': market['id'],
|
|
1332
1676
|
'size': self.amount_to_precision(market['symbol'], amount),
|
|
1333
1677
|
}
|
|
1334
|
-
if
|
|
1678
|
+
if triggerPrice is not None:
|
|
1335
1679
|
if type == 'limit':
|
|
1336
1680
|
typeId = 'STOP_LIMIT'
|
|
1337
1681
|
else:
|
|
1338
1682
|
typeId = 'STOP'
|
|
1339
|
-
request['stop_price'] =
|
|
1683
|
+
request['stop_price'] = triggerPrice
|
|
1340
1684
|
request['type'] = typeId
|
|
1341
1685
|
if type == 'limit':
|
|
1342
1686
|
if price is None:
|
|
1343
|
-
raise InvalidOrder(self.id + 'createOrder() requires a price parameter for a limit order types')
|
|
1687
|
+
raise InvalidOrder(self.id + ' createOrder() requires a price parameter for a limit order types')
|
|
1344
1688
|
request['price'] = price
|
|
1345
1689
|
portfolio = None
|
|
1346
1690
|
portfolio, params = await self.handle_portfolio_and_params('createOrder', params)
|
|
@@ -1351,7 +1695,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1351
1695
|
# market orders must be IOC
|
|
1352
1696
|
if typeId == 'MARKET':
|
|
1353
1697
|
if tif is not None and tif != 'IOC':
|
|
1354
|
-
raise InvalidOrder(self.id + 'createOrder() market orders must have tif set to "IOC"')
|
|
1698
|
+
raise InvalidOrder(self.id + ' createOrder() market orders must have tif set to "IOC"')
|
|
1355
1699
|
tif = 'IOC'
|
|
1356
1700
|
else:
|
|
1357
1701
|
tif = 'GTC' if (tif is None) else tif
|
|
@@ -1430,7 +1774,6 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1430
1774
|
'postOnly': None,
|
|
1431
1775
|
'side': self.safe_string_lower(order, 'side'),
|
|
1432
1776
|
'price': self.safe_string(order, 'price'),
|
|
1433
|
-
'stopPrice': self.safe_string(order, 'stop_price'),
|
|
1434
1777
|
'triggerPrice': self.safe_string(order, 'stop_price'),
|
|
1435
1778
|
'amount': self.safe_string(order, 'size'),
|
|
1436
1779
|
'filled': self.safe_string(order, 'exec_qty'),
|
|
@@ -1471,7 +1814,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1471
1814
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
|
1472
1815
|
"""
|
|
1473
1816
|
cancels an open order
|
|
1474
|
-
|
|
1817
|
+
|
|
1818
|
+
https://docs.cloud.coinbase.com/intx/reference/cancelorder
|
|
1819
|
+
|
|
1475
1820
|
:param str id: order id
|
|
1476
1821
|
:param str symbol: not used by coinbaseinternational cancelOrder()
|
|
1477
1822
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -1536,13 +1881,15 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1536
1881
|
async def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: float = None, price: float = None, params={}):
|
|
1537
1882
|
"""
|
|
1538
1883
|
edit a trade order
|
|
1539
|
-
|
|
1884
|
+
|
|
1885
|
+
https://docs.cloud.coinbase.com/intx/reference/modifyorder
|
|
1886
|
+
|
|
1540
1887
|
:param str id: cancel order id
|
|
1541
1888
|
:param str symbol: unified symbol of the market to create an order in
|
|
1542
1889
|
:param str type: 'market' or 'limit'
|
|
1543
1890
|
:param str side: 'buy' or 'sell'
|
|
1544
1891
|
:param float amount: how much of currency you want to trade in units of base currency
|
|
1545
|
-
:param float [price]: the price at which the order is to be
|
|
1892
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
|
1546
1893
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1547
1894
|
:param str params['clientOrderId']: client order id
|
|
1548
1895
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
|
@@ -1560,9 +1907,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1560
1907
|
request['size'] = self.amount_to_precision(symbol, amount)
|
|
1561
1908
|
if price is not None:
|
|
1562
1909
|
request['price'] = self.price_to_precision(symbol, price)
|
|
1563
|
-
|
|
1564
|
-
if
|
|
1565
|
-
request['stop_price'] =
|
|
1910
|
+
triggerPrice = self.safe_number_n(params, ['stopPrice', 'stop_price', 'triggerPrice'])
|
|
1911
|
+
if triggerPrice is not None:
|
|
1912
|
+
request['stop_price'] = triggerPrice
|
|
1566
1913
|
clientOrderId = self.safe_string_2(params, 'client_order_id', 'clientOrderId')
|
|
1567
1914
|
if clientOrderId is None:
|
|
1568
1915
|
raise BadRequest(self.id + ' editOrder() requires a clientOrderId parameter')
|
|
@@ -1573,7 +1920,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1573
1920
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
|
1574
1921
|
"""
|
|
1575
1922
|
fetches information on an order made by the user
|
|
1576
|
-
|
|
1923
|
+
|
|
1924
|
+
https://docs.cloud.coinbase.com/intx/reference/modifyorder
|
|
1925
|
+
|
|
1577
1926
|
:param str id: the order id
|
|
1578
1927
|
:param str symbol: unified market symbol that the order was made in
|
|
1579
1928
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -1620,7 +1969,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1620
1969
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
1621
1970
|
"""
|
|
1622
1971
|
fetches information on all currently open orders
|
|
1623
|
-
|
|
1972
|
+
|
|
1973
|
+
https://docs.cloud.coinbase.com/intx/reference/getorders
|
|
1974
|
+
|
|
1624
1975
|
:param str symbol: unified market symbol of the orders
|
|
1625
1976
|
:param int [since]: timestamp in ms of the earliest order, default is None
|
|
1626
1977
|
:param int [limit]: the maximum number of open order structures to retrieve
|
|
@@ -1696,7 +2047,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1696
2047
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
1697
2048
|
"""
|
|
1698
2049
|
fetch all trades made by the user
|
|
1699
|
-
|
|
2050
|
+
|
|
2051
|
+
https://docs.cloud.coinbase.com/intx/reference/getmultiportfoliofills
|
|
2052
|
+
|
|
1700
2053
|
:param str symbol: unified market symbol of the trades
|
|
1701
2054
|
:param int [since]: timestamp in ms of the earliest order, default is None
|
|
1702
2055
|
:param int [limit]: the maximum number of trade structures to fetch
|
|
@@ -1774,11 +2127,13 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
|
1774
2127
|
trades = self.safe_list(response, 'results', [])
|
|
1775
2128
|
return self.parse_trades(trades, market, since, limit)
|
|
1776
2129
|
|
|
1777
|
-
async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
|
|
2130
|
+
async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
|
|
1778
2131
|
"""
|
|
1779
2132
|
make a withdrawal
|
|
1780
|
-
|
|
1781
|
-
|
|
2133
|
+
|
|
2134
|
+
https://docs.cloud.coinbase.com/intx/reference/withdraw
|
|
2135
|
+
https://docs.cloud.coinbase.com/intx/reference/counterpartywithdraw
|
|
2136
|
+
|
|
1782
2137
|
:param str code: unified currency code
|
|
1783
2138
|
:param float amount: the amount to withdraw
|
|
1784
2139
|
:param str address: the address to withdraw to
|