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/pro/__init__.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# ----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.
|
7
|
+
__version__ = '4.4.48'
|
8
8
|
|
9
9
|
# ----------------------------------------------------------------------------
|
10
10
|
|
@@ -22,8 +22,9 @@ from ccxt.pro.binanceusdm import binanceusdm # noqa
|
|
22
22
|
from ccxt.pro.bingx import bingx # noqa: F401
|
23
23
|
from ccxt.pro.bitcoincom import bitcoincom # noqa: F401
|
24
24
|
from ccxt.pro.bitfinex import bitfinex # noqa: F401
|
25
|
-
from ccxt.pro.
|
25
|
+
from ccxt.pro.bitfinex1 import bitfinex1 # noqa: F401
|
26
26
|
from ccxt.pro.bitget import bitget # noqa: F401
|
27
|
+
from ccxt.pro.bithumb import bithumb # noqa: F401
|
27
28
|
from ccxt.pro.bitmart import bitmart # noqa: F401
|
28
29
|
from ccxt.pro.bitmex import bitmex # noqa: F401
|
29
30
|
from ccxt.pro.bitopro import bitopro # noqa: F401
|
@@ -32,21 +33,26 @@ from ccxt.pro.bitrue import bitrue # noqa
|
|
32
33
|
from ccxt.pro.bitstamp import bitstamp # noqa: F401
|
33
34
|
from ccxt.pro.bitvavo import bitvavo # noqa: F401
|
34
35
|
from ccxt.pro.blockchaincom import blockchaincom # noqa: F401
|
36
|
+
from ccxt.pro.blofin import blofin # noqa: F401
|
35
37
|
from ccxt.pro.bybit import bybit # noqa: F401
|
36
38
|
from ccxt.pro.cex import cex # noqa: F401
|
37
39
|
from ccxt.pro.coinbase import coinbase # noqa: F401
|
40
|
+
from ccxt.pro.coinbaseadvanced import coinbaseadvanced # noqa: F401
|
41
|
+
from ccxt.pro.coinbaseexchange import coinbaseexchange # noqa: F401
|
38
42
|
from ccxt.pro.coinbaseinternational import coinbaseinternational # noqa: F401
|
39
|
-
from ccxt.pro.
|
43
|
+
from ccxt.pro.coincatch import coincatch # noqa: F401
|
40
44
|
from ccxt.pro.coincheck import coincheck # noqa: F401
|
41
45
|
from ccxt.pro.coinex import coinex # noqa: F401
|
42
46
|
from ccxt.pro.coinone import coinone # noqa: F401
|
43
47
|
from ccxt.pro.cryptocom import cryptocom # noqa: F401
|
44
48
|
from ccxt.pro.currencycom import currencycom # noqa: F401
|
49
|
+
from ccxt.pro.defx import defx # noqa: F401
|
45
50
|
from ccxt.pro.deribit import deribit # noqa: F401
|
46
51
|
from ccxt.pro.exmo import exmo # noqa: F401
|
47
52
|
from ccxt.pro.gate import gate # noqa: F401
|
48
53
|
from ccxt.pro.gateio import gateio # noqa: F401
|
49
54
|
from ccxt.pro.gemini import gemini # noqa: F401
|
55
|
+
from ccxt.pro.hashkey import hashkey # noqa: F401
|
50
56
|
from ccxt.pro.hitbtc import hitbtc # noqa: F401
|
51
57
|
from ccxt.pro.hollaex import hollaex # noqa: F401
|
52
58
|
from ccxt.pro.htx import htx # noqa: F401
|
@@ -62,19 +68,25 @@ from ccxt.pro.kucoinfutures import kucoinfutures # noqa
|
|
62
68
|
from ccxt.pro.lbank import lbank # noqa: F401
|
63
69
|
from ccxt.pro.luno import luno # noqa: F401
|
64
70
|
from ccxt.pro.mexc import mexc # noqa: F401
|
71
|
+
from ccxt.pro.myokx import myokx # noqa: F401
|
65
72
|
from ccxt.pro.ndax import ndax # noqa: F401
|
66
73
|
from ccxt.pro.okcoin import okcoin # noqa: F401
|
67
74
|
from ccxt.pro.okx import okx # noqa: F401
|
68
75
|
from ccxt.pro.onetrading import onetrading # noqa: F401
|
76
|
+
from ccxt.pro.oxfun import oxfun # noqa: F401
|
69
77
|
from ccxt.pro.p2b import p2b # noqa: F401
|
78
|
+
from ccxt.pro.paradex import paradex # noqa: F401
|
70
79
|
from ccxt.pro.phemex import phemex # noqa: F401
|
71
80
|
from ccxt.pro.poloniex import poloniex # noqa: F401
|
72
81
|
from ccxt.pro.poloniexfutures import poloniexfutures # noqa: F401
|
73
82
|
from ccxt.pro.probit import probit # noqa: F401
|
74
83
|
from ccxt.pro.upbit import upbit # noqa: F401
|
84
|
+
from ccxt.pro.vertex import vertex # noqa: F401
|
75
85
|
from ccxt.pro.wazirx import wazirx # noqa: F401
|
76
86
|
from ccxt.pro.whitebit import whitebit # noqa: F401
|
77
87
|
from ccxt.pro.woo import woo # noqa: F401
|
88
|
+
from ccxt.pro.woofipro import woofipro # noqa: F401
|
89
|
+
from ccxt.pro.xt import xt # noqa: F401
|
78
90
|
|
79
91
|
exchanges = [
|
80
92
|
'alpaca',
|
@@ -87,8 +99,9 @@ exchanges = [
|
|
87
99
|
'bingx',
|
88
100
|
'bitcoincom',
|
89
101
|
'bitfinex',
|
90
|
-
'
|
102
|
+
'bitfinex1',
|
91
103
|
'bitget',
|
104
|
+
'bithumb',
|
92
105
|
'bitmart',
|
93
106
|
'bitmex',
|
94
107
|
'bitopro',
|
@@ -97,21 +110,26 @@ exchanges = [
|
|
97
110
|
'bitstamp',
|
98
111
|
'bitvavo',
|
99
112
|
'blockchaincom',
|
113
|
+
'blofin',
|
100
114
|
'bybit',
|
101
115
|
'cex',
|
102
116
|
'coinbase',
|
117
|
+
'coinbaseadvanced',
|
118
|
+
'coinbaseexchange',
|
103
119
|
'coinbaseinternational',
|
104
|
-
'
|
120
|
+
'coincatch',
|
105
121
|
'coincheck',
|
106
122
|
'coinex',
|
107
123
|
'coinone',
|
108
124
|
'cryptocom',
|
109
125
|
'currencycom',
|
126
|
+
'defx',
|
110
127
|
'deribit',
|
111
128
|
'exmo',
|
112
129
|
'gate',
|
113
130
|
'gateio',
|
114
131
|
'gemini',
|
132
|
+
'hashkey',
|
115
133
|
'hitbtc',
|
116
134
|
'hollaex',
|
117
135
|
'htx',
|
@@ -127,17 +145,23 @@ exchanges = [
|
|
127
145
|
'lbank',
|
128
146
|
'luno',
|
129
147
|
'mexc',
|
148
|
+
'myokx',
|
130
149
|
'ndax',
|
131
150
|
'okcoin',
|
132
151
|
'okx',
|
133
152
|
'onetrading',
|
153
|
+
'oxfun',
|
134
154
|
'p2b',
|
155
|
+
'paradex',
|
135
156
|
'phemex',
|
136
157
|
'poloniex',
|
137
158
|
'poloniexfutures',
|
138
159
|
'probit',
|
139
160
|
'upbit',
|
161
|
+
'vertex',
|
140
162
|
'wazirx',
|
141
163
|
'whitebit',
|
142
164
|
'woo',
|
165
|
+
'woofipro',
|
166
|
+
'xt',
|
143
167
|
]
|
ccxt/pro/alpaca.py
CHANGED
@@ -56,6 +56,9 @@ class alpaca(ccxt.async_support.alpaca):
|
|
56
56
|
async def watch_ticker(self, symbol: str, params={}) -> Ticker:
|
57
57
|
"""
|
58
58
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
59
|
+
|
60
|
+
https://docs.alpaca.markets/docs/real-time-crypto-pricing-data#quotes
|
61
|
+
|
59
62
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
60
63
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
61
64
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -65,7 +68,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
65
68
|
await self.load_markets()
|
66
69
|
market = self.market(symbol)
|
67
70
|
messageHash = 'ticker:' + market['symbol']
|
68
|
-
request = {
|
71
|
+
request: dict = {
|
69
72
|
'action': 'subscribe',
|
70
73
|
'quotes': [market['id']],
|
71
74
|
}
|
@@ -129,6 +132,9 @@ class alpaca(ccxt.async_support.alpaca):
|
|
129
132
|
async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
130
133
|
"""
|
131
134
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
135
|
+
|
136
|
+
https://docs.alpaca.markets/docs/real-time-crypto-pricing-data#bars
|
137
|
+
|
132
138
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
133
139
|
:param str timeframe: the length of time each candle represents
|
134
140
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -141,7 +147,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
141
147
|
await self.load_markets()
|
142
148
|
market = self.market(symbol)
|
143
149
|
symbol = market['symbol']
|
144
|
-
request = {
|
150
|
+
request: dict = {
|
145
151
|
'action': 'subscribe',
|
146
152
|
'bars': [market['id']],
|
147
153
|
}
|
@@ -181,6 +187,9 @@ class alpaca(ccxt.async_support.alpaca):
|
|
181
187
|
async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
182
188
|
"""
|
183
189
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
190
|
+
|
191
|
+
https://docs.alpaca.markets/docs/real-time-crypto-pricing-data#orderbooks
|
192
|
+
|
184
193
|
:param str symbol: unified symbol of the market to fetch the order book for
|
185
194
|
:param int [limit]: the maximum amount of order book entries to return.
|
186
195
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -192,7 +201,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
192
201
|
market = self.market(symbol)
|
193
202
|
symbol = market['symbol']
|
194
203
|
messageHash = 'orderbook' + ':' + symbol
|
195
|
-
request = {
|
204
|
+
request: dict = {
|
196
205
|
'action': 'subscribe',
|
197
206
|
'orderbooks': [market['id']],
|
198
207
|
}
|
@@ -226,15 +235,15 @@ class alpaca(ccxt.async_support.alpaca):
|
|
226
235
|
datetime = self.safe_string(message, 't')
|
227
236
|
timestamp = self.parse8601(datetime)
|
228
237
|
isSnapshot = self.safe_bool(message, 'r', False)
|
229
|
-
|
230
|
-
|
231
|
-
|
238
|
+
if not (symbol in self.orderbooks):
|
239
|
+
self.orderbooks[symbol] = self.order_book()
|
240
|
+
orderbook = self.orderbooks[symbol]
|
232
241
|
if isSnapshot:
|
233
242
|
snapshot = self.parse_order_book(message, symbol, timestamp, 'b', 'a', 'p', 's')
|
234
243
|
orderbook.reset(snapshot)
|
235
244
|
else:
|
236
|
-
asks = self.
|
237
|
-
bids = self.
|
245
|
+
asks = self.safe_list(message, 'a', [])
|
246
|
+
bids = self.safe_list(message, 'b', [])
|
238
247
|
self.handle_deltas(orderbook['asks'], asks)
|
239
248
|
self.handle_deltas(orderbook['bids'], bids)
|
240
249
|
orderbook['timestamp'] = timestamp
|
@@ -254,11 +263,14 @@ class alpaca(ccxt.async_support.alpaca):
|
|
254
263
|
async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
255
264
|
"""
|
256
265
|
watches information on multiple trades made in a market
|
266
|
+
|
267
|
+
https://docs.alpaca.markets/docs/real-time-crypto-pricing-data#trades
|
268
|
+
|
257
269
|
:param str symbol: unified market symbol of the market trades were made in
|
258
270
|
:param int [since]: the earliest time in ms to fetch orders for
|
259
271
|
:param int [limit]: the maximum number of trade structures to retrieve
|
260
272
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
261
|
-
:returns dict[]: a list of
|
273
|
+
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
262
274
|
"""
|
263
275
|
url = self.urls['api']['ws']['crypto']
|
264
276
|
await self.authenticate(url)
|
@@ -266,7 +278,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
266
278
|
market = self.market(symbol)
|
267
279
|
symbol = market['symbol']
|
268
280
|
messageHash = 'trade:' + symbol
|
269
|
-
request = {
|
281
|
+
request: dict = {
|
270
282
|
'action': 'subscribe',
|
271
283
|
'trades': [market['id']],
|
272
284
|
}
|
@@ -302,12 +314,15 @@ class alpaca(ccxt.async_support.alpaca):
|
|
302
314
|
async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
303
315
|
"""
|
304
316
|
watches information on multiple trades made by the user
|
317
|
+
|
318
|
+
https://docs.alpaca.markets/docs/websocket-streaming#trade-updates
|
319
|
+
|
305
320
|
:param str symbol: unified market symbol of the market trades were made in
|
306
321
|
:param int [since]: the earliest time in ms to fetch trades for
|
307
322
|
:param int [limit]: the maximum number of trade structures to retrieve
|
308
323
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
309
324
|
:param boolean [params.unifiedMargin]: use unified margin account
|
310
|
-
:returns dict[]: a list of
|
325
|
+
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
311
326
|
"""
|
312
327
|
url = self.urls['api']['ws']['trading']
|
313
328
|
await self.authenticate(url)
|
@@ -316,7 +331,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
316
331
|
if symbol is not None:
|
317
332
|
symbol = self.symbol(symbol)
|
318
333
|
messageHash += ':' + symbol
|
319
|
-
request = {
|
334
|
+
request: dict = {
|
320
335
|
'action': 'listen',
|
321
336
|
'data': {
|
322
337
|
'streams': ['trade_updates'],
|
@@ -334,7 +349,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
334
349
|
:param int [since]: the earliest time in ms to fetch orders for
|
335
350
|
:param int [limit]: the maximum number of order structures to retrieve
|
336
351
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
337
|
-
:returns dict[]: a list of
|
352
|
+
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
338
353
|
"""
|
339
354
|
url = self.urls['api']['ws']['trading']
|
340
355
|
await self.authenticate(url)
|
@@ -344,7 +359,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
344
359
|
market = self.market(symbol)
|
345
360
|
symbol = market['symbol']
|
346
361
|
messageHash = 'orders:' + symbol
|
347
|
-
request = {
|
362
|
+
request: dict = {
|
348
363
|
'action': 'listen',
|
349
364
|
'data': {
|
350
365
|
'streams': ['trade_updates'],
|
@@ -562,7 +577,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
562
577
|
},
|
563
578
|
}
|
564
579
|
self.watch(url, messageHash, request, messageHash, future)
|
565
|
-
return future
|
580
|
+
return await future
|
566
581
|
|
567
582
|
def handle_error_message(self, client: Client, message):
|
568
583
|
#
|
@@ -599,7 +614,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
599
614
|
if T == 'success' and msg == 'authenticated':
|
600
615
|
self.handle_authenticate(client, data)
|
601
616
|
return
|
602
|
-
methods = {
|
617
|
+
methods: dict = {
|
603
618
|
'error': self.handle_error_message,
|
604
619
|
'b': self.handle_ohlcv,
|
605
620
|
'q': self.handle_ticker,
|
@@ -612,7 +627,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
612
627
|
|
613
628
|
def handle_trading_message(self, client: Client, message):
|
614
629
|
stream = self.safe_string(message, 'stream')
|
615
|
-
methods = {
|
630
|
+
methods: dict = {
|
616
631
|
'authorization': self.handle_authenticate,
|
617
632
|
'listening': self.handle_subscription,
|
618
633
|
'trade_updates': self.handle_trade_update,
|
ccxt/pro/ascendex.py
CHANGED
@@ -9,8 +9,8 @@ import hashlib
|
|
9
9
|
from ccxt.base.types import Balances, Int, Order, OrderBook, Str, Trade
|
10
10
|
from ccxt.async_support.base.ws.client import Client
|
11
11
|
from typing import List
|
12
|
-
from ccxt.base.errors import NetworkError
|
13
12
|
from ccxt.base.errors import AuthenticationError
|
13
|
+
from ccxt.base.errors import NetworkError
|
14
14
|
|
15
15
|
|
16
16
|
class ascendex(ccxt.async_support.ascendex):
|
@@ -25,6 +25,7 @@ class ascendex(ccxt.async_support.ascendex):
|
|
25
25
|
'watchOrders': True,
|
26
26
|
'watchTicker': False,
|
27
27
|
'watchTrades': True,
|
28
|
+
'watchTradesForSymbols': True,
|
28
29
|
},
|
29
30
|
'urls': {
|
30
31
|
'api': {
|
@@ -55,20 +56,30 @@ class ascendex(ccxt.async_support.ascendex):
|
|
55
56
|
async def watch_public(self, messageHash, params={}):
|
56
57
|
url = self.urls['api']['ws']['public']
|
57
58
|
id = self.nonce()
|
58
|
-
request = {
|
59
|
+
request: dict = {
|
59
60
|
'id': str(id),
|
60
61
|
'op': 'sub',
|
61
62
|
}
|
62
63
|
message = self.extend(request, params)
|
63
64
|
return await self.watch(url, messageHash, message, messageHash)
|
64
65
|
|
66
|
+
async def watch_public_multiple(self, messageHashes, params={}):
|
67
|
+
url = self.urls['api']['ws']['public']
|
68
|
+
id = self.nonce()
|
69
|
+
request: dict = {
|
70
|
+
'id': str(id),
|
71
|
+
'op': 'sub',
|
72
|
+
}
|
73
|
+
message = self.extend(request, params)
|
74
|
+
return await self.watch_multiple(url, messageHashes, message, messageHashes)
|
75
|
+
|
65
76
|
async def watch_private(self, channel, messageHash, params={}):
|
66
77
|
await self.load_accounts()
|
67
78
|
accountGroup = self.safe_string(self.options, 'account-group')
|
68
79
|
url = self.urls['api']['ws']['private']
|
69
80
|
url = self.implode_params(url, {'accountGroup': accountGroup})
|
70
81
|
id = self.nonce()
|
71
|
-
request = {
|
82
|
+
request: dict = {
|
72
83
|
'id': str(id),
|
73
84
|
'op': 'sub',
|
74
85
|
'ch': channel,
|
@@ -80,6 +91,9 @@ class ascendex(ccxt.async_support.ascendex):
|
|
80
91
|
async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
81
92
|
"""
|
82
93
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
94
|
+
|
95
|
+
https://ascendex.github.io/ascendex-pro-api/#channel-bar-data
|
96
|
+
|
83
97
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
84
98
|
:param str timeframe: the length of time each candle represents
|
85
99
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -140,22 +154,48 @@ class ascendex(ccxt.async_support.ascendex):
|
|
140
154
|
async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
141
155
|
"""
|
142
156
|
get the list of most recent trades for a particular symbol
|
157
|
+
|
158
|
+
https://ascendex.github.io/ascendex-pro-api/#channel-market-trades
|
159
|
+
|
143
160
|
:param str symbol: unified symbol of the market to fetch trades for
|
144
161
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
145
162
|
:param int [limit]: the maximum amount of trades to fetch
|
146
163
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
147
164
|
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
|
148
165
|
"""
|
166
|
+
return await self.watch_trades_for_symbols([symbol], since, limit, params)
|
167
|
+
|
168
|
+
async def watch_trades_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
169
|
+
"""
|
170
|
+
get the list of most recent trades for a list of symbols
|
171
|
+
|
172
|
+
https://ascendex.github.io/ascendex-pro-api/#channel-market-trades
|
173
|
+
|
174
|
+
:param str[] symbols: unified symbol of the market to fetch trades for
|
175
|
+
:param int [since]: timestamp in ms of the earliest trade to fetch
|
176
|
+
:param int [limit]: the maximum amount of trades to fetch
|
177
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
178
|
+
:param str [params.name]: the name of the method to call, 'trade' or 'aggTrade', default is 'trade'
|
179
|
+
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
|
180
|
+
"""
|
149
181
|
await self.load_markets()
|
150
|
-
|
151
|
-
|
152
|
-
|
182
|
+
symbols = self.market_symbols(symbols, None, False, True, True)
|
183
|
+
marketIds = []
|
184
|
+
messageHashes = []
|
185
|
+
if symbols is not None:
|
186
|
+
for i in range(0, len(symbols)):
|
187
|
+
market = self.market(symbols[i])
|
188
|
+
marketIds.append(market['id'])
|
189
|
+
messageHashes.append('trades:' + market['id'])
|
190
|
+
channel = 'trades:' + ','.join(marketIds)
|
153
191
|
params = self.extend(params, {
|
154
192
|
'ch': channel,
|
155
193
|
})
|
156
|
-
trades = await self.
|
194
|
+
trades = await self.watch_public_multiple(messageHashes, params)
|
157
195
|
if self.newUpdates:
|
158
|
-
|
196
|
+
first = self.safe_value(trades, 0)
|
197
|
+
tradeSymbol = self.safe_string(first, 'symbol')
|
198
|
+
limit = trades.getLimit(tradeSymbol, limit)
|
159
199
|
return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
|
160
200
|
|
161
201
|
def handle_trades(self, client: Client, message):
|
@@ -195,6 +235,9 @@ class ascendex(ccxt.async_support.ascendex):
|
|
195
235
|
async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
196
236
|
"""
|
197
237
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
238
|
+
|
239
|
+
https://ascendex.github.io/ascendex-pro-api/#channel-level-2-order-book-updates
|
240
|
+
|
198
241
|
:param str symbol: unified symbol of the market to fetch the order book for
|
199
242
|
:param int [limit]: the maximum amount of order book entries to return
|
200
243
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -285,9 +328,9 @@ class ascendex(ccxt.async_support.ascendex):
|
|
285
328
|
marketId = self.safe_string(message, 'symbol')
|
286
329
|
symbol = self.safe_symbol(marketId)
|
287
330
|
messageHash = channel + ':' + marketId
|
288
|
-
|
289
|
-
|
290
|
-
|
331
|
+
if not (symbol in self.orderbooks):
|
332
|
+
self.orderbooks[symbol] = self.order_book({})
|
333
|
+
orderbook = self.orderbooks[symbol]
|
291
334
|
if orderbook['nonce'] is None:
|
292
335
|
orderbook.cache.append(message)
|
293
336
|
else:
|
@@ -342,6 +385,9 @@ class ascendex(ccxt.async_support.ascendex):
|
|
342
385
|
async def watch_balance(self, params={}) -> Balances:
|
343
386
|
"""
|
344
387
|
watch balance and get the amount of funds available for trading or funds locked in orders
|
388
|
+
|
389
|
+
https://ascendex.github.io/ascendex-pro-api/#channel-order-and-balance
|
390
|
+
|
345
391
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
346
392
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
347
393
|
"""
|
@@ -454,7 +500,9 @@ class ascendex(ccxt.async_support.ascendex):
|
|
454
500
|
|
455
501
|
async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
456
502
|
"""
|
457
|
-
|
503
|
+
|
504
|
+
https://ascendex.github.io/ascendex-pro-api/#channel-order-and-balance
|
505
|
+
|
458
506
|
watches information on multiple orders made by the user
|
459
507
|
:param str symbol: unified market symbol of the market orders were made in
|
460
508
|
:param int [since]: the earliest time in ms to fetch orders for
|
@@ -830,7 +878,7 @@ class ascendex(ccxt.async_support.ascendex):
|
|
830
878
|
# }
|
831
879
|
#
|
832
880
|
subject = self.safe_string(message, 'm')
|
833
|
-
methods = {
|
881
|
+
methods: dict = {
|
834
882
|
'ping': self.handle_ping,
|
835
883
|
'auth': self.handle_authenticate,
|
836
884
|
'sub': self.handle_subscription_status,
|
@@ -904,13 +952,13 @@ class ascendex(ccxt.async_support.ascendex):
|
|
904
952
|
auth = timestamp + '+' + version + '/' + path
|
905
953
|
secret = self.base64_to_binary(self.secret)
|
906
954
|
signature = self.hmac(self.encode(auth), secret, hashlib.sha256, 'base64')
|
907
|
-
request = {
|
955
|
+
request: dict = {
|
908
956
|
'op': 'auth',
|
909
957
|
'id': str(self.nonce()),
|
910
958
|
't': timestamp,
|
911
959
|
'key': self.apiKey,
|
912
960
|
'sig': signature,
|
913
961
|
}
|
914
|
-
future = self.watch(url, messageHash, self.extend(request, params))
|
962
|
+
future = await self.watch(url, messageHash, self.extend(request, params), messageHash)
|
915
963
|
client.subscriptions[messageHash] = future
|
916
964
|
return future
|
ccxt/pro/bequant.py
CHANGED
@@ -25,6 +25,10 @@ class bequant(hitbtc):
|
|
25
25
|
'api': {
|
26
26
|
'public': 'https://api.bequant.io/api/3',
|
27
27
|
'private': 'https://api.bequant.io/api/3',
|
28
|
+
'ws': {
|
29
|
+
'public': 'wss://api.bequant.io/api/3/ws/public',
|
30
|
+
'private': 'wss://api.bequant.io/api/3/ws/trading',
|
31
|
+
},
|
28
32
|
},
|
29
33
|
'www': 'https://bequant.io',
|
30
34
|
'doc': [
|