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/timex.py
CHANGED
@@ -5,9 +5,10 @@
|
|
5
5
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.timex import ImplicitAPI
|
8
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
8
|
+
from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import ExchangeError
|
11
|
+
from ccxt.base.errors import AuthenticationError
|
11
12
|
from ccxt.base.errors import PermissionDenied
|
12
13
|
from ccxt.base.errors import ArgumentsRequired
|
13
14
|
from ccxt.base.errors import BadRequest
|
@@ -17,7 +18,6 @@ from ccxt.base.errors import OrderNotFound
|
|
17
18
|
from ccxt.base.errors import NotSupported
|
18
19
|
from ccxt.base.errors import RateLimitExceeded
|
19
20
|
from ccxt.base.errors import ExchangeNotAvailable
|
20
|
-
from ccxt.base.errors import AuthenticationError
|
21
21
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
22
22
|
from ccxt.base.precise import Precise
|
23
23
|
|
@@ -78,8 +78,11 @@ class timex(Exchange, ImplicitAPI):
|
|
78
78
|
'fetchOrder': True,
|
79
79
|
'fetchOrderBook': True,
|
80
80
|
'fetchPosition': False,
|
81
|
+
'fetchPositionHistory': False,
|
81
82
|
'fetchPositionMode': False,
|
82
83
|
'fetchPositions': False,
|
84
|
+
'fetchPositionsForSymbol': False,
|
85
|
+
'fetchPositionsHistory': False,
|
83
86
|
'fetchPositionsRisk': False,
|
84
87
|
'fetchPremiumIndexOHLCV': False,
|
85
88
|
'fetchTicker': True,
|
@@ -292,10 +295,12 @@ class timex(Exchange, ImplicitAPI):
|
|
292
295
|
#
|
293
296
|
return self.parse_to_int(response) * 1000
|
294
297
|
|
295
|
-
def fetch_markets(self, params={}):
|
298
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
296
299
|
"""
|
297
300
|
retrieves data on all markets for timex
|
298
|
-
|
301
|
+
|
302
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/listMarkets
|
303
|
+
|
299
304
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
300
305
|
:returns dict[]: an array of objects representing market data
|
301
306
|
"""
|
@@ -323,10 +328,12 @@ class timex(Exchange, ImplicitAPI):
|
|
323
328
|
#
|
324
329
|
return self.parse_markets(response)
|
325
330
|
|
326
|
-
def fetch_currencies(self, params={}):
|
331
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
327
332
|
"""
|
328
333
|
fetches all available currencies on an exchange
|
329
|
-
|
334
|
+
|
335
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/listCurrencies
|
336
|
+
|
330
337
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
331
338
|
:returns dict: an associative dictionary of currencies
|
332
339
|
"""
|
@@ -356,16 +363,14 @@ class timex(Exchange, ImplicitAPI):
|
|
356
363
|
# },
|
357
364
|
# ]
|
358
365
|
#
|
359
|
-
|
360
|
-
for i in range(0, len(response)):
|
361
|
-
currency = response[i]
|
362
|
-
result.append(self.parse_currency(currency))
|
363
|
-
return self.index_by(result, 'code')
|
366
|
+
return self.parse_currencies(response)
|
364
367
|
|
365
368
|
def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
366
369
|
"""
|
367
370
|
fetch all deposits made to an account
|
368
|
-
|
371
|
+
|
372
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Manager/getDeposits
|
373
|
+
|
369
374
|
:param str code: unified currency code
|
370
375
|
:param int [since]: the earliest time in ms to fetch deposits for
|
371
376
|
:param int [limit]: the maximum number of deposits structures to retrieve
|
@@ -376,7 +381,7 @@ class timex(Exchange, ImplicitAPI):
|
|
376
381
|
params = self.omit(params, 'address')
|
377
382
|
if address is None:
|
378
383
|
raise ArgumentsRequired(self.id + ' fetchDeposits() requires an address parameter')
|
379
|
-
request = {
|
384
|
+
request: dict = {
|
380
385
|
'address': address,
|
381
386
|
}
|
382
387
|
response = self.managerGetDeposits(self.extend(request, params))
|
@@ -398,7 +403,9 @@ class timex(Exchange, ImplicitAPI):
|
|
398
403
|
def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
399
404
|
"""
|
400
405
|
fetch all withdrawals made to an account
|
401
|
-
|
406
|
+
|
407
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Manager/getWithdraws
|
408
|
+
|
402
409
|
:param str code: unified currency code
|
403
410
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
404
411
|
:param int [limit]: the maximum number of transaction structures to retrieve
|
@@ -409,7 +416,7 @@ class timex(Exchange, ImplicitAPI):
|
|
409
416
|
params = self.omit(params, 'address')
|
410
417
|
if address is None:
|
411
418
|
raise ArgumentsRequired(self.id + ' fetchDeposits() requires an address parameter')
|
412
|
-
request = {
|
419
|
+
request: dict = {
|
413
420
|
'address': address,
|
414
421
|
}
|
415
422
|
response = self.managerGetWithdrawals(self.extend(request, params))
|
@@ -438,7 +445,7 @@ class timex(Exchange, ImplicitAPI):
|
|
438
445
|
return currency
|
439
446
|
return None
|
440
447
|
|
441
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
448
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
442
449
|
#
|
443
450
|
# {
|
444
451
|
# "from": "0x1134cc86b45039cc211c6d1d2e4b3c77f60207ed",
|
@@ -478,14 +485,16 @@ class timex(Exchange, ImplicitAPI):
|
|
478
485
|
def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
479
486
|
"""
|
480
487
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
481
|
-
|
488
|
+
|
489
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/listTickers
|
490
|
+
|
482
491
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
483
492
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
484
493
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
485
494
|
"""
|
486
495
|
self.load_markets()
|
487
496
|
period = self.safe_string(self.options['fetchTickers'], 'period', '1d')
|
488
|
-
request = {
|
497
|
+
request: dict = {
|
489
498
|
'period': self.timeframes[period], # I1, I5, I15, I30, H1, H2, H4, H6, H12, D1, W1
|
490
499
|
}
|
491
500
|
response = self.publicGetTickers(self.extend(request, params))
|
@@ -511,7 +520,9 @@ class timex(Exchange, ImplicitAPI):
|
|
511
520
|
def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
512
521
|
"""
|
513
522
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
514
|
-
|
523
|
+
|
524
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/listTickers
|
525
|
+
|
515
526
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
516
527
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
517
528
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -519,7 +530,7 @@ class timex(Exchange, ImplicitAPI):
|
|
519
530
|
self.load_markets()
|
520
531
|
market = self.market(symbol)
|
521
532
|
period = self.safe_string(self.options['fetchTickers'], 'period', '1d')
|
522
|
-
request = {
|
533
|
+
request: dict = {
|
523
534
|
'market': market['id'],
|
524
535
|
'period': self.timeframes[period], # I1, I5, I15, I30, H1, H2, H4, H6, H12, D1, W1
|
525
536
|
}
|
@@ -541,13 +552,15 @@ class timex(Exchange, ImplicitAPI):
|
|
541
552
|
# }
|
542
553
|
# ]
|
543
554
|
#
|
544
|
-
ticker = self.
|
555
|
+
ticker = self.safe_dict(response, 0)
|
545
556
|
return self.parse_ticker(ticker, market)
|
546
557
|
|
547
558
|
def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
548
559
|
"""
|
549
560
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
550
|
-
|
561
|
+
|
562
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/orderbookV2
|
563
|
+
|
551
564
|
:param str symbol: unified symbol of the market to fetch the order book for
|
552
565
|
:param int [limit]: the maximum amount of order book entries to return
|
553
566
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -555,7 +568,7 @@ class timex(Exchange, ImplicitAPI):
|
|
555
568
|
"""
|
556
569
|
self.load_markets()
|
557
570
|
market = self.market(symbol)
|
558
|
-
request = {
|
571
|
+
request: dict = {
|
559
572
|
'market': market['id'],
|
560
573
|
}
|
561
574
|
if limit is not None:
|
@@ -591,7 +604,9 @@ class timex(Exchange, ImplicitAPI):
|
|
591
604
|
def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
592
605
|
"""
|
593
606
|
get the list of most recent trades for a particular symbol
|
594
|
-
|
607
|
+
|
608
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/listTrades
|
609
|
+
|
595
610
|
:param str symbol: unified symbol of the market to fetch trades for
|
596
611
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
597
612
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -604,7 +619,7 @@ class timex(Exchange, ImplicitAPI):
|
|
604
619
|
defaultSort = self.safe_value(options, 'sort', 'timestamp,asc')
|
605
620
|
sort = self.safe_string(params, 'sort', defaultSort)
|
606
621
|
query = self.omit(params, 'sort')
|
607
|
-
request = {
|
622
|
+
request: dict = {
|
608
623
|
# 'address': 'string', # trade’s member account(?)
|
609
624
|
# 'cursor': 1234, # int64(?)
|
610
625
|
# 'from': self.iso8601(since),
|
@@ -635,7 +650,9 @@ class timex(Exchange, ImplicitAPI):
|
|
635
650
|
def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
636
651
|
"""
|
637
652
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
638
|
-
|
653
|
+
|
654
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/listCandles
|
655
|
+
|
639
656
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
640
657
|
:param str timeframe: the length of time each candle represents
|
641
658
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -645,7 +662,7 @@ class timex(Exchange, ImplicitAPI):
|
|
645
662
|
"""
|
646
663
|
self.load_markets()
|
647
664
|
market = self.market(symbol)
|
648
|
-
request = {
|
665
|
+
request: dict = {
|
649
666
|
'market': market['id'],
|
650
667
|
'period': self.safe_string(self.timeframes, timeframe, timeframe),
|
651
668
|
}
|
@@ -677,7 +694,7 @@ class timex(Exchange, ImplicitAPI):
|
|
677
694
|
return self.parse_ohlcvs(response, market, timeframe, since, limit)
|
678
695
|
|
679
696
|
def parse_balance(self, response) -> Balances:
|
680
|
-
result = {
|
697
|
+
result: dict = {
|
681
698
|
'info': response,
|
682
699
|
'timestamp': None,
|
683
700
|
'datetime': None,
|
@@ -695,7 +712,9 @@ class timex(Exchange, ImplicitAPI):
|
|
695
712
|
def fetch_balance(self, params={}) -> Balances:
|
696
713
|
"""
|
697
714
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
698
|
-
|
715
|
+
|
716
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Trading/getBalances
|
717
|
+
|
699
718
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
700
719
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
701
720
|
"""
|
@@ -715,12 +734,14 @@ class timex(Exchange, ImplicitAPI):
|
|
715
734
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
716
735
|
"""
|
717
736
|
create a trade order
|
718
|
-
|
737
|
+
|
738
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Trading/createOrder
|
739
|
+
|
719
740
|
:param str symbol: unified symbol of the market to create an order in
|
720
741
|
:param str type: 'market' or 'limit'
|
721
742
|
:param str side: 'buy' or 'sell'
|
722
743
|
:param float amount: how much of currency you want to trade in units of base currency
|
723
|
-
:param float [price]: the price at which the order is to be
|
744
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
724
745
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
725
746
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
726
747
|
"""
|
@@ -732,7 +753,7 @@ class timex(Exchange, ImplicitAPI):
|
|
732
753
|
if postOnly:
|
733
754
|
uppercaseType = 'POST_ONLY'
|
734
755
|
params = self.omit(params, ['postOnly'])
|
735
|
-
request = {
|
756
|
+
request: dict = {
|
736
757
|
'symbol': market['id'],
|
737
758
|
'quantity': self.amount_to_precision(symbol, amount),
|
738
759
|
'side': uppercaseSide,
|
@@ -779,13 +800,13 @@ class timex(Exchange, ImplicitAPI):
|
|
779
800
|
# }
|
780
801
|
#
|
781
802
|
orders = self.safe_value(response, 'orders', [])
|
782
|
-
order = self.
|
803
|
+
order = self.safe_dict(orders, 0, {})
|
783
804
|
return self.parse_order(order, market)
|
784
805
|
|
785
806
|
def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}):
|
786
807
|
self.load_markets()
|
787
808
|
market = self.market(symbol)
|
788
|
-
request = {
|
809
|
+
request: dict = {
|
789
810
|
'id': id,
|
790
811
|
}
|
791
812
|
if amount is not None:
|
@@ -827,32 +848,37 @@ class timex(Exchange, ImplicitAPI):
|
|
827
848
|
})
|
828
849
|
orders = self.safe_value(response, 'changedOrders', [])
|
829
850
|
firstOrder = self.safe_value(orders, 0, {})
|
830
|
-
order = self.
|
851
|
+
order = self.safe_dict(firstOrder, 'newOrder', {})
|
831
852
|
return self.parse_order(order, market)
|
832
853
|
|
833
854
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
834
855
|
"""
|
835
856
|
cancels an open order
|
836
|
-
|
857
|
+
|
858
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Trading/deleteOrders
|
859
|
+
|
837
860
|
:param str id: order id
|
838
861
|
:param str symbol: not used by timex cancelOrder()
|
839
862
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
840
863
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
841
864
|
"""
|
842
865
|
self.load_markets()
|
843
|
-
|
866
|
+
orders = self.cancel_orders([id], symbol, params)
|
867
|
+
return self.safe_dict(orders, 0)
|
844
868
|
|
845
869
|
def cancel_orders(self, ids, symbol: Str = None, params={}):
|
846
870
|
"""
|
847
871
|
cancel multiple orders
|
848
|
-
|
872
|
+
|
873
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Trading/deleteOrders
|
874
|
+
|
849
875
|
:param str[] ids: order ids
|
850
876
|
:param str symbol: unified market symbol, default is None
|
851
877
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
852
878
|
:returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
853
879
|
"""
|
854
880
|
self.load_markets()
|
855
|
-
request = {
|
881
|
+
request: dict = {
|
856
882
|
'id': ids,
|
857
883
|
}
|
858
884
|
response = self.tradingDeleteOrders(self.extend(request, params))
|
@@ -880,18 +906,34 @@ class timex(Exchange, ImplicitAPI):
|
|
880
906
|
# ],
|
881
907
|
# "unchangedOrders": ["string"],
|
882
908
|
# }
|
883
|
-
|
909
|
+
#
|
910
|
+
changedOrders = self.safe_list(response, 'changedOrders', [])
|
911
|
+
unchangedOrders = self.safe_list(response, 'unchangedOrders', [])
|
912
|
+
orders = []
|
913
|
+
for i in range(0, len(changedOrders)):
|
914
|
+
newOrder = self.safe_dict(changedOrders[i], 'newOrder')
|
915
|
+
orders.append(self.parse_order(newOrder))
|
916
|
+
for i in range(0, len(unchangedOrders)):
|
917
|
+
orders.append(self.safe_order({
|
918
|
+
'info': unchangedOrders[i],
|
919
|
+
'id': unchangedOrders[i],
|
920
|
+
'status': 'unchanged',
|
921
|
+
}))
|
922
|
+
return orders
|
884
923
|
|
885
924
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
886
925
|
"""
|
887
926
|
fetches information on an order made by the user
|
888
|
-
|
927
|
+
|
928
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/History/getOrderDetails
|
929
|
+
|
930
|
+
:param str id: order id
|
889
931
|
:param str symbol: not used by timex fetchOrder
|
890
932
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
891
933
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
892
934
|
"""
|
893
935
|
self.load_markets()
|
894
|
-
request = {
|
936
|
+
request: dict = {
|
895
937
|
'orderHash': id,
|
896
938
|
}
|
897
939
|
response = self.historyGetOrdersDetails(request)
|
@@ -929,13 +971,15 @@ class timex(Exchange, ImplicitAPI):
|
|
929
971
|
# }
|
930
972
|
#
|
931
973
|
order = self.safe_value(response, 'order', {})
|
932
|
-
trades = self.
|
974
|
+
trades = self.safe_list(response, 'trades', [])
|
933
975
|
return self.parse_order(self.extend(order, {'trades': trades}))
|
934
976
|
|
935
977
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
936
978
|
"""
|
937
979
|
fetch all unfilled currently open orders
|
938
|
-
|
980
|
+
|
981
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Trading/getOpenOrders
|
982
|
+
|
939
983
|
:param str symbol: unified market symbol
|
940
984
|
:param int [since]: the earliest time in ms to fetch open orders for
|
941
985
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
@@ -947,7 +991,7 @@ class timex(Exchange, ImplicitAPI):
|
|
947
991
|
defaultSort = self.safe_value(options, 'sort', 'createdAt,asc')
|
948
992
|
sort = self.safe_string(params, 'sort', defaultSort)
|
949
993
|
query = self.omit(params, 'sort')
|
950
|
-
request = {
|
994
|
+
request: dict = {
|
951
995
|
# 'clientOrderId': '123', # order’s client id list for filter
|
952
996
|
# page: 0, # results page you want to retrieve(0 .. N)
|
953
997
|
'sort': sort, # sorting criteria in the format "property,asc" or "property,desc", default order is ascending, multiple sort criteria are supported
|
@@ -980,13 +1024,15 @@ class timex(Exchange, ImplicitAPI):
|
|
980
1024
|
# ]
|
981
1025
|
# }
|
982
1026
|
#
|
983
|
-
orders = self.
|
1027
|
+
orders = self.safe_list(response, 'orders', [])
|
984
1028
|
return self.parse_orders(orders, market, since, limit)
|
985
1029
|
|
986
1030
|
def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
987
1031
|
"""
|
988
1032
|
fetches information on multiple closed orders made by the user
|
989
|
-
|
1033
|
+
|
1034
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/History/getOrders
|
1035
|
+
|
990
1036
|
:param str symbol: unified market symbol of the market orders were made in
|
991
1037
|
:param int [since]: the earliest time in ms to fetch orders for
|
992
1038
|
:param int [limit]: the maximum number of order structures to retrieve
|
@@ -998,7 +1044,7 @@ class timex(Exchange, ImplicitAPI):
|
|
998
1044
|
defaultSort = self.safe_value(options, 'sort', 'createdAt,asc')
|
999
1045
|
sort = self.safe_string(params, 'sort', defaultSort)
|
1000
1046
|
query = self.omit(params, 'sort')
|
1001
|
-
request = {
|
1047
|
+
request: dict = {
|
1002
1048
|
# 'clientOrderId': '123', # order’s client id list for filter
|
1003
1049
|
# page: 0, # results page you want to retrieve(0 .. N)
|
1004
1050
|
'sort': sort, # sorting criteria in the format "property,asc" or "property,desc", default order is ascending, multiple sort criteria are supported
|
@@ -1035,13 +1081,15 @@ class timex(Exchange, ImplicitAPI):
|
|
1035
1081
|
# ]
|
1036
1082
|
# }
|
1037
1083
|
#
|
1038
|
-
orders = self.
|
1084
|
+
orders = self.safe_list(response, 'orders', [])
|
1039
1085
|
return self.parse_orders(orders, market, since, limit)
|
1040
1086
|
|
1041
1087
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1042
1088
|
"""
|
1043
1089
|
fetch all trades made by the user
|
1044
|
-
|
1090
|
+
|
1091
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/History/getTrades_1
|
1092
|
+
|
1045
1093
|
:param str symbol: unified market symbol
|
1046
1094
|
:param int [since]: the earliest time in ms to fetch trades for
|
1047
1095
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -1053,7 +1101,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1053
1101
|
defaultSort = self.safe_value(options, 'sort', 'timestamp,asc')
|
1054
1102
|
sort = self.safe_string(params, 'sort', defaultSort)
|
1055
1103
|
query = self.omit(params, 'sort')
|
1056
|
-
request = {
|
1104
|
+
request: dict = {
|
1057
1105
|
# 'cursorId': 123, # int64(?)
|
1058
1106
|
# 'from': self.iso8601(since),
|
1059
1107
|
# 'makerOrderId': '1234', # maker order hash
|
@@ -1093,10 +1141,10 @@ class timex(Exchange, ImplicitAPI):
|
|
1093
1141
|
# ]
|
1094
1142
|
# }
|
1095
1143
|
#
|
1096
|
-
trades = self.
|
1144
|
+
trades = self.safe_list(response, 'trades', [])
|
1097
1145
|
return self.parse_trades(trades, market, since, limit)
|
1098
1146
|
|
1099
|
-
def parse_trading_fee(self, fee, market: Market = None):
|
1147
|
+
def parse_trading_fee(self, fee: dict, market: Market = None) -> TradingFeeInterface:
|
1100
1148
|
#
|
1101
1149
|
# {
|
1102
1150
|
# "fee": 0.0075,
|
@@ -1110,19 +1158,23 @@ class timex(Exchange, ImplicitAPI):
|
|
1110
1158
|
'symbol': self.safe_symbol(marketId, market),
|
1111
1159
|
'maker': rate,
|
1112
1160
|
'taker': rate,
|
1161
|
+
'percentage': None,
|
1162
|
+
'tierBased': None,
|
1113
1163
|
}
|
1114
1164
|
|
1115
|
-
def fetch_trading_fee(self, symbol: str, params={}):
|
1165
|
+
def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
1116
1166
|
"""
|
1117
1167
|
fetch the trading fees for a market
|
1118
|
-
|
1168
|
+
|
1169
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Trading/getFees
|
1170
|
+
|
1119
1171
|
:param str symbol: unified market symbol
|
1120
1172
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1121
1173
|
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
|
1122
1174
|
"""
|
1123
1175
|
self.load_markets()
|
1124
1176
|
market = self.market(symbol)
|
1125
|
-
request = {
|
1177
|
+
request: dict = {
|
1126
1178
|
'markets': market['id'],
|
1127
1179
|
}
|
1128
1180
|
response = self.tradingGetFees(self.extend(request, params))
|
@@ -1137,7 +1189,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1137
1189
|
result = self.safe_value(response, 0, {})
|
1138
1190
|
return self.parse_trading_fee(result, market)
|
1139
1191
|
|
1140
|
-
def parse_market(self, market) -> Market:
|
1192
|
+
def parse_market(self, market: dict) -> Market:
|
1141
1193
|
#
|
1142
1194
|
# {
|
1143
1195
|
# "symbol": "ETHBTC",
|
@@ -1220,7 +1272,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1220
1272
|
'info': market,
|
1221
1273
|
}
|
1222
1274
|
|
1223
|
-
def parse_currency(self, currency):
|
1275
|
+
def parse_currency(self, currency: dict) -> Currency:
|
1224
1276
|
#
|
1225
1277
|
# {
|
1226
1278
|
# "symbol": "BTC",
|
@@ -1281,7 +1333,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1281
1333
|
for i in range(0, -dotIndex):
|
1282
1334
|
fraction += '0'
|
1283
1335
|
fee = self.parse_number(fraction + feeString)
|
1284
|
-
return {
|
1336
|
+
return self.safe_currency_structure({
|
1285
1337
|
'id': code,
|
1286
1338
|
'code': code,
|
1287
1339
|
'info': currency,
|
@@ -1297,9 +1349,9 @@ class timex(Exchange, ImplicitAPI):
|
|
1297
1349
|
'amount': {'min': None, 'max': None},
|
1298
1350
|
},
|
1299
1351
|
'networks': {},
|
1300
|
-
}
|
1352
|
+
})
|
1301
1353
|
|
1302
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
1354
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
1303
1355
|
#
|
1304
1356
|
# {
|
1305
1357
|
# "ask": 0.017,
|
@@ -1343,7 +1395,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1343
1395
|
'quoteVolume': self.safe_string(ticker, 'volumeQuote'),
|
1344
1396
|
}, market)
|
1345
1397
|
|
1346
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
1398
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
1347
1399
|
#
|
1348
1400
|
# fetchTrades(public)
|
1349
1401
|
#
|
@@ -1430,7 +1482,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1430
1482
|
self.safe_number(ohlcv, 'volume'),
|
1431
1483
|
]
|
1432
1484
|
|
1433
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
1485
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
1434
1486
|
#
|
1435
1487
|
# fetchOrder, createOrder, cancelOrder, cancelOrders, fetchOpenOrders, fetchClosedOrders
|
1436
1488
|
#
|
@@ -1483,7 +1535,6 @@ class timex(Exchange, ImplicitAPI):
|
|
1483
1535
|
'postOnly': None,
|
1484
1536
|
'side': side,
|
1485
1537
|
'price': price,
|
1486
|
-
'stopPrice': None,
|
1487
1538
|
'triggerPrice': None,
|
1488
1539
|
'amount': amount,
|
1489
1540
|
'cost': None,
|
@@ -1495,17 +1546,19 @@ class timex(Exchange, ImplicitAPI):
|
|
1495
1546
|
'trades': rawTrades,
|
1496
1547
|
}, market)
|
1497
1548
|
|
1498
|
-
def fetch_deposit_address(self, code: str, params={}):
|
1549
|
+
def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
1499
1550
|
"""
|
1500
1551
|
fetch the deposit address for a currency associated with self account, does not accept params["network"]
|
1501
|
-
|
1552
|
+
|
1553
|
+
https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Currency/selectCurrencyBySymbol
|
1554
|
+
|
1502
1555
|
:param str code: unified currency code
|
1503
1556
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1504
1557
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
1505
1558
|
"""
|
1506
1559
|
self.load_markets()
|
1507
1560
|
currency = self.currency(code)
|
1508
|
-
request = {
|
1561
|
+
request: dict = {
|
1509
1562
|
'symbol': currency['code'],
|
1510
1563
|
}
|
1511
1564
|
response = self.currenciesGetSSymbol(self.extend(request, params))
|
@@ -1529,7 +1582,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1529
1582
|
data = self.safe_dict(response, 'currency', {})
|
1530
1583
|
return self.parse_deposit_address(data, currency)
|
1531
1584
|
|
1532
|
-
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
1585
|
+
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
1533
1586
|
#
|
1534
1587
|
# {
|
1535
1588
|
# symbol: 'BTC',
|
@@ -1548,9 +1601,9 @@ class timex(Exchange, ImplicitAPI):
|
|
1548
1601
|
return {
|
1549
1602
|
'info': depositAddress,
|
1550
1603
|
'currency': self.safe_currency_code(currencyId, currency),
|
1604
|
+
'network': None,
|
1551
1605
|
'address': self.safe_string(depositAddress, 'address'),
|
1552
1606
|
'tag': None,
|
1553
|
-
'network': None,
|
1554
1607
|
}
|
1555
1608
|
|
1556
1609
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|
@@ -1567,7 +1620,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1567
1620
|
headers = {'authorization': secret}
|
1568
1621
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1569
1622
|
|
1570
|
-
def handle_errors(self, statusCode, statusText, url, method, responseHeaders, responseBody, response, requestHeaders, requestBody):
|
1623
|
+
def handle_errors(self, statusCode: int, statusText: str, url: str, method: str, responseHeaders: dict, responseBody, response, requestHeaders, requestBody):
|
1571
1624
|
if response is None:
|
1572
1625
|
return None
|
1573
1626
|
if statusCode >= 400:
|