ccxt 4.2.76__py2.py3-none-any.whl → 4.4.48__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 +36 -14
- ccxt/abstract/alpaca.py +4 -0
- ccxt/abstract/bigone.py +1 -1
- ccxt/abstract/binance.py +112 -48
- ccxt/abstract/binancecoinm.py +112 -48
- ccxt/abstract/binanceus.py +147 -83
- ccxt/abstract/binanceusdm.py +112 -48
- ccxt/abstract/bingx.py +133 -78
- ccxt/abstract/bitbank.py +5 -0
- ccxt/abstract/bitfinex.py +136 -65
- ccxt/abstract/bitfinex1.py +69 -0
- ccxt/abstract/bitflyer.py +1 -0
- ccxt/abstract/bitget.py +8 -1
- ccxt/abstract/bitmart.py +13 -1
- ccxt/abstract/bitopro.py +1 -0
- ccxt/abstract/bitpanda.py +0 -12
- ccxt/abstract/bitrue.py +3 -3
- ccxt/abstract/bitstamp.py +26 -3
- ccxt/abstract/blofin.py +24 -0
- ccxt/abstract/btcbox.py +1 -0
- ccxt/abstract/bybit.py +29 -14
- ccxt/abstract/cex.py +28 -29
- ccxt/abstract/coinbase.py +6 -0
- ccxt/abstract/coinbaseadvanced.py +94 -0
- ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
- ccxt/abstract/coinbaseinternational.py +1 -1
- ccxt/abstract/coincatch.py +94 -0
- ccxt/abstract/coinex.py +233 -123
- ccxt/abstract/coinmetro.py +1 -0
- ccxt/abstract/cryptocom.py +14 -0
- ccxt/abstract/defx.py +69 -0
- ccxt/abstract/deribit.py +1 -0
- ccxt/abstract/digifinex.py +1 -0
- ccxt/abstract/ellipx.py +25 -0
- ccxt/abstract/gate.py +20 -0
- ccxt/abstract/gateio.py +20 -0
- ccxt/abstract/gemini.py +1 -0
- ccxt/abstract/hashkey.py +67 -0
- ccxt/abstract/hyperliquid.py +1 -1
- ccxt/abstract/independentreserve.py +6 -0
- ccxt/abstract/kraken.py +4 -3
- ccxt/abstract/krakenfutures.py +4 -0
- ccxt/abstract/kucoin.py +25 -0
- ccxt/abstract/kucoinfutures.py +35 -0
- ccxt/abstract/luno.py +2 -0
- ccxt/abstract/mexc.py +4 -0
- ccxt/abstract/myokx.py +340 -0
- ccxt/abstract/oceanex.py +5 -0
- ccxt/abstract/okx.py +30 -0
- ccxt/abstract/onetrading.py +0 -12
- ccxt/abstract/oxfun.py +34 -0
- ccxt/abstract/paradex.py +40 -0
- ccxt/abstract/phemex.py +1 -0
- ccxt/abstract/upbit.py +4 -0
- ccxt/abstract/vertex.py +19 -0
- ccxt/abstract/whitebit.py +31 -1
- ccxt/abstract/woo.py +6 -2
- ccxt/abstract/woofipro.py +119 -0
- ccxt/abstract/xt.py +153 -0
- ccxt/abstract/zonda.py +6 -0
- ccxt/ace.py +164 -60
- ccxt/alpaca.py +727 -63
- ccxt/ascendex.py +395 -249
- ccxt/async_support/__init__.py +36 -14
- ccxt/async_support/ace.py +164 -60
- ccxt/async_support/alpaca.py +727 -63
- ccxt/async_support/ascendex.py +396 -249
- ccxt/async_support/base/exchange.py +531 -155
- ccxt/async_support/base/ws/aiohttp_client.py +28 -5
- ccxt/async_support/base/ws/cache.py +3 -2
- ccxt/async_support/base/ws/client.py +26 -5
- ccxt/async_support/base/ws/fast_client.py +4 -3
- ccxt/async_support/base/ws/functions.py +1 -1
- ccxt/async_support/base/ws/future.py +40 -31
- ccxt/async_support/base/ws/order_book_side.py +3 -0
- ccxt/async_support/bequant.py +1 -1
- ccxt/async_support/bigone.py +329 -202
- ccxt/async_support/binance.py +3513 -1511
- ccxt/async_support/binancecoinm.py +2 -1
- ccxt/async_support/binanceus.py +12 -1
- ccxt/async_support/binanceusdm.py +3 -1
- ccxt/async_support/bingx.py +3105 -881
- ccxt/async_support/bit2c.py +119 -38
- ccxt/async_support/bitbank.py +215 -76
- ccxt/async_support/bitbns.py +124 -53
- ccxt/async_support/bitfinex.py +3236 -1078
- ccxt/async_support/bitfinex1.py +1711 -0
- ccxt/async_support/bitflyer.py +239 -50
- ccxt/async_support/bitget.py +1513 -563
- ccxt/async_support/bithumb.py +201 -67
- ccxt/async_support/bitmart.py +1320 -435
- ccxt/async_support/bitmex.py +308 -111
- ccxt/async_support/bitopro.py +256 -96
- ccxt/async_support/bitrue.py +365 -233
- ccxt/async_support/bitso.py +201 -89
- ccxt/async_support/bitstamp.py +438 -269
- ccxt/async_support/bitteam.py +179 -73
- ccxt/async_support/bitvavo.py +180 -70
- ccxt/async_support/bl3p.py +92 -25
- ccxt/async_support/blockchaincom.py +193 -79
- ccxt/async_support/blofin.py +403 -150
- ccxt/async_support/btcalpha.py +161 -55
- ccxt/async_support/btcbox.py +250 -34
- ccxt/async_support/btcmarkets.py +232 -85
- ccxt/async_support/btcturk.py +159 -60
- ccxt/async_support/bybit.py +2326 -1255
- ccxt/async_support/cex.py +1409 -1329
- ccxt/async_support/coinbase.py +1455 -288
- ccxt/async_support/coinbaseadvanced.py +17 -0
- ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/async_support/coinbaseinternational.py +428 -88
- ccxt/async_support/coincatch.py +5152 -0
- ccxt/async_support/coincheck.py +121 -38
- ccxt/async_support/coinex.py +4020 -3339
- ccxt/async_support/coinlist.py +273 -116
- ccxt/async_support/coinmate.py +204 -97
- ccxt/async_support/coinmetro.py +203 -110
- ccxt/async_support/coinone.py +142 -68
- ccxt/async_support/coinsph.py +206 -89
- ccxt/async_support/coinspot.py +137 -62
- ccxt/async_support/cryptocom.py +515 -185
- ccxt/async_support/currencycom.py +203 -85
- ccxt/async_support/defx.py +2066 -0
- ccxt/async_support/delta.py +467 -158
- ccxt/async_support/deribit.py +558 -324
- ccxt/async_support/digifinex.py +340 -223
- ccxt/async_support/ellipx.py +1826 -0
- ccxt/async_support/exmo.py +259 -128
- ccxt/async_support/gate.py +1473 -464
- ccxt/async_support/gemini.py +206 -84
- ccxt/async_support/hashkey.py +4164 -0
- ccxt/async_support/hitbtc.py +334 -178
- ccxt/async_support/hollaex.py +134 -83
- ccxt/async_support/htx.py +1095 -563
- ccxt/async_support/huobijp.py +105 -56
- ccxt/async_support/hyperliquid.py +1634 -269
- ccxt/async_support/idex.py +148 -95
- ccxt/async_support/independentreserve.py +236 -31
- ccxt/async_support/indodax.py +165 -62
- ccxt/async_support/kraken.py +871 -354
- ccxt/async_support/krakenfutures.py +324 -100
- ccxt/async_support/kucoin.py +1050 -355
- ccxt/async_support/kucoinfutures.py +1004 -149
- ccxt/async_support/kuna.py +138 -106
- ccxt/async_support/latoken.py +135 -79
- ccxt/async_support/lbank.py +290 -113
- ccxt/async_support/luno.py +112 -62
- ccxt/async_support/lykke.py +104 -55
- ccxt/async_support/mercado.py +36 -29
- ccxt/async_support/mexc.py +995 -429
- ccxt/async_support/myokx.py +43 -0
- ccxt/async_support/ndax.py +163 -82
- ccxt/async_support/novadax.py +121 -75
- ccxt/async_support/oceanex.py +175 -59
- ccxt/async_support/okcoin.py +222 -163
- ccxt/async_support/okx.py +1777 -455
- ccxt/async_support/onetrading.py +132 -414
- ccxt/async_support/oxfun.py +2832 -0
- ccxt/async_support/p2b.py +79 -51
- ccxt/async_support/paradex.py +2017 -0
- ccxt/async_support/paymium.py +56 -32
- ccxt/async_support/phemex.py +572 -196
- ccxt/async_support/poloniex.py +218 -95
- ccxt/async_support/poloniexfutures.py +260 -92
- ccxt/async_support/probit.py +143 -110
- ccxt/async_support/timex.py +123 -70
- ccxt/async_support/tokocrypto.py +129 -93
- ccxt/async_support/tradeogre.py +39 -25
- ccxt/async_support/upbit.py +322 -113
- ccxt/async_support/vertex.py +2983 -0
- ccxt/async_support/wavesexchange.py +227 -173
- ccxt/async_support/wazirx.py +145 -65
- ccxt/async_support/whitebit.py +533 -138
- ccxt/async_support/woo.py +1155 -295
- ccxt/async_support/woofipro.py +2716 -0
- ccxt/async_support/xt.py +4628 -0
- ccxt/async_support/yobit.py +160 -92
- ccxt/async_support/zaif.py +80 -33
- ccxt/async_support/zonda.py +140 -69
- ccxt/base/errors.py +51 -20
- ccxt/base/exchange.py +1729 -482
- ccxt/base/precise.py +10 -0
- ccxt/base/types.py +223 -4
- ccxt/bequant.py +1 -1
- ccxt/bigone.py +329 -202
- ccxt/binance.py +3513 -1511
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +12 -1
- ccxt/binanceusdm.py +3 -1
- ccxt/bingx.py +3105 -881
- ccxt/bit2c.py +119 -38
- ccxt/bitbank.py +215 -76
- ccxt/bitbns.py +124 -53
- ccxt/bitfinex.py +3235 -1078
- ccxt/bitfinex1.py +1710 -0
- ccxt/bitflyer.py +239 -50
- ccxt/bitget.py +1513 -563
- ccxt/bithumb.py +200 -67
- ccxt/bitmart.py +1320 -435
- ccxt/bitmex.py +308 -111
- ccxt/bitopro.py +256 -96
- ccxt/bitrue.py +365 -233
- ccxt/bitso.py +201 -89
- ccxt/bitstamp.py +438 -269
- ccxt/bitteam.py +179 -73
- ccxt/bitvavo.py +180 -70
- ccxt/bl3p.py +92 -25
- ccxt/blockchaincom.py +193 -79
- ccxt/blofin.py +403 -150
- ccxt/btcalpha.py +161 -55
- ccxt/btcbox.py +250 -34
- ccxt/btcmarkets.py +232 -85
- ccxt/btcturk.py +159 -60
- ccxt/bybit.py +2326 -1255
- ccxt/cex.py +1408 -1329
- ccxt/coinbase.py +1455 -288
- ccxt/coinbaseadvanced.py +17 -0
- ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/coinbaseinternational.py +428 -88
- ccxt/coincatch.py +5152 -0
- ccxt/coincheck.py +121 -38
- ccxt/coinex.py +4020 -3339
- ccxt/coinlist.py +273 -116
- ccxt/coinmate.py +204 -97
- ccxt/coinmetro.py +203 -110
- ccxt/coinone.py +142 -68
- ccxt/coinsph.py +206 -89
- ccxt/coinspot.py +137 -62
- ccxt/cryptocom.py +515 -185
- ccxt/currencycom.py +203 -85
- ccxt/defx.py +2065 -0
- ccxt/delta.py +467 -158
- ccxt/deribit.py +558 -324
- ccxt/digifinex.py +340 -223
- ccxt/ellipx.py +1826 -0
- ccxt/exmo.py +259 -128
- ccxt/gate.py +1473 -464
- ccxt/gemini.py +206 -84
- ccxt/hashkey.py +4164 -0
- ccxt/hitbtc.py +334 -178
- ccxt/hollaex.py +134 -83
- ccxt/htx.py +1095 -563
- ccxt/huobijp.py +105 -56
- ccxt/hyperliquid.py +1633 -269
- ccxt/idex.py +148 -95
- ccxt/independentreserve.py +235 -31
- ccxt/indodax.py +165 -62
- ccxt/kraken.py +871 -354
- ccxt/krakenfutures.py +324 -100
- ccxt/kucoin.py +1050 -355
- ccxt/kucoinfutures.py +1004 -149
- ccxt/kuna.py +138 -106
- ccxt/latoken.py +135 -79
- ccxt/lbank.py +290 -113
- ccxt/luno.py +112 -62
- ccxt/lykke.py +104 -55
- ccxt/mercado.py +36 -29
- ccxt/mexc.py +994 -429
- ccxt/myokx.py +43 -0
- ccxt/ndax.py +163 -82
- ccxt/novadax.py +121 -75
- ccxt/oceanex.py +175 -59
- ccxt/okcoin.py +222 -163
- ccxt/okx.py +1777 -455
- ccxt/onetrading.py +132 -414
- ccxt/oxfun.py +2831 -0
- ccxt/p2b.py +79 -51
- ccxt/paradex.py +2017 -0
- ccxt/paymium.py +56 -32
- ccxt/phemex.py +572 -196
- ccxt/poloniex.py +218 -95
- ccxt/poloniexfutures.py +260 -92
- ccxt/pro/__init__.py +29 -5
- ccxt/pro/alpaca.py +32 -17
- ccxt/pro/ascendex.py +63 -15
- ccxt/pro/bequant.py +4 -0
- ccxt/pro/binance.py +1596 -329
- ccxt/pro/binancecoinm.py +1 -0
- ccxt/pro/binanceus.py +2 -9
- ccxt/pro/binanceusdm.py +2 -0
- ccxt/pro/bingx.py +527 -134
- ccxt/pro/bitcoincom.py +4 -1
- ccxt/pro/bitfinex.py +731 -266
- ccxt/pro/bitfinex1.py +635 -0
- ccxt/pro/bitget.py +726 -357
- ccxt/pro/bithumb.py +380 -0
- ccxt/pro/bitmart.py +138 -39
- ccxt/pro/bitmex.py +199 -40
- ccxt/pro/bitopro.py +25 -13
- ccxt/pro/bitrue.py +31 -32
- ccxt/pro/bitstamp.py +7 -6
- ccxt/pro/bitvavo.py +204 -82
- ccxt/pro/blockchaincom.py +30 -17
- ccxt/pro/blofin.py +692 -0
- ccxt/pro/bybit.py +791 -82
- ccxt/pro/cex.py +99 -51
- ccxt/pro/coinbase.py +220 -30
- ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
- ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
- ccxt/pro/coinbaseinternational.py +193 -30
- ccxt/pro/coincatch.py +1464 -0
- ccxt/pro/coincheck.py +11 -6
- ccxt/pro/coinex.py +967 -661
- ccxt/pro/coinone.py +17 -10
- ccxt/pro/cryptocom.py +446 -66
- ccxt/pro/currencycom.py +11 -10
- ccxt/pro/defx.py +832 -0
- ccxt/pro/deribit.py +168 -32
- ccxt/pro/exmo.py +253 -21
- ccxt/pro/gate.py +729 -64
- ccxt/pro/gemini.py +44 -26
- ccxt/pro/hashkey.py +802 -0
- ccxt/pro/hitbtc.py +208 -103
- ccxt/pro/hollaex.py +25 -9
- ccxt/pro/htx.py +83 -39
- ccxt/pro/huobijp.py +17 -16
- ccxt/pro/hyperliquid.py +502 -31
- ccxt/pro/idex.py +28 -13
- ccxt/pro/independentreserve.py +21 -16
- ccxt/pro/kraken.py +298 -51
- ccxt/pro/krakenfutures.py +166 -75
- ccxt/pro/kucoin.py +395 -77
- ccxt/pro/kucoinfutures.py +400 -99
- ccxt/pro/lbank.py +52 -31
- ccxt/pro/luno.py +12 -10
- ccxt/pro/mexc.py +400 -50
- ccxt/pro/myokx.py +28 -0
- ccxt/pro/ndax.py +25 -12
- ccxt/pro/okcoin.py +28 -9
- ccxt/pro/okx.py +935 -124
- ccxt/pro/onetrading.py +41 -24
- ccxt/pro/oxfun.py +1054 -0
- ccxt/pro/p2b.py +100 -24
- ccxt/pro/paradex.py +352 -0
- ccxt/pro/phemex.py +93 -34
- ccxt/pro/poloniex.py +129 -50
- ccxt/pro/poloniexfutures.py +53 -32
- ccxt/pro/probit.py +93 -86
- ccxt/pro/upbit.py +401 -8
- ccxt/pro/vertex.py +943 -0
- ccxt/pro/wazirx.py +46 -28
- ccxt/pro/whitebit.py +65 -12
- ccxt/pro/woo.py +486 -70
- ccxt/pro/woofipro.py +1271 -0
- ccxt/pro/xt.py +1067 -0
- ccxt/probit.py +143 -110
- ccxt/static_dependencies/__init__.py +1 -1
- ccxt/static_dependencies/lark/__init__.py +38 -0
- ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
- ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
- ccxt/static_dependencies/lark/ast_utils.py +59 -0
- ccxt/static_dependencies/lark/common.py +86 -0
- ccxt/static_dependencies/lark/exceptions.py +292 -0
- ccxt/static_dependencies/lark/grammar.py +130 -0
- ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
- ccxt/static_dependencies/lark/indenter.py +143 -0
- ccxt/static_dependencies/lark/lark.py +658 -0
- ccxt/static_dependencies/lark/lexer.py +678 -0
- ccxt/static_dependencies/lark/load_grammar.py +1428 -0
- ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
- ccxt/static_dependencies/lark/parser_frontends.py +257 -0
- ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
- ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
- ccxt/static_dependencies/lark/parsers/earley.py +314 -0
- ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
- ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
- ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
- ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
- ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
- ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
- ccxt/static_dependencies/lark/py.typed +0 -0
- ccxt/static_dependencies/lark/reconstruct.py +107 -0
- ccxt/static_dependencies/lark/tools/__init__.py +70 -0
- ccxt/static_dependencies/lark/tools/nearley.py +202 -0
- ccxt/static_dependencies/lark/tools/serialize.py +32 -0
- ccxt/static_dependencies/lark/tools/standalone.py +196 -0
- ccxt/static_dependencies/lark/tree.py +267 -0
- ccxt/static_dependencies/lark/tree_matcher.py +186 -0
- ccxt/static_dependencies/lark/tree_templates.py +180 -0
- ccxt/static_dependencies/lark/utils.py +343 -0
- ccxt/static_dependencies/lark/visitors.py +596 -0
- ccxt/static_dependencies/marshmallow/__init__.py +81 -0
- ccxt/static_dependencies/marshmallow/base.py +65 -0
- ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
- ccxt/static_dependencies/marshmallow/decorators.py +231 -0
- ccxt/static_dependencies/marshmallow/error_store.py +60 -0
- ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
- ccxt/static_dependencies/marshmallow/fields.py +2114 -0
- ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
- ccxt/static_dependencies/marshmallow/py.typed +0 -0
- ccxt/static_dependencies/marshmallow/schema.py +1228 -0
- ccxt/static_dependencies/marshmallow/types.py +12 -0
- ccxt/static_dependencies/marshmallow/utils.py +378 -0
- ccxt/static_dependencies/marshmallow/validate.py +678 -0
- ccxt/static_dependencies/marshmallow/warnings.py +2 -0
- ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
- ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
- ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
- ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
- ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
- ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
- ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
- ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
- ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- ccxt/static_dependencies/starknet/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
- ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
- ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
- ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
- ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
- ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
- ccxt/static_dependencies/starknet/common.py +15 -0
- ccxt/static_dependencies/starknet/constants.py +39 -0
- ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
- ccxt/static_dependencies/starknet/hash/address.py +79 -0
- ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
- ccxt/static_dependencies/starknet/hash/selector.py +16 -0
- ccxt/static_dependencies/starknet/hash/storage.py +12 -0
- ccxt/static_dependencies/starknet/hash/utils.py +78 -0
- ccxt/static_dependencies/starknet/models/__init__.py +0 -0
- ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
- ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
- ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
- ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
- ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
- ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
- ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
- ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
- ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
- ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
- ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
- ccxt/static_dependencies/starknet/utils/schema.py +13 -0
- ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
- ccxt/static_dependencies/starkware/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
- ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
- ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
- ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
- ccxt/static_dependencies/sympy/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
- ccxt/static_dependencies/sympy/external/__init__.py +0 -0
- ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
- ccxt/static_dependencies/sympy/external/importtools.py +187 -0
- ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
- ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
- ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
- ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
- ccxt/test/{test_async.py → tests_async.py} +465 -407
- ccxt/test/tests_helpers.py +285 -0
- ccxt/test/tests_init.py +39 -0
- ccxt/test/{test_sync.py → tests_sync.py} +465 -409
- ccxt/timex.py +123 -70
- ccxt/tokocrypto.py +129 -93
- ccxt/tradeogre.py +39 -25
- ccxt/upbit.py +322 -113
- ccxt/vertex.py +2983 -0
- ccxt/wavesexchange.py +227 -173
- ccxt/wazirx.py +145 -65
- ccxt/whitebit.py +533 -138
- ccxt/woo.py +1155 -295
- ccxt/woofipro.py +2716 -0
- ccxt/xt.py +4627 -0
- ccxt/yobit.py +159 -92
- ccxt/zaif.py +80 -33
- ccxt/zonda.py +140 -69
- ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
- ccxt-4.4.48.dist-info/METADATA +646 -0
- ccxt-4.4.48.dist-info/RECORD +669 -0
- {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
- ccxt/abstract/bitbay.py +0 -47
- ccxt/abstract/bitfinex2.py +0 -139
- ccxt/abstract/hitbtc3.py +0 -115
- ccxt/async_support/bitbay.py +0 -17
- ccxt/async_support/bitfinex2.py +0 -3496
- ccxt/async_support/flowbtc.py +0 -34
- ccxt/bitbay.py +0 -17
- ccxt/bitfinex2.py +0 -3496
- ccxt/flowbtc.py +0 -34
- ccxt/hitbtc3.py +0 -16
- ccxt/pro/bitfinex2.py +0 -1081
- ccxt/test/base/__init__.py +0 -28
- 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 -103
- 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 -32
- 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_margin_mode.py +0 -24
- ccxt/test/base/test_margin_modification.py +0 -35
- ccxt/test/base/test_market.py +0 -190
- ccxt/test/base/test_number.py +0 -411
- ccxt/test/base/test_ohlcv.py +0 -32
- 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 -63
- ccxt/test/base/test_position.py +0 -60
- ccxt/test/base/test_shared_methods.py +0 -345
- ccxt/test/base/test_status.py +0 -24
- ccxt/test/base/test_throttle.py +0 -126
- ccxt/test/base/test_ticker.py +0 -86
- 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-4.2.76.dist-info/METADATA +0 -626
- ccxt-4.2.76.dist-info/RECORD +0 -534
- {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/async_support/coinmate.py
CHANGED
@@ -6,15 +6,15 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.coinmate import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
|
+
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
|
+
from ccxt.base.errors import AuthenticationError
|
12
13
|
from ccxt.base.errors import ArgumentsRequired
|
13
14
|
from ccxt.base.errors import InsufficientFunds
|
14
15
|
from ccxt.base.errors import InvalidOrder
|
15
16
|
from ccxt.base.errors import OrderNotFound
|
16
17
|
from ccxt.base.errors import RateLimitExceeded
|
17
|
-
from ccxt.base.errors import AuthenticationError
|
18
18
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
19
19
|
from ccxt.base.precise import Precise
|
20
20
|
|
@@ -26,7 +26,7 @@ class coinmate(Exchange, ImplicitAPI):
|
|
26
26
|
'id': 'coinmate',
|
27
27
|
'name': 'CoinMate',
|
28
28
|
'countries': ['GB', 'CZ', 'EU'], # UK, Czech Republic
|
29
|
-
'rateLimit':
|
29
|
+
'rateLimit': 600,
|
30
30
|
'has': {
|
31
31
|
'CORS': True,
|
32
32
|
'spot': True,
|
@@ -65,8 +65,11 @@ class coinmate(Exchange, ImplicitAPI):
|
|
65
65
|
'fetchOrderBook': True,
|
66
66
|
'fetchOrders': True,
|
67
67
|
'fetchPosition': False,
|
68
|
+
'fetchPositionHistory': False,
|
68
69
|
'fetchPositionMode': False,
|
69
70
|
'fetchPositions': False,
|
71
|
+
'fetchPositionsForSymbol': False,
|
72
|
+
'fetchPositionsHistory': False,
|
70
73
|
'fetchPositionsRisk': False,
|
71
74
|
'fetchPremiumIndexOHLCV': False,
|
72
75
|
'fetchTicker': True,
|
@@ -172,28 +175,28 @@ class coinmate(Exchange, ImplicitAPI):
|
|
172
175
|
'trading': {
|
173
176
|
'tierBased': True,
|
174
177
|
'percentage': True,
|
175
|
-
'
|
176
|
-
'
|
178
|
+
'taker': self.parse_number('0.006'),
|
179
|
+
'maker': self.parse_number('0.004'),
|
177
180
|
'tiers': {
|
178
181
|
'taker': [
|
179
|
-
[self.parse_number('0'), self.parse_number('0.
|
180
|
-
[self.parse_number('10000'), self.parse_number('0.
|
181
|
-
[self.parse_number('100000'), self.parse_number('0.
|
182
|
-
[self.parse_number('250000'), self.parse_number('0.
|
183
|
-
[self.parse_number('500000'), self.parse_number('0.
|
184
|
-
[self.parse_number('1000000'), self.parse_number('0.
|
185
|
-
[self.parse_number('3000000'), self.parse_number('0.
|
186
|
-
[self.parse_number('15000000'), self.parse_number('0.
|
182
|
+
[self.parse_number('0'), self.parse_number('0.006')],
|
183
|
+
[self.parse_number('10000'), self.parse_number('0.003')],
|
184
|
+
[self.parse_number('100000'), self.parse_number('0.0023')],
|
185
|
+
[self.parse_number('250000'), self.parse_number('0.0021')],
|
186
|
+
[self.parse_number('500000'), self.parse_number('0.0018')],
|
187
|
+
[self.parse_number('1000000'), self.parse_number('0.0015')],
|
188
|
+
[self.parse_number('3000000'), self.parse_number('0.0012')],
|
189
|
+
[self.parse_number('15000000'), self.parse_number('0.001')],
|
187
190
|
],
|
188
191
|
'maker': [
|
189
|
-
[self.parse_number('0'), self.parse_number('0.
|
190
|
-
[self.parse_number('10000'), self.parse_number('0.
|
191
|
-
[self.parse_number('100000'), self.parse_number('0.
|
192
|
-
[self.parse_number('250000'), self.parse_number('0.
|
192
|
+
[self.parse_number('0'), self.parse_number('0.004')],
|
193
|
+
[self.parse_number('10000'), self.parse_number('0.002')],
|
194
|
+
[self.parse_number('100000'), self.parse_number('0.0012')],
|
195
|
+
[self.parse_number('250000'), self.parse_number('0.0009')],
|
193
196
|
[self.parse_number('500000'), self.parse_number('0.0005')],
|
194
197
|
[self.parse_number('1000000'), self.parse_number('0.0003')],
|
195
198
|
[self.parse_number('3000000'), self.parse_number('0.0002')],
|
196
|
-
[self.parse_number('15000000'), self.parse_number('0')],
|
199
|
+
[self.parse_number('15000000'), self.parse_number('-0.0004')],
|
197
200
|
],
|
198
201
|
},
|
199
202
|
},
|
@@ -214,6 +217,69 @@ class coinmate(Exchange, ImplicitAPI):
|
|
214
217
|
},
|
215
218
|
},
|
216
219
|
},
|
220
|
+
'features': {
|
221
|
+
'spot': {
|
222
|
+
'sandbox': False,
|
223
|
+
'createOrder': {
|
224
|
+
'marginMode': False,
|
225
|
+
'triggerPrice': True, # todo implement
|
226
|
+
'triggerPriceType': None,
|
227
|
+
'triggerDirection': False,
|
228
|
+
'stopLossPrice': False, # todo
|
229
|
+
'takeProfitPrice': False, # todo
|
230
|
+
'attachedStopLossTakeProfit': None,
|
231
|
+
'timeInForce': {
|
232
|
+
'IOC': True,
|
233
|
+
'FOK': False,
|
234
|
+
'PO': True,
|
235
|
+
'GTD': False,
|
236
|
+
},
|
237
|
+
'hedged': False,
|
238
|
+
'trailing': True, # todo implement
|
239
|
+
'leverage': False,
|
240
|
+
'marketBuyByCost': False,
|
241
|
+
'marketBuyRequiresPrice': False,
|
242
|
+
'selfTradePrevention': False,
|
243
|
+
'iceberg': True, # todo
|
244
|
+
},
|
245
|
+
'createOrders': None,
|
246
|
+
'fetchMyTrades': {
|
247
|
+
'marginMode': False,
|
248
|
+
'limit': 1000,
|
249
|
+
'daysBack': 100000,
|
250
|
+
'untilDays': 100000, # todo implement
|
251
|
+
},
|
252
|
+
'fetchOrder': {
|
253
|
+
'marginMode': False,
|
254
|
+
'trigger': False,
|
255
|
+
'trailing': False,
|
256
|
+
},
|
257
|
+
'fetchOpenOrders': {
|
258
|
+
'marginMode': False,
|
259
|
+
'limit': None,
|
260
|
+
'trigger': False,
|
261
|
+
'trailing': False,
|
262
|
+
},
|
263
|
+
'fetchOrders': {
|
264
|
+
'marginMode': False,
|
265
|
+
'limit': 100,
|
266
|
+
'daysBack': None,
|
267
|
+
'untilDays': None,
|
268
|
+
'trigger': False,
|
269
|
+
'trailing': False,
|
270
|
+
},
|
271
|
+
'fetchClosedOrders': None,
|
272
|
+
'fetchOHLCV': None,
|
273
|
+
},
|
274
|
+
'swap': {
|
275
|
+
'linear': None,
|
276
|
+
'inverse': None,
|
277
|
+
},
|
278
|
+
'future': {
|
279
|
+
'linear': None,
|
280
|
+
'inverse': None,
|
281
|
+
},
|
282
|
+
},
|
217
283
|
'exceptions': {
|
218
284
|
'exact': {
|
219
285
|
'No order with given ID': OrderNotFound,
|
@@ -230,10 +296,12 @@ class coinmate(Exchange, ImplicitAPI):
|
|
230
296
|
'precisionMode': TICK_SIZE,
|
231
297
|
})
|
232
298
|
|
233
|
-
async def fetch_markets(self, params={}):
|
299
|
+
async def fetch_markets(self, params={}) -> List[Market]:
|
234
300
|
"""
|
235
301
|
retrieves data on all markets for coinmate
|
236
|
-
|
302
|
+
|
303
|
+
https://coinmate.docs.apiary.io/#reference/trading-pairs/get-trading-pairs/get
|
304
|
+
|
237
305
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
238
306
|
:returns dict[]: an array of objects representing market data
|
239
307
|
"""
|
@@ -320,7 +388,7 @@ class coinmate(Exchange, ImplicitAPI):
|
|
320
388
|
|
321
389
|
def parse_balance(self, response) -> Balances:
|
322
390
|
balances = self.safe_value(response, 'data', {})
|
323
|
-
result = {'info': response}
|
391
|
+
result: dict = {'info': response}
|
324
392
|
currencyIds = list(balances.keys())
|
325
393
|
for i in range(0, len(currencyIds)):
|
326
394
|
currencyId = currencyIds[i]
|
@@ -336,7 +404,9 @@ class coinmate(Exchange, ImplicitAPI):
|
|
336
404
|
async def fetch_balance(self, params={}) -> Balances:
|
337
405
|
"""
|
338
406
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
339
|
-
|
407
|
+
|
408
|
+
https://coinmate.docs.apiary.io/#reference/balance/get-balances/post
|
409
|
+
|
340
410
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
341
411
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
342
412
|
"""
|
@@ -347,7 +417,9 @@ class coinmate(Exchange, ImplicitAPI):
|
|
347
417
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
348
418
|
"""
|
349
419
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
350
|
-
|
420
|
+
|
421
|
+
https://coinmate.docs.apiary.io/#reference/order-book/get-order-book/get
|
422
|
+
|
351
423
|
:param str symbol: unified symbol of the market to fetch the order book for
|
352
424
|
:param int [limit]: the maximum amount of order book entries to return
|
353
425
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -355,7 +427,7 @@ class coinmate(Exchange, ImplicitAPI):
|
|
355
427
|
"""
|
356
428
|
await self.load_markets()
|
357
429
|
market = self.market(symbol)
|
358
|
-
request = {
|
430
|
+
request: dict = {
|
359
431
|
'currencyPair': market['id'],
|
360
432
|
'groupByPriceLimit': 'False',
|
361
433
|
}
|
@@ -367,14 +439,16 @@ class coinmate(Exchange, ImplicitAPI):
|
|
367
439
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
368
440
|
"""
|
369
441
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
370
|
-
|
442
|
+
|
443
|
+
https://coinmate.docs.apiary.io/#reference/ticker/get-ticker/get
|
444
|
+
|
371
445
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
372
446
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
373
447
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
374
448
|
"""
|
375
449
|
await self.load_markets()
|
376
450
|
market = self.market(symbol)
|
377
|
-
request = {
|
451
|
+
request: dict = {
|
378
452
|
'currencyPair': market['id'],
|
379
453
|
}
|
380
454
|
response = await self.publicGetTicker(self.extend(request, params))
|
@@ -395,13 +469,15 @@ class coinmate(Exchange, ImplicitAPI):
|
|
395
469
|
# }
|
396
470
|
# }
|
397
471
|
#
|
398
|
-
data = self.
|
472
|
+
data = self.safe_dict(response, 'data')
|
399
473
|
return self.parse_ticker(data, market)
|
400
474
|
|
401
475
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
402
476
|
"""
|
403
477
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
404
|
-
|
478
|
+
|
479
|
+
https://coinmate.docs.apiary.io/#reference/ticker/get-ticker-all/get
|
480
|
+
|
405
481
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
406
482
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
407
483
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -430,14 +506,14 @@ class coinmate(Exchange, ImplicitAPI):
|
|
430
506
|
#
|
431
507
|
data = self.safe_value(response, 'data', {})
|
432
508
|
keys = list(data.keys())
|
433
|
-
result = {}
|
509
|
+
result: dict = {}
|
434
510
|
for i in range(0, len(keys)):
|
435
511
|
market = self.market(keys[i])
|
436
512
|
ticker = self.parse_ticker(self.safe_value(data, keys[i]), market)
|
437
513
|
result[market['symbol']] = ticker
|
438
514
|
return self.filter_by_array_tickers(result, 'symbol', symbols)
|
439
515
|
|
440
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
516
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
441
517
|
#
|
442
518
|
# {
|
443
519
|
# "last": "0.001337",
|
@@ -479,7 +555,9 @@ class coinmate(Exchange, ImplicitAPI):
|
|
479
555
|
async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
480
556
|
"""
|
481
557
|
fetch history of deposits and withdrawals
|
482
|
-
|
558
|
+
|
559
|
+
https://coinmate.docs.apiary.io/#reference/transfers/get-transfer-history/post
|
560
|
+
|
483
561
|
:param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
|
484
562
|
:param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
|
485
563
|
:param int [limit]: max number of deposit/withdrawals to return, default is None
|
@@ -487,7 +565,7 @@ class coinmate(Exchange, ImplicitAPI):
|
|
487
565
|
:returns dict: a list of `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
488
566
|
"""
|
489
567
|
await self.load_markets()
|
490
|
-
request = {
|
568
|
+
request: dict = {
|
491
569
|
'limit': 1000,
|
492
570
|
}
|
493
571
|
if limit is not None:
|
@@ -501,8 +579,8 @@ class coinmate(Exchange, ImplicitAPI):
|
|
501
579
|
items = response['data']
|
502
580
|
return self.parse_transactions(items, None, since, limit)
|
503
581
|
|
504
|
-
def parse_transaction_status(self, status):
|
505
|
-
statuses = {
|
582
|
+
def parse_transaction_status(self, status: Str):
|
583
|
+
statuses: dict = {
|
506
584
|
'COMPLETED': 'ok',
|
507
585
|
'WAITING': 'pending',
|
508
586
|
'SENT': 'pending',
|
@@ -513,7 +591,7 @@ class coinmate(Exchange, ImplicitAPI):
|
|
513
591
|
}
|
514
592
|
return self.safe_string(statuses, status, status)
|
515
593
|
|
516
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
594
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
517
595
|
#
|
518
596
|
# deposits
|
519
597
|
#
|
@@ -584,15 +662,17 @@ class coinmate(Exchange, ImplicitAPI):
|
|
584
662
|
},
|
585
663
|
}
|
586
664
|
|
587
|
-
async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
665
|
+
async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
588
666
|
"""
|
589
667
|
make a withdrawal
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
668
|
+
|
669
|
+
https://coinmate.docs.apiary.io/#reference/bitcoin-withdrawal-and-deposit/withdraw-bitcoins/post
|
670
|
+
https://coinmate.docs.apiary.io/#reference/litecoin-withdrawal-and-deposit/withdraw-litecoins/post
|
671
|
+
https://coinmate.docs.apiary.io/#reference/ethereum-withdrawal-and-deposit/withdraw-ethereum/post
|
672
|
+
https://coinmate.docs.apiary.io/#reference/ripple-withdrawal-and-deposit/withdraw-ripple/post
|
673
|
+
https://coinmate.docs.apiary.io/#reference/cardano-withdrawal-and-deposit/withdraw-cardano/post
|
674
|
+
https://coinmate.docs.apiary.io/#reference/solana-withdrawal-and-deposit/withdraw-solana/post
|
675
|
+
|
596
676
|
:param str code: unified currency code
|
597
677
|
:param float amount: the amount to withdraw
|
598
678
|
:param str address: the address to withdraw to
|
@@ -610,7 +690,7 @@ class coinmate(Exchange, ImplicitAPI):
|
|
610
690
|
if method is None:
|
611
691
|
allowedCurrencies = list(methods.keys())
|
612
692
|
raise ExchangeError(self.id + ' withdraw() only allows withdrawing the following currencies: ' + ', '.join(allowedCurrencies))
|
613
|
-
request = {
|
693
|
+
request: dict = {
|
614
694
|
'amount': self.currency_to_precision(code, amount),
|
615
695
|
'address': address,
|
616
696
|
}
|
@@ -641,7 +721,9 @@ class coinmate(Exchange, ImplicitAPI):
|
|
641
721
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
642
722
|
"""
|
643
723
|
fetch all trades made by the user
|
644
|
-
|
724
|
+
|
725
|
+
https://coinmate.docs.apiary.io/#reference/trade-history/get-trade-history/post
|
726
|
+
|
645
727
|
:param str symbol: unified market symbol
|
646
728
|
:param int [since]: the earliest time in ms to fetch trades for
|
647
729
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -651,7 +733,7 @@ class coinmate(Exchange, ImplicitAPI):
|
|
651
733
|
await self.load_markets()
|
652
734
|
if limit is None:
|
653
735
|
limit = 1000
|
654
|
-
request = {
|
736
|
+
request: dict = {
|
655
737
|
'limit': limit,
|
656
738
|
}
|
657
739
|
if symbol is not None:
|
@@ -660,10 +742,10 @@ class coinmate(Exchange, ImplicitAPI):
|
|
660
742
|
if since is not None:
|
661
743
|
request['timestampFrom'] = since
|
662
744
|
response = await self.privatePostTradeHistory(self.extend(request, params))
|
663
|
-
data = self.
|
745
|
+
data = self.safe_list(response, 'data', [])
|
664
746
|
return self.parse_trades(data, None, since, limit)
|
665
747
|
|
666
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
748
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
667
749
|
#
|
668
750
|
# fetchMyTrades(private)
|
669
751
|
#
|
@@ -728,7 +810,9 @@ class coinmate(Exchange, ImplicitAPI):
|
|
728
810
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
729
811
|
"""
|
730
812
|
get the list of most recent trades for a particular symbol
|
731
|
-
|
813
|
+
|
814
|
+
https://coinmate.docs.apiary.io/#reference/transactions/transactions/get
|
815
|
+
|
732
816
|
:param str symbol: unified symbol of the market to fetch trades for
|
733
817
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
734
818
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -737,7 +821,7 @@ class coinmate(Exchange, ImplicitAPI):
|
|
737
821
|
"""
|
738
822
|
await self.load_markets()
|
739
823
|
market = self.market(symbol)
|
740
|
-
request = {
|
824
|
+
request: dict = {
|
741
825
|
'currencyPair': market['id'],
|
742
826
|
'minutesIntoHistory': 10,
|
743
827
|
}
|
@@ -758,20 +842,22 @@ class coinmate(Exchange, ImplicitAPI):
|
|
758
842
|
# ]
|
759
843
|
# }
|
760
844
|
#
|
761
|
-
data = self.
|
845
|
+
data = self.safe_list(response, 'data', [])
|
762
846
|
return self.parse_trades(data, market, since, limit)
|
763
847
|
|
764
|
-
async def fetch_trading_fee(self, symbol: str, params={}):
|
848
|
+
async def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
765
849
|
"""
|
766
850
|
fetch the trading fees for a market
|
767
|
-
|
851
|
+
|
852
|
+
https://coinmate.docs.apiary.io/#reference/trader-fees/get-trading-fees/post
|
853
|
+
|
768
854
|
:param str symbol: unified market symbol
|
769
855
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
770
856
|
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
|
771
857
|
"""
|
772
858
|
await self.load_markets()
|
773
859
|
market = self.market(symbol)
|
774
|
-
request = {
|
860
|
+
request: dict = {
|
775
861
|
'currencyPair': market['id'],
|
776
862
|
}
|
777
863
|
response = await self.privatePostTraderFees(self.extend(request, params))
|
@@ -799,7 +885,9 @@ class coinmate(Exchange, ImplicitAPI):
|
|
799
885
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
800
886
|
"""
|
801
887
|
fetch all unfilled currently open orders
|
802
|
-
|
888
|
+
|
889
|
+
https://coinmate.docs.apiary.io/#reference/order/get-open-orders/post
|
890
|
+
|
803
891
|
:param str symbol: unified market symbol
|
804
892
|
:param int [since]: the earliest time in ms to fetch open orders for
|
805
893
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
@@ -807,13 +895,15 @@ class coinmate(Exchange, ImplicitAPI):
|
|
807
895
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
808
896
|
"""
|
809
897
|
response = await self.privatePostOpenOrders(self.extend({}, params))
|
810
|
-
extension = {'status': 'open'}
|
898
|
+
extension: dict = {'status': 'open'}
|
811
899
|
return self.parse_orders(response['data'], None, since, limit, extension)
|
812
900
|
|
813
901
|
async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
814
902
|
"""
|
815
903
|
fetches information on multiple orders made by the user
|
816
|
-
|
904
|
+
|
905
|
+
https://coinmate.docs.apiary.io/#reference/order/order-history/post
|
906
|
+
|
817
907
|
:param str symbol: unified market symbol of the market orders were made in
|
818
908
|
:param int [since]: the earliest time in ms to fetch orders for
|
819
909
|
:param int [limit]: the maximum number of order structures to retrieve
|
@@ -824,7 +914,7 @@ class coinmate(Exchange, ImplicitAPI):
|
|
824
914
|
raise ArgumentsRequired(self.id + ' fetchOrders() requires a symbol argument')
|
825
915
|
await self.load_markets()
|
826
916
|
market = self.market(symbol)
|
827
|
-
request = {
|
917
|
+
request: dict = {
|
828
918
|
'currencyPair': market['id'],
|
829
919
|
}
|
830
920
|
# offset param that appears in other parts of the API doesn't appear to be supported here
|
@@ -833,8 +923,8 @@ class coinmate(Exchange, ImplicitAPI):
|
|
833
923
|
response = await self.privatePostOrderHistory(self.extend(request, params))
|
834
924
|
return self.parse_orders(response['data'], market, since, limit)
|
835
925
|
|
836
|
-
def parse_order_status(self, status):
|
837
|
-
statuses = {
|
926
|
+
def parse_order_status(self, status: Str):
|
927
|
+
statuses: dict = {
|
838
928
|
'FILLED': 'closed',
|
839
929
|
'CANCELLED': 'canceled',
|
840
930
|
'PARTIALLY_FILLED': 'open',
|
@@ -842,14 +932,14 @@ class coinmate(Exchange, ImplicitAPI):
|
|
842
932
|
}
|
843
933
|
return self.safe_string(statuses, status, status)
|
844
934
|
|
845
|
-
def parse_order_type(self, type):
|
846
|
-
types = {
|
935
|
+
def parse_order_type(self, type: Str):
|
936
|
+
types: dict = {
|
847
937
|
'LIMIT': 'limit',
|
848
938
|
'MARKET': 'market',
|
849
939
|
}
|
850
940
|
return self.safe_string(types, type, type)
|
851
941
|
|
852
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
942
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
853
943
|
#
|
854
944
|
# limit sell
|
855
945
|
#
|
@@ -892,6 +982,13 @@ class coinmate(Exchange, ImplicitAPI):
|
|
892
982
|
# "trailing": False,
|
893
983
|
# }
|
894
984
|
#
|
985
|
+
# cancelOrder
|
986
|
+
#
|
987
|
+
# {
|
988
|
+
# "success": True,
|
989
|
+
# "remainingAmount": 0.1
|
990
|
+
# }
|
991
|
+
#
|
895
992
|
id = self.safe_string(order, 'id')
|
896
993
|
timestamp = self.safe_integer(order, 'timestamp')
|
897
994
|
side = self.safe_string_lower(order, 'type')
|
@@ -904,7 +1001,6 @@ class coinmate(Exchange, ImplicitAPI):
|
|
904
1001
|
marketId = self.safe_string(order, 'currencyPair')
|
905
1002
|
symbol = self.safe_symbol(marketId, market, '_')
|
906
1003
|
clientOrderId = self.safe_string(order, 'clientOrderId')
|
907
|
-
stopPrice = self.safe_number(order, 'stopPrice')
|
908
1004
|
return self.safe_order({
|
909
1005
|
'id': id,
|
910
1006
|
'clientOrderId': clientOrderId,
|
@@ -917,8 +1013,7 @@ class coinmate(Exchange, ImplicitAPI):
|
|
917
1013
|
'postOnly': None,
|
918
1014
|
'side': side,
|
919
1015
|
'price': priceString,
|
920
|
-
'
|
921
|
-
'triggerPrice': stopPrice,
|
1016
|
+
'triggerPrice': self.safe_number(order, 'stopPrice'),
|
922
1017
|
'amount': amountString,
|
923
1018
|
'cost': None,
|
924
1019
|
'average': averageString,
|
@@ -933,22 +1028,24 @@ class coinmate(Exchange, ImplicitAPI):
|
|
933
1028
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
934
1029
|
"""
|
935
1030
|
create a trade order
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
|
1031
|
+
|
1032
|
+
https://coinmate.docs.apiary.io/#reference/order/buy-limit-order/post
|
1033
|
+
https://coinmate.docs.apiary.io/#reference/order/sell-limit-order/post
|
1034
|
+
https://coinmate.docs.apiary.io/#reference/order/buy-instant-order/post
|
1035
|
+
https://coinmate.docs.apiary.io/#reference/order/sell-instant-order/post
|
1036
|
+
|
940
1037
|
:param str symbol: unified symbol of the market to create an order in
|
941
1038
|
:param str type: 'market' or 'limit'
|
942
1039
|
:param str side: 'buy' or 'sell'
|
943
1040
|
:param float amount: how much of currency you want to trade in units of base currency
|
944
|
-
:param float [price]: the price at which the order is to be
|
1041
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
945
1042
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
946
1043
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
947
1044
|
"""
|
948
1045
|
await self.load_markets()
|
949
1046
|
method = 'privatePost' + self.capitalize(side)
|
950
1047
|
market = self.market(symbol)
|
951
|
-
request = {
|
1048
|
+
request: dict = {
|
952
1049
|
'currencyPair': market['id'],
|
953
1050
|
}
|
954
1051
|
if type == 'market':
|
@@ -971,38 +1068,52 @@ class coinmate(Exchange, ImplicitAPI):
|
|
971
1068
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
972
1069
|
"""
|
973
1070
|
fetches information on an order made by the user
|
974
|
-
|
975
|
-
|
1071
|
+
|
1072
|
+
https://coinmate.docs.apiary.io/#reference/order/get-order-by-orderid/post
|
1073
|
+
https://coinmate.docs.apiary.io/#reference/order/get-order-by-clientorderid/post
|
1074
|
+
|
1075
|
+
:param str id: order id
|
976
1076
|
:param str symbol: unified symbol of the market the order was made in
|
977
1077
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
978
1078
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
979
1079
|
"""
|
980
1080
|
await self.load_markets()
|
981
|
-
request = {
|
1081
|
+
request: dict = {
|
982
1082
|
'orderId': id,
|
983
1083
|
}
|
984
1084
|
market = None
|
985
1085
|
if symbol:
|
986
1086
|
market = self.market(symbol)
|
987
1087
|
response = await self.privatePostOrderById(self.extend(request, params))
|
988
|
-
data = self.
|
1088
|
+
data = self.safe_dict(response, 'data')
|
989
1089
|
return self.parse_order(data, market)
|
990
1090
|
|
991
1091
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
992
1092
|
"""
|
993
1093
|
cancels an open order
|
994
|
-
|
1094
|
+
|
1095
|
+
https://coinmate.docs.apiary.io/#reference/order/cancel-order/post
|
1096
|
+
|
995
1097
|
:param str id: order id
|
996
1098
|
:param str symbol: not used by coinmate cancelOrder()
|
997
1099
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
998
1100
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
999
1101
|
"""
|
1000
1102
|
# {"error":false,"errorMessage":null,"data":{"success":true,"remainingAmount":0.01}}
|
1001
|
-
request = {'orderId': id}
|
1103
|
+
request: dict = {'orderId': id}
|
1002
1104
|
response = await self.privatePostCancelOrderWithInfo(self.extend(request, params))
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1105
|
+
#
|
1106
|
+
# {
|
1107
|
+
# "error": False,
|
1108
|
+
# "errorMessage": null,
|
1109
|
+
# "data": {
|
1110
|
+
# "success": True,
|
1111
|
+
# "remainingAmount": 0.1
|
1112
|
+
# }
|
1113
|
+
# }
|
1114
|
+
#
|
1115
|
+
data = self.safe_dict(response, 'data')
|
1116
|
+
return self.parse_order(data)
|
1006
1117
|
|
1007
1118
|
def nonce(self):
|
1008
1119
|
return self.milliseconds()
|
@@ -1028,21 +1139,17 @@ class coinmate(Exchange, ImplicitAPI):
|
|
1028
1139
|
}
|
1029
1140
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1030
1141
|
|
1031
|
-
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1032
|
-
if response is
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
self.throw_exactly_matched_exception(self.exceptions['exact'], body, feedback)
|
1045
|
-
self.throw_broadly_matched_exception(self.exceptions['broad'], body, feedback)
|
1046
|
-
raise ExchangeError(feedback) # unknown message
|
1047
|
-
raise ExchangeError(self.id + ' ' + body)
|
1142
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1143
|
+
if response is None:
|
1144
|
+
return None # fallback to default error handler
|
1145
|
+
#
|
1146
|
+
# {"error":true,"errorMessage":"Api internal error","data":null}
|
1147
|
+
# {"error":true,"errorMessage":"Access denied.","data":null}
|
1148
|
+
#
|
1149
|
+
errorMessage = self.safe_string(response, 'errorMessage')
|
1150
|
+
if errorMessage is not None:
|
1151
|
+
feedback = self.id + ' ' + body
|
1152
|
+
self.throw_exactly_matched_exception(self.exceptions['exact'], errorMessage, feedback)
|
1153
|
+
self.throw_broadly_matched_exception(self.exceptions['broad'], errorMessage, feedback)
|
1154
|
+
raise ExchangeError(feedback) # unknown message
|
1048
1155
|
return None
|