ccxt 4.2.77__py2.py3-none-any.whl → 4.4.49__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccxt/__init__.py +36 -14
- ccxt/abstract/alpaca.py +4 -0
- ccxt/abstract/bigone.py +1 -1
- ccxt/abstract/binance.py +112 -48
- ccxt/abstract/binancecoinm.py +112 -48
- ccxt/abstract/binanceus.py +147 -83
- ccxt/abstract/binanceusdm.py +112 -48
- ccxt/abstract/bingx.py +133 -78
- ccxt/abstract/bitbank.py +5 -0
- ccxt/abstract/bitfinex.py +136 -65
- ccxt/abstract/bitfinex1.py +69 -0
- ccxt/abstract/bitflyer.py +1 -0
- ccxt/abstract/bitget.py +8 -1
- ccxt/abstract/bitmart.py +13 -1
- ccxt/abstract/bitopro.py +1 -0
- ccxt/abstract/bitpanda.py +0 -12
- ccxt/abstract/bitrue.py +3 -3
- ccxt/abstract/bitstamp.py +26 -3
- ccxt/abstract/blofin.py +24 -0
- ccxt/abstract/btcbox.py +1 -0
- ccxt/abstract/bybit.py +29 -14
- ccxt/abstract/cex.py +28 -29
- ccxt/abstract/coinbase.py +6 -0
- ccxt/abstract/coinbaseadvanced.py +94 -0
- ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
- ccxt/abstract/coinbaseinternational.py +1 -1
- ccxt/abstract/coincatch.py +94 -0
- ccxt/abstract/coinex.py +233 -123
- ccxt/abstract/coinmetro.py +1 -0
- ccxt/abstract/cryptocom.py +14 -0
- ccxt/abstract/defx.py +69 -0
- ccxt/abstract/deribit.py +1 -0
- ccxt/abstract/digifinex.py +1 -0
- ccxt/abstract/ellipx.py +25 -0
- ccxt/abstract/gate.py +20 -0
- ccxt/abstract/gateio.py +20 -0
- ccxt/abstract/gemini.py +1 -0
- ccxt/abstract/hashkey.py +67 -0
- ccxt/abstract/hyperliquid.py +1 -1
- ccxt/abstract/independentreserve.py +6 -0
- ccxt/abstract/kraken.py +4 -3
- ccxt/abstract/krakenfutures.py +4 -0
- ccxt/abstract/kucoin.py +24 -0
- ccxt/abstract/kucoinfutures.py +34 -0
- ccxt/abstract/luno.py +2 -0
- ccxt/abstract/mexc.py +4 -0
- ccxt/abstract/myokx.py +340 -0
- ccxt/abstract/oceanex.py +5 -0
- ccxt/abstract/okx.py +30 -0
- ccxt/abstract/onetrading.py +0 -12
- ccxt/abstract/oxfun.py +34 -0
- ccxt/abstract/paradex.py +40 -0
- ccxt/abstract/phemex.py +1 -0
- ccxt/abstract/upbit.py +4 -0
- ccxt/abstract/vertex.py +19 -0
- ccxt/abstract/whitebit.py +31 -1
- ccxt/abstract/woo.py +6 -2
- ccxt/abstract/woofipro.py +119 -0
- ccxt/abstract/xt.py +153 -0
- ccxt/abstract/zonda.py +6 -0
- ccxt/ace.py +164 -60
- ccxt/alpaca.py +727 -63
- ccxt/ascendex.py +395 -249
- ccxt/async_support/__init__.py +36 -14
- ccxt/async_support/ace.py +164 -60
- ccxt/async_support/alpaca.py +727 -63
- ccxt/async_support/ascendex.py +396 -249
- ccxt/async_support/base/exchange.py +531 -155
- ccxt/async_support/base/ws/aiohttp_client.py +28 -5
- ccxt/async_support/base/ws/cache.py +3 -2
- ccxt/async_support/base/ws/client.py +26 -5
- ccxt/async_support/base/ws/fast_client.py +4 -3
- ccxt/async_support/base/ws/functions.py +1 -1
- ccxt/async_support/base/ws/future.py +40 -31
- ccxt/async_support/base/ws/order_book_side.py +3 -0
- ccxt/async_support/bequant.py +1 -1
- ccxt/async_support/bigone.py +329 -202
- ccxt/async_support/binance.py +3030 -1087
- ccxt/async_support/binancecoinm.py +2 -1
- ccxt/async_support/binanceus.py +12 -1
- ccxt/async_support/binanceusdm.py +3 -1
- ccxt/async_support/bingx.py +3205 -937
- ccxt/async_support/bit2c.py +119 -38
- ccxt/async_support/bitbank.py +215 -76
- ccxt/async_support/bitbns.py +124 -53
- ccxt/async_support/bitfinex.py +3236 -1078
- ccxt/async_support/bitfinex1.py +1711 -0
- ccxt/async_support/bitflyer.py +238 -49
- ccxt/async_support/bitget.py +1525 -573
- ccxt/async_support/bithumb.py +199 -65
- ccxt/async_support/bitmart.py +1320 -435
- ccxt/async_support/bitmex.py +308 -111
- ccxt/async_support/bitopro.py +256 -96
- ccxt/async_support/bitrue.py +365 -233
- ccxt/async_support/bitso.py +201 -89
- ccxt/async_support/bitstamp.py +438 -269
- ccxt/async_support/bitteam.py +179 -73
- ccxt/async_support/bitvavo.py +180 -70
- ccxt/async_support/bl3p.py +92 -25
- ccxt/async_support/blockchaincom.py +193 -79
- ccxt/async_support/blofin.py +392 -148
- ccxt/async_support/btcalpha.py +161 -55
- ccxt/async_support/btcbox.py +250 -34
- ccxt/async_support/btcmarkets.py +232 -85
- ccxt/async_support/btcturk.py +159 -60
- ccxt/async_support/bybit.py +2231 -1193
- ccxt/async_support/cex.py +1409 -1329
- ccxt/async_support/coinbase.py +1454 -287
- ccxt/async_support/coinbaseadvanced.py +17 -0
- ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/async_support/coinbaseinternational.py +428 -88
- ccxt/async_support/coincatch.py +5152 -0
- ccxt/async_support/coincheck.py +121 -38
- ccxt/async_support/coinex.py +4020 -3339
- ccxt/async_support/coinlist.py +273 -116
- ccxt/async_support/coinmate.py +204 -97
- ccxt/async_support/coinmetro.py +203 -110
- ccxt/async_support/coinone.py +142 -68
- ccxt/async_support/coinsph.py +223 -97
- ccxt/async_support/coinspot.py +137 -62
- ccxt/async_support/cryptocom.py +515 -185
- ccxt/async_support/currencycom.py +203 -85
- ccxt/async_support/defx.py +2066 -0
- ccxt/async_support/delta.py +404 -109
- ccxt/async_support/deribit.py +639 -323
- ccxt/async_support/digifinex.py +465 -233
- ccxt/async_support/ellipx.py +1887 -0
- ccxt/async_support/exmo.py +317 -128
- ccxt/async_support/gate.py +1472 -463
- ccxt/async_support/gemini.py +206 -84
- ccxt/async_support/hashkey.py +4164 -0
- ccxt/async_support/hitbtc.py +433 -178
- ccxt/async_support/hollaex.py +207 -83
- ccxt/async_support/htx.py +1095 -563
- ccxt/async_support/huobijp.py +178 -56
- ccxt/async_support/hyperliquid.py +1678 -292
- ccxt/async_support/idex.py +219 -95
- ccxt/async_support/independentreserve.py +300 -31
- ccxt/async_support/indodax.py +226 -62
- ccxt/async_support/kraken.py +871 -354
- ccxt/async_support/krakenfutures.py +324 -100
- ccxt/async_support/kucoin.py +917 -357
- ccxt/async_support/kucoinfutures.py +1004 -149
- ccxt/async_support/kuna.py +198 -107
- ccxt/async_support/latoken.py +199 -79
- ccxt/async_support/lbank.py +360 -113
- ccxt/async_support/luno.py +185 -62
- ccxt/async_support/lykke.py +168 -55
- ccxt/async_support/mercado.py +101 -29
- ccxt/async_support/mexc.py +995 -429
- ccxt/async_support/myokx.py +53 -0
- ccxt/async_support/ndax.py +234 -82
- ccxt/async_support/novadax.py +195 -75
- ccxt/async_support/oceanex.py +244 -59
- ccxt/async_support/okcoin.py +301 -165
- ccxt/async_support/okx.py +1776 -454
- ccxt/async_support/onetrading.py +198 -414
- ccxt/async_support/oxfun.py +2898 -0
- ccxt/async_support/p2b.py +142 -52
- ccxt/async_support/paradex.py +2085 -0
- ccxt/async_support/paymium.py +56 -32
- ccxt/async_support/phemex.py +572 -196
- ccxt/async_support/poloniex.py +218 -95
- ccxt/async_support/poloniexfutures.py +260 -92
- ccxt/async_support/probit.py +143 -110
- ccxt/async_support/timex.py +123 -70
- ccxt/async_support/tokocrypto.py +129 -93
- ccxt/async_support/tradeogre.py +39 -25
- ccxt/async_support/upbit.py +322 -113
- ccxt/async_support/vertex.py +2983 -0
- ccxt/async_support/wavesexchange.py +227 -173
- ccxt/async_support/wazirx.py +145 -65
- ccxt/async_support/whitebit.py +533 -138
- ccxt/async_support/woo.py +1137 -296
- ccxt/async_support/woofipro.py +2716 -0
- ccxt/async_support/xt.py +4628 -0
- ccxt/async_support/yobit.py +160 -92
- ccxt/async_support/zaif.py +80 -33
- ccxt/async_support/zonda.py +140 -69
- ccxt/base/errors.py +51 -20
- ccxt/base/exchange.py +1722 -480
- ccxt/base/precise.py +10 -0
- ccxt/base/types.py +223 -4
- ccxt/bequant.py +1 -1
- ccxt/bigone.py +329 -202
- ccxt/binance.py +3030 -1087
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +12 -1
- ccxt/binanceusdm.py +3 -1
- ccxt/bingx.py +3205 -937
- ccxt/bit2c.py +119 -38
- ccxt/bitbank.py +215 -76
- ccxt/bitbns.py +124 -53
- ccxt/bitfinex.py +3235 -1078
- ccxt/bitfinex1.py +1710 -0
- ccxt/bitflyer.py +238 -49
- ccxt/bitget.py +1525 -573
- ccxt/bithumb.py +198 -65
- ccxt/bitmart.py +1320 -435
- ccxt/bitmex.py +308 -111
- ccxt/bitopro.py +256 -96
- ccxt/bitrue.py +365 -233
- ccxt/bitso.py +201 -89
- ccxt/bitstamp.py +438 -269
- ccxt/bitteam.py +179 -73
- ccxt/bitvavo.py +180 -70
- ccxt/bl3p.py +92 -25
- ccxt/blockchaincom.py +193 -79
- ccxt/blofin.py +392 -148
- ccxt/btcalpha.py +161 -55
- ccxt/btcbox.py +250 -34
- ccxt/btcmarkets.py +232 -85
- ccxt/btcturk.py +159 -60
- ccxt/bybit.py +2231 -1193
- ccxt/cex.py +1408 -1329
- ccxt/coinbase.py +1454 -287
- ccxt/coinbaseadvanced.py +17 -0
- ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/coinbaseinternational.py +428 -88
- ccxt/coincatch.py +5152 -0
- ccxt/coincheck.py +121 -38
- ccxt/coinex.py +4020 -3339
- ccxt/coinlist.py +273 -116
- ccxt/coinmate.py +204 -97
- ccxt/coinmetro.py +203 -110
- ccxt/coinone.py +142 -68
- ccxt/coinsph.py +223 -97
- ccxt/coinspot.py +137 -62
- ccxt/cryptocom.py +515 -185
- ccxt/currencycom.py +203 -85
- ccxt/defx.py +2065 -0
- ccxt/delta.py +404 -109
- ccxt/deribit.py +639 -323
- ccxt/digifinex.py +465 -233
- ccxt/ellipx.py +1887 -0
- ccxt/exmo.py +317 -128
- ccxt/gate.py +1472 -463
- ccxt/gemini.py +206 -84
- ccxt/hashkey.py +4164 -0
- ccxt/hitbtc.py +433 -178
- ccxt/hollaex.py +207 -83
- ccxt/htx.py +1095 -563
- ccxt/huobijp.py +178 -56
- ccxt/hyperliquid.py +1677 -292
- ccxt/idex.py +219 -95
- ccxt/independentreserve.py +299 -31
- ccxt/indodax.py +226 -62
- ccxt/kraken.py +871 -354
- ccxt/krakenfutures.py +324 -100
- ccxt/kucoin.py +917 -357
- ccxt/kucoinfutures.py +1004 -149
- ccxt/kuna.py +198 -107
- ccxt/latoken.py +199 -79
- ccxt/lbank.py +360 -113
- ccxt/luno.py +185 -62
- ccxt/lykke.py +168 -55
- ccxt/mercado.py +101 -29
- ccxt/mexc.py +994 -429
- ccxt/myokx.py +53 -0
- ccxt/ndax.py +234 -82
- ccxt/novadax.py +195 -75
- ccxt/oceanex.py +244 -59
- ccxt/okcoin.py +301 -165
- ccxt/okx.py +1776 -454
- ccxt/onetrading.py +198 -414
- ccxt/oxfun.py +2897 -0
- ccxt/p2b.py +142 -52
- ccxt/paradex.py +2085 -0
- ccxt/paymium.py +56 -32
- ccxt/phemex.py +572 -196
- ccxt/poloniex.py +218 -95
- ccxt/poloniexfutures.py +260 -92
- ccxt/pro/__init__.py +29 -5
- ccxt/pro/alpaca.py +32 -17
- ccxt/pro/ascendex.py +62 -14
- ccxt/pro/bequant.py +4 -0
- ccxt/pro/binance.py +1596 -329
- ccxt/pro/binancecoinm.py +1 -0
- ccxt/pro/binanceus.py +2 -9
- ccxt/pro/binanceusdm.py +2 -0
- ccxt/pro/bingx.py +527 -134
- ccxt/pro/bitcoincom.py +4 -1
- ccxt/pro/bitfinex.py +731 -266
- ccxt/pro/bitfinex1.py +635 -0
- ccxt/pro/bitget.py +726 -357
- ccxt/pro/bithumb.py +380 -0
- ccxt/pro/bitmart.py +143 -39
- ccxt/pro/bitmex.py +199 -40
- ccxt/pro/bitopro.py +25 -13
- ccxt/pro/bitrue.py +31 -32
- ccxt/pro/bitstamp.py +7 -6
- ccxt/pro/bitvavo.py +203 -81
- ccxt/pro/blockchaincom.py +30 -17
- ccxt/pro/blofin.py +692 -0
- ccxt/pro/bybit.py +791 -82
- ccxt/pro/cex.py +99 -51
- ccxt/pro/coinbase.py +220 -30
- ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
- ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
- ccxt/pro/coinbaseinternational.py +193 -30
- ccxt/pro/coincatch.py +1464 -0
- ccxt/pro/coincheck.py +11 -6
- ccxt/pro/coinex.py +965 -665
- ccxt/pro/coinone.py +17 -10
- ccxt/pro/cryptocom.py +446 -66
- ccxt/pro/currencycom.py +11 -10
- ccxt/pro/defx.py +832 -0
- ccxt/pro/deribit.py +167 -31
- ccxt/pro/exmo.py +252 -20
- ccxt/pro/gate.py +729 -64
- ccxt/pro/gemini.py +44 -26
- ccxt/pro/hashkey.py +802 -0
- ccxt/pro/hitbtc.py +208 -103
- ccxt/pro/hollaex.py +25 -9
- ccxt/pro/htx.py +83 -39
- ccxt/pro/huobijp.py +17 -16
- ccxt/pro/hyperliquid.py +502 -31
- ccxt/pro/idex.py +28 -13
- ccxt/pro/independentreserve.py +21 -16
- ccxt/pro/kraken.py +298 -51
- ccxt/pro/krakenfutures.py +166 -75
- ccxt/pro/kucoin.py +395 -77
- ccxt/pro/kucoinfutures.py +400 -99
- ccxt/pro/lbank.py +52 -31
- ccxt/pro/luno.py +12 -10
- ccxt/pro/mexc.py +400 -50
- ccxt/pro/myokx.py +28 -0
- ccxt/pro/ndax.py +25 -12
- ccxt/pro/okcoin.py +28 -9
- ccxt/pro/okx.py +935 -124
- ccxt/pro/onetrading.py +41 -24
- ccxt/pro/oxfun.py +1054 -0
- ccxt/pro/p2b.py +100 -24
- ccxt/pro/paradex.py +352 -0
- ccxt/pro/phemex.py +92 -33
- ccxt/pro/poloniex.py +128 -49
- ccxt/pro/poloniexfutures.py +53 -32
- ccxt/pro/probit.py +92 -85
- ccxt/pro/upbit.py +401 -8
- ccxt/pro/vertex.py +943 -0
- ccxt/pro/wazirx.py +46 -28
- ccxt/pro/whitebit.py +65 -12
- ccxt/pro/woo.py +437 -65
- ccxt/pro/woofipro.py +1271 -0
- ccxt/pro/xt.py +1067 -0
- ccxt/probit.py +143 -110
- ccxt/static_dependencies/__init__.py +1 -1
- ccxt/static_dependencies/lark/__init__.py +38 -0
- ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
- ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
- ccxt/static_dependencies/lark/ast_utils.py +59 -0
- ccxt/static_dependencies/lark/common.py +86 -0
- ccxt/static_dependencies/lark/exceptions.py +292 -0
- ccxt/static_dependencies/lark/grammar.py +130 -0
- ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
- ccxt/static_dependencies/lark/indenter.py +143 -0
- ccxt/static_dependencies/lark/lark.py +658 -0
- ccxt/static_dependencies/lark/lexer.py +678 -0
- ccxt/static_dependencies/lark/load_grammar.py +1428 -0
- ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
- ccxt/static_dependencies/lark/parser_frontends.py +257 -0
- ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
- ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
- ccxt/static_dependencies/lark/parsers/earley.py +314 -0
- ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
- ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
- ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
- ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
- ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
- ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
- ccxt/static_dependencies/lark/py.typed +0 -0
- ccxt/static_dependencies/lark/reconstruct.py +107 -0
- ccxt/static_dependencies/lark/tools/__init__.py +70 -0
- ccxt/static_dependencies/lark/tools/nearley.py +202 -0
- ccxt/static_dependencies/lark/tools/serialize.py +32 -0
- ccxt/static_dependencies/lark/tools/standalone.py +196 -0
- ccxt/static_dependencies/lark/tree.py +267 -0
- ccxt/static_dependencies/lark/tree_matcher.py +186 -0
- ccxt/static_dependencies/lark/tree_templates.py +180 -0
- ccxt/static_dependencies/lark/utils.py +343 -0
- ccxt/static_dependencies/lark/visitors.py +596 -0
- ccxt/static_dependencies/marshmallow/__init__.py +81 -0
- ccxt/static_dependencies/marshmallow/base.py +65 -0
- ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
- ccxt/static_dependencies/marshmallow/decorators.py +231 -0
- ccxt/static_dependencies/marshmallow/error_store.py +60 -0
- ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
- ccxt/static_dependencies/marshmallow/fields.py +2114 -0
- ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
- ccxt/static_dependencies/marshmallow/py.typed +0 -0
- ccxt/static_dependencies/marshmallow/schema.py +1228 -0
- ccxt/static_dependencies/marshmallow/types.py +12 -0
- ccxt/static_dependencies/marshmallow/utils.py +378 -0
- ccxt/static_dependencies/marshmallow/validate.py +678 -0
- ccxt/static_dependencies/marshmallow/warnings.py +2 -0
- ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
- ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
- ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
- ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
- ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
- ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
- ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
- ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
- ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- ccxt/static_dependencies/starknet/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
- ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
- ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
- ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
- ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
- ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
- ccxt/static_dependencies/starknet/common.py +15 -0
- ccxt/static_dependencies/starknet/constants.py +39 -0
- ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
- ccxt/static_dependencies/starknet/hash/address.py +79 -0
- ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
- ccxt/static_dependencies/starknet/hash/selector.py +16 -0
- ccxt/static_dependencies/starknet/hash/storage.py +12 -0
- ccxt/static_dependencies/starknet/hash/utils.py +78 -0
- ccxt/static_dependencies/starknet/models/__init__.py +0 -0
- ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
- ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
- ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
- ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
- ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
- ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
- ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
- ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
- ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
- ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
- ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
- ccxt/static_dependencies/starknet/utils/schema.py +13 -0
- ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
- ccxt/static_dependencies/starkware/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
- ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
- ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
- ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
- ccxt/static_dependencies/sympy/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
- ccxt/static_dependencies/sympy/external/__init__.py +0 -0
- ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
- ccxt/static_dependencies/sympy/external/importtools.py +187 -0
- ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
- ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
- ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
- ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
- ccxt/test/{test_async.py → tests_async.py} +456 -391
- ccxt/test/tests_helpers.py +285 -0
- ccxt/test/tests_init.py +39 -0
- ccxt/test/{test_sync.py → tests_sync.py} +456 -393
- ccxt/timex.py +123 -70
- ccxt/tokocrypto.py +129 -93
- ccxt/tradeogre.py +39 -25
- ccxt/upbit.py +322 -113
- ccxt/vertex.py +2983 -0
- ccxt/wavesexchange.py +227 -173
- ccxt/wazirx.py +145 -65
- ccxt/whitebit.py +533 -138
- ccxt/woo.py +1137 -296
- ccxt/woofipro.py +2716 -0
- ccxt/xt.py +4627 -0
- ccxt/yobit.py +159 -92
- ccxt/zaif.py +80 -33
- ccxt/zonda.py +140 -69
- ccxt-4.4.49.dist-info/LICENSE.txt +21 -0
- ccxt-4.4.49.dist-info/METADATA +646 -0
- ccxt-4.4.49.dist-info/RECORD +669 -0
- {ccxt-4.2.77.dist-info → ccxt-4.4.49.dist-info}/WHEEL +1 -1
- ccxt/abstract/bitbay.py +0 -47
- ccxt/abstract/bitfinex2.py +0 -139
- ccxt/abstract/hitbtc3.py +0 -115
- ccxt/async_support/bitbay.py +0 -17
- ccxt/async_support/bitfinex2.py +0 -3496
- ccxt/async_support/flowbtc.py +0 -34
- ccxt/bitbay.py +0 -17
- ccxt/bitfinex2.py +0 -3496
- ccxt/flowbtc.py +0 -34
- ccxt/hitbtc3.py +0 -16
- ccxt/pro/bitfinex2.py +0 -1081
- ccxt/test/base/__init__.py +0 -28
- ccxt/test/base/test_account.py +0 -26
- ccxt/test/base/test_balance.py +0 -56
- ccxt/test/base/test_borrow_interest.py +0 -35
- ccxt/test/base/test_borrow_rate.py +0 -32
- ccxt/test/base/test_calculate_fee.py +0 -51
- ccxt/test/base/test_crypto.py +0 -127
- ccxt/test/base/test_currency.py +0 -76
- ccxt/test/base/test_datetime.py +0 -103
- ccxt/test/base/test_decimal_to_precision.py +0 -392
- ccxt/test/base/test_deep_extend.py +0 -68
- ccxt/test/base/test_deposit_withdrawal.py +0 -50
- ccxt/test/base/test_exchange_datetime_functions.py +0 -76
- ccxt/test/base/test_funding_rate_history.py +0 -29
- ccxt/test/base/test_last_price.py +0 -32
- ccxt/test/base/test_ledger_entry.py +0 -45
- ccxt/test/base/test_ledger_item.py +0 -48
- ccxt/test/base/test_leverage_tier.py +0 -33
- ccxt/test/base/test_margin_mode.py +0 -24
- ccxt/test/base/test_margin_modification.py +0 -35
- ccxt/test/base/test_market.py +0 -190
- ccxt/test/base/test_number.py +0 -411
- ccxt/test/base/test_ohlcv.py +0 -32
- ccxt/test/base/test_open_interest.py +0 -32
- ccxt/test/base/test_order.py +0 -64
- ccxt/test/base/test_order_book.py +0 -63
- ccxt/test/base/test_position.py +0 -60
- ccxt/test/base/test_shared_methods.py +0 -345
- ccxt/test/base/test_status.py +0 -24
- ccxt/test/base/test_throttle.py +0 -126
- ccxt/test/base/test_ticker.py +0 -86
- ccxt/test/base/test_trade.py +0 -47
- ccxt/test/base/test_trading_fee.py +0 -26
- ccxt/test/base/test_transaction.py +0 -39
- ccxt-4.2.77.dist-info/METADATA +0 -626
- ccxt-4.2.77.dist-info/RECORD +0 -534
- {ccxt-4.2.77.dist-info → ccxt-4.4.49.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
|
},
|
@@ -108,6 +108,10 @@ class bitmart(ccxt.async_support.bitmart):
|
|
108
108
|
}
|
109
109
|
else:
|
110
110
|
messageHash = 'futures/' + channel + ':' + market['id']
|
111
|
+
speed = self.safe_string(params, 'speed')
|
112
|
+
if speed is not None:
|
113
|
+
params = self.omit(params, 'speed')
|
114
|
+
messageHash += ':' + speed
|
111
115
|
request = {
|
112
116
|
'action': 'subscribe',
|
113
117
|
'args': [messageHash],
|
@@ -129,7 +133,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
129
133
|
# exclusion, futures "tickers" need one generic request for all symbols
|
130
134
|
if (type != 'spot') and (channel == 'ticker'):
|
131
135
|
rawSubscriptions = [channelType + '/' + channel]
|
132
|
-
request = {
|
136
|
+
request: dict = {
|
133
137
|
'args': rawSubscriptions,
|
134
138
|
}
|
135
139
|
request[actionType] = 'subscribe'
|
@@ -137,8 +141,10 @@ class bitmart(ccxt.async_support.bitmart):
|
|
137
141
|
|
138
142
|
async def watch_balance(self, params={}) -> Balances:
|
139
143
|
"""
|
140
|
-
|
141
|
-
|
144
|
+
|
145
|
+
https://developer-pro.bitmart.com/en/spot/#private-balance-change
|
146
|
+
https://developer-pro.bitmart.com/en/futuresv2/#private-assets-channel
|
147
|
+
|
142
148
|
watch balance and get the amount of funds available for trading or funds locked in orders
|
143
149
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
144
150
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
@@ -257,8 +263,10 @@ class bitmart(ccxt.async_support.bitmart):
|
|
257
263
|
|
258
264
|
async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
259
265
|
"""
|
260
|
-
|
261
|
-
|
266
|
+
|
267
|
+
https://developer-pro.bitmart.com/en/spot/#public-trade-channel
|
268
|
+
https://developer-pro.bitmart.com/en/futuresv2/#public-trade-channel
|
269
|
+
|
262
270
|
get the list of most recent trades for a particular symbol
|
263
271
|
:param str symbol: unified symbol of the market to fetch trades for
|
264
272
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
@@ -270,7 +278,9 @@ class bitmart(ccxt.async_support.bitmart):
|
|
270
278
|
|
271
279
|
async def watch_trades_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
272
280
|
"""
|
273
|
-
|
281
|
+
|
282
|
+
https://developer-pro.bitmart.com/en/spot/#public-trade-channel
|
283
|
+
|
274
284
|
get the list of most recent trades for a list of symbols
|
275
285
|
:param str[] symbols: unified symbol of the market to fetch trades for
|
276
286
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
@@ -301,7 +311,10 @@ class bitmart(ccxt.async_support.bitmart):
|
|
301
311
|
|
302
312
|
async def watch_ticker(self, symbol: str, params={}) -> Ticker:
|
303
313
|
"""
|
304
|
-
|
314
|
+
|
315
|
+
https://developer-pro.bitmart.com/en/spot/#public-ticker-channel
|
316
|
+
https://developer-pro.bitmart.com/en/futuresv2/#public-ticker-channel
|
317
|
+
|
305
318
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
306
319
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
307
320
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -314,7 +327,10 @@ class bitmart(ccxt.async_support.bitmart):
|
|
314
327
|
|
315
328
|
async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
316
329
|
"""
|
317
|
-
|
330
|
+
|
331
|
+
https://developer-pro.bitmart.com/en/spot/#public-ticker-channel
|
332
|
+
https://developer-pro.bitmart.com/en/futuresv2/#public-ticker-channel
|
333
|
+
|
318
334
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
|
319
335
|
:param str[] symbols: unified symbol of the market to fetch the ticker for
|
320
336
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -326,16 +342,89 @@ class bitmart(ccxt.async_support.bitmart):
|
|
326
342
|
marketType, params = self.handle_market_type_and_params('watchTickers', market, params)
|
327
343
|
ticker = await self.subscribe_multiple('ticker', marketType, symbols, params)
|
328
344
|
if self.newUpdates:
|
329
|
-
tickers = {}
|
345
|
+
tickers: dict = {}
|
330
346
|
tickers[ticker['symbol']] = ticker
|
331
347
|
return tickers
|
332
348
|
return self.filter_by_array(self.tickers, 'symbol', symbols)
|
333
349
|
|
350
|
+
async def watch_bids_asks(self, symbols: Strings = None, params={}) -> Tickers:
|
351
|
+
"""
|
352
|
+
|
353
|
+
https://developer-pro.bitmart.com/en/spot/#public-ticker-channel
|
354
|
+
https://developer-pro.bitmart.com/en/futuresv2/#public-ticker-channel
|
355
|
+
|
356
|
+
watches best bid & ask for symbols
|
357
|
+
:param str[] symbols: unified symbol of the market to fetch the ticker for
|
358
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
359
|
+
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
360
|
+
"""
|
361
|
+
await self.load_markets()
|
362
|
+
symbols = self.market_symbols(symbols, None, False)
|
363
|
+
firstMarket = self.get_market_from_symbols(symbols)
|
364
|
+
marketType = None
|
365
|
+
marketType, params = self.handle_market_type_and_params('watchBidsAsks', firstMarket, params)
|
366
|
+
url = self.implode_hostname(self.urls['api']['ws'][marketType]['public'])
|
367
|
+
channelType = 'spot' if (marketType == 'spot') else 'futures'
|
368
|
+
actionType = 'op' if (marketType == 'spot') else 'action'
|
369
|
+
rawSubscriptions = []
|
370
|
+
messageHashes = []
|
371
|
+
for i in range(0, len(symbols)):
|
372
|
+
market = self.market(symbols[i])
|
373
|
+
rawSubscriptions.append(channelType + '/ticker:' + market['id'])
|
374
|
+
messageHashes.append('bidask:' + symbols[i])
|
375
|
+
if marketType != 'spot':
|
376
|
+
rawSubscriptions = [channelType + '/ticker']
|
377
|
+
request: dict = {
|
378
|
+
'args': rawSubscriptions,
|
379
|
+
}
|
380
|
+
request[actionType] = 'subscribe'
|
381
|
+
newTickers = await self.watch_multiple(url, messageHashes, request, rawSubscriptions)
|
382
|
+
if self.newUpdates:
|
383
|
+
tickers: dict = {}
|
384
|
+
tickers[newTickers['symbol']] = newTickers
|
385
|
+
return tickers
|
386
|
+
return self.filter_by_array(self.bidsasks, 'symbol', symbols)
|
387
|
+
|
388
|
+
def handle_bid_ask(self, client: Client, message):
|
389
|
+
table = self.safe_string(message, 'table')
|
390
|
+
isSpot = (table is not None)
|
391
|
+
rawTickers = []
|
392
|
+
if isSpot:
|
393
|
+
rawTickers = self.safe_list(message, 'data', [])
|
394
|
+
else:
|
395
|
+
rawTickers = [self.safe_value(message, 'data', {})]
|
396
|
+
if not len(rawTickers):
|
397
|
+
return
|
398
|
+
for i in range(0, len(rawTickers)):
|
399
|
+
ticker = self.parse_ws_bid_ask(rawTickers[i])
|
400
|
+
symbol = ticker['symbol']
|
401
|
+
self.bidsasks[symbol] = ticker
|
402
|
+
messageHash = 'bidask:' + symbol
|
403
|
+
client.resolve(ticker, messageHash)
|
404
|
+
|
405
|
+
def parse_ws_bid_ask(self, ticker, market=None):
|
406
|
+
marketId = self.safe_string(ticker, 'symbol')
|
407
|
+
market = self.safe_market(marketId, market)
|
408
|
+
symbol = self.safe_string(market, 'symbol')
|
409
|
+
timestamp = self.safe_integer(ticker, 'ms_t')
|
410
|
+
return self.safe_ticker({
|
411
|
+
'symbol': symbol,
|
412
|
+
'timestamp': timestamp,
|
413
|
+
'datetime': self.iso8601(timestamp),
|
414
|
+
'ask': self.safe_string_2(ticker, 'ask_px', 'ask_price'),
|
415
|
+
'askVolume': self.safe_string_2(ticker, 'ask_sz', 'ask_vol'),
|
416
|
+
'bid': self.safe_string_2(ticker, 'bid_px', 'bid_price'),
|
417
|
+
'bidVolume': self.safe_string_2(ticker, 'bid_sz', 'bid_vol'),
|
418
|
+
'info': ticker,
|
419
|
+
}, market)
|
420
|
+
|
334
421
|
async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
335
422
|
"""
|
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
423
|
watches information on multiple orders made by the user
|
424
|
+
|
425
|
+
https://developer-pro.bitmart.com/en/spot/#private-order-progress
|
426
|
+
https://developer-pro.bitmart.com/en/futuresv2/#private-order-channel
|
427
|
+
|
339
428
|
:param str symbol: unified market symbol of the market orders were made in
|
340
429
|
:param int [since]: the earliest time in ms to fetch orders for
|
341
430
|
:param int [limit]: the maximum number of order structures to retrieve
|
@@ -354,11 +443,14 @@ class bitmart(ccxt.async_support.bitmart):
|
|
354
443
|
await self.authenticate(type, params)
|
355
444
|
request = None
|
356
445
|
if type == 'spot':
|
357
|
-
|
358
|
-
|
446
|
+
argsRequest = 'spot/user/order:'
|
447
|
+
if symbol is not None:
|
448
|
+
argsRequest += market['id']
|
449
|
+
else:
|
450
|
+
argsRequest = 'spot/user/orders:ALL_SYMBOLS'
|
359
451
|
request = {
|
360
452
|
'op': 'subscribe',
|
361
|
-
'args': [
|
453
|
+
'args': [argsRequest],
|
362
454
|
}
|
363
455
|
else:
|
364
456
|
request = {
|
@@ -430,7 +522,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
430
522
|
return
|
431
523
|
ordersLength = len(orders)
|
432
524
|
newOrders = []
|
433
|
-
symbols = {}
|
525
|
+
symbols: dict = {}
|
434
526
|
if ordersLength > 0:
|
435
527
|
limit = self.safe_integer(self.options, 'ordersLimit', 1000)
|
436
528
|
if self.orders is None:
|
@@ -450,7 +542,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
450
542
|
client.resolve(newOrders, symbolSpecificMessageHash)
|
451
543
|
client.resolve(newOrders, messageHash)
|
452
544
|
|
453
|
-
def parse_ws_order(self, order, market: Market = None):
|
545
|
+
def parse_ws_order(self, order: dict, market: Market = None):
|
454
546
|
#
|
455
547
|
# spot
|
456
548
|
# {
|
@@ -506,7 +598,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
506
598
|
amount = self.safe_string(order, 'size')
|
507
599
|
type = self.safe_string(order, 'type')
|
508
600
|
rawState = self.safe_string(order, 'state')
|
509
|
-
status = self.
|
601
|
+
status = self.parse_order_status_by_type(market['type'], rawState)
|
510
602
|
timestamp = self.safe_integer(order, 'ms_t')
|
511
603
|
symbol = market['symbol']
|
512
604
|
side = self.safe_string_lower(order, 'side')
|
@@ -578,7 +670,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
578
670
|
}, market)
|
579
671
|
|
580
672
|
def parse_ws_order_status(self, statusId):
|
581
|
-
statuses = {
|
673
|
+
statuses: dict = {
|
582
674
|
'1': 'closed', # match deal
|
583
675
|
'2': 'open', # submit order
|
584
676
|
'3': 'canceled', # cancel order
|
@@ -592,7 +684,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
592
684
|
return self.safe_string(statuses, statusId, statusId)
|
593
685
|
|
594
686
|
def parse_ws_order_side(self, sideId):
|
595
|
-
sides = {
|
687
|
+
sides: dict = {
|
596
688
|
'1': 'buy', # buy_open_long
|
597
689
|
'2': 'buy', # buy_close_short
|
598
690
|
'3': 'sell', # sell_close_long
|
@@ -602,9 +694,13 @@ class bitmart(ccxt.async_support.bitmart):
|
|
602
694
|
|
603
695
|
async def watch_positions(self, symbols: Strings = None, since: Int = None, limit: Int = None, params={}) -> List[Position]:
|
604
696
|
"""
|
605
|
-
|
697
|
+
|
698
|
+
https://developer-pro.bitmart.com/en/futures/#private-position-channel
|
699
|
+
|
606
700
|
watch all open positions
|
607
701
|
:param str[]|None symbols: list of unified market symbols
|
702
|
+
:param int [since]: the earliest time in ms to fetch positions
|
703
|
+
:param int [limit]: the maximum number of positions to retrieve
|
608
704
|
:param dict params: extra parameters specific to the exchange API endpoint
|
609
705
|
:returns dict[]: a list of `position structure <https://docs.ccxt.com/en/latest/manual.html#position-structure>`
|
610
706
|
"""
|
@@ -616,7 +712,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
616
712
|
if symbols is not None:
|
617
713
|
messageHash += '::' + ','.join(symbols)
|
618
714
|
subscriptionHash = 'futures/position'
|
619
|
-
request = {
|
715
|
+
request: dict = {
|
620
716
|
'action': 'subscribe',
|
621
717
|
'args': ['futures/position'],
|
622
718
|
}
|
@@ -663,9 +759,9 @@ class bitmart(ccxt.async_support.bitmart):
|
|
663
759
|
# }
|
664
760
|
#
|
665
761
|
data = self.safe_value(message, 'data', [])
|
666
|
-
cache = self.positions
|
667
762
|
if self.positions is None:
|
668
763
|
self.positions = ArrayCacheBySymbolBySide()
|
764
|
+
cache = self.positions
|
669
765
|
newPositions = []
|
670
766
|
for i in range(0, len(data)):
|
671
767
|
rawPosition = data[i]
|
@@ -705,8 +801,8 @@ class bitmart(ccxt.async_support.bitmart):
|
|
705
801
|
symbol = market['symbol']
|
706
802
|
openTimestamp = self.safe_integer(position, 'create_time')
|
707
803
|
timestamp = self.safe_integer(position, 'update_time')
|
708
|
-
side = self.
|
709
|
-
marginModeId = self.
|
804
|
+
side = self.safe_integer(position, 'position_type')
|
805
|
+
marginModeId = self.safe_integer(position, 'open_type')
|
710
806
|
return self.safe_position({
|
711
807
|
'info': position,
|
712
808
|
'id': None,
|
@@ -800,7 +896,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
800
896
|
stored.append(trade)
|
801
897
|
return symbol
|
802
898
|
|
803
|
-
def parse_ws_trade(self, trade, market: Market = None):
|
899
|
+
def parse_ws_trade(self, trade: dict, market: Market = None):
|
804
900
|
# spot
|
805
901
|
# {
|
806
902
|
# "price": "52700.50",
|
@@ -875,6 +971,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
875
971
|
# }
|
876
972
|
# }
|
877
973
|
#
|
974
|
+
self.handle_bid_ask(client, message)
|
878
975
|
table = self.safe_string(message, 'table')
|
879
976
|
isSpot = (table is not None)
|
880
977
|
rawTickers = []
|
@@ -930,8 +1027,10 @@ class bitmart(ccxt.async_support.bitmart):
|
|
930
1027
|
|
931
1028
|
async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
932
1029
|
"""
|
933
|
-
|
934
|
-
|
1030
|
+
|
1031
|
+
https://developer-pro.bitmart.com/en/spot/#public-kline-channel
|
1032
|
+
https://developer-pro.bitmart.com/en/futuresv2/#public-klinebin-channel
|
1033
|
+
|
935
1034
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
936
1035
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
937
1036
|
:param str timeframe: the length of time each candle represents
|
@@ -1045,13 +1144,16 @@ class bitmart(ccxt.async_support.bitmart):
|
|
1045
1144
|
|
1046
1145
|
async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
1047
1146
|
"""
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1147
|
+
|
1148
|
+
https://developer-pro.bitmart.com/en/spot/#public-depth-all-channel
|
1149
|
+
https://developer-pro.bitmart.com/en/spot/#public-depth-increase-channel
|
1150
|
+
https://developer-pro.bitmart.com/en/futuresv2/#public-depth-channel
|
1151
|
+
|
1051
1152
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
1052
1153
|
:param str symbol: unified symbol of the market to fetch the order book for
|
1053
1154
|
:param int [limit]: the maximum amount of order book entries to return
|
1054
1155
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1156
|
+
:param str [params.speed]: *futures only* '100ms' or '200ms'
|
1055
1157
|
:returns dict: A dictionary of `order book structures <https://docs.ccxt.com/#/?id=order-book-structure>` indexed by market symbols
|
1056
1158
|
"""
|
1057
1159
|
await self.load_markets()
|
@@ -1232,7 +1334,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
1232
1334
|
ob['symbol'] = symbol
|
1233
1335
|
self.orderbooks[symbol] = ob
|
1234
1336
|
orderbook = self.orderbooks[symbol]
|
1235
|
-
way = self.
|
1337
|
+
way = self.safe_integer(data, 'way')
|
1236
1338
|
side = 'bids' if (way == 1) else 'asks'
|
1237
1339
|
if way == 1:
|
1238
1340
|
orderbook[side] = Bids([], limit)
|
@@ -1260,7 +1362,9 @@ class bitmart(ccxt.async_support.bitmart):
|
|
1260
1362
|
async def watch_order_book_for_symbols(self, symbols: List[str], limit: Int = None, params={}) -> OrderBook:
|
1261
1363
|
"""
|
1262
1364
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
1263
|
-
|
1365
|
+
|
1366
|
+
https://developer-pro.bitmart.com/en/spot/#public-depth-increase-channel
|
1367
|
+
|
1264
1368
|
:param str[] symbols: unified array of symbols
|
1265
1369
|
:param int [limit]: the maximum amount of order book entries to return
|
1266
1370
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -1312,7 +1416,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
1312
1416
|
}
|
1313
1417
|
message = self.extend(request, params)
|
1314
1418
|
self.watch(url, messageHash, message, messageHash)
|
1315
|
-
return future
|
1419
|
+
return await future
|
1316
1420
|
|
1317
1421
|
def handle_subscription_status(self, client: Client, message):
|
1318
1422
|
#
|
@@ -1418,7 +1522,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
1418
1522
|
if not isDataUpdate:
|
1419
1523
|
event = self.safe_string_2(message, 'event', 'action')
|
1420
1524
|
if event is not None:
|
1421
|
-
methods = {
|
1525
|
+
methods: dict = {
|
1422
1526
|
# 'info': self.handleSystemStatus,
|
1423
1527
|
'login': self.handle_authenticate,
|
1424
1528
|
'access': self.handle_authenticate,
|
@@ -1429,7 +1533,7 @@ class bitmart(ccxt.async_support.bitmart):
|
|
1429
1533
|
method(client, message)
|
1430
1534
|
else:
|
1431
1535
|
channel = self.safe_string_2(message, 'table', 'group')
|
1432
|
-
methods = {
|
1536
|
+
methods: dict = {
|
1433
1537
|
'depth': self.handle_order_book,
|
1434
1538
|
'ticker': self.handle_ticker,
|
1435
1539
|
'trade': self.handle_trade,
|