ccxt 4.2.77__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 +24 -0
- ccxt/abstract/kucoinfutures.py +34 -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 +3030 -1087
- 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 +3104 -880
- 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 +238 -49
- ccxt/async_support/bitget.py +1513 -563
- ccxt/async_support/bithumb.py +199 -65
- 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 +392 -148
- 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 +2231 -1193
- ccxt/async_support/cex.py +1409 -1329
- ccxt/async_support/coinbase.py +1454 -287
- 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 +404 -109
- ccxt/async_support/deribit.py +557 -323
- 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 +1472 -463
- 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 +1633 -268
- 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 +917 -357
- 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 +1776 -454
- 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 +1137 -296
- 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 +1722 -480
- 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 +3030 -1087
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +12 -1
- ccxt/binanceusdm.py +3 -1
- ccxt/bingx.py +3104 -880
- 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 +238 -49
- ccxt/bitget.py +1513 -563
- ccxt/bithumb.py +198 -65
- 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 +392 -148
- ccxt/btcalpha.py +161 -55
- ccxt/btcbox.py +250 -34
- ccxt/btcmarkets.py +232 -85
- ccxt/btcturk.py +159 -60
- ccxt/bybit.py +2231 -1193
- ccxt/cex.py +1408 -1329
- ccxt/coinbase.py +1454 -287
- 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 +404 -109
- ccxt/deribit.py +557 -323
- ccxt/digifinex.py +340 -223
- ccxt/ellipx.py +1826 -0
- ccxt/exmo.py +259 -128
- ccxt/gate.py +1472 -463
- 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 +1632 -268
- 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 +917 -357
- 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 +1776 -454
- 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 +62 -14
- 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 +203 -81
- 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 +965 -665
- 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 +167 -31
- ccxt/pro/exmo.py +252 -20
- 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 +92 -33
- ccxt/pro/poloniex.py +128 -49
- ccxt/pro/poloniexfutures.py +53 -32
- ccxt/pro/probit.py +92 -85
- 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 +437 -65
- 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} +456 -391
- ccxt/test/tests_helpers.py +285 -0
- ccxt/test/tests_init.py +39 -0
- ccxt/test/{test_sync.py → tests_sync.py} +456 -393
- 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 +1137 -296
- 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.77.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.77.dist-info/METADATA +0 -626
- ccxt-4.2.77.dist-info/RECORD +0 -534
- {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/blockchaincom.py
CHANGED
@@ -5,13 +5,13 @@
|
|
5
5
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.blockchaincom import ImplicitAPI
|
8
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
8
|
+
from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import ExchangeError
|
11
|
+
from ccxt.base.errors import AuthenticationError
|
11
12
|
from ccxt.base.errors import ArgumentsRequired
|
12
13
|
from ccxt.base.errors import InsufficientFunds
|
13
14
|
from ccxt.base.errors import OrderNotFound
|
14
|
-
from ccxt.base.errors import AuthenticationError
|
15
15
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
16
16
|
from ccxt.base.precise import Precise
|
17
17
|
|
@@ -45,6 +45,8 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
45
45
|
'fetchClosedOrders': True,
|
46
46
|
'fetchDeposit': True,
|
47
47
|
'fetchDepositAddress': True,
|
48
|
+
'fetchDepositAddresses': False,
|
49
|
+
'fetchDepositAddressesByNetwork': False,
|
48
50
|
'fetchDeposits': True,
|
49
51
|
'fetchFundingHistory': False,
|
50
52
|
'fetchFundingRate': False,
|
@@ -80,7 +82,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
80
82
|
},
|
81
83
|
'timeframes': None,
|
82
84
|
'urls': {
|
83
|
-
'logo': 'https://
|
85
|
+
'logo': 'https://github.com/user-attachments/assets/975e3054-3399-4363-bcee-ec3c6d63d4e8',
|
84
86
|
'test': {
|
85
87
|
'public': 'https://testnet-api.delta.exchange',
|
86
88
|
'private': 'https://testnet-api.delta.exchange',
|
@@ -140,9 +142,9 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
140
142
|
'percentage': True,
|
141
143
|
'tiers': {
|
142
144
|
'taker': [
|
143
|
-
[self.parse_number('0'), self.parse_number('0.
|
144
|
-
[self.parse_number('10000'), self.parse_number('0.
|
145
|
-
[self.parse_number('50000'), self.parse_number('0.
|
145
|
+
[self.parse_number('0'), self.parse_number('0.0045')],
|
146
|
+
[self.parse_number('10000'), self.parse_number('0.0035')],
|
147
|
+
[self.parse_number('50000'), self.parse_number('0.0018')],
|
146
148
|
[self.parse_number('100000'), self.parse_number('0.0018')],
|
147
149
|
[self.parse_number('500000'), self.parse_number('0.0018')],
|
148
150
|
[self.parse_number('1000000'), self.parse_number('0.0018')],
|
@@ -154,11 +156,11 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
154
156
|
[self.parse_number('1000000000'), self.parse_number('0.0006')],
|
155
157
|
],
|
156
158
|
'maker': [
|
157
|
-
[self.parse_number('0'), self.parse_number('0.
|
158
|
-
[self.parse_number('10000'), self.parse_number('0.
|
159
|
-
[self.parse_number('50000'), self.parse_number('0.
|
159
|
+
[self.parse_number('0'), self.parse_number('0.004')],
|
160
|
+
[self.parse_number('10000'), self.parse_number('0.0017')],
|
161
|
+
[self.parse_number('50000'), self.parse_number('0.0015')],
|
160
162
|
[self.parse_number('100000'), self.parse_number('0.0008')],
|
161
|
-
[self.parse_number('500000'), self.parse_number('0.
|
163
|
+
[self.parse_number('500000'), self.parse_number('0.0007')],
|
162
164
|
[self.parse_number('1000000'), self.parse_number('0.0006')],
|
163
165
|
[self.parse_number('2500000'), self.parse_number('0.0005')],
|
164
166
|
[self.parse_number('5000000'), self.parse_number('0.0004')],
|
@@ -217,6 +219,70 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
217
219
|
# 'DIGITALGOLD': 'DGLD',
|
218
220
|
},
|
219
221
|
},
|
222
|
+
'features': {
|
223
|
+
'spot': {
|
224
|
+
'sandbox': False,
|
225
|
+
'createOrder': {
|
226
|
+
'marginMode': False,
|
227
|
+
'triggerPrice': True,
|
228
|
+
'triggerPriceType': None,
|
229
|
+
'triggerDirection': False,
|
230
|
+
'stopLossPrice': False, # todo
|
231
|
+
'takeProfitPrice': False, # todo
|
232
|
+
'attachedStopLossTakeProfit': None,
|
233
|
+
'timeInForce': {
|
234
|
+
'IOC': True,
|
235
|
+
'FOK': True,
|
236
|
+
'PO': False,
|
237
|
+
'GTD': True, # todo implementation
|
238
|
+
},
|
239
|
+
'hedged': False,
|
240
|
+
'leverage': False,
|
241
|
+
'marketBuyRequiresPrice': False,
|
242
|
+
'marketBuyByCost': False,
|
243
|
+
'selfTradePrevention': False,
|
244
|
+
'trailing': False,
|
245
|
+
'iceberg': False,
|
246
|
+
},
|
247
|
+
'createOrders': None,
|
248
|
+
'fetchMyTrades': {
|
249
|
+
'marginMode': False,
|
250
|
+
'limit': 1000,
|
251
|
+
'daysBack': 100000, # todo implementation
|
252
|
+
'untilDays': 100000, # todo implementation
|
253
|
+
},
|
254
|
+
'fetchOrder': {
|
255
|
+
'marginMode': False,
|
256
|
+
'trigger': False,
|
257
|
+
'trailing': False,
|
258
|
+
},
|
259
|
+
'fetchOpenOrders': {
|
260
|
+
'marginMode': False,
|
261
|
+
'limit': 1000,
|
262
|
+
'trigger': False,
|
263
|
+
'trailing': False,
|
264
|
+
},
|
265
|
+
'fetchOrders': None, # todo implement
|
266
|
+
'fetchClosedOrders': {
|
267
|
+
'marginMode': False,
|
268
|
+
'limit': 1000,
|
269
|
+
'daysBack': 100000,
|
270
|
+
'daysBackCanceled': 1,
|
271
|
+
'untilDays': 100000,
|
272
|
+
'trigger': False,
|
273
|
+
'trailing': False,
|
274
|
+
},
|
275
|
+
'fetchOHLCV': None, # todo webapi
|
276
|
+
},
|
277
|
+
'swap': {
|
278
|
+
'linear': None,
|
279
|
+
'inverse': None,
|
280
|
+
},
|
281
|
+
'future': {
|
282
|
+
'linear': None,
|
283
|
+
'inverse': None,
|
284
|
+
},
|
285
|
+
},
|
220
286
|
'precisionMode': TICK_SIZE,
|
221
287
|
'exceptions': {
|
222
288
|
'exact': {
|
@@ -227,10 +293,12 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
227
293
|
},
|
228
294
|
})
|
229
295
|
|
230
|
-
def fetch_markets(self, params={}):
|
296
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
231
297
|
"""
|
232
298
|
retrieves data on all markets for blockchaincom
|
233
|
-
|
299
|
+
|
300
|
+
https://api.blockchain.com/v3/#getsymbols
|
301
|
+
|
234
302
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
235
303
|
:returns dict[]: an array of objects representing market data
|
236
304
|
"""
|
@@ -354,7 +422,9 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
354
422
|
def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
355
423
|
"""
|
356
424
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
357
|
-
|
425
|
+
|
426
|
+
https://api.blockchain.com/v3/#getl3orderbook
|
427
|
+
|
358
428
|
:param str symbol: unified symbol of the market to fetch the order book for
|
359
429
|
:param int [limit]: the maximum amount of order book entries to return
|
360
430
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -365,7 +435,9 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
365
435
|
def fetch_l3_order_book(self, symbol: str, limit: Int = None, params={}):
|
366
436
|
"""
|
367
437
|
fetches level 3 information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
368
|
-
|
438
|
+
|
439
|
+
https://api.blockchain.com/v3/#getl3orderbook
|
440
|
+
|
369
441
|
:param str symbol: unified market symbol
|
370
442
|
:param int [limit]: max number of orders to return, default is None
|
371
443
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -373,7 +445,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
373
445
|
"""
|
374
446
|
self.load_markets()
|
375
447
|
market = self.market(symbol)
|
376
|
-
request = {
|
448
|
+
request: dict = {
|
377
449
|
'symbol': market['id'],
|
378
450
|
}
|
379
451
|
if limit is not None:
|
@@ -384,7 +456,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
384
456
|
def fetch_l2_order_book(self, symbol: str, limit: Int = None, params={}):
|
385
457
|
self.load_markets()
|
386
458
|
market = self.market(symbol)
|
387
|
-
request = {
|
459
|
+
request: dict = {
|
388
460
|
'symbol': market['id'],
|
389
461
|
}
|
390
462
|
if limit is not None:
|
@@ -392,7 +464,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
392
464
|
response = self.publicGetL2Symbol(self.extend(request, params))
|
393
465
|
return self.parse_order_book(response, market['symbol'], None, 'bids', 'asks', 'px', 'qty')
|
394
466
|
|
395
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
467
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
396
468
|
#
|
397
469
|
# {
|
398
470
|
# "symbol": "BTC-USD",
|
@@ -432,14 +504,16 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
432
504
|
def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
433
505
|
"""
|
434
506
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
435
|
-
|
507
|
+
|
508
|
+
https://api.blockchain.com/v3/#gettickerbysymbol
|
509
|
+
|
436
510
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
437
511
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
438
512
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
439
513
|
"""
|
440
514
|
self.load_markets()
|
441
515
|
market = self.market(symbol)
|
442
|
-
request = {
|
516
|
+
request: dict = {
|
443
517
|
'symbol': market['id'],
|
444
518
|
}
|
445
519
|
response = self.publicGetTickersSymbol(self.extend(request, params))
|
@@ -448,7 +522,9 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
448
522
|
def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
449
523
|
"""
|
450
524
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
451
|
-
|
525
|
+
|
526
|
+
https://api.blockchain.com/v3/#gettickers
|
527
|
+
|
452
528
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
453
529
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
454
530
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -458,7 +534,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
458
534
|
return self.parse_tickers(tickers, symbols)
|
459
535
|
|
460
536
|
def parse_order_state(self, state):
|
461
|
-
states = {
|
537
|
+
states: dict = {
|
462
538
|
'OPEN': 'open',
|
463
539
|
'REJECTED': 'rejected',
|
464
540
|
'FILLED': 'closed',
|
@@ -468,7 +544,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
468
544
|
}
|
469
545
|
return self.safe_string(states, state, state)
|
470
546
|
|
471
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
547
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
472
548
|
#
|
473
549
|
# {
|
474
550
|
# "clOrdId": "00001",
|
@@ -527,12 +603,14 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
527
603
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
528
604
|
"""
|
529
605
|
create a trade order
|
530
|
-
|
606
|
+
|
607
|
+
https://api.blockchain.com/v3/#createorder
|
608
|
+
|
531
609
|
:param str symbol: unified symbol of the market to create an order in
|
532
610
|
:param str type: 'market' or 'limit'
|
533
611
|
:param str side: 'buy' or 'sell'
|
534
612
|
:param float amount: how much of currency you want to trade in units of base currency
|
535
|
-
:param float [price]: the price at which the order is to be
|
613
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
536
614
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
537
615
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
538
616
|
"""
|
@@ -542,7 +620,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
542
620
|
uppercaseOrderType = orderType.upper()
|
543
621
|
clientOrderId = self.safe_string_2(params, 'clientOrderId', 'clOrdId', self.uuid16())
|
544
622
|
params = self.omit(params, ['ordType', 'clientOrderId', 'clOrdId'])
|
545
|
-
request = {
|
623
|
+
request: dict = {
|
546
624
|
# 'stopPx' : limit price
|
547
625
|
# 'timeInForce' : "GTC" for Good Till Cancel, "IOC" for Immediate or Cancel, "FOK" for Fill or Kill, "GTD" Good Till Date
|
548
626
|
# 'expireDate' : expiry date in the format YYYYMMDD
|
@@ -553,12 +631,12 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
553
631
|
'orderQty': self.amount_to_precision(symbol, amount),
|
554
632
|
'clOrdId': clientOrderId,
|
555
633
|
}
|
556
|
-
|
557
|
-
params = self.omit(params, ['stopPx', 'stopPrice'])
|
634
|
+
triggerPrice = self.safe_value_n(params, ['triggerPrice', 'stopPx', 'stopPrice'])
|
635
|
+
params = self.omit(params, ['triggerPrice', 'stopPx', 'stopPrice'])
|
558
636
|
if uppercaseOrderType == 'STOP' or uppercaseOrderType == 'STOPLIMIT':
|
559
|
-
if
|
560
|
-
raise ArgumentsRequired(self.id + ' createOrder() requires a stopPx or
|
561
|
-
if
|
637
|
+
if triggerPrice is None:
|
638
|
+
raise ArgumentsRequired(self.id + ' createOrder() requires a stopPx or triggerPrice param for a ' + uppercaseOrderType + ' order')
|
639
|
+
if triggerPrice is not None:
|
562
640
|
if uppercaseOrderType == 'MARKET':
|
563
641
|
request['ordType'] = 'STOP'
|
564
642
|
elif uppercaseOrderType == 'LIMIT':
|
@@ -572,32 +650,36 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
572
650
|
if priceRequired:
|
573
651
|
request['price'] = self.price_to_precision(symbol, price)
|
574
652
|
if stopPriceRequired:
|
575
|
-
request['stopPx'] = self.price_to_precision(symbol,
|
653
|
+
request['stopPx'] = self.price_to_precision(symbol, triggerPrice)
|
576
654
|
response = self.privatePostOrders(self.extend(request, params))
|
577
655
|
return self.parse_order(response, market)
|
578
656
|
|
579
657
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
580
658
|
"""
|
581
659
|
cancels an open order
|
582
|
-
|
660
|
+
|
661
|
+
https://api.blockchain.com/v3/#deleteorder
|
662
|
+
|
583
663
|
:param str id: order id
|
584
664
|
:param str symbol: unified symbol of the market the order was made in
|
585
665
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
586
666
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
587
667
|
"""
|
588
|
-
request = {
|
668
|
+
request: dict = {
|
589
669
|
'orderId': id,
|
590
670
|
}
|
591
671
|
response = self.privateDeleteOrdersOrderId(self.extend(request, params))
|
592
|
-
return {
|
672
|
+
return self.safe_order({
|
593
673
|
'id': id,
|
594
674
|
'info': response,
|
595
|
-
}
|
675
|
+
})
|
596
676
|
|
597
677
|
def cancel_all_orders(self, symbol: Str = None, params={}):
|
598
678
|
"""
|
599
679
|
cancel all open orders
|
600
|
-
|
680
|
+
|
681
|
+
https://api.blockchain.com/v3/#deleteallorders
|
682
|
+
|
601
683
|
:param str symbol: unified market symbol of the market to cancel orders in, all markets are used if None, default is None
|
602
684
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
603
685
|
:returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -605,22 +687,28 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
605
687
|
# cancels all open orders if no symbol specified
|
606
688
|
# cancels all open orders of specified symbol, if symbol is specified
|
607
689
|
self.load_markets()
|
608
|
-
request = {
|
690
|
+
request: dict = {
|
609
691
|
# 'symbol': marketId,
|
610
692
|
}
|
611
693
|
if symbol is not None:
|
612
694
|
marketId = self.market_id(symbol)
|
613
695
|
request['symbol'] = marketId
|
614
696
|
response = self.privateDeleteOrders(self.extend(request, params))
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
697
|
+
#
|
698
|
+
# {}
|
699
|
+
#
|
700
|
+
return [
|
701
|
+
self.safe_order({
|
702
|
+
'info': response,
|
703
|
+
}),
|
704
|
+
]
|
619
705
|
|
620
|
-
def fetch_trading_fees(self, params={}):
|
706
|
+
def fetch_trading_fees(self, params={}) -> TradingFees:
|
621
707
|
"""
|
622
708
|
fetch the trading fees for multiple markets
|
623
|
-
|
709
|
+
|
710
|
+
https://api.blockchain.com/v3/#getfees
|
711
|
+
|
624
712
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
625
713
|
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
|
626
714
|
"""
|
@@ -635,7 +723,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
635
723
|
#
|
636
724
|
makerFee = self.safe_number(response, 'makerRate')
|
637
725
|
takerFee = self.safe_number(response, 'takerRate')
|
638
|
-
result = {}
|
726
|
+
result: dict = {}
|
639
727
|
for i in range(0, len(self.symbols)):
|
640
728
|
symbol = self.symbols[i]
|
641
729
|
result[symbol] = {
|
@@ -649,7 +737,9 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
649
737
|
def fetch_canceled_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
650
738
|
"""
|
651
739
|
fetches information on multiple canceled orders made by the user
|
652
|
-
|
740
|
+
|
741
|
+
https://api.blockchain.com/v3/#getorders
|
742
|
+
|
653
743
|
:param str symbol: unified market symbol of the market orders were made in
|
654
744
|
:param int [since]: timestamp in ms of the earliest order, default is None
|
655
745
|
:param int [limit]: max number of orders to return, default is None
|
@@ -662,7 +752,9 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
662
752
|
def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
663
753
|
"""
|
664
754
|
fetches information on multiple closed orders made by the user
|
665
|
-
|
755
|
+
|
756
|
+
https://api.blockchain.com/v3/#getorders
|
757
|
+
|
666
758
|
:param str symbol: unified market symbol of the market orders were made in
|
667
759
|
:param int [since]: the earliest time in ms to fetch orders for
|
668
760
|
:param int [limit]: the maximum number of order structures to retrieve
|
@@ -675,7 +767,9 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
675
767
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
676
768
|
"""
|
677
769
|
fetch all unfilled currently open orders
|
678
|
-
|
770
|
+
|
771
|
+
https://api.blockchain.com/v3/#getorders
|
772
|
+
|
679
773
|
:param str symbol: unified market symbol
|
680
774
|
:param int [since]: the earliest time in ms to fetch open orders for
|
681
775
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
@@ -687,7 +781,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
687
781
|
|
688
782
|
def fetch_orders_by_state(self, state, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
689
783
|
self.load_markets()
|
690
|
-
request = {
|
784
|
+
request: dict = {
|
691
785
|
# 'to': unix epoch ms
|
692
786
|
# 'from': unix epoch ms
|
693
787
|
'status': state,
|
@@ -700,7 +794,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
700
794
|
response = self.privateGetOrders(self.extend(request, params))
|
701
795
|
return self.parse_orders(response, market, since, limit)
|
702
796
|
|
703
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
797
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
704
798
|
#
|
705
799
|
# {
|
706
800
|
# "exOrdId":281685751028507,
|
@@ -748,7 +842,9 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
748
842
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
749
843
|
"""
|
750
844
|
fetch all trades made by the user
|
751
|
-
|
845
|
+
|
846
|
+
https://api.blockchain.com/v3/#getfills
|
847
|
+
|
752
848
|
:param str symbol: unified market symbol
|
753
849
|
:param int [since]: the earliest time in ms to fetch trades for
|
754
850
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -756,7 +852,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
756
852
|
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
757
853
|
"""
|
758
854
|
self.load_markets()
|
759
|
-
request = {}
|
855
|
+
request: dict = {}
|
760
856
|
if limit is not None:
|
761
857
|
request['limit'] = limit
|
762
858
|
market = None
|
@@ -766,17 +862,19 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
766
862
|
trades = self.privateGetFills(self.extend(request, params))
|
767
863
|
return self.parse_trades(trades, market, since, limit, params) # need to define
|
768
864
|
|
769
|
-
def fetch_deposit_address(self, code: str, params={}):
|
865
|
+
def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
770
866
|
"""
|
771
867
|
fetch the deposit address for a currency associated with self account
|
772
|
-
|
868
|
+
|
869
|
+
https://api.blockchain.com/v3/#getdepositaddress
|
870
|
+
|
773
871
|
:param str code: unified currency code
|
774
872
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
775
873
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
776
874
|
"""
|
777
875
|
self.load_markets()
|
778
876
|
currency = self.currency(code)
|
779
|
-
request = {
|
877
|
+
request: dict = {
|
780
878
|
'currency': currency['id'],
|
781
879
|
}
|
782
880
|
response = self.privatePostDepositsCurrency(self.extend(request, params))
|
@@ -788,15 +886,16 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
788
886
|
# if a tag or memo is used it is separated by a colon in the 'address' value
|
789
887
|
tag = self.safe_string(addressParts, 0)
|
790
888
|
address = self.safe_string(addressParts, 1)
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
889
|
+
return {
|
890
|
+
'info': response,
|
891
|
+
'currency': currency['code'],
|
892
|
+
'network': None,
|
893
|
+
'address': address,
|
894
|
+
'tag': tag,
|
895
|
+
}
|
797
896
|
|
798
897
|
def parse_transaction_state(self, state):
|
799
|
-
states = {
|
898
|
+
states: dict = {
|
800
899
|
'COMPLETED': 'ok', #
|
801
900
|
'REJECTED': 'failed',
|
802
901
|
'PENDING': 'pending',
|
@@ -805,7 +904,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
805
904
|
}
|
806
905
|
return self.safe_string(states, state, state)
|
807
906
|
|
808
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
907
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
809
908
|
#
|
810
909
|
# deposit
|
811
910
|
#
|
@@ -873,10 +972,12 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
873
972
|
'fee': fee,
|
874
973
|
}
|
875
974
|
|
876
|
-
def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
975
|
+
def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
877
976
|
"""
|
878
977
|
make a withdrawal
|
879
|
-
|
978
|
+
|
979
|
+
https://api.blockchain.com/v3/#createwithdrawal
|
980
|
+
|
880
981
|
:param str code: unified currency code
|
881
982
|
:param float amount: the amount to withdraw
|
882
983
|
:param str address: the address to withdraw to
|
@@ -886,7 +987,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
886
987
|
"""
|
887
988
|
self.load_markets()
|
888
989
|
currency = self.currency(code)
|
889
|
-
request = {
|
990
|
+
request: dict = {
|
890
991
|
'amount': amount,
|
891
992
|
'currency': currency['id'],
|
892
993
|
'beneficiary': address,
|
@@ -909,7 +1010,9 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
909
1010
|
def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
910
1011
|
"""
|
911
1012
|
fetch all withdrawals made from an account
|
912
|
-
|
1013
|
+
|
1014
|
+
https://api.blockchain.com/v3/#getwithdrawals
|
1015
|
+
|
913
1016
|
:param str code: unified currency code
|
914
1017
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
915
1018
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
@@ -917,7 +1020,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
917
1020
|
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
918
1021
|
"""
|
919
1022
|
self.load_markets()
|
920
|
-
request = {
|
1023
|
+
request: dict = {
|
921
1024
|
# 'from' : integer timestamp in ms
|
922
1025
|
# 'to' : integer timestamp in ms
|
923
1026
|
}
|
@@ -932,14 +1035,16 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
932
1035
|
def fetch_withdrawal(self, id: str, code: Str = None, params={}):
|
933
1036
|
"""
|
934
1037
|
fetch data on a currency withdrawal via the withdrawal id
|
935
|
-
|
1038
|
+
|
1039
|
+
https://api.blockchain.com/v3/#getwithdrawalbyid
|
1040
|
+
|
936
1041
|
:param str id: withdrawal id
|
937
1042
|
:param str code: not used by blockchaincom.fetchWithdrawal
|
938
1043
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
939
1044
|
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
940
1045
|
"""
|
941
1046
|
self.load_markets()
|
942
|
-
request = {
|
1047
|
+
request: dict = {
|
943
1048
|
'withdrawalId': id,
|
944
1049
|
}
|
945
1050
|
response = self.privateGetWithdrawalsWithdrawalId(self.extend(request, params))
|
@@ -948,7 +1053,9 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
948
1053
|
def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
949
1054
|
"""
|
950
1055
|
fetch all deposits made to an account
|
951
|
-
|
1056
|
+
|
1057
|
+
https://api.blockchain.com/v3/#getdeposits
|
1058
|
+
|
952
1059
|
:param str code: unified currency code
|
953
1060
|
:param int [since]: the earliest time in ms to fetch deposits for
|
954
1061
|
:param int [limit]: the maximum number of deposits structures to retrieve
|
@@ -956,7 +1063,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
956
1063
|
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
957
1064
|
"""
|
958
1065
|
self.load_markets()
|
959
|
-
request = {
|
1066
|
+
request: dict = {
|
960
1067
|
# 'from' : integer timestamp in ms
|
961
1068
|
# 'to' : integer timestap in ms
|
962
1069
|
}
|
@@ -971,7 +1078,9 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
971
1078
|
def fetch_deposit(self, id: str, code: Str = None, params={}):
|
972
1079
|
"""
|
973
1080
|
fetch information on a deposit
|
974
|
-
|
1081
|
+
|
1082
|
+
https://api.blockchain.com/v3/#getdepositbyid
|
1083
|
+
|
975
1084
|
:param str id: deposit id
|
976
1085
|
:param str code: not used by blockchaincom fetchDeposit()
|
977
1086
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -979,7 +1088,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
979
1088
|
"""
|
980
1089
|
self.load_markets()
|
981
1090
|
depositId = self.safe_string(params, 'depositId', id)
|
982
|
-
request = {
|
1091
|
+
request: dict = {
|
983
1092
|
'depositId': depositId,
|
984
1093
|
}
|
985
1094
|
deposit = self.privateGetDepositsDepositId(self.extend(request, params))
|
@@ -988,14 +1097,16 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
988
1097
|
def fetch_balance(self, params={}) -> Balances:
|
989
1098
|
"""
|
990
1099
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
991
|
-
|
1100
|
+
|
1101
|
+
https://api.blockchain.com/v3/#getaccounts
|
1102
|
+
|
992
1103
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
993
1104
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
994
1105
|
"""
|
995
1106
|
self.load_markets()
|
996
1107
|
accountName = self.safe_string(params, 'account', 'primary')
|
997
1108
|
params = self.omit(params, 'account')
|
998
|
-
request = {
|
1109
|
+
request: dict = {
|
999
1110
|
'account': accountName,
|
1000
1111
|
}
|
1001
1112
|
response = self.privateGetAccounts(self.extend(request, params))
|
@@ -1017,7 +1128,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
1017
1128
|
balances = self.safe_value(response, accountName)
|
1018
1129
|
if balances is None:
|
1019
1130
|
raise ExchangeError(self.id + ' fetchBalance() could not find the "' + accountName + '" account')
|
1020
|
-
result = {'info': response}
|
1131
|
+
result: dict = {'info': response}
|
1021
1132
|
for i in range(0, len(balances)):
|
1022
1133
|
entry = balances[i]
|
1023
1134
|
currencyId = self.safe_string(entry, 'currency')
|
@@ -1031,7 +1142,10 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
1031
1142
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1032
1143
|
"""
|
1033
1144
|
fetches information on an order made by the user
|
1034
|
-
|
1145
|
+
|
1146
|
+
https://api.blockchain.com/v3/#getorderbyid
|
1147
|
+
|
1148
|
+
:param str id: the order id
|
1035
1149
|
:param str symbol: not used by blockchaincom fetchOrder
|
1036
1150
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1037
1151
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1039,7 +1153,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
1039
1153
|
# note: only works with exchange-order-id
|
1040
1154
|
# does not work with clientOrderId
|
1041
1155
|
self.load_markets()
|
1042
|
-
request = {
|
1156
|
+
request: dict = {
|
1043
1157
|
'orderId': id,
|
1044
1158
|
}
|
1045
1159
|
response = self.privateGetOrdersOrderId(self.extend(request, params))
|
@@ -1083,7 +1197,7 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
1083
1197
|
headers['Content-Type'] = 'application/json'
|
1084
1198
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1085
1199
|
|
1086
|
-
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1200
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1087
1201
|
# {"timestamp":"2021-10-21T15:13:58.837+00:00","status":404,"error":"Not Found","message":"","path":"/orders/505050"
|
1088
1202
|
if response is None:
|
1089
1203
|
return None
|