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/novadax.py
CHANGED
@@ -9,6 +9,7 @@ import hashlib
|
|
9
9
|
from ccxt.base.types import Account, Balances, Currency, Int, 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 AccountNotEnabled
|
14
15
|
from ccxt.base.errors import AccountSuspended
|
@@ -18,10 +19,9 @@ from ccxt.base.errors import BadSymbol
|
|
18
19
|
from ccxt.base.errors import InsufficientFunds
|
19
20
|
from ccxt.base.errors import InvalidOrder
|
20
21
|
from ccxt.base.errors import OrderNotFound
|
21
|
-
from ccxt.base.errors import CancelPending
|
22
22
|
from ccxt.base.errors import RateLimitExceeded
|
23
23
|
from ccxt.base.errors import OnMaintenance
|
24
|
-
from ccxt.base.errors import
|
24
|
+
from ccxt.base.errors import CancelPending
|
25
25
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
26
26
|
from ccxt.base.precise import Precise
|
27
27
|
|
@@ -89,7 +89,11 @@ class novadax(Exchange, ImplicitAPI):
|
|
89
89
|
'fetchOrders': True,
|
90
90
|
'fetchOrderTrades': True,
|
91
91
|
'fetchPosition': False,
|
92
|
+
'fetchPositionHistory': False,
|
93
|
+
'fetchPositionMode': False,
|
92
94
|
'fetchPositions': False,
|
95
|
+
'fetchPositionsForSymbol': False,
|
96
|
+
'fetchPositionsHistory': False,
|
93
97
|
'fetchPositionsRisk': False,
|
94
98
|
'fetchPremiumIndexOHLCV': False,
|
95
99
|
'fetchTicker': True,
|
@@ -224,7 +228,9 @@ class novadax(Exchange, ImplicitAPI):
|
|
224
228
|
def fetch_time(self, params={}):
|
225
229
|
"""
|
226
230
|
fetches the current integer timestamp in milliseconds from the exchange server
|
227
|
-
|
231
|
+
|
232
|
+
https://doc.novadax.com/en-US/#get-current-system-time
|
233
|
+
|
228
234
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
229
235
|
:returns int: the current integer timestamp in milliseconds from the exchange server
|
230
236
|
"""
|
@@ -238,10 +244,12 @@ class novadax(Exchange, ImplicitAPI):
|
|
238
244
|
#
|
239
245
|
return self.safe_integer(response, 'data')
|
240
246
|
|
241
|
-
def fetch_markets(self, params={}):
|
247
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
242
248
|
"""
|
243
249
|
retrieves data on all markets for novadax
|
244
|
-
|
250
|
+
|
251
|
+
https://doc.novadax.com/en-US/#get-all-supported-trading-symbol
|
252
|
+
|
245
253
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
246
254
|
:returns dict[]: an array of objects representing market data
|
247
255
|
"""
|
@@ -268,7 +276,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
268
276
|
data = self.safe_value(response, 'data', [])
|
269
277
|
return self.parse_markets(data)
|
270
278
|
|
271
|
-
def parse_market(self, market) -> Market:
|
279
|
+
def parse_market(self, market: dict) -> Market:
|
272
280
|
baseId = self.safe_string(market, 'baseCurrency')
|
273
281
|
quoteId = self.safe_string(market, 'quoteCurrency')
|
274
282
|
id = self.safe_string(market, 'symbol')
|
@@ -326,7 +334,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
326
334
|
'info': market,
|
327
335
|
}
|
328
336
|
|
329
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
337
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
330
338
|
#
|
331
339
|
# fetchTicker, fetchTickers
|
332
340
|
#
|
@@ -376,14 +384,16 @@ class novadax(Exchange, ImplicitAPI):
|
|
376
384
|
def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
377
385
|
"""
|
378
386
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
379
|
-
|
387
|
+
|
388
|
+
https://doc.novadax.com/en-US/#get-latest-ticker-for-specific-pair
|
389
|
+
|
380
390
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
381
391
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
382
392
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
383
393
|
"""
|
384
394
|
self.load_markets()
|
385
395
|
market = self.market(symbol)
|
386
|
-
request = {
|
396
|
+
request: dict = {
|
387
397
|
'symbol': market['id'],
|
388
398
|
}
|
389
399
|
response = self.publicGetMarketTicker(self.extend(request, params))
|
@@ -405,13 +415,15 @@ class novadax(Exchange, ImplicitAPI):
|
|
405
415
|
# "message":"Success"
|
406
416
|
# }
|
407
417
|
#
|
408
|
-
data = self.
|
418
|
+
data = self.safe_dict(response, 'data', {})
|
409
419
|
return self.parse_ticker(data, market)
|
410
420
|
|
411
421
|
def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
412
422
|
"""
|
413
423
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
414
|
-
|
424
|
+
|
425
|
+
https://doc.novadax.com/en-US/#get-latest-tickers-for-all-trading-pairs
|
426
|
+
|
415
427
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
416
428
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
417
429
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -440,7 +452,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
440
452
|
# }
|
441
453
|
#
|
442
454
|
data = self.safe_value(response, 'data', [])
|
443
|
-
result = {}
|
455
|
+
result: dict = {}
|
444
456
|
for i in range(0, len(data)):
|
445
457
|
ticker = self.parse_ticker(data[i])
|
446
458
|
symbol = ticker['symbol']
|
@@ -450,7 +462,9 @@ class novadax(Exchange, ImplicitAPI):
|
|
450
462
|
def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
451
463
|
"""
|
452
464
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
453
|
-
|
465
|
+
|
466
|
+
https://doc.novadax.com/en-US/#get-market-depth
|
467
|
+
|
454
468
|
:param str symbol: unified symbol of the market to fetch the order book for
|
455
469
|
:param int [limit]: the maximum amount of order book entries to return
|
456
470
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -458,7 +472,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
458
472
|
"""
|
459
473
|
self.load_markets()
|
460
474
|
market = self.market(symbol)
|
461
|
-
request = {
|
475
|
+
request: dict = {
|
462
476
|
'symbol': market['id'],
|
463
477
|
}
|
464
478
|
if limit is not None:
|
@@ -487,7 +501,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
487
501
|
timestamp = self.safe_integer(data, 'timestamp')
|
488
502
|
return self.parse_order_book(data, market['symbol'], timestamp, 'bids', 'asks')
|
489
503
|
|
490
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
504
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
491
505
|
#
|
492
506
|
# public fetchTrades
|
493
507
|
#
|
@@ -567,7 +581,9 @@ class novadax(Exchange, ImplicitAPI):
|
|
567
581
|
def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
568
582
|
"""
|
569
583
|
get the list of most recent trades for a particular symbol
|
570
|
-
|
584
|
+
|
585
|
+
https://doc.novadax.com/en-US/#get-recent-trades
|
586
|
+
|
571
587
|
:param str symbol: unified symbol of the market to fetch trades for
|
572
588
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
573
589
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -576,7 +592,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
576
592
|
"""
|
577
593
|
self.load_markets()
|
578
594
|
market = self.market(symbol)
|
579
|
-
request = {
|
595
|
+
request: dict = {
|
580
596
|
'symbol': market['id'],
|
581
597
|
}
|
582
598
|
if limit is not None:
|
@@ -593,13 +609,15 @@ class novadax(Exchange, ImplicitAPI):
|
|
593
609
|
# "message":"Success"
|
594
610
|
# }
|
595
611
|
#
|
596
|
-
data = self.
|
612
|
+
data = self.safe_list(response, 'data', [])
|
597
613
|
return self.parse_trades(data, market, since, limit)
|
598
614
|
|
599
615
|
def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
600
616
|
"""
|
601
617
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
602
|
-
|
618
|
+
|
619
|
+
https://doc.novadax.com/en-US/#get-kline-data
|
620
|
+
|
603
621
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
604
622
|
:param str timeframe: the length of time each candle represents
|
605
623
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -609,7 +627,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
609
627
|
"""
|
610
628
|
self.load_markets()
|
611
629
|
market = self.market(symbol)
|
612
|
-
request = {
|
630
|
+
request: dict = {
|
613
631
|
'symbol': market['id'],
|
614
632
|
'unit': self.safe_string(self.timeframes, timeframe, timeframe),
|
615
633
|
}
|
@@ -644,7 +662,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
644
662
|
# "message": "Success"
|
645
663
|
# }
|
646
664
|
#
|
647
|
-
data = self.
|
665
|
+
data = self.safe_list(response, 'data', [])
|
648
666
|
return self.parse_ohlcvs(data, market, timeframe, since, limit)
|
649
667
|
|
650
668
|
def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
|
@@ -674,7 +692,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
674
692
|
|
675
693
|
def parse_balance(self, response) -> Balances:
|
676
694
|
data = self.safe_value(response, 'data', [])
|
677
|
-
result = {
|
695
|
+
result: dict = {
|
678
696
|
'info': response,
|
679
697
|
'timestamp': None,
|
680
698
|
'datetime': None,
|
@@ -693,7 +711,9 @@ class novadax(Exchange, ImplicitAPI):
|
|
693
711
|
def fetch_balance(self, params={}) -> Balances:
|
694
712
|
"""
|
695
713
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
696
|
-
|
714
|
+
|
715
|
+
https://doc.novadax.com/en-US/#get-account-balance
|
716
|
+
|
697
717
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
698
718
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
699
719
|
"""
|
@@ -718,12 +738,14 @@ class novadax(Exchange, ImplicitAPI):
|
|
718
738
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
719
739
|
"""
|
720
740
|
create a trade order
|
721
|
-
|
741
|
+
|
742
|
+
https://doc.novadax.com/en-US/#order-introduction
|
743
|
+
|
722
744
|
:param str symbol: unified symbol of the market to create an order in
|
723
745
|
:param str type: 'market' or 'limit'
|
724
746
|
:param str side: 'buy' or 'sell'
|
725
747
|
:param float amount: how much you want to trade in units of the base currency
|
726
|
-
:param float [price]: the price at which the order is to be
|
748
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
727
749
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
728
750
|
:param float [params.cost]: for spot market buy orders, the quote quantity that can be used alternative for the amount
|
729
751
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -732,7 +754,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
732
754
|
market = self.market(symbol)
|
733
755
|
uppercaseType = type.upper()
|
734
756
|
uppercaseSide = side.upper()
|
735
|
-
request = {
|
757
|
+
request: dict = {
|
736
758
|
'symbol': market['id'],
|
737
759
|
'side': uppercaseSide, # or SELL
|
738
760
|
# "amount": self.amount_to_precision(symbol, amount),
|
@@ -741,8 +763,8 @@ class novadax(Exchange, ImplicitAPI):
|
|
741
763
|
# "stopPrice": self.price_to_precision(symbol, stopPrice),
|
742
764
|
# "accountId": "...", # subaccount id, optional
|
743
765
|
}
|
744
|
-
|
745
|
-
if
|
766
|
+
triggerPrice = self.safe_value_2(params, 'triggerPrice', 'stopPrice')
|
767
|
+
if triggerPrice is None:
|
746
768
|
if (uppercaseType == 'STOP_LIMIT') or (uppercaseType == 'STOP_MARKET'):
|
747
769
|
raise ArgumentsRequired(self.id + ' createOrder() requires a stopPrice parameter for ' + uppercaseType + ' orders')
|
748
770
|
else:
|
@@ -752,7 +774,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
752
774
|
uppercaseType = 'STOP_MARKET'
|
753
775
|
defaultOperator = 'LTE' if (uppercaseSide == 'BUY') else 'GTE'
|
754
776
|
request['operator'] = self.safe_string(params, 'operator', defaultOperator)
|
755
|
-
request['stopPrice'] = self.price_to_precision(symbol,
|
777
|
+
request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
|
756
778
|
params = self.omit(params, ['triggerPrice', 'stopPrice'])
|
757
779
|
if (uppercaseType == 'LIMIT') or (uppercaseType == 'STOP_LIMIT'):
|
758
780
|
request['price'] = self.price_to_precision(symbol, price)
|
@@ -804,20 +826,22 @@ class novadax(Exchange, ImplicitAPI):
|
|
804
826
|
# "message": "Success"
|
805
827
|
# }
|
806
828
|
#
|
807
|
-
data = self.
|
829
|
+
data = self.safe_dict(response, 'data', {})
|
808
830
|
return self.parse_order(data, market)
|
809
831
|
|
810
832
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
811
833
|
"""
|
812
834
|
cancels an open order
|
813
|
-
|
835
|
+
|
836
|
+
https://doc.novadax.com/en-US/#cancel-an-order
|
837
|
+
|
814
838
|
:param str id: order id
|
815
839
|
:param str symbol: not used by novadax cancelOrder()
|
816
840
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
817
841
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
818
842
|
"""
|
819
843
|
self.load_markets()
|
820
|
-
request = {
|
844
|
+
request: dict = {
|
821
845
|
'id': id,
|
822
846
|
}
|
823
847
|
response = self.privatePostOrdersCancel(self.extend(request, params))
|
@@ -830,19 +854,22 @@ class novadax(Exchange, ImplicitAPI):
|
|
830
854
|
# "message": "Success"
|
831
855
|
# }
|
832
856
|
#
|
833
|
-
data = self.
|
857
|
+
data = self.safe_dict(response, 'data', {})
|
834
858
|
return self.parse_order(data)
|
835
859
|
|
836
860
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
837
861
|
"""
|
838
862
|
fetches information on an order made by the user
|
839
|
-
|
863
|
+
|
864
|
+
https://doc.novadax.com/en-US/#get-order-details
|
865
|
+
|
866
|
+
:param str id: order id
|
840
867
|
:param str symbol: not used by novadax fetchOrder
|
841
868
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
842
869
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
843
870
|
"""
|
844
871
|
self.load_markets()
|
845
|
-
request = {
|
872
|
+
request: dict = {
|
846
873
|
'id': id,
|
847
874
|
}
|
848
875
|
response = self.privateGetOrdersGet(self.extend(request, params))
|
@@ -867,13 +894,15 @@ class novadax(Exchange, ImplicitAPI):
|
|
867
894
|
# "message": "Success"
|
868
895
|
# }
|
869
896
|
#
|
870
|
-
data = self.
|
897
|
+
data = self.safe_dict(response, 'data', {})
|
871
898
|
return self.parse_order(data)
|
872
899
|
|
873
900
|
def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
874
901
|
"""
|
875
902
|
fetches information on multiple orders made by the user
|
876
|
-
|
903
|
+
|
904
|
+
https://doc.novadax.com/en-US/#get-order-history
|
905
|
+
|
877
906
|
:param str symbol: unified market symbol of the market orders were made in
|
878
907
|
:param int [since]: the earliest time in ms to fetch orders for
|
879
908
|
:param int [limit]: the maximum number of order structures to retrieve
|
@@ -881,7 +910,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
881
910
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
882
911
|
"""
|
883
912
|
self.load_markets()
|
884
|
-
request = {
|
913
|
+
request: dict = {
|
885
914
|
# 'symbol': market['id'],
|
886
915
|
# 'status': 'SUBMITTED,PROCESSING', # SUBMITTED, PROCESSING, PARTIAL_FILLED, CANCELING, FILLED, CANCELED, REJECTED
|
887
916
|
# 'fromId': '...', # order id to begin with
|
@@ -922,20 +951,22 @@ class novadax(Exchange, ImplicitAPI):
|
|
922
951
|
# "message": "Success"
|
923
952
|
# }
|
924
953
|
#
|
925
|
-
data = self.
|
954
|
+
data = self.safe_list(response, 'data', [])
|
926
955
|
return self.parse_orders(data, market, since, limit)
|
927
956
|
|
928
957
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
929
958
|
"""
|
930
959
|
fetch all unfilled currently open orders
|
931
|
-
|
960
|
+
|
961
|
+
https://doc.novadax.com/en-US/#get-order-history
|
962
|
+
|
932
963
|
:param str symbol: unified market symbol
|
933
964
|
:param int [since]: the earliest time in ms to fetch open orders for
|
934
965
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
935
966
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
936
967
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
937
968
|
"""
|
938
|
-
request = {
|
969
|
+
request: dict = {
|
939
970
|
'status': 'SUBMITTED,PROCESSING,PARTIAL_FILLED,CANCELING',
|
940
971
|
}
|
941
972
|
return self.fetch_orders(symbol, since, limit, self.extend(request, params))
|
@@ -943,14 +974,16 @@ class novadax(Exchange, ImplicitAPI):
|
|
943
974
|
def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
944
975
|
"""
|
945
976
|
fetches information on multiple closed orders made by the user
|
946
|
-
|
977
|
+
|
978
|
+
https://doc.novadax.com/en-US/#get-order-history
|
979
|
+
|
947
980
|
:param str symbol: unified market symbol of the market orders were made in
|
948
981
|
:param int [since]: the earliest time in ms to fetch orders for
|
949
982
|
:param int [limit]: the maximum number of order structures to retrieve
|
950
983
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
951
984
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
952
985
|
"""
|
953
|
-
request = {
|
986
|
+
request: dict = {
|
954
987
|
'status': 'FILLED,CANCELED,REJECTED',
|
955
988
|
}
|
956
989
|
return self.fetch_orders(symbol, since, limit, self.extend(request, params))
|
@@ -958,7 +991,9 @@ class novadax(Exchange, ImplicitAPI):
|
|
958
991
|
def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
959
992
|
"""
|
960
993
|
fetch all the trades made from a single order
|
961
|
-
|
994
|
+
|
995
|
+
https://doc.novadax.com/en-US/#get-order-match-details
|
996
|
+
|
962
997
|
:param str id: order id
|
963
998
|
:param str symbol: unified market symbol
|
964
999
|
:param int [since]: the earliest time in ms to fetch trades for
|
@@ -967,7 +1002,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
967
1002
|
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
968
1003
|
"""
|
969
1004
|
self.load_markets()
|
970
|
-
request = {
|
1005
|
+
request: dict = {
|
971
1006
|
'id': id,
|
972
1007
|
}
|
973
1008
|
response = self.privateGetOrdersFill(self.extend(request, params))
|
@@ -998,8 +1033,8 @@ class novadax(Exchange, ImplicitAPI):
|
|
998
1033
|
#
|
999
1034
|
return self.parse_trades(data, market, since, limit)
|
1000
1035
|
|
1001
|
-
def parse_order_status(self, status):
|
1002
|
-
statuses = {
|
1036
|
+
def parse_order_status(self, status: Str):
|
1037
|
+
statuses: dict = {
|
1003
1038
|
'SUBMITTED': 'open',
|
1004
1039
|
'PROCESSING': 'open',
|
1005
1040
|
'PARTIAL_FILLED': 'open',
|
@@ -1010,7 +1045,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
1010
1045
|
}
|
1011
1046
|
return self.safe_string(statuses, status, status)
|
1012
1047
|
|
1013
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
1048
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
1014
1049
|
#
|
1015
1050
|
# createOrder, fetchOrders, fetchOrder
|
1016
1051
|
#
|
@@ -1057,7 +1092,6 @@ class novadax(Exchange, ImplicitAPI):
|
|
1057
1092
|
}
|
1058
1093
|
marketId = self.safe_string(order, 'symbol')
|
1059
1094
|
symbol = self.safe_symbol(marketId, market, '_')
|
1060
|
-
stopPrice = self.safe_number(order, 'stopPrice')
|
1061
1095
|
return self.safe_order({
|
1062
1096
|
'id': id,
|
1063
1097
|
'clientOrderId': None,
|
@@ -1071,8 +1105,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
1071
1105
|
'postOnly': None,
|
1072
1106
|
'side': side,
|
1073
1107
|
'price': price,
|
1074
|
-
'
|
1075
|
-
'triggerPrice': stopPrice,
|
1108
|
+
'triggerPrice': self.safe_number(order, 'stopPrice'),
|
1076
1109
|
'amount': amount,
|
1077
1110
|
'cost': cost,
|
1078
1111
|
'average': average,
|
@@ -1086,7 +1119,9 @@ class novadax(Exchange, ImplicitAPI):
|
|
1086
1119
|
def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
|
1087
1120
|
"""
|
1088
1121
|
transfer currency internally between wallets on the same account
|
1089
|
-
|
1122
|
+
|
1123
|
+
https://doc.novadax.com/en-US/#get-sub-account-transfer
|
1124
|
+
|
1090
1125
|
:param str code: unified currency code
|
1091
1126
|
:param float amount: amount to transfer
|
1092
1127
|
:param str fromAccount: account to transfer from
|
@@ -1101,7 +1136,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
1101
1136
|
# master-transfer-in = from master account to subaccount
|
1102
1137
|
# master-transfer-out = from subaccount to master account
|
1103
1138
|
type = 'master-transfer-in' if (fromAccount == 'main') else 'master-transfer-out'
|
1104
|
-
request = {
|
1139
|
+
request: dict = {
|
1105
1140
|
'transferAmount': self.currency_to_precision(code, amount),
|
1106
1141
|
'currency': currency['id'],
|
1107
1142
|
'subId': toAccount if (type == 'master-transfer-in') else fromAccount,
|
@@ -1124,7 +1159,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
1124
1159
|
transfer['amount'] = amount
|
1125
1160
|
return transfer
|
1126
1161
|
|
1127
|
-
def parse_transfer(self, transfer, currency: Currency = None):
|
1162
|
+
def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
|
1128
1163
|
#
|
1129
1164
|
# {
|
1130
1165
|
# "code":"A10000",
|
@@ -1139,7 +1174,6 @@ class novadax(Exchange, ImplicitAPI):
|
|
1139
1174
|
'info': transfer,
|
1140
1175
|
'id': id,
|
1141
1176
|
'amount': None,
|
1142
|
-
'code': currencyCode, # kept here for backward-compatibility, but will be removed soon
|
1143
1177
|
'currency': currencyCode,
|
1144
1178
|
'fromAccount': None,
|
1145
1179
|
'toAccount': None,
|
@@ -1148,16 +1182,18 @@ class novadax(Exchange, ImplicitAPI):
|
|
1148
1182
|
'status': status,
|
1149
1183
|
}
|
1150
1184
|
|
1151
|
-
def parse_transfer_status(self, status):
|
1152
|
-
statuses = {
|
1185
|
+
def parse_transfer_status(self, status: Str) -> Str:
|
1186
|
+
statuses: dict = {
|
1153
1187
|
'SUCCESS': 'pending',
|
1154
1188
|
}
|
1155
1189
|
return self.safe_string(statuses, status, 'failed')
|
1156
1190
|
|
1157
|
-
def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
1191
|
+
def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
1158
1192
|
"""
|
1159
1193
|
make a withdrawal
|
1160
|
-
|
1194
|
+
|
1195
|
+
https://doc.novadax.com/en-US/#send-cryptocurrencies
|
1196
|
+
|
1161
1197
|
:param str code: unified currency code
|
1162
1198
|
:param float amount: the amount to withdraw
|
1163
1199
|
:param str address: the address to withdraw to
|
@@ -1168,7 +1204,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
1168
1204
|
tag, params = self.handle_withdraw_tag_and_params(tag, params)
|
1169
1205
|
self.load_markets()
|
1170
1206
|
currency = self.currency(code)
|
1171
|
-
request = {
|
1207
|
+
request: dict = {
|
1172
1208
|
'code': currency['id'],
|
1173
1209
|
'amount': self.currency_to_precision(code, amount),
|
1174
1210
|
'wallet': address,
|
@@ -1188,7 +1224,9 @@ class novadax(Exchange, ImplicitAPI):
|
|
1188
1224
|
def fetch_accounts(self, params={}) -> List[Account]:
|
1189
1225
|
"""
|
1190
1226
|
fetch all the accounts associated with a profile
|
1191
|
-
|
1227
|
+
|
1228
|
+
https://doc.novadax.com/en-US/#get-sub-account-list
|
1229
|
+
|
1192
1230
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1193
1231
|
:returns dict: a dictionary of `account structures <https://docs.ccxt.com/#/?id=account-structure>` indexed by the account type
|
1194
1232
|
"""
|
@@ -1224,14 +1262,16 @@ class novadax(Exchange, ImplicitAPI):
|
|
1224
1262
|
def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1225
1263
|
"""
|
1226
1264
|
fetch all deposits made to an account
|
1227
|
-
|
1265
|
+
|
1266
|
+
https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
|
1267
|
+
|
1228
1268
|
:param str code: unified currency code
|
1229
1269
|
:param int [since]: the earliest time in ms to fetch deposits for
|
1230
1270
|
:param int [limit]: the maximum number of deposits structures to retrieve
|
1231
1271
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1232
1272
|
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1233
1273
|
"""
|
1234
|
-
request = {
|
1274
|
+
request: dict = {
|
1235
1275
|
'type': 'coin_in',
|
1236
1276
|
}
|
1237
1277
|
return self.fetch_deposits_withdrawals(code, since, limit, self.extend(request, params))
|
@@ -1239,14 +1279,16 @@ class novadax(Exchange, ImplicitAPI):
|
|
1239
1279
|
def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1240
1280
|
"""
|
1241
1281
|
fetch all withdrawals made from an account
|
1242
|
-
|
1282
|
+
|
1283
|
+
https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
|
1284
|
+
|
1243
1285
|
:param str code: unified currency code
|
1244
1286
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
1245
1287
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
1246
1288
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1247
1289
|
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1248
1290
|
"""
|
1249
|
-
request = {
|
1291
|
+
request: dict = {
|
1250
1292
|
'type': 'coin_out',
|
1251
1293
|
}
|
1252
1294
|
return self.fetch_deposits_withdrawals(code, since, limit, self.extend(request, params))
|
@@ -1254,7 +1296,9 @@ class novadax(Exchange, ImplicitAPI):
|
|
1254
1296
|
def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1255
1297
|
"""
|
1256
1298
|
fetch history of deposits and withdrawals
|
1257
|
-
|
1299
|
+
|
1300
|
+
https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
|
1301
|
+
|
1258
1302
|
:param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
|
1259
1303
|
:param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
|
1260
1304
|
:param int [limit]: max number of deposit/withdrawals to return, default is None
|
@@ -1262,7 +1306,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
1262
1306
|
:returns dict: a list of `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1263
1307
|
"""
|
1264
1308
|
self.load_markets()
|
1265
|
-
request = {
|
1309
|
+
request: dict = {
|
1266
1310
|
# 'currency': currency['id'],
|
1267
1311
|
# 'type': 'coin_in', # 'coin_out'
|
1268
1312
|
# 'direct': 'asc', # 'desc'
|
@@ -1297,17 +1341,17 @@ class novadax(Exchange, ImplicitAPI):
|
|
1297
1341
|
# "message": "Success"
|
1298
1342
|
# }
|
1299
1343
|
#
|
1300
|
-
data = self.
|
1344
|
+
data = self.safe_list(response, 'data', [])
|
1301
1345
|
return self.parse_transactions(data, currency, since, limit)
|
1302
1346
|
|
1303
|
-
def parse_transaction_status(self, status):
|
1347
|
+
def parse_transaction_status(self, status: Str):
|
1304
1348
|
# Pending the record is wait broadcast to chain
|
1305
1349
|
# x/M confirming the comfirming state of tx, the M is total confirmings needed
|
1306
1350
|
# SUCCESS the record is success full
|
1307
1351
|
# FAIL the record failed
|
1308
1352
|
parts = status.split(' ')
|
1309
1353
|
status = self.safe_string(parts, 1, status)
|
1310
|
-
statuses = {
|
1354
|
+
statuses: dict = {
|
1311
1355
|
'Pending': 'pending',
|
1312
1356
|
'confirming': 'pending',
|
1313
1357
|
'SUCCESS': 'ok',
|
@@ -1315,7 +1359,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
1315
1359
|
}
|
1316
1360
|
return self.safe_string(statuses, status, status)
|
1317
1361
|
|
1318
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
1362
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1319
1363
|
#
|
1320
1364
|
# withdraw
|
1321
1365
|
#
|
@@ -1387,7 +1431,9 @@ class novadax(Exchange, ImplicitAPI):
|
|
1387
1431
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1388
1432
|
"""
|
1389
1433
|
fetch all trades made by the user
|
1390
|
-
|
1434
|
+
|
1435
|
+
https://doc.novadax.com/en-US/#get-order-history
|
1436
|
+
|
1391
1437
|
:param str symbol: unified market symbol
|
1392
1438
|
:param int [since]: the earliest time in ms to fetch trades for
|
1393
1439
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -1395,7 +1441,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
1395
1441
|
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
1396
1442
|
"""
|
1397
1443
|
self.load_markets()
|
1398
|
-
request = {
|
1444
|
+
request: dict = {
|
1399
1445
|
# 'orderId': id, # Order ID, string
|
1400
1446
|
# 'symbol': market['id'], # The trading symbol, like BTC_BRL, string
|
1401
1447
|
# 'fromId': fromId, # Search fill id to begin with, string
|
@@ -1435,7 +1481,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
1435
1481
|
# "message": "Success"
|
1436
1482
|
# }
|
1437
1483
|
#
|
1438
|
-
data = self.
|
1484
|
+
data = self.safe_list(response, 'data', [])
|
1439
1485
|
return self.parse_trades(data, market, since, limit)
|
1440
1486
|
|
1441
1487
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|
@@ -1465,7 +1511,7 @@ class novadax(Exchange, ImplicitAPI):
|
|
1465
1511
|
headers['X-Nova-Signature'] = self.hmac(self.encode(auth), self.encode(self.secret), hashlib.sha256)
|
1466
1512
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1467
1513
|
|
1468
|
-
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1514
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1469
1515
|
if response is None:
|
1470
1516
|
return None
|
1471
1517
|
#
|