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/async_support/bitvavo.py
CHANGED
@@ -6,9 +6,10 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.bitvavo 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, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, 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 PermissionDenied
|
13
14
|
from ccxt.base.errors import AccountSuspended
|
14
15
|
from ccxt.base.errors import ArgumentsRequired
|
@@ -21,7 +22,6 @@ from ccxt.base.errors import OrderNotFound
|
|
21
22
|
from ccxt.base.errors import RateLimitExceeded
|
22
23
|
from ccxt.base.errors import ExchangeNotAvailable
|
23
24
|
from ccxt.base.errors import OnMaintenance
|
24
|
-
from ccxt.base.errors import AuthenticationError
|
25
25
|
from ccxt.base.decimal_to_precision import ROUND
|
26
26
|
from ccxt.base.decimal_to_precision import TRUNCATE
|
27
27
|
from ccxt.base.decimal_to_precision import DECIMAL_PLACES
|
@@ -65,6 +65,8 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
65
65
|
'fetchCrossBorrowRates': False,
|
66
66
|
'fetchCurrencies': True,
|
67
67
|
'fetchDepositAddress': True,
|
68
|
+
'fetchDepositAddresses': False,
|
69
|
+
'fetchDepositAddressesByNetwork': False,
|
68
70
|
'fetchDeposits': True,
|
69
71
|
'fetchDepositWithdrawFee': 'emulated',
|
70
72
|
'fetchDepositWithdrawFees': True,
|
@@ -88,8 +90,11 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
88
90
|
'fetchOrderBook': True,
|
89
91
|
'fetchOrders': True,
|
90
92
|
'fetchPosition': False,
|
93
|
+
'fetchPositionHistory': False,
|
91
94
|
'fetchPositionMode': False,
|
92
95
|
'fetchPositions': False,
|
96
|
+
'fetchPositionsForSymbol': False,
|
97
|
+
'fetchPositionsHistory': False,
|
93
98
|
'fetchPositionsRisk': False,
|
94
99
|
'fetchPremiumIndexOHLCV': False,
|
95
100
|
'fetchTicker': True,
|
@@ -122,7 +127,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
122
127
|
'1d': '1d',
|
123
128
|
},
|
124
129
|
'urls': {
|
125
|
-
'logo': 'https://
|
130
|
+
'logo': 'https://github.com/user-attachments/assets/d213155c-8c71-4701-9bd5-45351febc2a8',
|
126
131
|
'api': {
|
127
132
|
'public': 'https://api.bitvavo.com',
|
128
133
|
'private': 'https://api.bitvavo.com',
|
@@ -207,6 +212,71 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
207
212
|
'apiKey': True,
|
208
213
|
'secret': True,
|
209
214
|
},
|
215
|
+
'features': {
|
216
|
+
'spot': {
|
217
|
+
'sandbox': False,
|
218
|
+
'createOrder': {
|
219
|
+
'marginMode': False,
|
220
|
+
'triggerPrice': True,
|
221
|
+
'triggerPriceType': None,
|
222
|
+
'triggerDirection': None,
|
223
|
+
'stopLossPrice': True,
|
224
|
+
'takeProfitPrice': True,
|
225
|
+
'attachedStopLossTakeProfit': None,
|
226
|
+
'timeInForce': {
|
227
|
+
'IOC': True,
|
228
|
+
'FOK': True,
|
229
|
+
'PO': True,
|
230
|
+
'GTD': False,
|
231
|
+
},
|
232
|
+
'hedged': False,
|
233
|
+
'trailing': False,
|
234
|
+
'leverage': False,
|
235
|
+
'marketBuyRequiresPrice': False,
|
236
|
+
'marketBuyByCost': True,
|
237
|
+
'selfTradePrevention': True, # todo implement
|
238
|
+
'iceberg': False,
|
239
|
+
},
|
240
|
+
'createOrders': None,
|
241
|
+
'fetchMyTrades': {
|
242
|
+
'marginMode': False,
|
243
|
+
'limit': 1000,
|
244
|
+
'daysBack': 100000,
|
245
|
+
'untilDays': 100000,
|
246
|
+
},
|
247
|
+
'fetchOrder': {
|
248
|
+
'marginMode': False,
|
249
|
+
'trigger': False,
|
250
|
+
'trailing': False,
|
251
|
+
},
|
252
|
+
'fetchOpenOrders': {
|
253
|
+
'marginMode': False,
|
254
|
+
'limit': None,
|
255
|
+
'trigger': False,
|
256
|
+
'trailing': False,
|
257
|
+
},
|
258
|
+
'fetchOrders': {
|
259
|
+
'marginMode': True,
|
260
|
+
'limit': 1000,
|
261
|
+
'daysBack': 100000,
|
262
|
+
'untilDays': 100000,
|
263
|
+
'trigger': False,
|
264
|
+
'trailing': False,
|
265
|
+
},
|
266
|
+
'fetchClosedOrders': None,
|
267
|
+
'fetchOHLCV': {
|
268
|
+
'limit': 1440,
|
269
|
+
},
|
270
|
+
},
|
271
|
+
'swap': {
|
272
|
+
'linear': None,
|
273
|
+
'inverse': None,
|
274
|
+
},
|
275
|
+
'future': {
|
276
|
+
'linear': None,
|
277
|
+
'inverse': None,
|
278
|
+
},
|
279
|
+
},
|
210
280
|
'exceptions': {
|
211
281
|
'exact': {
|
212
282
|
'101': ExchangeError, # Unknown error. Operation may or may not have succeeded.
|
@@ -281,6 +351,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
281
351
|
},
|
282
352
|
},
|
283
353
|
'options': {
|
354
|
+
'currencyToPrecisionRoundingMode': TRUNCATE,
|
284
355
|
'BITVAVO-ACCESS-WINDOW': 10000, # default 10 sec
|
285
356
|
'networks': {
|
286
357
|
'ERC20': 'ETH',
|
@@ -293,9 +364,6 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
293
364
|
},
|
294
365
|
})
|
295
366
|
|
296
|
-
def currency_to_precision(self, code, fee, networkCode=None):
|
297
|
-
return self.decimal_to_precision(fee, 0, self.currencies[code]['precision'], DECIMAL_PLACES)
|
298
|
-
|
299
367
|
def amount_to_precision(self, symbol, amount):
|
300
368
|
# https://docs.bitfinex.com/docs/introduction#amount-precision
|
301
369
|
# The amount field allows up to 8 decimals.
|
@@ -322,9 +390,11 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
322
390
|
#
|
323
391
|
return self.safe_integer(response, 'time')
|
324
392
|
|
325
|
-
async def fetch_markets(self, params={}):
|
393
|
+
async def fetch_markets(self, params={}) -> List[Market]:
|
326
394
|
"""
|
327
|
-
|
395
|
+
|
396
|
+
https://docs.bitvavo.com/#tag/General/paths/~1markets/get
|
397
|
+
|
328
398
|
retrieves data on all markets for bitvavo
|
329
399
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
330
400
|
:returns dict[]: an array of objects representing market data
|
@@ -414,9 +484,11 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
414
484
|
}))
|
415
485
|
return result
|
416
486
|
|
417
|
-
async def fetch_currencies(self, params={}):
|
487
|
+
async def fetch_currencies(self, params={}) -> Currencies:
|
418
488
|
"""
|
419
|
-
|
489
|
+
|
490
|
+
https://docs.bitvavo.com/#tag/General/paths/~1assets/get
|
491
|
+
|
420
492
|
fetches all available currencies on an exchange
|
421
493
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
422
494
|
:returns dict: an associative dictionary of currencies
|
@@ -455,9 +527,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
455
527
|
# },
|
456
528
|
# ]
|
457
529
|
#
|
458
|
-
return self.
|
530
|
+
return self.parse_currencies_custom(response)
|
459
531
|
|
460
|
-
def
|
532
|
+
def parse_currencies_custom(self, currencies):
|
461
533
|
#
|
462
534
|
# [
|
463
535
|
# {
|
@@ -491,12 +563,12 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
491
563
|
# },
|
492
564
|
# ]
|
493
565
|
#
|
494
|
-
result = {}
|
566
|
+
result: dict = {}
|
495
567
|
for i in range(0, len(currencies)):
|
496
568
|
currency = currencies[i]
|
497
569
|
id = self.safe_string(currency, 'symbol')
|
498
570
|
code = self.safe_currency_code(id)
|
499
|
-
networks = {}
|
571
|
+
networks: dict = {}
|
500
572
|
networksArray = self.safe_value(currency, 'networks', [])
|
501
573
|
networksLength = len(networksArray)
|
502
574
|
isOneNetwork = (networksLength == 1)
|
@@ -558,7 +630,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
558
630
|
|
559
631
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
560
632
|
"""
|
561
|
-
|
633
|
+
|
634
|
+
https://docs.bitvavo.com/#tag/Market-Data/paths/~1ticker~124h/get
|
635
|
+
|
562
636
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
563
637
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
564
638
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -566,7 +640,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
566
640
|
"""
|
567
641
|
await self.load_markets()
|
568
642
|
market = self.market(symbol)
|
569
|
-
request = {
|
643
|
+
request: dict = {
|
570
644
|
'market': market['id'],
|
571
645
|
}
|
572
646
|
response = await self.publicGetTicker24h(self.extend(request, params))
|
@@ -588,7 +662,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
588
662
|
#
|
589
663
|
return self.parse_ticker(response, market)
|
590
664
|
|
591
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
665
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
592
666
|
#
|
593
667
|
# fetchTicker
|
594
668
|
#
|
@@ -668,7 +742,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
668
742
|
|
669
743
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
670
744
|
"""
|
671
|
-
|
745
|
+
|
746
|
+
https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1trades/get
|
747
|
+
|
672
748
|
get the list of most recent trades for a particular symbol
|
673
749
|
:param str symbol: unified symbol of the market to fetch trades for
|
674
750
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
@@ -684,7 +760,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
684
760
|
paginate, params = self.handle_option_and_params(params, 'fetchTrades', 'paginate')
|
685
761
|
if paginate:
|
686
762
|
return await self.fetch_paginated_call_dynamic('fetchTrades', symbol, since, limit, params)
|
687
|
-
request = {
|
763
|
+
request: dict = {
|
688
764
|
'market': market['id'],
|
689
765
|
# "limit": 500, # default 500, max 1000
|
690
766
|
# "start": since,
|
@@ -711,7 +787,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
711
787
|
#
|
712
788
|
return self.parse_trades(response, market, since, limit)
|
713
789
|
|
714
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
790
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
715
791
|
#
|
716
792
|
# fetchTrades(public)
|
717
793
|
#
|
@@ -805,9 +881,11 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
805
881
|
'fee': fee,
|
806
882
|
}, market)
|
807
883
|
|
808
|
-
async def fetch_trading_fees(self, params={}):
|
884
|
+
async def fetch_trading_fees(self, params={}) -> TradingFees:
|
809
885
|
"""
|
810
|
-
|
886
|
+
|
887
|
+
https://docs.bitvavo.com/#tag/Account/paths/~1account/get
|
888
|
+
|
811
889
|
fetch the trading fees for multiple markets
|
812
890
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
813
891
|
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
|
@@ -838,7 +916,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
838
916
|
feesValue = self.safe_value(fees, 'fees')
|
839
917
|
maker = self.safe_number(feesValue, 'maker')
|
840
918
|
taker = self.safe_number(feesValue, 'taker')
|
841
|
-
result = {}
|
919
|
+
result: dict = {}
|
842
920
|
for i in range(0, len(self.symbols)):
|
843
921
|
symbol = self.symbols[i]
|
844
922
|
result[symbol] = {
|
@@ -853,7 +931,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
853
931
|
|
854
932
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
855
933
|
"""
|
856
|
-
|
934
|
+
|
935
|
+
https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1book/get
|
936
|
+
|
857
937
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
858
938
|
:param str symbol: unified symbol of the market to fetch the order book for
|
859
939
|
:param int [limit]: the maximum amount of order book entries to return
|
@@ -862,7 +942,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
862
942
|
"""
|
863
943
|
await self.load_markets()
|
864
944
|
market = self.market(symbol)
|
865
|
-
request = {
|
945
|
+
request: dict = {
|
866
946
|
'market': market['id'],
|
867
947
|
}
|
868
948
|
if limit is not None:
|
@@ -910,7 +990,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
910
990
|
|
911
991
|
def fetch_ohlcv_request(self, symbol: Str, timeframe='1m', since: Int = None, limit: Int = None, params={}):
|
912
992
|
market = self.market(symbol)
|
913
|
-
request = {
|
993
|
+
request: dict = {
|
914
994
|
'market': market['id'],
|
915
995
|
'interval': self.safe_string(self.timeframes, timeframe, timeframe),
|
916
996
|
# "limit": 1440, # default 1440, max 1440
|
@@ -923,6 +1003,8 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
923
1003
|
request['start'] = since
|
924
1004
|
if limit is None:
|
925
1005
|
limit = 1440
|
1006
|
+
else:
|
1007
|
+
limit = min(limit, 1440)
|
926
1008
|
request['end'] = self.sum(since, limit * duration * 1000)
|
927
1009
|
request, params = self.handle_until_option('end', request, params)
|
928
1010
|
if limit is not None:
|
@@ -931,7 +1013,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
931
1013
|
|
932
1014
|
async def fetch_ohlcv(self, symbol: Str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
933
1015
|
"""
|
934
|
-
|
1016
|
+
|
1017
|
+
https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1candles/get
|
1018
|
+
|
935
1019
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
936
1020
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
937
1021
|
:param str timeframe: the length of time each candle represents
|
@@ -960,7 +1044,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
960
1044
|
return self.parse_ohlcvs(response, market, timeframe, since, limit)
|
961
1045
|
|
962
1046
|
def parse_balance(self, response) -> Balances:
|
963
|
-
result = {
|
1047
|
+
result: dict = {
|
964
1048
|
'info': response,
|
965
1049
|
'timestamp': None,
|
966
1050
|
'datetime': None,
|
@@ -977,7 +1061,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
977
1061
|
|
978
1062
|
async def fetch_balance(self, params={}) -> Balances:
|
979
1063
|
"""
|
980
|
-
|
1064
|
+
|
1065
|
+
https://docs.bitvavo.com/#tag/Account/paths/~1balance/get
|
1066
|
+
|
981
1067
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
982
1068
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
983
1069
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
@@ -995,7 +1081,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
995
1081
|
#
|
996
1082
|
return self.parse_balance(response)
|
997
1083
|
|
998
|
-
async def fetch_deposit_address(self, code: str, params={}):
|
1084
|
+
async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
999
1085
|
"""
|
1000
1086
|
fetch the deposit address for a currency associated with self account
|
1001
1087
|
:param str code: unified currency code
|
@@ -1004,7 +1090,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1004
1090
|
"""
|
1005
1091
|
await self.load_markets()
|
1006
1092
|
currency = self.currency(code)
|
1007
|
-
request = {
|
1093
|
+
request: dict = {
|
1008
1094
|
'symbol': currency['id'],
|
1009
1095
|
}
|
1010
1096
|
response = await self.privateGetDeposit(self.extend(request, params))
|
@@ -1018,16 +1104,16 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1018
1104
|
tag = self.safe_string(response, 'paymentId')
|
1019
1105
|
self.check_address(address)
|
1020
1106
|
return {
|
1107
|
+
'info': response,
|
1021
1108
|
'currency': code,
|
1109
|
+
'network': None,
|
1022
1110
|
'address': address,
|
1023
1111
|
'tag': tag,
|
1024
|
-
'network': None,
|
1025
|
-
'info': response,
|
1026
1112
|
}
|
1027
1113
|
|
1028
1114
|
def create_order_request(self, symbol: Str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
1029
1115
|
market = self.market(symbol)
|
1030
|
-
request = {
|
1116
|
+
request: dict = {
|
1031
1117
|
'market': market['id'],
|
1032
1118
|
'side': side,
|
1033
1119
|
'orderType': type,
|
@@ -1081,15 +1167,17 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1081
1167
|
async def create_order(self, symbol: Str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
1082
1168
|
"""
|
1083
1169
|
create a trade order
|
1084
|
-
|
1170
|
+
|
1171
|
+
https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/post
|
1172
|
+
|
1085
1173
|
:param str symbol: unified symbol of the market to create an order in
|
1086
1174
|
:param str type: 'market' or 'limit'
|
1087
1175
|
:param str side: 'buy' or 'sell'
|
1088
1176
|
:param float amount: how much of currency you want to trade in units of base currency
|
1089
|
-
:param float price: the price at which the order is to be
|
1177
|
+
:param float price: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1090
1178
|
:param dict [params]: extra parameters specific to the bitvavo api endpoint
|
1091
1179
|
:param str [params.timeInForce]: "GTC", "IOC", or "PO"
|
1092
|
-
:param float [params.stopPrice]:
|
1180
|
+
:param float [params.stopPrice]: Alias for triggerPrice
|
1093
1181
|
:param float [params.triggerPrice]: The price at which a trigger order is triggered at
|
1094
1182
|
:param bool [params.postOnly]: If True, the order will only be posted to the order book and not executed immediately
|
1095
1183
|
:param float [params.stopLossPrice]: The price at which a stop loss order is triggered at
|
@@ -1148,7 +1236,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1148
1236
|
return self.parse_order(response, market)
|
1149
1237
|
|
1150
1238
|
def edit_order_request(self, id: str, symbol, type, side, amount=None, price=None, params={}):
|
1151
|
-
request = {}
|
1239
|
+
request: dict = {}
|
1152
1240
|
market = self.market(symbol)
|
1153
1241
|
amountRemaining = self.safe_number(params, 'amountRemaining')
|
1154
1242
|
triggerPrice = self.safe_string_n(params, ['triggerPrice', 'stopPrice', 'triggerAmount'])
|
@@ -1173,13 +1261,15 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1173
1261
|
async def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}):
|
1174
1262
|
"""
|
1175
1263
|
edit a trade order
|
1176
|
-
|
1264
|
+
|
1265
|
+
https://docs.bitvavo.com/#tag/Orders/paths/~1order/put
|
1266
|
+
|
1177
1267
|
:param str id: cancel order id
|
1178
1268
|
:param str symbol: unified symbol of the market to create an order in
|
1179
1269
|
:param str type: 'market' or 'limit'
|
1180
1270
|
:param str side: 'buy' or 'sell'
|
1181
1271
|
:param float [amount]: how much of currency you want to trade in units of base currency
|
1182
|
-
:param float [price]: the price at which the order is to be
|
1272
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1183
1273
|
:param dict [params]: extra parameters specific to the bitvavo api endpoint
|
1184
1274
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1185
1275
|
"""
|
@@ -1193,7 +1283,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1193
1283
|
if symbol is None:
|
1194
1284
|
raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol argument')
|
1195
1285
|
market = self.market(symbol)
|
1196
|
-
request = {
|
1286
|
+
request: dict = {
|
1197
1287
|
'market': market['id'],
|
1198
1288
|
}
|
1199
1289
|
clientOrderId = self.safe_string(params, 'clientOrderId')
|
@@ -1203,9 +1293,13 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1203
1293
|
|
1204
1294
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
1205
1295
|
"""
|
1206
|
-
|
1296
|
+
|
1297
|
+
https://docs.bitvavo.com/#tag/Orders/paths/~1order/delete
|
1298
|
+
|
1207
1299
|
cancels an open order
|
1208
|
-
|
1300
|
+
|
1301
|
+
https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/delete
|
1302
|
+
|
1209
1303
|
:param str id: order id
|
1210
1304
|
:param str symbol: unified symbol of the market the order was made in
|
1211
1305
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -1224,14 +1318,16 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1224
1318
|
|
1225
1319
|
async def cancel_all_orders(self, symbol: Str = None, params={}):
|
1226
1320
|
"""
|
1227
|
-
|
1321
|
+
|
1322
|
+
https://docs.bitvavo.com/#tag/Orders/paths/~1orders/delete
|
1323
|
+
|
1228
1324
|
cancel all open orders
|
1229
1325
|
:param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
|
1230
1326
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1231
1327
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1232
1328
|
"""
|
1233
1329
|
await self.load_markets()
|
1234
|
-
request = {}
|
1330
|
+
request: dict = {}
|
1235
1331
|
market = None
|
1236
1332
|
if symbol is not None:
|
1237
1333
|
market = self.market(symbol)
|
@@ -1249,7 +1345,10 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1249
1345
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1250
1346
|
"""
|
1251
1347
|
fetches information on an order made by the user
|
1252
|
-
|
1348
|
+
|
1349
|
+
https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/get
|
1350
|
+
|
1351
|
+
:param str id: the order id
|
1253
1352
|
:param str symbol: unified symbol of the market the order was made in
|
1254
1353
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1255
1354
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1258,7 +1357,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1258
1357
|
raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol argument')
|
1259
1358
|
await self.load_markets()
|
1260
1359
|
market = self.market(symbol)
|
1261
|
-
request = {
|
1360
|
+
request: dict = {
|
1262
1361
|
'market': market['id'],
|
1263
1362
|
}
|
1264
1363
|
clientOrderId = self.safe_string(params, 'clientOrderId')
|
@@ -1303,7 +1402,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1303
1402
|
|
1304
1403
|
def fetch_orders_request(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1305
1404
|
market = self.market(symbol)
|
1306
|
-
request = {
|
1405
|
+
request: dict = {
|
1307
1406
|
'market': market['id'],
|
1308
1407
|
# "limit": 500,
|
1309
1408
|
# "start": since,
|
@@ -1320,7 +1419,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1320
1419
|
|
1321
1420
|
async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1322
1421
|
"""
|
1323
|
-
|
1422
|
+
|
1423
|
+
https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1orders/get
|
1424
|
+
|
1324
1425
|
fetches information on multiple orders made by the user
|
1325
1426
|
:param str symbol: unified market symbol of the market orders were made in
|
1326
1427
|
:param int [since]: the earliest time in ms to fetch orders for
|
@@ -1380,6 +1481,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1380
1481
|
|
1381
1482
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1382
1483
|
"""
|
1484
|
+
|
1485
|
+
https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1ordersOpen/get
|
1486
|
+
|
1383
1487
|
fetch all unfilled currently open orders
|
1384
1488
|
:param str symbol: unified market symbol
|
1385
1489
|
:param int [since]: the earliest time in ms to fetch open orders for
|
@@ -1388,7 +1492,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1388
1492
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1389
1493
|
"""
|
1390
1494
|
await self.load_markets()
|
1391
|
-
request = {
|
1495
|
+
request: dict = {
|
1392
1496
|
# "market": market["id"], # rate limit 25 without a market, 1 with market specified
|
1393
1497
|
}
|
1394
1498
|
market = None
|
@@ -1434,8 +1538,8 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1434
1538
|
#
|
1435
1539
|
return self.parse_orders(response, market, since, limit)
|
1436
1540
|
|
1437
|
-
def parse_order_status(self, status):
|
1438
|
-
statuses = {
|
1541
|
+
def parse_order_status(self, status: Str):
|
1542
|
+
statuses: dict = {
|
1439
1543
|
'new': 'open',
|
1440
1544
|
'canceled': 'canceled',
|
1441
1545
|
'canceledAuction': 'canceled',
|
@@ -1452,7 +1556,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1452
1556
|
}
|
1453
1557
|
return self.safe_string(statuses, status, status)
|
1454
1558
|
|
1455
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
1559
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
1456
1560
|
#
|
1457
1561
|
# cancelOrder, cancelAllOrders
|
1458
1562
|
#
|
@@ -1528,7 +1632,6 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1528
1632
|
timeInForce = self.safe_string(order, 'timeInForce')
|
1529
1633
|
postOnly = self.safe_value(order, 'postOnly')
|
1530
1634
|
# https://github.com/ccxt/ccxt/issues/8489
|
1531
|
-
stopPrice = self.safe_number(order, 'triggerPrice')
|
1532
1635
|
return self.safe_order({
|
1533
1636
|
'info': order,
|
1534
1637
|
'id': id,
|
@@ -1542,8 +1645,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1542
1645
|
'postOnly': postOnly,
|
1543
1646
|
'side': side,
|
1544
1647
|
'price': price,
|
1545
|
-
'
|
1546
|
-
'triggerPrice': stopPrice,
|
1648
|
+
'triggerPrice': self.safe_number(order, 'triggerPrice'),
|
1547
1649
|
'amount': amount,
|
1548
1650
|
'cost': cost,
|
1549
1651
|
'average': None,
|
@@ -1556,7 +1658,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1556
1658
|
|
1557
1659
|
def fetch_my_trades_request(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1558
1660
|
market = self.market(symbol)
|
1559
|
-
request = {
|
1661
|
+
request: dict = {
|
1560
1662
|
'market': market['id'],
|
1561
1663
|
# "limit": 500,
|
1562
1664
|
# "start": since,
|
@@ -1573,7 +1675,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1573
1675
|
|
1574
1676
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
1575
1677
|
"""
|
1576
|
-
|
1678
|
+
|
1679
|
+
https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1trades/get
|
1680
|
+
|
1577
1681
|
fetch all trades made by the user
|
1578
1682
|
:param str symbol: unified market symbol
|
1579
1683
|
:param int [since]: the earliest time in ms to fetch trades for
|
@@ -1614,7 +1718,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1614
1718
|
|
1615
1719
|
def withdraw_request(self, code: Str, amount, address, tag=None, params={}):
|
1616
1720
|
currency = self.currency(code)
|
1617
|
-
request = {
|
1721
|
+
request: dict = {
|
1618
1722
|
'symbol': currency['id'],
|
1619
1723
|
'amount': self.currency_to_precision(code, amount),
|
1620
1724
|
'address': address, # address or IBAN
|
@@ -1625,7 +1729,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1625
1729
|
request['paymentId'] = tag
|
1626
1730
|
return self.extend(request, params)
|
1627
1731
|
|
1628
|
-
async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
1732
|
+
async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
1629
1733
|
"""
|
1630
1734
|
make a withdrawal
|
1631
1735
|
:param str code: unified currency code
|
@@ -1651,7 +1755,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1651
1755
|
return self.parse_transaction(response, currency)
|
1652
1756
|
|
1653
1757
|
def fetch_withdrawals_request(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
1654
|
-
request = {
|
1758
|
+
request: dict = {
|
1655
1759
|
# 'symbol': currency['id'],
|
1656
1760
|
# 'limit': 500, # default 500, max 1000
|
1657
1761
|
# 'start': since,
|
@@ -1669,7 +1773,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1669
1773
|
|
1670
1774
|
async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1671
1775
|
"""
|
1672
|
-
|
1776
|
+
|
1777
|
+
https://docs.bitvavo.com/#tag/Account/paths/~1withdrawalHistory/get
|
1778
|
+
|
1673
1779
|
fetch all withdrawals made from an account
|
1674
1780
|
:param str code: unified currency code
|
1675
1781
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
@@ -1700,7 +1806,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1700
1806
|
return self.parse_transactions(response, currency, since, limit, {'type': 'withdrawal'})
|
1701
1807
|
|
1702
1808
|
def fetch_deposits_request(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
1703
|
-
request = {
|
1809
|
+
request: dict = {
|
1704
1810
|
# 'symbol': currency['id'],
|
1705
1811
|
# 'limit': 500, # default 500, max 1000
|
1706
1812
|
# 'start': since,
|
@@ -1718,7 +1824,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1718
1824
|
|
1719
1825
|
async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1720
1826
|
"""
|
1721
|
-
|
1827
|
+
|
1828
|
+
https://docs.bitvavo.com/#tag/Account/paths/~1depositHistory/get
|
1829
|
+
|
1722
1830
|
fetch all deposits made to an account
|
1723
1831
|
:param str code: unified currency code
|
1724
1832
|
:param int [since]: the earliest time in ms to fetch deposits for
|
@@ -1746,8 +1854,8 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1746
1854
|
#
|
1747
1855
|
return self.parse_transactions(response, currency, since, limit, {'type': 'deposit'})
|
1748
1856
|
|
1749
|
-
def parse_transaction_status(self, status):
|
1750
|
-
statuses = {
|
1857
|
+
def parse_transaction_status(self, status: Str):
|
1858
|
+
statuses: dict = {
|
1751
1859
|
'awaiting_processing': 'pending',
|
1752
1860
|
'awaiting_email_confirmation': 'pending',
|
1753
1861
|
'awaiting_bitvavo_inspection': 'pending',
|
@@ -1760,7 +1868,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1760
1868
|
}
|
1761
1869
|
return self.safe_string(statuses, status, status)
|
1762
1870
|
|
1763
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
1871
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1764
1872
|
#
|
1765
1873
|
# withdraw
|
1766
1874
|
#
|
@@ -1856,7 +1964,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1856
1964
|
# "message": ""
|
1857
1965
|
# }
|
1858
1966
|
#
|
1859
|
-
result = {
|
1967
|
+
result: dict = {
|
1860
1968
|
'info': fee,
|
1861
1969
|
'withdraw': {
|
1862
1970
|
'fee': self.safe_number(fee, 'withdrawalFee'),
|
@@ -1883,7 +1991,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1883
1991
|
async def fetch_deposit_withdraw_fees(self, codes: Strings = None, params={}):
|
1884
1992
|
"""
|
1885
1993
|
fetch deposit and withdraw fees
|
1886
|
-
|
1994
|
+
|
1995
|
+
https://docs.bitvavo.com/#tag/General/paths/~1assets/get
|
1996
|
+
|
1887
1997
|
:param str[]|None codes: list of unified currency codes
|
1888
1998
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1889
1999
|
:returns dict: a list of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>`
|
@@ -1940,7 +2050,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1940
2050
|
url = self.urls['api'][api] + url
|
1941
2051
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1942
2052
|
|
1943
|
-
def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
2053
|
+
def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1944
2054
|
if response is None:
|
1945
2055
|
return None # fallback to default error handler
|
1946
2056
|
#
|