ccxt 4.2.76__py2.py3-none-any.whl → 4.4.48__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccxt/__init__.py +36 -14
- ccxt/abstract/alpaca.py +4 -0
- ccxt/abstract/bigone.py +1 -1
- ccxt/abstract/binance.py +112 -48
- ccxt/abstract/binancecoinm.py +112 -48
- ccxt/abstract/binanceus.py +147 -83
- ccxt/abstract/binanceusdm.py +112 -48
- ccxt/abstract/bingx.py +133 -78
- ccxt/abstract/bitbank.py +5 -0
- ccxt/abstract/bitfinex.py +136 -65
- ccxt/abstract/bitfinex1.py +69 -0
- ccxt/abstract/bitflyer.py +1 -0
- ccxt/abstract/bitget.py +8 -1
- ccxt/abstract/bitmart.py +13 -1
- ccxt/abstract/bitopro.py +1 -0
- ccxt/abstract/bitpanda.py +0 -12
- ccxt/abstract/bitrue.py +3 -3
- ccxt/abstract/bitstamp.py +26 -3
- ccxt/abstract/blofin.py +24 -0
- ccxt/abstract/btcbox.py +1 -0
- ccxt/abstract/bybit.py +29 -14
- ccxt/abstract/cex.py +28 -29
- ccxt/abstract/coinbase.py +6 -0
- ccxt/abstract/coinbaseadvanced.py +94 -0
- ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
- ccxt/abstract/coinbaseinternational.py +1 -1
- ccxt/abstract/coincatch.py +94 -0
- ccxt/abstract/coinex.py +233 -123
- ccxt/abstract/coinmetro.py +1 -0
- ccxt/abstract/cryptocom.py +14 -0
- ccxt/abstract/defx.py +69 -0
- ccxt/abstract/deribit.py +1 -0
- ccxt/abstract/digifinex.py +1 -0
- ccxt/abstract/ellipx.py +25 -0
- ccxt/abstract/gate.py +20 -0
- ccxt/abstract/gateio.py +20 -0
- ccxt/abstract/gemini.py +1 -0
- ccxt/abstract/hashkey.py +67 -0
- ccxt/abstract/hyperliquid.py +1 -1
- ccxt/abstract/independentreserve.py +6 -0
- ccxt/abstract/kraken.py +4 -3
- ccxt/abstract/krakenfutures.py +4 -0
- ccxt/abstract/kucoin.py +25 -0
- ccxt/abstract/kucoinfutures.py +35 -0
- ccxt/abstract/luno.py +2 -0
- ccxt/abstract/mexc.py +4 -0
- ccxt/abstract/myokx.py +340 -0
- ccxt/abstract/oceanex.py +5 -0
- ccxt/abstract/okx.py +30 -0
- ccxt/abstract/onetrading.py +0 -12
- ccxt/abstract/oxfun.py +34 -0
- ccxt/abstract/paradex.py +40 -0
- ccxt/abstract/phemex.py +1 -0
- ccxt/abstract/upbit.py +4 -0
- ccxt/abstract/vertex.py +19 -0
- ccxt/abstract/whitebit.py +31 -1
- ccxt/abstract/woo.py +6 -2
- ccxt/abstract/woofipro.py +119 -0
- ccxt/abstract/xt.py +153 -0
- ccxt/abstract/zonda.py +6 -0
- ccxt/ace.py +164 -60
- ccxt/alpaca.py +727 -63
- ccxt/ascendex.py +395 -249
- ccxt/async_support/__init__.py +36 -14
- ccxt/async_support/ace.py +164 -60
- ccxt/async_support/alpaca.py +727 -63
- ccxt/async_support/ascendex.py +396 -249
- ccxt/async_support/base/exchange.py +531 -155
- ccxt/async_support/base/ws/aiohttp_client.py +28 -5
- ccxt/async_support/base/ws/cache.py +3 -2
- ccxt/async_support/base/ws/client.py +26 -5
- ccxt/async_support/base/ws/fast_client.py +4 -3
- ccxt/async_support/base/ws/functions.py +1 -1
- ccxt/async_support/base/ws/future.py +40 -31
- ccxt/async_support/base/ws/order_book_side.py +3 -0
- ccxt/async_support/bequant.py +1 -1
- ccxt/async_support/bigone.py +329 -202
- ccxt/async_support/binance.py +3513 -1511
- ccxt/async_support/binancecoinm.py +2 -1
- ccxt/async_support/binanceus.py +12 -1
- ccxt/async_support/binanceusdm.py +3 -1
- ccxt/async_support/bingx.py +3105 -881
- ccxt/async_support/bit2c.py +119 -38
- ccxt/async_support/bitbank.py +215 -76
- ccxt/async_support/bitbns.py +124 -53
- ccxt/async_support/bitfinex.py +3236 -1078
- ccxt/async_support/bitfinex1.py +1711 -0
- ccxt/async_support/bitflyer.py +239 -50
- ccxt/async_support/bitget.py +1513 -563
- ccxt/async_support/bithumb.py +201 -67
- ccxt/async_support/bitmart.py +1320 -435
- ccxt/async_support/bitmex.py +308 -111
- ccxt/async_support/bitopro.py +256 -96
- ccxt/async_support/bitrue.py +365 -233
- ccxt/async_support/bitso.py +201 -89
- ccxt/async_support/bitstamp.py +438 -269
- ccxt/async_support/bitteam.py +179 -73
- ccxt/async_support/bitvavo.py +180 -70
- ccxt/async_support/bl3p.py +92 -25
- ccxt/async_support/blockchaincom.py +193 -79
- ccxt/async_support/blofin.py +403 -150
- ccxt/async_support/btcalpha.py +161 -55
- ccxt/async_support/btcbox.py +250 -34
- ccxt/async_support/btcmarkets.py +232 -85
- ccxt/async_support/btcturk.py +159 -60
- ccxt/async_support/bybit.py +2326 -1255
- ccxt/async_support/cex.py +1409 -1329
- ccxt/async_support/coinbase.py +1455 -288
- ccxt/async_support/coinbaseadvanced.py +17 -0
- ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/async_support/coinbaseinternational.py +428 -88
- ccxt/async_support/coincatch.py +5152 -0
- ccxt/async_support/coincheck.py +121 -38
- ccxt/async_support/coinex.py +4020 -3339
- ccxt/async_support/coinlist.py +273 -116
- ccxt/async_support/coinmate.py +204 -97
- ccxt/async_support/coinmetro.py +203 -110
- ccxt/async_support/coinone.py +142 -68
- ccxt/async_support/coinsph.py +206 -89
- ccxt/async_support/coinspot.py +137 -62
- ccxt/async_support/cryptocom.py +515 -185
- ccxt/async_support/currencycom.py +203 -85
- ccxt/async_support/defx.py +2066 -0
- ccxt/async_support/delta.py +467 -158
- ccxt/async_support/deribit.py +558 -324
- ccxt/async_support/digifinex.py +340 -223
- ccxt/async_support/ellipx.py +1826 -0
- ccxt/async_support/exmo.py +259 -128
- ccxt/async_support/gate.py +1473 -464
- ccxt/async_support/gemini.py +206 -84
- ccxt/async_support/hashkey.py +4164 -0
- ccxt/async_support/hitbtc.py +334 -178
- ccxt/async_support/hollaex.py +134 -83
- ccxt/async_support/htx.py +1095 -563
- ccxt/async_support/huobijp.py +105 -56
- ccxt/async_support/hyperliquid.py +1634 -269
- ccxt/async_support/idex.py +148 -95
- ccxt/async_support/independentreserve.py +236 -31
- ccxt/async_support/indodax.py +165 -62
- ccxt/async_support/kraken.py +871 -354
- ccxt/async_support/krakenfutures.py +324 -100
- ccxt/async_support/kucoin.py +1050 -355
- ccxt/async_support/kucoinfutures.py +1004 -149
- ccxt/async_support/kuna.py +138 -106
- ccxt/async_support/latoken.py +135 -79
- ccxt/async_support/lbank.py +290 -113
- ccxt/async_support/luno.py +112 -62
- ccxt/async_support/lykke.py +104 -55
- ccxt/async_support/mercado.py +36 -29
- ccxt/async_support/mexc.py +995 -429
- ccxt/async_support/myokx.py +43 -0
- ccxt/async_support/ndax.py +163 -82
- ccxt/async_support/novadax.py +121 -75
- ccxt/async_support/oceanex.py +175 -59
- ccxt/async_support/okcoin.py +222 -163
- ccxt/async_support/okx.py +1777 -455
- ccxt/async_support/onetrading.py +132 -414
- ccxt/async_support/oxfun.py +2832 -0
- ccxt/async_support/p2b.py +79 -51
- ccxt/async_support/paradex.py +2017 -0
- ccxt/async_support/paymium.py +56 -32
- ccxt/async_support/phemex.py +572 -196
- ccxt/async_support/poloniex.py +218 -95
- ccxt/async_support/poloniexfutures.py +260 -92
- ccxt/async_support/probit.py +143 -110
- ccxt/async_support/timex.py +123 -70
- ccxt/async_support/tokocrypto.py +129 -93
- ccxt/async_support/tradeogre.py +39 -25
- ccxt/async_support/upbit.py +322 -113
- ccxt/async_support/vertex.py +2983 -0
- ccxt/async_support/wavesexchange.py +227 -173
- ccxt/async_support/wazirx.py +145 -65
- ccxt/async_support/whitebit.py +533 -138
- ccxt/async_support/woo.py +1155 -295
- ccxt/async_support/woofipro.py +2716 -0
- ccxt/async_support/xt.py +4628 -0
- ccxt/async_support/yobit.py +160 -92
- ccxt/async_support/zaif.py +80 -33
- ccxt/async_support/zonda.py +140 -69
- ccxt/base/errors.py +51 -20
- ccxt/base/exchange.py +1729 -482
- ccxt/base/precise.py +10 -0
- ccxt/base/types.py +223 -4
- ccxt/bequant.py +1 -1
- ccxt/bigone.py +329 -202
- ccxt/binance.py +3513 -1511
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +12 -1
- ccxt/binanceusdm.py +3 -1
- ccxt/bingx.py +3105 -881
- ccxt/bit2c.py +119 -38
- ccxt/bitbank.py +215 -76
- ccxt/bitbns.py +124 -53
- ccxt/bitfinex.py +3235 -1078
- ccxt/bitfinex1.py +1710 -0
- ccxt/bitflyer.py +239 -50
- ccxt/bitget.py +1513 -563
- ccxt/bithumb.py +200 -67
- ccxt/bitmart.py +1320 -435
- ccxt/bitmex.py +308 -111
- ccxt/bitopro.py +256 -96
- ccxt/bitrue.py +365 -233
- ccxt/bitso.py +201 -89
- ccxt/bitstamp.py +438 -269
- ccxt/bitteam.py +179 -73
- ccxt/bitvavo.py +180 -70
- ccxt/bl3p.py +92 -25
- ccxt/blockchaincom.py +193 -79
- ccxt/blofin.py +403 -150
- ccxt/btcalpha.py +161 -55
- ccxt/btcbox.py +250 -34
- ccxt/btcmarkets.py +232 -85
- ccxt/btcturk.py +159 -60
- ccxt/bybit.py +2326 -1255
- ccxt/cex.py +1408 -1329
- ccxt/coinbase.py +1455 -288
- ccxt/coinbaseadvanced.py +17 -0
- ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/coinbaseinternational.py +428 -88
- ccxt/coincatch.py +5152 -0
- ccxt/coincheck.py +121 -38
- ccxt/coinex.py +4020 -3339
- ccxt/coinlist.py +273 -116
- ccxt/coinmate.py +204 -97
- ccxt/coinmetro.py +203 -110
- ccxt/coinone.py +142 -68
- ccxt/coinsph.py +206 -89
- ccxt/coinspot.py +137 -62
- ccxt/cryptocom.py +515 -185
- ccxt/currencycom.py +203 -85
- ccxt/defx.py +2065 -0
- ccxt/delta.py +467 -158
- ccxt/deribit.py +558 -324
- ccxt/digifinex.py +340 -223
- ccxt/ellipx.py +1826 -0
- ccxt/exmo.py +259 -128
- ccxt/gate.py +1473 -464
- ccxt/gemini.py +206 -84
- ccxt/hashkey.py +4164 -0
- ccxt/hitbtc.py +334 -178
- ccxt/hollaex.py +134 -83
- ccxt/htx.py +1095 -563
- ccxt/huobijp.py +105 -56
- ccxt/hyperliquid.py +1633 -269
- ccxt/idex.py +148 -95
- ccxt/independentreserve.py +235 -31
- ccxt/indodax.py +165 -62
- ccxt/kraken.py +871 -354
- ccxt/krakenfutures.py +324 -100
- ccxt/kucoin.py +1050 -355
- ccxt/kucoinfutures.py +1004 -149
- ccxt/kuna.py +138 -106
- ccxt/latoken.py +135 -79
- ccxt/lbank.py +290 -113
- ccxt/luno.py +112 -62
- ccxt/lykke.py +104 -55
- ccxt/mercado.py +36 -29
- ccxt/mexc.py +994 -429
- ccxt/myokx.py +43 -0
- ccxt/ndax.py +163 -82
- ccxt/novadax.py +121 -75
- ccxt/oceanex.py +175 -59
- ccxt/okcoin.py +222 -163
- ccxt/okx.py +1777 -455
- ccxt/onetrading.py +132 -414
- ccxt/oxfun.py +2831 -0
- ccxt/p2b.py +79 -51
- ccxt/paradex.py +2017 -0
- ccxt/paymium.py +56 -32
- ccxt/phemex.py +572 -196
- ccxt/poloniex.py +218 -95
- ccxt/poloniexfutures.py +260 -92
- ccxt/pro/__init__.py +29 -5
- ccxt/pro/alpaca.py +32 -17
- ccxt/pro/ascendex.py +63 -15
- ccxt/pro/bequant.py +4 -0
- ccxt/pro/binance.py +1596 -329
- ccxt/pro/binancecoinm.py +1 -0
- ccxt/pro/binanceus.py +2 -9
- ccxt/pro/binanceusdm.py +2 -0
- ccxt/pro/bingx.py +527 -134
- ccxt/pro/bitcoincom.py +4 -1
- ccxt/pro/bitfinex.py +731 -266
- ccxt/pro/bitfinex1.py +635 -0
- ccxt/pro/bitget.py +726 -357
- ccxt/pro/bithumb.py +380 -0
- ccxt/pro/bitmart.py +138 -39
- ccxt/pro/bitmex.py +199 -40
- ccxt/pro/bitopro.py +25 -13
- ccxt/pro/bitrue.py +31 -32
- ccxt/pro/bitstamp.py +7 -6
- ccxt/pro/bitvavo.py +204 -82
- ccxt/pro/blockchaincom.py +30 -17
- ccxt/pro/blofin.py +692 -0
- ccxt/pro/bybit.py +791 -82
- ccxt/pro/cex.py +99 -51
- ccxt/pro/coinbase.py +220 -30
- ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
- ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
- ccxt/pro/coinbaseinternational.py +193 -30
- ccxt/pro/coincatch.py +1464 -0
- ccxt/pro/coincheck.py +11 -6
- ccxt/pro/coinex.py +967 -661
- ccxt/pro/coinone.py +17 -10
- ccxt/pro/cryptocom.py +446 -66
- ccxt/pro/currencycom.py +11 -10
- ccxt/pro/defx.py +832 -0
- ccxt/pro/deribit.py +168 -32
- ccxt/pro/exmo.py +253 -21
- ccxt/pro/gate.py +729 -64
- ccxt/pro/gemini.py +44 -26
- ccxt/pro/hashkey.py +802 -0
- ccxt/pro/hitbtc.py +208 -103
- ccxt/pro/hollaex.py +25 -9
- ccxt/pro/htx.py +83 -39
- ccxt/pro/huobijp.py +17 -16
- ccxt/pro/hyperliquid.py +502 -31
- ccxt/pro/idex.py +28 -13
- ccxt/pro/independentreserve.py +21 -16
- ccxt/pro/kraken.py +298 -51
- ccxt/pro/krakenfutures.py +166 -75
- ccxt/pro/kucoin.py +395 -77
- ccxt/pro/kucoinfutures.py +400 -99
- ccxt/pro/lbank.py +52 -31
- ccxt/pro/luno.py +12 -10
- ccxt/pro/mexc.py +400 -50
- ccxt/pro/myokx.py +28 -0
- ccxt/pro/ndax.py +25 -12
- ccxt/pro/okcoin.py +28 -9
- ccxt/pro/okx.py +935 -124
- ccxt/pro/onetrading.py +41 -24
- ccxt/pro/oxfun.py +1054 -0
- ccxt/pro/p2b.py +100 -24
- ccxt/pro/paradex.py +352 -0
- ccxt/pro/phemex.py +93 -34
- ccxt/pro/poloniex.py +129 -50
- ccxt/pro/poloniexfutures.py +53 -32
- ccxt/pro/probit.py +93 -86
- ccxt/pro/upbit.py +401 -8
- ccxt/pro/vertex.py +943 -0
- ccxt/pro/wazirx.py +46 -28
- ccxt/pro/whitebit.py +65 -12
- ccxt/pro/woo.py +486 -70
- ccxt/pro/woofipro.py +1271 -0
- ccxt/pro/xt.py +1067 -0
- ccxt/probit.py +143 -110
- ccxt/static_dependencies/__init__.py +1 -1
- ccxt/static_dependencies/lark/__init__.py +38 -0
- ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
- ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
- ccxt/static_dependencies/lark/ast_utils.py +59 -0
- ccxt/static_dependencies/lark/common.py +86 -0
- ccxt/static_dependencies/lark/exceptions.py +292 -0
- ccxt/static_dependencies/lark/grammar.py +130 -0
- ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
- ccxt/static_dependencies/lark/indenter.py +143 -0
- ccxt/static_dependencies/lark/lark.py +658 -0
- ccxt/static_dependencies/lark/lexer.py +678 -0
- ccxt/static_dependencies/lark/load_grammar.py +1428 -0
- ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
- ccxt/static_dependencies/lark/parser_frontends.py +257 -0
- ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
- ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
- ccxt/static_dependencies/lark/parsers/earley.py +314 -0
- ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
- ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
- ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
- ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
- ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
- ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
- ccxt/static_dependencies/lark/py.typed +0 -0
- ccxt/static_dependencies/lark/reconstruct.py +107 -0
- ccxt/static_dependencies/lark/tools/__init__.py +70 -0
- ccxt/static_dependencies/lark/tools/nearley.py +202 -0
- ccxt/static_dependencies/lark/tools/serialize.py +32 -0
- ccxt/static_dependencies/lark/tools/standalone.py +196 -0
- ccxt/static_dependencies/lark/tree.py +267 -0
- ccxt/static_dependencies/lark/tree_matcher.py +186 -0
- ccxt/static_dependencies/lark/tree_templates.py +180 -0
- ccxt/static_dependencies/lark/utils.py +343 -0
- ccxt/static_dependencies/lark/visitors.py +596 -0
- ccxt/static_dependencies/marshmallow/__init__.py +81 -0
- ccxt/static_dependencies/marshmallow/base.py +65 -0
- ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
- ccxt/static_dependencies/marshmallow/decorators.py +231 -0
- ccxt/static_dependencies/marshmallow/error_store.py +60 -0
- ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
- ccxt/static_dependencies/marshmallow/fields.py +2114 -0
- ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
- ccxt/static_dependencies/marshmallow/py.typed +0 -0
- ccxt/static_dependencies/marshmallow/schema.py +1228 -0
- ccxt/static_dependencies/marshmallow/types.py +12 -0
- ccxt/static_dependencies/marshmallow/utils.py +378 -0
- ccxt/static_dependencies/marshmallow/validate.py +678 -0
- ccxt/static_dependencies/marshmallow/warnings.py +2 -0
- ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
- ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
- ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
- ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
- ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
- ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
- ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
- ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
- ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- ccxt/static_dependencies/starknet/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
- ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
- ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
- ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
- ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
- ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
- ccxt/static_dependencies/starknet/common.py +15 -0
- ccxt/static_dependencies/starknet/constants.py +39 -0
- ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
- ccxt/static_dependencies/starknet/hash/address.py +79 -0
- ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
- ccxt/static_dependencies/starknet/hash/selector.py +16 -0
- ccxt/static_dependencies/starknet/hash/storage.py +12 -0
- ccxt/static_dependencies/starknet/hash/utils.py +78 -0
- ccxt/static_dependencies/starknet/models/__init__.py +0 -0
- ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
- ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
- ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
- ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
- ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
- ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
- ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
- ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
- ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
- ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
- ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
- ccxt/static_dependencies/starknet/utils/schema.py +13 -0
- ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
- ccxt/static_dependencies/starkware/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
- ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
- ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
- ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
- ccxt/static_dependencies/sympy/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
- ccxt/static_dependencies/sympy/external/__init__.py +0 -0
- ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
- ccxt/static_dependencies/sympy/external/importtools.py +187 -0
- ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
- ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
- ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
- ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
- ccxt/test/{test_async.py → tests_async.py} +465 -407
- ccxt/test/tests_helpers.py +285 -0
- ccxt/test/tests_init.py +39 -0
- ccxt/test/{test_sync.py → tests_sync.py} +465 -409
- ccxt/timex.py +123 -70
- ccxt/tokocrypto.py +129 -93
- ccxt/tradeogre.py +39 -25
- ccxt/upbit.py +322 -113
- ccxt/vertex.py +2983 -0
- ccxt/wavesexchange.py +227 -173
- ccxt/wazirx.py +145 -65
- ccxt/whitebit.py +533 -138
- ccxt/woo.py +1155 -295
- ccxt/woofipro.py +2716 -0
- ccxt/xt.py +4627 -0
- ccxt/yobit.py +159 -92
- ccxt/zaif.py +80 -33
- ccxt/zonda.py +140 -69
- ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
- ccxt-4.4.48.dist-info/METADATA +646 -0
- ccxt-4.4.48.dist-info/RECORD +669 -0
- {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
- ccxt/abstract/bitbay.py +0 -47
- ccxt/abstract/bitfinex2.py +0 -139
- ccxt/abstract/hitbtc3.py +0 -115
- ccxt/async_support/bitbay.py +0 -17
- ccxt/async_support/bitfinex2.py +0 -3496
- ccxt/async_support/flowbtc.py +0 -34
- ccxt/bitbay.py +0 -17
- ccxt/bitfinex2.py +0 -3496
- ccxt/flowbtc.py +0 -34
- ccxt/hitbtc3.py +0 -16
- ccxt/pro/bitfinex2.py +0 -1081
- ccxt/test/base/__init__.py +0 -28
- ccxt/test/base/test_account.py +0 -26
- ccxt/test/base/test_balance.py +0 -56
- ccxt/test/base/test_borrow_interest.py +0 -35
- ccxt/test/base/test_borrow_rate.py +0 -32
- ccxt/test/base/test_calculate_fee.py +0 -51
- ccxt/test/base/test_crypto.py +0 -127
- ccxt/test/base/test_currency.py +0 -76
- ccxt/test/base/test_datetime.py +0 -103
- ccxt/test/base/test_decimal_to_precision.py +0 -392
- ccxt/test/base/test_deep_extend.py +0 -68
- ccxt/test/base/test_deposit_withdrawal.py +0 -50
- ccxt/test/base/test_exchange_datetime_functions.py +0 -76
- ccxt/test/base/test_funding_rate_history.py +0 -29
- ccxt/test/base/test_last_price.py +0 -32
- ccxt/test/base/test_ledger_entry.py +0 -45
- ccxt/test/base/test_ledger_item.py +0 -48
- ccxt/test/base/test_leverage_tier.py +0 -33
- ccxt/test/base/test_margin_mode.py +0 -24
- ccxt/test/base/test_margin_modification.py +0 -35
- ccxt/test/base/test_market.py +0 -190
- ccxt/test/base/test_number.py +0 -411
- ccxt/test/base/test_ohlcv.py +0 -32
- ccxt/test/base/test_open_interest.py +0 -32
- ccxt/test/base/test_order.py +0 -64
- ccxt/test/base/test_order_book.py +0 -63
- ccxt/test/base/test_position.py +0 -60
- ccxt/test/base/test_shared_methods.py +0 -345
- ccxt/test/base/test_status.py +0 -24
- ccxt/test/base/test_throttle.py +0 -126
- ccxt/test/base/test_ticker.py +0 -86
- ccxt/test/base/test_trade.py +0 -47
- ccxt/test/base/test_trading_fee.py +0 -26
- ccxt/test/base/test_transaction.py +0 -39
- ccxt-4.2.76.dist-info/METADATA +0 -626
- ccxt-4.2.76.dist-info/RECORD +0 -534
- {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/async_support/zonda.py
CHANGED
@@ -6,9 +6,10 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.zonda 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, TransferEntry
|
9
|
+
from ccxt.base.types import Balances, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
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 BadRequest
|
@@ -20,7 +21,6 @@ from ccxt.base.errors import OrderImmediatelyFillable
|
|
20
21
|
from ccxt.base.errors import RateLimitExceeded
|
21
22
|
from ccxt.base.errors import OnMaintenance
|
22
23
|
from ccxt.base.errors import InvalidNonce
|
23
|
-
from ccxt.base.errors import AuthenticationError
|
24
24
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
25
25
|
from ccxt.base.precise import Precise
|
26
26
|
|
@@ -50,32 +50,52 @@ class zonda(Exchange, ImplicitAPI):
|
|
50
50
|
'createOrder': True,
|
51
51
|
'createReduceOnlyOrder': False,
|
52
52
|
'fetchBalance': True,
|
53
|
+
'fetchBorrowInterest': False,
|
54
|
+
'fetchBorrowRate': False,
|
53
55
|
'fetchBorrowRateHistories': False,
|
54
56
|
'fetchBorrowRateHistory': False,
|
57
|
+
'fetchBorrowRates': False,
|
58
|
+
'fetchBorrowRatesPerSymbol': False,
|
55
59
|
'fetchCrossBorrowRate': False,
|
56
60
|
'fetchCrossBorrowRates': False,
|
57
61
|
'fetchDeposit': False,
|
58
62
|
'fetchDepositAddress': True,
|
59
63
|
'fetchDepositAddresses': True,
|
64
|
+
'fetchDepositAddressesByNetwork': False,
|
60
65
|
'fetchDeposits': None,
|
61
66
|
'fetchFundingHistory': False,
|
67
|
+
'fetchFundingInterval': False,
|
68
|
+
'fetchFundingIntervals': False,
|
62
69
|
'fetchFundingRate': False,
|
63
70
|
'fetchFundingRateHistory': False,
|
64
71
|
'fetchFundingRates': False,
|
72
|
+
'fetchGreeks': False,
|
65
73
|
'fetchIndexOHLCV': False,
|
66
74
|
'fetchIsolatedBorrowRate': False,
|
67
75
|
'fetchIsolatedBorrowRates': False,
|
76
|
+
'fetchIsolatedPositions': False,
|
68
77
|
'fetchLedger': True,
|
69
78
|
'fetchLeverage': False,
|
79
|
+
'fetchLeverages': False,
|
70
80
|
'fetchLeverageTiers': False,
|
81
|
+
'fetchLiquidations': False,
|
82
|
+
'fetchMarginAdjustmentHistory': False,
|
71
83
|
'fetchMarginMode': False,
|
84
|
+
'fetchMarginModes': False,
|
85
|
+
'fetchMarketLeverageTiers': False,
|
72
86
|
'fetchMarkets': True,
|
73
87
|
'fetchMarkOHLCV': False,
|
88
|
+
'fetchMarkPrices': False,
|
89
|
+
'fetchMyLiquidations': False,
|
90
|
+
'fetchMySettlementHistory': False,
|
74
91
|
'fetchMyTrades': True,
|
75
92
|
'fetchOHLCV': True,
|
93
|
+
'fetchOpenInterest': False,
|
76
94
|
'fetchOpenInterestHistory': False,
|
77
95
|
'fetchOpenOrder': False,
|
78
96
|
'fetchOpenOrders': True,
|
97
|
+
'fetchOption': False,
|
98
|
+
'fetchOptionChain': False,
|
79
99
|
'fetchOrderBook': True,
|
80
100
|
'fetchOrderBooks': False,
|
81
101
|
'fetchPosition': False,
|
@@ -83,6 +103,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
83
103
|
'fetchPositions': False,
|
84
104
|
'fetchPositionsRisk': False,
|
85
105
|
'fetchPremiumIndexOHLCV': False,
|
106
|
+
'fetchSettlementHistory': False,
|
86
107
|
'fetchTicker': True,
|
87
108
|
'fetchTickers': True,
|
88
109
|
'fetchTime': False,
|
@@ -93,9 +114,13 @@ class zonda(Exchange, ImplicitAPI):
|
|
93
114
|
'fetchTransactionFees': False,
|
94
115
|
'fetchTransactions': None,
|
95
116
|
'fetchTransfer': False,
|
117
|
+
'fetchUnderlyingAssets': False,
|
118
|
+
'fetchVolatilityHistory': False,
|
96
119
|
'fetchWithdrawal': False,
|
97
120
|
'fetchWithdrawals': None,
|
98
121
|
'reduceMargin': False,
|
122
|
+
'repayCrossMargin': False,
|
123
|
+
'repayIsolatedMargin': False,
|
99
124
|
'setLeverage': False,
|
100
125
|
'setMargin': False,
|
101
126
|
'setMarginMode': False,
|
@@ -183,6 +208,10 @@ class zonda(Exchange, ImplicitAPI):
|
|
183
208
|
'balances/BITBAY/balance',
|
184
209
|
'fiat_cantor/rate/{baseId}/{quoteId}',
|
185
210
|
'fiat_cantor/history',
|
211
|
+
'client_payments/v2/customer/crypto/{currency}/channels/deposit',
|
212
|
+
'client_payments/v2/customer/crypto/{currency}/channels/withdrawal',
|
213
|
+
'client_payments/v2/customer/crypto/deposit/fee',
|
214
|
+
'client_payments/v2/customer/crypto/withdrawal/fee',
|
186
215
|
],
|
187
216
|
'post': [
|
188
217
|
'trading/offer/{symbol}',
|
@@ -193,6 +222,8 @@ class zonda(Exchange, ImplicitAPI):
|
|
193
222
|
'fiat_cantor/exchange',
|
194
223
|
'api_payments/withdrawals/crypto',
|
195
224
|
'api_payments/withdrawals/fiat',
|
225
|
+
'client_payments/v2/customer/crypto/deposit',
|
226
|
+
'client_payments/v2/customer/crypto/withdrawal',
|
196
227
|
],
|
197
228
|
'delete': [
|
198
229
|
'trading/offer/{symbol}/{id}/{side}/{price}',
|
@@ -311,9 +342,11 @@ class zonda(Exchange, ImplicitAPI):
|
|
311
342
|
},
|
312
343
|
})
|
313
344
|
|
314
|
-
async def fetch_markets(self, params={}):
|
345
|
+
async def fetch_markets(self, params={}) -> List[Market]:
|
315
346
|
"""
|
316
|
-
|
347
|
+
|
348
|
+
https://docs.zondacrypto.exchange/reference/ticker-1
|
349
|
+
|
317
350
|
retrieves data on all markets for zonda
|
318
351
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
319
352
|
:returns dict[]: an array of objects representing market data
|
@@ -410,7 +443,9 @@ class zonda(Exchange, ImplicitAPI):
|
|
410
443
|
|
411
444
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
412
445
|
"""
|
413
|
-
|
446
|
+
|
447
|
+
https://docs.zondacrypto.exchange/reference/active-orders
|
448
|
+
|
414
449
|
fetch all unfilled currently open orders
|
415
450
|
:param str symbol: not used by zonda fetchOpenOrders
|
416
451
|
:param int [since]: the earliest time in ms to fetch open orders for
|
@@ -419,12 +454,12 @@ class zonda(Exchange, ImplicitAPI):
|
|
419
454
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
420
455
|
"""
|
421
456
|
await self.load_markets()
|
422
|
-
request = {}
|
457
|
+
request: dict = {}
|
423
458
|
response = await self.v1_01PrivateGetTradingOffer(self.extend(request, params))
|
424
|
-
items = self.
|
459
|
+
items = self.safe_list(response, 'items', [])
|
425
460
|
return self.parse_orders(items, None, since, limit, {'status': 'open'})
|
426
461
|
|
427
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
462
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
428
463
|
#
|
429
464
|
# {
|
430
465
|
# "market": "ETH-EUR",
|
@@ -443,6 +478,13 @@ class zonda(Exchange, ImplicitAPI):
|
|
443
478
|
# "secondBalanceId": "ab43023b-4079-414c-b340-056e3430a3af"
|
444
479
|
# }
|
445
480
|
#
|
481
|
+
# cancelOrder
|
482
|
+
#
|
483
|
+
# {
|
484
|
+
# status: "Ok",
|
485
|
+
# errors: []
|
486
|
+
# }
|
487
|
+
#
|
446
488
|
marketId = self.safe_string(order, 'market')
|
447
489
|
symbol = self.safe_symbol(marketId, market, '-')
|
448
490
|
timestamp = self.safe_integer(order, 'time')
|
@@ -463,7 +505,6 @@ class zonda(Exchange, ImplicitAPI):
|
|
463
505
|
'postOnly': postOnly,
|
464
506
|
'side': self.safe_string_lower(order, 'offerType'),
|
465
507
|
'price': self.safe_string(order, 'rate'),
|
466
|
-
'stopPrice': None,
|
467
508
|
'triggerPrice': None,
|
468
509
|
'amount': amount,
|
469
510
|
'cost': None,
|
@@ -476,7 +517,9 @@ class zonda(Exchange, ImplicitAPI):
|
|
476
517
|
|
477
518
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
478
519
|
"""
|
479
|
-
|
520
|
+
|
521
|
+
https://docs.zondacrypto.exchange/reference/transactions-history
|
522
|
+
|
480
523
|
fetch all trades made by the user
|
481
524
|
:param str symbol: unified market symbol
|
482
525
|
:param int [since]: the earliest time in ms to fetch trades for
|
@@ -485,12 +528,12 @@ class zonda(Exchange, ImplicitAPI):
|
|
485
528
|
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
486
529
|
"""
|
487
530
|
await self.load_markets()
|
488
|
-
request = {}
|
531
|
+
request: dict = {}
|
489
532
|
if symbol:
|
490
533
|
markets = [self.market_id(symbol)]
|
491
534
|
symbol = self.symbol(symbol)
|
492
535
|
request['markets'] = markets
|
493
|
-
query = {'query': self.json(self.extend(request, params))}
|
536
|
+
query: dict = {'query': self.json(self.extend(request, params))}
|
494
537
|
response = await self.v1_01PrivateGetTradingHistoryTransactions(query)
|
495
538
|
#
|
496
539
|
# {
|
@@ -522,7 +565,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
522
565
|
balances = self.safe_value(response, 'balances')
|
523
566
|
if balances is None:
|
524
567
|
raise ExchangeError(self.id + ' empty balance response ' + self.json(response))
|
525
|
-
result = {'info': response}
|
568
|
+
result: dict = {'info': response}
|
526
569
|
for i in range(0, len(balances)):
|
527
570
|
balance = balances[i]
|
528
571
|
currencyId = self.safe_string(balance, 'currency')
|
@@ -535,7 +578,9 @@ class zonda(Exchange, ImplicitAPI):
|
|
535
578
|
|
536
579
|
async def fetch_balance(self, params={}) -> Balances:
|
537
580
|
"""
|
538
|
-
|
581
|
+
|
582
|
+
https://docs.zondacrypto.exchange/reference/list-of-wallets
|
583
|
+
|
539
584
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
540
585
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
541
586
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
@@ -546,7 +591,9 @@ class zonda(Exchange, ImplicitAPI):
|
|
546
591
|
|
547
592
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
548
593
|
"""
|
549
|
-
|
594
|
+
|
595
|
+
https://docs.zondacrypto.exchange/reference/orderbook-2
|
596
|
+
|
550
597
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
551
598
|
:param str symbol: unified symbol of the market to fetch the order book for
|
552
599
|
:param int [limit]: the maximum amount of order book entries to return
|
@@ -555,7 +602,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
555
602
|
"""
|
556
603
|
await self.load_markets()
|
557
604
|
market = self.market(symbol)
|
558
|
-
request = {
|
605
|
+
request: dict = {
|
559
606
|
'symbol': market['id'],
|
560
607
|
}
|
561
608
|
response = await self.v1_01PublicGetTradingOrderbookSymbol(self.extend(request, params))
|
@@ -588,7 +635,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
588
635
|
'nonce': self.safe_integer(response, 'seqNo'),
|
589
636
|
}
|
590
637
|
|
591
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
638
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
592
639
|
#
|
593
640
|
# version 1
|
594
641
|
#
|
@@ -657,7 +704,9 @@ class zonda(Exchange, ImplicitAPI):
|
|
657
704
|
async def fetch_ticker(self, symbol: str, params={}):
|
658
705
|
"""
|
659
706
|
v1_01PublicGetTradingTickerSymbol retrieves timestamp, datetime, bid, ask, close, last, previousClose, v1_01PublicGetTradingStatsSymbol retrieves high, low, volume and opening price of an asset
|
660
|
-
|
707
|
+
|
708
|
+
https://docs.zondacrypto.exchange/reference/market-statistics
|
709
|
+
|
661
710
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
662
711
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
663
712
|
:param str [params.method]: v1_01PublicGetTradingTickerSymbol(default) or v1_01PublicGetTradingStatsSymbol
|
@@ -665,7 +714,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
665
714
|
"""
|
666
715
|
await self.load_markets()
|
667
716
|
market = self.market(symbol)
|
668
|
-
request = {
|
717
|
+
request: dict = {
|
669
718
|
'symbol': market['id'],
|
670
719
|
}
|
671
720
|
method = 'v1_01PublicGetTradingTickerSymbol'
|
@@ -723,9 +772,11 @@ class zonda(Exchange, ImplicitAPI):
|
|
723
772
|
|
724
773
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
725
774
|
"""
|
726
|
-
|
775
|
+
@ignore
|
727
776
|
v1_01PublicGetTradingTicker retrieves timestamp, datetime, bid, ask, close, last, previousClose for each market, v1_01PublicGetTradingStats retrieves high, low, volume and opening price of each market
|
728
|
-
|
777
|
+
|
778
|
+
https://docs.zondacrypto.exchange/reference/market-statistics
|
779
|
+
|
729
780
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
730
781
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
731
782
|
:param str [params.method]: v1_01PublicGetTradingTicker(default) or v1_01PublicGetTradingStats
|
@@ -788,24 +839,26 @@ class zonda(Exchange, ImplicitAPI):
|
|
788
839
|
#
|
789
840
|
else:
|
790
841
|
raise BadRequest(self.id + ' fetchTickers params["method"] must be "v1_01PublicGetTradingTicker" or "v1_01PublicGetTradingStats"')
|
791
|
-
items = self.
|
842
|
+
items = self.safe_dict(response, 'items')
|
792
843
|
return self.parse_tickers(items, symbols)
|
793
844
|
|
794
|
-
async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
845
|
+
async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[LedgerEntry]:
|
795
846
|
"""
|
796
|
-
|
797
|
-
|
798
|
-
|
847
|
+
fetch the history of changes, actions done by the user or operations that altered the balance of the user
|
848
|
+
|
849
|
+
https://docs.zondacrypto.exchange/reference/operations-history
|
850
|
+
|
851
|
+
:param str [code]: unified currency code, default is None
|
799
852
|
:param int [since]: timestamp in ms of the earliest ledger entry, default is None
|
800
|
-
:param int [limit]: max number of ledger
|
853
|
+
:param int [limit]: max number of ledger entries to return, default is None
|
801
854
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
802
|
-
:returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger
|
855
|
+
:returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
|
803
856
|
"""
|
804
857
|
balanceCurrencies = []
|
805
858
|
if code is not None:
|
806
859
|
currency = self.currency(code)
|
807
860
|
balanceCurrencies.append(currency['id'])
|
808
|
-
request = {
|
861
|
+
request: dict = {
|
809
862
|
'balanceCurrencies': balanceCurrencies,
|
810
863
|
}
|
811
864
|
if since is not None:
|
@@ -817,7 +870,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
817
870
|
items = response['items']
|
818
871
|
return self.parse_ledger(items, None, since, limit)
|
819
872
|
|
820
|
-
def parse_ledger_entry(self, item, currency: Currency = None):
|
873
|
+
def parse_ledger_entry(self, item: dict, currency: Currency = None) -> LedgerEntry:
|
821
874
|
#
|
822
875
|
# FUNDS_MIGRATION
|
823
876
|
# {
|
@@ -1088,6 +1141,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
1088
1141
|
timestamp = self.safe_integer(item, 'time')
|
1089
1142
|
balance = self.safe_value(item, 'balance', {})
|
1090
1143
|
currencyId = self.safe_string(balance, 'currency')
|
1144
|
+
currency = self.safe_currency(currencyId, currency)
|
1091
1145
|
change = self.safe_value(item, 'change', {})
|
1092
1146
|
amount = self.safe_string(change, 'total')
|
1093
1147
|
direction = 'in'
|
@@ -1098,7 +1152,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
1098
1152
|
# that can be used to enrich the transfers with txid, address etc(you need to use info.detailId parameter)
|
1099
1153
|
fundsBefore = self.safe_value(item, 'fundsBefore', {})
|
1100
1154
|
fundsAfter = self.safe_value(item, 'fundsAfter', {})
|
1101
|
-
return {
|
1155
|
+
return self.safe_ledger_entry({
|
1102
1156
|
'info': item,
|
1103
1157
|
'id': self.safe_string(item, 'historyId'),
|
1104
1158
|
'direction': direction,
|
@@ -1114,10 +1168,10 @@ class zonda(Exchange, ImplicitAPI):
|
|
1114
1168
|
'timestamp': timestamp,
|
1115
1169
|
'datetime': self.iso8601(timestamp),
|
1116
1170
|
'fee': None,
|
1117
|
-
}
|
1171
|
+
}, currency)
|
1118
1172
|
|
1119
1173
|
def parse_ledger_entry_type(self, type):
|
1120
|
-
types = {
|
1174
|
+
types: dict = {
|
1121
1175
|
'ADD_FUNDS': 'transaction',
|
1122
1176
|
'BITCOIN_GOLD_FORK': 'transaction',
|
1123
1177
|
'CREATE_BALANCE': 'transaction',
|
@@ -1161,7 +1215,9 @@ class zonda(Exchange, ImplicitAPI):
|
|
1161
1215
|
|
1162
1216
|
async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
1163
1217
|
"""
|
1164
|
-
|
1218
|
+
|
1219
|
+
https://docs.zondacrypto.exchange/reference/candles-chart
|
1220
|
+
|
1165
1221
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
1166
1222
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
1167
1223
|
:param str timeframe: the length of time each candle represents
|
@@ -1173,7 +1229,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
1173
1229
|
await self.load_markets()
|
1174
1230
|
market = self.market(symbol)
|
1175
1231
|
tradingSymbol = market['baseId'] + '-' + market['quoteId']
|
1176
|
-
request = {
|
1232
|
+
request: dict = {
|
1177
1233
|
'symbol': tradingSymbol,
|
1178
1234
|
'resolution': self.safe_string(self.timeframes, timeframe, timeframe),
|
1179
1235
|
# 'from': 1574709092000, # unix timestamp in milliseconds, required
|
@@ -1181,6 +1237,8 @@ class zonda(Exchange, ImplicitAPI):
|
|
1181
1237
|
}
|
1182
1238
|
if limit is None:
|
1183
1239
|
limit = 100
|
1240
|
+
else:
|
1241
|
+
limit = min(limit, 11000) # supports up to 11k candles diapason
|
1184
1242
|
duration = self.parse_timeframe(timeframe)
|
1185
1243
|
timerange = limit * duration * 1000
|
1186
1244
|
if since is None:
|
@@ -1200,10 +1258,10 @@ class zonda(Exchange, ImplicitAPI):
|
|
1200
1258
|
# ]
|
1201
1259
|
# }
|
1202
1260
|
#
|
1203
|
-
items = self.
|
1261
|
+
items = self.safe_list(response, 'items', [])
|
1204
1262
|
return self.parse_ohlcvs(items, market, timeframe, since, limit)
|
1205
1263
|
|
1206
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
1264
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
1207
1265
|
#
|
1208
1266
|
# createOrder trades
|
1209
1267
|
#
|
@@ -1279,7 +1337,9 @@ class zonda(Exchange, ImplicitAPI):
|
|
1279
1337
|
|
1280
1338
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
1281
1339
|
"""
|
1282
|
-
|
1340
|
+
|
1341
|
+
https://docs.zondacrypto.exchange/reference/last-transactions
|
1342
|
+
|
1283
1343
|
get the list of most recent trades for a particular symbol
|
1284
1344
|
:param str symbol: unified symbol of the market to fetch trades for
|
1285
1345
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
@@ -1290,7 +1350,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
1290
1350
|
await self.load_markets()
|
1291
1351
|
market = self.market(symbol)
|
1292
1352
|
tradingSymbol = market['baseId'] + '-' + market['quoteId']
|
1293
|
-
request = {
|
1353
|
+
request: dict = {
|
1294
1354
|
'symbol': tradingSymbol,
|
1295
1355
|
}
|
1296
1356
|
if since is not None:
|
@@ -1298,7 +1358,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
1298
1358
|
if limit is not None:
|
1299
1359
|
request['limit'] = limit # default - 10, max - 300
|
1300
1360
|
response = await self.v1_01PublicGetTradingTransactionsSymbol(self.extend(request, params))
|
1301
|
-
items = self.
|
1361
|
+
items = self.safe_list(response, 'items')
|
1302
1362
|
return self.parse_trades(items, market, since, limit)
|
1303
1363
|
|
1304
1364
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
@@ -1308,7 +1368,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
1308
1368
|
:param str type: 'market' or 'limit'
|
1309
1369
|
:param str side: 'buy' or 'sell'
|
1310
1370
|
:param float amount: how much of currency you want to trade in units of base currency
|
1311
|
-
:param float [price]: the price at which the order is to be
|
1371
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1312
1372
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1313
1373
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1314
1374
|
"""
|
@@ -1316,7 +1376,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
1316
1376
|
market = self.market(symbol)
|
1317
1377
|
tradingSymbol = market['baseId'] + '-' + market['quoteId']
|
1318
1378
|
amount = float(self.amount_to_precision(symbol, amount))
|
1319
|
-
request = {
|
1379
|
+
request: dict = {
|
1320
1380
|
'symbol': tradingSymbol,
|
1321
1381
|
'offerType': side.upper(),
|
1322
1382
|
'amount': amount,
|
@@ -1339,7 +1399,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
1339
1399
|
response = None
|
1340
1400
|
if isStopOrder:
|
1341
1401
|
if not isStopLossPrice:
|
1342
|
-
raise ExchangeError(self.id + ' createOrder() zonda requires `triggerPrice`
|
1402
|
+
raise ExchangeError(self.id + ' createOrder() zonda requires `triggerPrice` parameter for stop-limit or stop-market orders')
|
1343
1403
|
request['stopRate'] = self.price_to_precision(symbol, stopLossPrice)
|
1344
1404
|
response = await self.v1_01PrivatePostTradingStopOfferSymbol(self.extend(request, params))
|
1345
1405
|
else:
|
@@ -1425,7 +1485,9 @@ class zonda(Exchange, ImplicitAPI):
|
|
1425
1485
|
|
1426
1486
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
1427
1487
|
"""
|
1428
|
-
|
1488
|
+
|
1489
|
+
https://docs.zondacrypto.exchange/reference/cancel-order
|
1490
|
+
|
1429
1491
|
cancels an open order
|
1430
1492
|
:param str id: order id
|
1431
1493
|
:param str symbol: unified symbol of the market the order was made in
|
@@ -1441,25 +1503,26 @@ class zonda(Exchange, ImplicitAPI):
|
|
1441
1503
|
await self.load_markets()
|
1442
1504
|
market = self.market(symbol)
|
1443
1505
|
tradingSymbol = market['baseId'] + '-' + market['quoteId']
|
1444
|
-
request = {
|
1506
|
+
request: dict = {
|
1445
1507
|
'symbol': tradingSymbol,
|
1446
1508
|
'id': id,
|
1447
1509
|
'side': side,
|
1448
1510
|
'price': price,
|
1449
1511
|
}
|
1512
|
+
response = await self.v1_01PrivateDeleteTradingOfferSymbolIdSidePrice(self.extend(request, params))
|
1450
1513
|
# {status: "Fail", errors: ["NOT_RECOGNIZED_OFFER_TYPE"]} -- if required params are missing
|
1451
1514
|
# {status: "Ok", errors: []}
|
1452
|
-
return
|
1515
|
+
return self.parse_order(response)
|
1453
1516
|
|
1454
|
-
def is_fiat(self, currency):
|
1455
|
-
fiatCurrencies = {
|
1517
|
+
def is_fiat(self, currency: str) -> bool:
|
1518
|
+
fiatCurrencies: dict = {
|
1456
1519
|
'USD': True,
|
1457
1520
|
'EUR': True,
|
1458
1521
|
'PLN': True,
|
1459
1522
|
}
|
1460
1523
|
return self.safe_bool(fiatCurrencies, currency, False)
|
1461
1524
|
|
1462
|
-
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
1525
|
+
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
1463
1526
|
#
|
1464
1527
|
# {
|
1465
1528
|
# "address": "33u5YAEhQbYfjHHPsfMfCoSdEjfwYjVcBE",
|
@@ -1473,16 +1536,18 @@ class zonda(Exchange, ImplicitAPI):
|
|
1473
1536
|
address = self.safe_string(depositAddress, 'address')
|
1474
1537
|
self.check_address(address)
|
1475
1538
|
return {
|
1539
|
+
'info': depositAddress,
|
1476
1540
|
'currency': self.safe_currency_code(currencyId, currency),
|
1541
|
+
'network': None,
|
1477
1542
|
'address': address,
|
1478
1543
|
'tag': self.safe_string(depositAddress, 'tag'),
|
1479
|
-
'network': None,
|
1480
|
-
'info': depositAddress,
|
1481
1544
|
}
|
1482
1545
|
|
1483
|
-
async def fetch_deposit_address(self, code: str, params={}):
|
1546
|
+
async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
1484
1547
|
"""
|
1485
|
-
|
1548
|
+
|
1549
|
+
https://docs.zondacrypto.exchange/reference/deposit-addresses-for-crypto
|
1550
|
+
|
1486
1551
|
fetch the deposit address for a currency associated with self account
|
1487
1552
|
:param str code: unified currency code
|
1488
1553
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -1491,7 +1556,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
1491
1556
|
"""
|
1492
1557
|
await self.load_markets()
|
1493
1558
|
currency = self.currency(code)
|
1494
|
-
request = {
|
1559
|
+
request: dict = {
|
1495
1560
|
'currency': currency['id'],
|
1496
1561
|
}
|
1497
1562
|
response = await self.v1_01PrivateGetApiPaymentsDepositsCryptoAddresses(self.extend(request, params))
|
@@ -1509,12 +1574,14 @@ class zonda(Exchange, ImplicitAPI):
|
|
1509
1574
|
# }
|
1510
1575
|
#
|
1511
1576
|
data = self.safe_value(response, 'data')
|
1512
|
-
first = self.
|
1577
|
+
first = self.safe_dict(data, 0)
|
1513
1578
|
return self.parse_deposit_address(first, currency)
|
1514
1579
|
|
1515
|
-
async def fetch_deposit_addresses(self, codes:
|
1580
|
+
async def fetch_deposit_addresses(self, codes: Strings = None, params={}) -> List[DepositAddress]:
|
1516
1581
|
"""
|
1517
|
-
|
1582
|
+
|
1583
|
+
https://docs.zondacrypto.exchange/reference/deposit-addresses-for-crypto
|
1584
|
+
|
1518
1585
|
fetch deposit addresses for multiple currencies and chain types
|
1519
1586
|
:param str[]|None codes: zonda does not support filtering filtering by multiple codes and will ignore self parameter.
|
1520
1587
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -1535,12 +1602,14 @@ class zonda(Exchange, ImplicitAPI):
|
|
1535
1602
|
# ]
|
1536
1603
|
# }
|
1537
1604
|
#
|
1538
|
-
data = self.
|
1605
|
+
data = self.safe_list(response, 'data')
|
1539
1606
|
return self.parse_deposit_addresses(data, codes)
|
1540
1607
|
|
1541
1608
|
async def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
|
1542
1609
|
"""
|
1543
|
-
|
1610
|
+
|
1611
|
+
https://docs.zondacrypto.exchange/reference/internal-transfer
|
1612
|
+
|
1544
1613
|
transfer currency internally between wallets on the same account
|
1545
1614
|
:param str code: unified currency code
|
1546
1615
|
:param float amount: amount to transfer
|
@@ -1551,7 +1620,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
1551
1620
|
"""
|
1552
1621
|
await self.load_markets()
|
1553
1622
|
currency = self.currency(code)
|
1554
|
-
request = {
|
1623
|
+
request: dict = {
|
1555
1624
|
'source': fromAccount,
|
1556
1625
|
'destination': toAccount,
|
1557
1626
|
'currency': code,
|
@@ -1593,7 +1662,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
1593
1662
|
transfer['amount'] = amount
|
1594
1663
|
return transfer
|
1595
1664
|
|
1596
|
-
def parse_transfer(self, transfer, currency: Currency = None):
|
1665
|
+
def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
|
1597
1666
|
#
|
1598
1667
|
# {
|
1599
1668
|
# "status": "Ok",
|
@@ -1640,16 +1709,18 @@ class zonda(Exchange, ImplicitAPI):
|
|
1640
1709
|
'status': self.parse_transfer_status(status),
|
1641
1710
|
}
|
1642
1711
|
|
1643
|
-
def parse_transfer_status(self, status):
|
1644
|
-
statuses = {
|
1712
|
+
def parse_transfer_status(self, status: Str) -> Str:
|
1713
|
+
statuses: dict = {
|
1645
1714
|
'Ok': 'ok',
|
1646
1715
|
'Fail': 'failed',
|
1647
1716
|
}
|
1648
1717
|
return self.safe_string(statuses, status, status)
|
1649
1718
|
|
1650
|
-
async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
1719
|
+
async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
1651
1720
|
"""
|
1652
|
-
|
1721
|
+
|
1722
|
+
https://docs.zondacrypto.exchange/reference/crypto-withdrawal-1
|
1723
|
+
|
1653
1724
|
make a withdrawal
|
1654
1725
|
:param str code: unified currency code
|
1655
1726
|
:param float amount: the amount to withdraw
|
@@ -1663,7 +1734,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
1663
1734
|
await self.load_markets()
|
1664
1735
|
response = None
|
1665
1736
|
currency = self.currency(code)
|
1666
|
-
request = {
|
1737
|
+
request: dict = {
|
1667
1738
|
'currency': currency['id'],
|
1668
1739
|
'amount': amount,
|
1669
1740
|
'address': address,
|
@@ -1684,10 +1755,10 @@ class zonda(Exchange, ImplicitAPI):
|
|
1684
1755
|
# }
|
1685
1756
|
# }
|
1686
1757
|
#
|
1687
|
-
data = self.
|
1758
|
+
data = self.safe_dict(response, 'data')
|
1688
1759
|
return self.parse_transaction(data, currency)
|
1689
1760
|
|
1690
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
1761
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1691
1762
|
#
|
1692
1763
|
# withdraw
|
1693
1764
|
#
|
@@ -1764,7 +1835,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
1764
1835
|
}
|
1765
1836
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1766
1837
|
|
1767
|
-
def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1838
|
+
def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1768
1839
|
if response is None:
|
1769
1840
|
return None # fallback to default error handler
|
1770
1841
|
if 'code' in response:
|