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/bitmart.py
CHANGED
@@ -11,9 +11,8 @@ from ccxt.base.types import Balances, Int, Market, Order, OrderBook, Position, S
|
|
11
11
|
from ccxt.async_support.base.ws.client import Client
|
12
12
|
from typing import List
|
13
13
|
from ccxt.base.errors import ExchangeError
|
14
|
-
from ccxt.base.errors import ArgumentsRequired
|
15
|
-
from ccxt.base.errors import NotSupported
|
16
14
|
from ccxt.base.errors import AuthenticationError
|
15
|
+
from ccxt.base.errors import NotSupported
|
17
16
|
|
18
17
|
|
19
18
|
class bitmart(ccxt.async_support.bitmart):
|
@@ -32,6 +31,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
32
31
|
'watchBalance': True,
|
33
32
|
'watchTicker': True,
|
34
33
|
'watchTickers': True,
|
34
|
+
'watchBidsAsks': True,
|
35
35
|
'watchOrderBook': True,
|
36
36
|
'watchOrderBookForSymbols': True,
|
37
37
|
'watchOrders': True,
|
@@ -49,8 +49,8 @@ class bitmart(ccxt.async_support.bitmart):
|
|
49
49
|
'private': 'wss://ws-manager-compress.{hostname}/user?protocol=1.1',
|
50
50
|
},
|
51
51
|
'swap': {
|
52
|
-
'public': 'wss://openapi-ws.{hostname}/api?protocol=1.1',
|
53
|
-
'private': 'wss://openapi-ws.{hostname}/user?protocol=1.1',
|
52
|
+
'public': 'wss://openapi-ws-v2.{hostname}/api?protocol=1.1',
|
53
|
+
'private': 'wss://openapi-ws-v2.{hostname}/user?protocol=1.1',
|
54
54
|
},
|
55
55
|
},
|
56
56
|
},
|
@@ -129,7 +129,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
129
129
|
# exclusion, futures "tickers" need one generic request for all symbols
|
130
130
|
if (type != 'spot') and (channel == 'ticker'):
|
131
131
|
rawSubscriptions = [channelType + '/' + channel]
|
132
|
-
request = {
|
132
|
+
request: dict = {
|
133
133
|
'args': rawSubscriptions,
|
134
134
|
}
|
135
135
|
request[actionType] = 'subscribe'
|
@@ -137,8 +137,10 @@ class bitmart(ccxt.async_support.bitmart):
|
|
137
137
|
|
138
138
|
async def watch_balance(self, params={}) -> Balances:
|
139
139
|
"""
|
140
|
-
|
141
|
-
|
140
|
+
|
141
|
+
https://developer-pro.bitmart.com/en/spot/#private-balance-change
|
142
|
+
https://developer-pro.bitmart.com/en/futuresv2/#private-assets-channel
|
143
|
+
|
142
144
|
watch balance and get the amount of funds available for trading or funds locked in orders
|
143
145
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
144
146
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
@@ -257,8 +259,10 @@ class bitmart(ccxt.async_support.bitmart):
|
|
257
259
|
|
258
260
|
async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
259
261
|
"""
|
260
|
-
|
261
|
-
|
262
|
+
|
263
|
+
https://developer-pro.bitmart.com/en/spot/#public-trade-channel
|
264
|
+
https://developer-pro.bitmart.com/en/futuresv2/#public-trade-channel
|
265
|
+
|
262
266
|
get the list of most recent trades for a particular symbol
|
263
267
|
:param str symbol: unified symbol of the market to fetch trades for
|
264
268
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
@@ -270,7 +274,9 @@ class bitmart(ccxt.async_support.bitmart):
|
|
270
274
|
|
271
275
|
async def watch_trades_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
272
276
|
"""
|
273
|
-
|
277
|
+
|
278
|
+
https://developer-pro.bitmart.com/en/spot/#public-trade-channel
|
279
|
+
|
274
280
|
get the list of most recent trades for a list of symbols
|
275
281
|
:param str[] symbols: unified symbol of the market to fetch trades for
|
276
282
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
@@ -301,7 +307,10 @@ class bitmart(ccxt.async_support.bitmart):
|
|
301
307
|
|
302
308
|
async def watch_ticker(self, symbol: str, params={}) -> Ticker:
|
303
309
|
"""
|
304
|
-
|
310
|
+
|
311
|
+
https://developer-pro.bitmart.com/en/spot/#public-ticker-channel
|
312
|
+
https://developer-pro.bitmart.com/en/futuresv2/#public-ticker-channel
|
313
|
+
|
305
314
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
306
315
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
307
316
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -314,7 +323,10 @@ class bitmart(ccxt.async_support.bitmart):
|
|
314
323
|
|
315
324
|
async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
316
325
|
"""
|
317
|
-
|
326
|
+
|
327
|
+
https://developer-pro.bitmart.com/en/spot/#public-ticker-channel
|
328
|
+
https://developer-pro.bitmart.com/en/futuresv2/#public-ticker-channel
|
329
|
+
|
318
330
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
|
319
331
|
:param str[] symbols: unified symbol of the market to fetch the ticker for
|
320
332
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -326,16 +338,89 @@ class bitmart(ccxt.async_support.bitmart):
|
|
326
338
|
marketType, params = self.handle_market_type_and_params('watchTickers', market, params)
|
327
339
|
ticker = await self.subscribe_multiple('ticker', marketType, symbols, params)
|
328
340
|
if self.newUpdates:
|
329
|
-
tickers = {}
|
341
|
+
tickers: dict = {}
|
330
342
|
tickers[ticker['symbol']] = ticker
|
331
343
|
return tickers
|
332
344
|
return self.filter_by_array(self.tickers, 'symbol', symbols)
|
333
345
|
|
346
|
+
async def watch_bids_asks(self, symbols: Strings = None, params={}) -> Tickers:
|
347
|
+
"""
|
348
|
+
|
349
|
+
https://developer-pro.bitmart.com/en/spot/#public-ticker-channel
|
350
|
+
https://developer-pro.bitmart.com/en/futuresv2/#public-ticker-channel
|
351
|
+
|
352
|
+
watches best bid & ask for symbols
|
353
|
+
:param str[] symbols: unified symbol of the market to fetch the ticker for
|
354
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
355
|
+
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
356
|
+
"""
|
357
|
+
await self.load_markets()
|
358
|
+
symbols = self.market_symbols(symbols, None, False)
|
359
|
+
firstMarket = self.get_market_from_symbols(symbols)
|
360
|
+
marketType = None
|
361
|
+
marketType, params = self.handle_market_type_and_params('watchBidsAsks', firstMarket, params)
|
362
|
+
url = self.implode_hostname(self.urls['api']['ws'][marketType]['public'])
|
363
|
+
channelType = 'spot' if (marketType == 'spot') else 'futures'
|
364
|
+
actionType = 'op' if (marketType == 'spot') else 'action'
|
365
|
+
rawSubscriptions = []
|
366
|
+
messageHashes = []
|
367
|
+
for i in range(0, len(symbols)):
|
368
|
+
market = self.market(symbols[i])
|
369
|
+
rawSubscriptions.append(channelType + '/ticker:' + market['id'])
|
370
|
+
messageHashes.append('bidask:' + symbols[i])
|
371
|
+
if marketType != 'spot':
|
372
|
+
rawSubscriptions = [channelType + '/ticker']
|
373
|
+
request: dict = {
|
374
|
+
'args': rawSubscriptions,
|
375
|
+
}
|
376
|
+
request[actionType] = 'subscribe'
|
377
|
+
newTickers = await self.watch_multiple(url, messageHashes, request, rawSubscriptions)
|
378
|
+
if self.newUpdates:
|
379
|
+
tickers: dict = {}
|
380
|
+
tickers[newTickers['symbol']] = newTickers
|
381
|
+
return tickers
|
382
|
+
return self.filter_by_array(self.bidsasks, 'symbol', symbols)
|
383
|
+
|
384
|
+
def handle_bid_ask(self, client: Client, message):
|
385
|
+
table = self.safe_string(message, 'table')
|
386
|
+
isSpot = (table is not None)
|
387
|
+
rawTickers = []
|
388
|
+
if isSpot:
|
389
|
+
rawTickers = self.safe_list(message, 'data', [])
|
390
|
+
else:
|
391
|
+
rawTickers = [self.safe_value(message, 'data', {})]
|
392
|
+
if not len(rawTickers):
|
393
|
+
return
|
394
|
+
for i in range(0, len(rawTickers)):
|
395
|
+
ticker = self.parse_ws_bid_ask(rawTickers[i])
|
396
|
+
symbol = ticker['symbol']
|
397
|
+
self.bidsasks[symbol] = ticker
|
398
|
+
messageHash = 'bidask:' + symbol
|
399
|
+
client.resolve(ticker, messageHash)
|
400
|
+
|
401
|
+
def parse_ws_bid_ask(self, ticker, market=None):
|
402
|
+
marketId = self.safe_string(ticker, 'symbol')
|
403
|
+
market = self.safe_market(marketId, market)
|
404
|
+
symbol = self.safe_string(market, 'symbol')
|
405
|
+
timestamp = self.safe_integer(ticker, 'ms_t')
|
406
|
+
return self.safe_ticker({
|
407
|
+
'symbol': symbol,
|
408
|
+
'timestamp': timestamp,
|
409
|
+
'datetime': self.iso8601(timestamp),
|
410
|
+
'ask': self.safe_string_2(ticker, 'ask_px', 'ask_price'),
|
411
|
+
'askVolume': self.safe_string_2(ticker, 'ask_sz', 'ask_vol'),
|
412
|
+
'bid': self.safe_string_2(ticker, 'bid_px', 'bid_price'),
|
413
|
+
'bidVolume': self.safe_string_2(ticker, 'bid_sz', 'bid_vol'),
|
414
|
+
'info': ticker,
|
415
|
+
}, market)
|
416
|
+
|
334
417
|
async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
335
418
|
"""
|
336
|
-
:see: https://developer-pro.bitmart.com/en/spot/#private-order-channel
|
337
|
-
:see: https://developer-pro.bitmart.com/en/futures/#private-order-channel
|
338
419
|
watches information on multiple orders made by the user
|
420
|
+
|
421
|
+
https://developer-pro.bitmart.com/en/spot/#private-order-progress
|
422
|
+
https://developer-pro.bitmart.com/en/futuresv2/#private-order-channel
|
423
|
+
|
339
424
|
:param str symbol: unified market symbol of the market orders were made in
|
340
425
|
:param int [since]: the earliest time in ms to fetch orders for
|
341
426
|
:param int [limit]: the maximum number of order structures to retrieve
|
@@ -354,11 +439,14 @@ class bitmart(ccxt.async_support.bitmart):
|
|
354
439
|
await self.authenticate(type, params)
|
355
440
|
request = None
|
356
441
|
if type == 'spot':
|
357
|
-
|
358
|
-
|
442
|
+
argsRequest = 'spot/user/order:'
|
443
|
+
if symbol is not None:
|
444
|
+
argsRequest += market['id']
|
445
|
+
else:
|
446
|
+
argsRequest = 'spot/user/orders:ALL_SYMBOLS'
|
359
447
|
request = {
|
360
448
|
'op': 'subscribe',
|
361
|
-
'args': [
|
449
|
+
'args': [argsRequest],
|
362
450
|
}
|
363
451
|
else:
|
364
452
|
request = {
|
@@ -430,7 +518,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
430
518
|
return
|
431
519
|
ordersLength = len(orders)
|
432
520
|
newOrders = []
|
433
|
-
symbols = {}
|
521
|
+
symbols: dict = {}
|
434
522
|
if ordersLength > 0:
|
435
523
|
limit = self.safe_integer(self.options, 'ordersLimit', 1000)
|
436
524
|
if self.orders is None:
|
@@ -450,7 +538,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
450
538
|
client.resolve(newOrders, symbolSpecificMessageHash)
|
451
539
|
client.resolve(newOrders, messageHash)
|
452
540
|
|
453
|
-
def parse_ws_order(self, order, market: Market = None):
|
541
|
+
def parse_ws_order(self, order: dict, market: Market = None):
|
454
542
|
#
|
455
543
|
# spot
|
456
544
|
# {
|
@@ -506,7 +594,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
506
594
|
amount = self.safe_string(order, 'size')
|
507
595
|
type = self.safe_string(order, 'type')
|
508
596
|
rawState = self.safe_string(order, 'state')
|
509
|
-
status = self.
|
597
|
+
status = self.parse_order_status_by_type(market['type'], rawState)
|
510
598
|
timestamp = self.safe_integer(order, 'ms_t')
|
511
599
|
symbol = market['symbol']
|
512
600
|
side = self.safe_string_lower(order, 'side')
|
@@ -578,7 +666,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
578
666
|
}, market)
|
579
667
|
|
580
668
|
def parse_ws_order_status(self, statusId):
|
581
|
-
statuses = {
|
669
|
+
statuses: dict = {
|
582
670
|
'1': 'closed', # match deal
|
583
671
|
'2': 'open', # submit order
|
584
672
|
'3': 'canceled', # cancel order
|
@@ -592,7 +680,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
592
680
|
return self.safe_string(statuses, statusId, statusId)
|
593
681
|
|
594
682
|
def parse_ws_order_side(self, sideId):
|
595
|
-
sides = {
|
683
|
+
sides: dict = {
|
596
684
|
'1': 'buy', # buy_open_long
|
597
685
|
'2': 'buy', # buy_close_short
|
598
686
|
'3': 'sell', # sell_close_long
|
@@ -602,9 +690,13 @@ class bitmart(ccxt.async_support.bitmart):
|
|
602
690
|
|
603
691
|
async def watch_positions(self, symbols: Strings = None, since: Int = None, limit: Int = None, params={}) -> List[Position]:
|
604
692
|
"""
|
605
|
-
|
693
|
+
|
694
|
+
https://developer-pro.bitmart.com/en/futures/#private-position-channel
|
695
|
+
|
606
696
|
watch all open positions
|
607
697
|
:param str[]|None symbols: list of unified market symbols
|
698
|
+
:param int [since]: the earliest time in ms to fetch positions
|
699
|
+
:param int [limit]: the maximum number of positions to retrieve
|
608
700
|
:param dict params: extra parameters specific to the exchange API endpoint
|
609
701
|
:returns dict[]: a list of `position structure <https://docs.ccxt.com/en/latest/manual.html#position-structure>`
|
610
702
|
"""
|
@@ -616,7 +708,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
616
708
|
if symbols is not None:
|
617
709
|
messageHash += '::' + ','.join(symbols)
|
618
710
|
subscriptionHash = 'futures/position'
|
619
|
-
request = {
|
711
|
+
request: dict = {
|
620
712
|
'action': 'subscribe',
|
621
713
|
'args': ['futures/position'],
|
622
714
|
}
|
@@ -663,9 +755,9 @@ class bitmart(ccxt.async_support.bitmart):
|
|
663
755
|
# }
|
664
756
|
#
|
665
757
|
data = self.safe_value(message, 'data', [])
|
666
|
-
cache = self.positions
|
667
758
|
if self.positions is None:
|
668
759
|
self.positions = ArrayCacheBySymbolBySide()
|
760
|
+
cache = self.positions
|
669
761
|
newPositions = []
|
670
762
|
for i in range(0, len(data)):
|
671
763
|
rawPosition = data[i]
|
@@ -705,8 +797,8 @@ class bitmart(ccxt.async_support.bitmart):
|
|
705
797
|
symbol = market['symbol']
|
706
798
|
openTimestamp = self.safe_integer(position, 'create_time')
|
707
799
|
timestamp = self.safe_integer(position, 'update_time')
|
708
|
-
side = self.
|
709
|
-
marginModeId = self.
|
800
|
+
side = self.safe_integer(position, 'position_type')
|
801
|
+
marginModeId = self.safe_integer(position, 'open_type')
|
710
802
|
return self.safe_position({
|
711
803
|
'info': position,
|
712
804
|
'id': None,
|
@@ -800,7 +892,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
800
892
|
stored.append(trade)
|
801
893
|
return symbol
|
802
894
|
|
803
|
-
def parse_ws_trade(self, trade, market: Market = None):
|
895
|
+
def parse_ws_trade(self, trade: dict, market: Market = None):
|
804
896
|
# spot
|
805
897
|
# {
|
806
898
|
# "price": "52700.50",
|
@@ -875,6 +967,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
875
967
|
# }
|
876
968
|
# }
|
877
969
|
#
|
970
|
+
self.handle_bid_ask(client, message)
|
878
971
|
table = self.safe_string(message, 'table')
|
879
972
|
isSpot = (table is not None)
|
880
973
|
rawTickers = []
|
@@ -930,8 +1023,10 @@ class bitmart(ccxt.async_support.bitmart):
|
|
930
1023
|
|
931
1024
|
async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
932
1025
|
"""
|
933
|
-
|
934
|
-
|
1026
|
+
|
1027
|
+
https://developer-pro.bitmart.com/en/spot/#public-kline-channel
|
1028
|
+
https://developer-pro.bitmart.com/en/futuresv2/#public-klinebin-channel
|
1029
|
+
|
935
1030
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
936
1031
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
937
1032
|
:param str timeframe: the length of time each candle represents
|
@@ -1045,9 +1140,11 @@ class bitmart(ccxt.async_support.bitmart):
|
|
1045
1140
|
|
1046
1141
|
async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
1047
1142
|
"""
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1143
|
+
|
1144
|
+
https://developer-pro.bitmart.com/en/spot/#public-depth-all-channel
|
1145
|
+
https://developer-pro.bitmart.com/en/spot/#public-depth-increase-channel
|
1146
|
+
https://developer-pro.bitmart.com/en/futuresv2/#public-depth-channel
|
1147
|
+
|
1051
1148
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
1052
1149
|
:param str symbol: unified symbol of the market to fetch the order book for
|
1053
1150
|
:param int [limit]: the maximum amount of order book entries to return
|
@@ -1232,7 +1329,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
1232
1329
|
ob['symbol'] = symbol
|
1233
1330
|
self.orderbooks[symbol] = ob
|
1234
1331
|
orderbook = self.orderbooks[symbol]
|
1235
|
-
way = self.
|
1332
|
+
way = self.safe_integer(data, 'way')
|
1236
1333
|
side = 'bids' if (way == 1) else 'asks'
|
1237
1334
|
if way == 1:
|
1238
1335
|
orderbook[side] = Bids([], limit)
|
@@ -1260,7 +1357,9 @@ class bitmart(ccxt.async_support.bitmart):
|
|
1260
1357
|
async def watch_order_book_for_symbols(self, symbols: List[str], limit: Int = None, params={}) -> OrderBook:
|
1261
1358
|
"""
|
1262
1359
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
1263
|
-
|
1360
|
+
|
1361
|
+
https://developer-pro.bitmart.com/en/spot/#public-depth-increase-channel
|
1362
|
+
|
1264
1363
|
:param str[] symbols: unified array of symbols
|
1265
1364
|
:param int [limit]: the maximum amount of order book entries to return
|
1266
1365
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -1312,7 +1411,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
1312
1411
|
}
|
1313
1412
|
message = self.extend(request, params)
|
1314
1413
|
self.watch(url, messageHash, message, messageHash)
|
1315
|
-
return future
|
1414
|
+
return await future
|
1316
1415
|
|
1317
1416
|
def handle_subscription_status(self, client: Client, message):
|
1318
1417
|
#
|
@@ -1418,7 +1517,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
1418
1517
|
if not isDataUpdate:
|
1419
1518
|
event = self.safe_string_2(message, 'event', 'action')
|
1420
1519
|
if event is not None:
|
1421
|
-
methods = {
|
1520
|
+
methods: dict = {
|
1422
1521
|
# 'info': self.handleSystemStatus,
|
1423
1522
|
'login': self.handle_authenticate,
|
1424
1523
|
'access': self.handle_authenticate,
|
@@ -1429,7 +1528,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
1429
1528
|
method(client, message)
|
1430
1529
|
else:
|
1431
1530
|
channel = self.safe_string_2(message, 'table', 'group')
|
1432
|
-
methods = {
|
1531
|
+
methods: dict = {
|
1433
1532
|
'depth': self.handle_order_book,
|
1434
1533
|
'ticker': self.handle_ticker,
|
1435
1534
|
'trade': self.handle_trade,
|