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/async_support/latoken.py
CHANGED
@@ -6,9 +6,10 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.latoken import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
|
+
from ccxt.base.errors import AuthenticationError
|
12
13
|
from ccxt.base.errors import PermissionDenied
|
13
14
|
from ccxt.base.errors import AccountSuspended
|
14
15
|
from ccxt.base.errors import ArgumentsRequired
|
@@ -20,7 +21,6 @@ from ccxt.base.errors import NotSupported
|
|
20
21
|
from ccxt.base.errors import RateLimitExceeded
|
21
22
|
from ccxt.base.errors import ExchangeNotAvailable
|
22
23
|
from ccxt.base.errors import InvalidNonce
|
23
|
-
from ccxt.base.errors import AuthenticationError
|
24
24
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
25
25
|
|
26
26
|
|
@@ -60,6 +60,12 @@ class latoken(Exchange, ImplicitAPI):
|
|
60
60
|
'fetchDepositAddressesByNetwork': False,
|
61
61
|
'fetchDepositsWithdrawals': True,
|
62
62
|
'fetchDepositWithdrawFees': False,
|
63
|
+
'fetchFundingHistory': False,
|
64
|
+
'fetchFundingInterval': False,
|
65
|
+
'fetchFundingIntervals': False,
|
66
|
+
'fetchFundingRate': False,
|
67
|
+
'fetchFundingRateHistory': False,
|
68
|
+
'fetchFundingRates': False,
|
63
69
|
'fetchIsolatedBorrowRate': False,
|
64
70
|
'fetchIsolatedBorrowRates': False,
|
65
71
|
'fetchMarginMode': False,
|
@@ -69,7 +75,13 @@ class latoken(Exchange, ImplicitAPI):
|
|
69
75
|
'fetchOrder': True,
|
70
76
|
'fetchOrderBook': True,
|
71
77
|
'fetchOrders': True,
|
78
|
+
'fetchPosition': False,
|
79
|
+
'fetchPositionHistory': False,
|
72
80
|
'fetchPositionMode': False,
|
81
|
+
'fetchPositions': False,
|
82
|
+
'fetchPositionsForSymbol': False,
|
83
|
+
'fetchPositionsHistory': False,
|
84
|
+
'fetchPositionsRisk': False,
|
73
85
|
'fetchTicker': True,
|
74
86
|
'fetchTickers': True,
|
75
87
|
'fetchTime': True,
|
@@ -236,6 +248,70 @@ class latoken(Exchange, ImplicitAPI):
|
|
236
248
|
'method': 'fetchPrivateTradingFee', # or 'fetchPublicTradingFee'
|
237
249
|
},
|
238
250
|
},
|
251
|
+
'features': {
|
252
|
+
'spot': {
|
253
|
+
'sandbox': False,
|
254
|
+
'createOrder': {
|
255
|
+
'marginMode': False,
|
256
|
+
'triggerPrice': True,
|
257
|
+
'triggerPriceType': None,
|
258
|
+
'triggerDirection': False,
|
259
|
+
'stopLossPrice': False, # todo
|
260
|
+
'takeProfitPrice': False, # todo
|
261
|
+
'attachedStopLossTakeProfit': None,
|
262
|
+
'timeInForce': {
|
263
|
+
'IOC': True, # todo: for non-trigger orders
|
264
|
+
'FOK': True,
|
265
|
+
'PO': False,
|
266
|
+
'GTD': False,
|
267
|
+
},
|
268
|
+
'hedged': False,
|
269
|
+
'selfTradePrevention': False,
|
270
|
+
'trailing': False,
|
271
|
+
'leverage': False,
|
272
|
+
'marketBuyByCost': True,
|
273
|
+
'marketBuyRequiresPrice': False,
|
274
|
+
'iceberg': False,
|
275
|
+
},
|
276
|
+
'createOrders': None,
|
277
|
+
'fetchMyTrades': {
|
278
|
+
'marginMode': False,
|
279
|
+
'limit': 1000,
|
280
|
+
'daysBack': 100000, # todo
|
281
|
+
'untilDays': None,
|
282
|
+
},
|
283
|
+
'fetchOrder': {
|
284
|
+
'marginMode': False,
|
285
|
+
'trigger': True,
|
286
|
+
'trailing': False,
|
287
|
+
},
|
288
|
+
'fetchOpenOrders': {
|
289
|
+
'marginMode': False,
|
290
|
+
'limit': None,
|
291
|
+
'trigger': False,
|
292
|
+
'trailing': False,
|
293
|
+
},
|
294
|
+
'fetchOrders': None,
|
295
|
+
'fetchClosedOrders': {
|
296
|
+
'marginMode': False,
|
297
|
+
'limit': 1000,
|
298
|
+
'daysBack': 100000, # todo
|
299
|
+
'daysBackCanceled': 1,
|
300
|
+
'untilDays': None,
|
301
|
+
'trigger': True,
|
302
|
+
'trailing': False,
|
303
|
+
},
|
304
|
+
'fetchOHLCV': None,
|
305
|
+
},
|
306
|
+
'swap': {
|
307
|
+
'linear': None,
|
308
|
+
'inverse': None,
|
309
|
+
},
|
310
|
+
'future': {
|
311
|
+
'linear': None,
|
312
|
+
'inverse': None,
|
313
|
+
},
|
314
|
+
},
|
239
315
|
})
|
240
316
|
|
241
317
|
def nonce(self):
|
@@ -244,7 +320,9 @@ class latoken(Exchange, ImplicitAPI):
|
|
244
320
|
async def fetch_time(self, params={}):
|
245
321
|
"""
|
246
322
|
fetches the current integer timestamp in milliseconds from the exchange server
|
247
|
-
|
323
|
+
|
324
|
+
https://api.latoken.com/doc/v2/#tag/Time/operation/currentTime
|
325
|
+
|
248
326
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
249
327
|
:returns int: the current integer timestamp in milliseconds from the exchange server
|
250
328
|
"""
|
@@ -256,10 +334,12 @@ class latoken(Exchange, ImplicitAPI):
|
|
256
334
|
#
|
257
335
|
return self.safe_integer(response, 'serverTime')
|
258
336
|
|
259
|
-
async def fetch_markets(self, params={}):
|
337
|
+
async def fetch_markets(self, params={}) -> List[Market]:
|
260
338
|
"""
|
261
339
|
retrieves data on all markets for latoken
|
262
|
-
|
340
|
+
|
341
|
+
https://api.latoken.com/doc/v2/#tag/Pair/operation/getActivePairs
|
342
|
+
|
263
343
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
264
344
|
:returns dict[]: an array of objects representing market data
|
265
345
|
"""
|
@@ -401,7 +481,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
401
481
|
})
|
402
482
|
return self.safe_value(self.options['fetchCurrencies'], 'response')
|
403
483
|
|
404
|
-
async def fetch_currencies(self, params={}):
|
484
|
+
async def fetch_currencies(self, params={}) -> Currencies:
|
405
485
|
"""
|
406
486
|
fetches all available currencies on an exchange
|
407
487
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -440,7 +520,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
440
520
|
# },
|
441
521
|
# ]
|
442
522
|
#
|
443
|
-
result = {}
|
523
|
+
result: dict = {}
|
444
524
|
for i in range(0, len(response)):
|
445
525
|
currency = response[i]
|
446
526
|
id = self.safe_string(currency, 'id')
|
@@ -485,7 +565,9 @@ class latoken(Exchange, ImplicitAPI):
|
|
485
565
|
async def fetch_balance(self, params={}) -> Balances:
|
486
566
|
"""
|
487
567
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
488
|
-
|
568
|
+
|
569
|
+
https://api.latoken.com/doc/v2/#tag/Account/operation/getBalancesByUser
|
570
|
+
|
489
571
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
490
572
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
491
573
|
"""
|
@@ -513,7 +595,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
513
595
|
# }
|
514
596
|
# ]
|
515
597
|
#
|
516
|
-
result = {
|
598
|
+
result: dict = {
|
517
599
|
'info': response,
|
518
600
|
'timestamp': None,
|
519
601
|
'datetime': None,
|
@@ -546,7 +628,9 @@ class latoken(Exchange, ImplicitAPI):
|
|
546
628
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
547
629
|
"""
|
548
630
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
549
|
-
|
631
|
+
|
632
|
+
https://api.latoken.com/doc/v2/#tag/Order-Book/operation/getOrderBook
|
633
|
+
|
550
634
|
:param str symbol: unified symbol of the market to fetch the order book for
|
551
635
|
:param int [limit]: the maximum amount of order book entries to return
|
552
636
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -554,7 +638,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
554
638
|
"""
|
555
639
|
await self.load_markets()
|
556
640
|
market = self.market(symbol)
|
557
|
-
request = {
|
641
|
+
request: dict = {
|
558
642
|
'currency': market['baseId'],
|
559
643
|
'quote': market['quoteId'],
|
560
644
|
}
|
@@ -579,7 +663,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
579
663
|
#
|
580
664
|
return self.parse_order_book(response, symbol, None, 'bid', 'ask', 'price', 'quantity')
|
581
665
|
|
582
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
666
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
583
667
|
#
|
584
668
|
# {
|
585
669
|
# "symbol": "92151d82-df98-4d88-9a4d-284fa9eca49f/0c3a106d-bde3-4c13-a26e-3fd2394529e5",
|
@@ -602,7 +686,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
602
686
|
#
|
603
687
|
marketId = self.safe_string(ticker, 'symbol')
|
604
688
|
last = self.safe_string(ticker, 'lastPrice')
|
605
|
-
timestamp = self.
|
689
|
+
timestamp = self.safe_integer_omit_zero(ticker, 'updateTimestamp') # sometimes latoken provided '0' ts from /ticker endpoint
|
606
690
|
return self.safe_ticker({
|
607
691
|
'symbol': self.safe_symbol(marketId, market),
|
608
692
|
'timestamp': timestamp,
|
@@ -629,14 +713,16 @@ class latoken(Exchange, ImplicitAPI):
|
|
629
713
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
630
714
|
"""
|
631
715
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
632
|
-
|
716
|
+
|
717
|
+
https://api.latoken.com/doc/v2/#tag/Ticker/operation/getTicker
|
718
|
+
|
633
719
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
634
720
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
635
721
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
636
722
|
"""
|
637
723
|
await self.load_markets()
|
638
724
|
market = self.market(symbol)
|
639
|
-
request = {
|
725
|
+
request: dict = {
|
640
726
|
'base': market['baseId'],
|
641
727
|
'quote': market['quoteId'],
|
642
728
|
}
|
@@ -666,7 +752,9 @@ class latoken(Exchange, ImplicitAPI):
|
|
666
752
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
667
753
|
"""
|
668
754
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
669
|
-
|
755
|
+
|
756
|
+
https://api.latoken.com/doc/v2/#tag/Ticker/operation/getAllTickers
|
757
|
+
|
670
758
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
671
759
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
672
760
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -697,7 +785,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
697
785
|
#
|
698
786
|
return self.parse_tickers(response, symbols)
|
699
787
|
|
700
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
788
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
701
789
|
#
|
702
790
|
# fetchTrades(public)
|
703
791
|
#
|
@@ -781,7 +869,9 @@ class latoken(Exchange, ImplicitAPI):
|
|
781
869
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
782
870
|
"""
|
783
871
|
get the list of most recent trades for a particular symbol
|
784
|
-
|
872
|
+
|
873
|
+
https://api.latoken.com/doc/v2/#tag/Trade/operation/getTradesByPair
|
874
|
+
|
785
875
|
:param str symbol: unified symbol of the market to fetch trades for
|
786
876
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
787
877
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -790,7 +880,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
790
880
|
"""
|
791
881
|
await self.load_markets()
|
792
882
|
market = self.market(symbol)
|
793
|
-
request = {
|
883
|
+
request: dict = {
|
794
884
|
'currency': market['baseId'],
|
795
885
|
'quote': market['quoteId'],
|
796
886
|
# 'from': str(since), # milliseconds
|
@@ -808,11 +898,13 @@ class latoken(Exchange, ImplicitAPI):
|
|
808
898
|
#
|
809
899
|
return self.parse_trades(response, market, since, limit)
|
810
900
|
|
811
|
-
async def fetch_trading_fee(self, symbol: str, params={}):
|
901
|
+
async def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
812
902
|
"""
|
813
903
|
fetch the trading fees for a market
|
814
|
-
|
815
|
-
|
904
|
+
|
905
|
+
https://api.latoken.com/doc/v2/#tag/Trade/operation/getFeeByPair
|
906
|
+
https://api.latoken.com/doc/v2/#tag/Trade/operation/getAuthFeeByPair
|
907
|
+
|
816
908
|
:param str symbol: unified market symbol
|
817
909
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
818
910
|
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
|
@@ -831,7 +923,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
831
923
|
async def fetch_public_trading_fee(self, symbol: str, params={}):
|
832
924
|
await self.load_markets()
|
833
925
|
market = self.market(symbol)
|
834
|
-
request = {
|
926
|
+
request: dict = {
|
835
927
|
'currency': market['baseId'],
|
836
928
|
'quote': market['quoteId'],
|
837
929
|
}
|
@@ -849,12 +941,14 @@ class latoken(Exchange, ImplicitAPI):
|
|
849
941
|
'symbol': market['symbol'],
|
850
942
|
'maker': self.safe_number(response, 'makerFee'),
|
851
943
|
'taker': self.safe_number(response, 'takerFee'),
|
944
|
+
'percentage': None,
|
945
|
+
'tierBased': None,
|
852
946
|
}
|
853
947
|
|
854
948
|
async def fetch_private_trading_fee(self, symbol: str, params={}):
|
855
949
|
await self.load_markets()
|
856
950
|
market = self.market(symbol)
|
857
|
-
request = {
|
951
|
+
request: dict = {
|
858
952
|
'currency': market['baseId'],
|
859
953
|
'quote': market['quoteId'],
|
860
954
|
}
|
@@ -872,13 +966,17 @@ class latoken(Exchange, ImplicitAPI):
|
|
872
966
|
'symbol': market['symbol'],
|
873
967
|
'maker': self.safe_number(response, 'makerFee'),
|
874
968
|
'taker': self.safe_number(response, 'takerFee'),
|
969
|
+
'percentage': None,
|
970
|
+
'tierBased': None,
|
875
971
|
}
|
876
972
|
|
877
973
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
878
974
|
"""
|
879
975
|
fetch all trades made by the user
|
880
|
-
|
881
|
-
|
976
|
+
|
977
|
+
https://api.latoken.com/doc/v2/#tag/Trade/operation/getTradesByTrader
|
978
|
+
https://api.latoken.com/doc/v2/#tag/Trade/operation/getTradesByAssetAndTrader
|
979
|
+
|
882
980
|
:param str symbol: unified market symbol
|
883
981
|
:param int [since]: the earliest time in ms to fetch trades for
|
884
982
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -886,7 +984,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
886
984
|
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
887
985
|
"""
|
888
986
|
await self.load_markets()
|
889
|
-
request = {
|
987
|
+
request: dict = {
|
890
988
|
# 'currency': market['baseId'],
|
891
989
|
# 'quote': market['quoteId'],
|
892
990
|
# 'from': self.milliseconds(),
|
@@ -923,8 +1021,8 @@ class latoken(Exchange, ImplicitAPI):
|
|
923
1021
|
#
|
924
1022
|
return self.parse_trades(response, market, since, limit)
|
925
1023
|
|
926
|
-
def parse_order_status(self, status):
|
927
|
-
statuses = {
|
1024
|
+
def parse_order_status(self, status: Str):
|
1025
|
+
statuses: dict = {
|
928
1026
|
'ORDER_STATUS_PLACED': 'open',
|
929
1027
|
'ORDER_STATUS_CLOSED': 'closed',
|
930
1028
|
'ORDER_STATUS_CANCELLED': 'canceled',
|
@@ -932,21 +1030,21 @@ class latoken(Exchange, ImplicitAPI):
|
|
932
1030
|
return self.safe_string(statuses, status, status)
|
933
1031
|
|
934
1032
|
def parse_order_type(self, status):
|
935
|
-
statuses = {
|
1033
|
+
statuses: dict = {
|
936
1034
|
'ORDER_TYPE_MARKET': 'market',
|
937
1035
|
'ORDER_TYPE_LIMIT': 'limit',
|
938
1036
|
}
|
939
1037
|
return self.safe_string(statuses, status, status)
|
940
1038
|
|
941
|
-
def parse_time_in_force(self, timeInForce):
|
942
|
-
timeInForces = {
|
1039
|
+
def parse_time_in_force(self, timeInForce: Str):
|
1040
|
+
timeInForces: dict = {
|
943
1041
|
'ORDER_CONDITION_GOOD_TILL_CANCELLED': 'GTC',
|
944
1042
|
'ORDER_CONDITION_IMMEDIATE_OR_CANCEL': 'IOC',
|
945
1043
|
'ORDER_CONDITION_FILL_OR_KILL': 'FOK',
|
946
1044
|
}
|
947
1045
|
return self.safe_string(timeInForces, timeInForce, timeInForce)
|
948
1046
|
|
949
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
1047
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
950
1048
|
#
|
951
1049
|
# createOrder
|
952
1050
|
#
|
@@ -1021,7 +1119,6 @@ class latoken(Exchange, ImplicitAPI):
|
|
1021
1119
|
status = 'open'
|
1022
1120
|
clientOrderId = self.safe_string(order, 'clientOrderId')
|
1023
1121
|
timeInForce = self.parse_time_in_force(self.safe_string(order, 'condition'))
|
1024
|
-
triggerPrice = self.safe_string(order, 'stopPrice')
|
1025
1122
|
return self.safe_order({
|
1026
1123
|
'id': id,
|
1027
1124
|
'clientOrderId': clientOrderId,
|
@@ -1036,8 +1133,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1036
1133
|
'postOnly': None,
|
1037
1134
|
'side': side,
|
1038
1135
|
'price': price,
|
1039
|
-
'
|
1040
|
-
'triggerPrice': triggerPrice,
|
1136
|
+
'triggerPrice': self.safe_string(order, 'stopPrice'),
|
1041
1137
|
'cost': cost,
|
1042
1138
|
'amount': amount,
|
1043
1139
|
'filled': filled,
|
@@ -1050,8 +1146,10 @@ class latoken(Exchange, ImplicitAPI):
|
|
1050
1146
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1051
1147
|
"""
|
1052
1148
|
fetch all unfilled currently open orders
|
1053
|
-
|
1054
|
-
|
1149
|
+
|
1150
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/getMyActiveOrdersByPair
|
1151
|
+
https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyActiveStopOrdersByPair # stop
|
1152
|
+
|
1055
1153
|
:param str symbol: unified market symbol
|
1056
1154
|
:param int [since]: the earliest time in ms to fetch open orders for
|
1057
1155
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
@@ -1067,7 +1165,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1067
1165
|
params = self.omit(params, 'stop')
|
1068
1166
|
# privateGetAuthOrderActive doesn't work even though its listed at https://api.latoken.com/doc/v2/#tag/Order/operation/getMyActiveOrders
|
1069
1167
|
market = self.market(symbol)
|
1070
|
-
request = {
|
1168
|
+
request: dict = {
|
1071
1169
|
'currency': market['baseId'],
|
1072
1170
|
'quote': market['quoteId'],
|
1073
1171
|
}
|
@@ -1102,10 +1200,12 @@ class latoken(Exchange, ImplicitAPI):
|
|
1102
1200
|
async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1103
1201
|
"""
|
1104
1202
|
fetches information on multiple orders made by the user
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1203
|
+
|
1204
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/getMyOrders
|
1205
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/getMyOrdersByPair
|
1206
|
+
https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyStopOrders # stop
|
1207
|
+
https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyStopOrdersByPair # stop
|
1208
|
+
|
1109
1209
|
:param str symbol: unified market symbol of the market orders were made in
|
1110
1210
|
:param int [since]: the earliest time in ms to fetch orders for
|
1111
1211
|
:param int [limit]: the maximum number of order structures to retrieve
|
@@ -1114,7 +1214,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1114
1214
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1115
1215
|
"""
|
1116
1216
|
await self.load_markets()
|
1117
|
-
request = {
|
1217
|
+
request: dict = {
|
1118
1218
|
# 'currency': market['baseId'],
|
1119
1219
|
# 'quote': market['quoteId'],
|
1120
1220
|
# 'from': self.milliseconds(),
|
@@ -1166,15 +1266,18 @@ class latoken(Exchange, ImplicitAPI):
|
|
1166
1266
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1167
1267
|
"""
|
1168
1268
|
fetches information on an order made by the user
|
1169
|
-
|
1170
|
-
|
1269
|
+
|
1270
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/getOrderById
|
1271
|
+
https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getStopOrderById
|
1272
|
+
|
1273
|
+
:param str id: order id
|
1171
1274
|
:param str [symbol]: not used by latoken fetchOrder
|
1172
1275
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1173
1276
|
:param boolean [params.trigger]: True if fetching a trigger order
|
1174
1277
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1175
1278
|
"""
|
1176
1279
|
await self.load_markets()
|
1177
|
-
request = {
|
1280
|
+
request: dict = {
|
1178
1281
|
'id': id,
|
1179
1282
|
}
|
1180
1283
|
isTrigger = self.safe_value_2(params, 'trigger', 'stop')
|
@@ -1209,17 +1312,19 @@ class latoken(Exchange, ImplicitAPI):
|
|
1209
1312
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
1210
1313
|
"""
|
1211
1314
|
create a trade order
|
1212
|
-
|
1213
|
-
|
1315
|
+
|
1316
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/placeOrder
|
1317
|
+
https://api.latoken.com/doc/v2/#tag/StopOrder/operation/placeStopOrder # stop
|
1318
|
+
|
1214
1319
|
:param str symbol: unified symbol of the market to create an order in
|
1215
1320
|
:param str type: 'market' or 'limit'
|
1216
1321
|
:param str side: 'buy' or 'sell'
|
1217
1322
|
:param float amount: how much of currency you want to trade in units of base currency
|
1218
|
-
:param float [price]: the price at which the order is to be
|
1323
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1219
1324
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1220
1325
|
:param float [params.triggerPrice]: the price at which a trigger order is triggered at
|
1221
|
-
|
1222
|
-
|
1326
|
+
|
1327
|
+
EXCHANGE SPECIFIC PARAMETERS
|
1223
1328
|
:param str [params.condition]: "GTC", "IOC", or "FOK"
|
1224
1329
|
:param str [params.clientOrderId]: [0 .. 50] characters, client's custom order id(free field for your convenience)
|
1225
1330
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1227,7 +1332,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1227
1332
|
await self.load_markets()
|
1228
1333
|
market = self.market(symbol)
|
1229
1334
|
uppercaseType = type.upper()
|
1230
|
-
request = {
|
1335
|
+
request: dict = {
|
1231
1336
|
'baseCurrency': market['baseId'],
|
1232
1337
|
'quoteCurrency': market['quoteId'],
|
1233
1338
|
'side': side.upper(), # "BUY", "BID", "SELL", "ASK"
|
@@ -1266,8 +1371,10 @@ class latoken(Exchange, ImplicitAPI):
|
|
1266
1371
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
1267
1372
|
"""
|
1268
1373
|
cancels an open order
|
1269
|
-
|
1270
|
-
|
1374
|
+
|
1375
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/cancelOrder
|
1376
|
+
https://api.latoken.com/doc/v2/#tag/StopOrder/operation/cancelStopOrder # stop
|
1377
|
+
|
1271
1378
|
:param str id: order id
|
1272
1379
|
:param str symbol: not used by latoken cancelOrder()
|
1273
1380
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -1275,7 +1382,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1275
1382
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1276
1383
|
"""
|
1277
1384
|
await self.load_markets()
|
1278
|
-
request = {
|
1385
|
+
request: dict = {
|
1279
1386
|
'id': id,
|
1280
1387
|
}
|
1281
1388
|
isTrigger = self.safe_value_2(params, 'trigger', 'stop')
|
@@ -1299,15 +1406,17 @@ class latoken(Exchange, ImplicitAPI):
|
|
1299
1406
|
async def cancel_all_orders(self, symbol: Str = None, params={}):
|
1300
1407
|
"""
|
1301
1408
|
cancel all open orders in a market
|
1302
|
-
|
1303
|
-
|
1409
|
+
|
1410
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/cancelAllOrders
|
1411
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/cancelAllOrdersByPair
|
1412
|
+
|
1304
1413
|
:param str symbol: unified market symbol of the market to cancel orders in
|
1305
1414
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1306
1415
|
:param boolean [params.trigger]: True if cancelling trigger orders
|
1307
1416
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1308
1417
|
"""
|
1309
1418
|
await self.load_markets()
|
1310
|
-
request = {
|
1419
|
+
request: dict = {
|
1311
1420
|
# 'currency': market['baseId'],
|
1312
1421
|
# 'quote': market['quoteId'],
|
1313
1422
|
}
|
@@ -1334,13 +1443,19 @@ class latoken(Exchange, ImplicitAPI):
|
|
1334
1443
|
# "status":"SUCCESS"
|
1335
1444
|
# }
|
1336
1445
|
#
|
1337
|
-
return
|
1446
|
+
return [
|
1447
|
+
self.safe_order({
|
1448
|
+
'info': response,
|
1449
|
+
}),
|
1450
|
+
]
|
1338
1451
|
|
1339
1452
|
async def fetch_transactions(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
1340
1453
|
"""
|
1341
|
-
|
1454
|
+
@deprecated
|
1342
1455
|
use fetchDepositsWithdrawals instead
|
1343
|
-
|
1456
|
+
|
1457
|
+
https://api.latoken.com/doc/v2/#tag/Transaction/operation/getUserTransactions
|
1458
|
+
|
1344
1459
|
:param str code: unified currency code for the currency of the transactions, default is None
|
1345
1460
|
:param int [since]: timestamp in ms of the earliest transaction, default is None
|
1346
1461
|
:param int [limit]: max number of transactions to return, default is None
|
@@ -1348,7 +1463,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1348
1463
|
:returns dict: a list of `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1349
1464
|
"""
|
1350
1465
|
await self.load_markets()
|
1351
|
-
request = {
|
1466
|
+
request: dict = {
|
1352
1467
|
# 'page': '1',
|
1353
1468
|
# 'size': 100,
|
1354
1469
|
}
|
@@ -1382,10 +1497,10 @@ class latoken(Exchange, ImplicitAPI):
|
|
1382
1497
|
currency = None
|
1383
1498
|
if code is not None:
|
1384
1499
|
currency = self.currency(code)
|
1385
|
-
content = self.
|
1500
|
+
content = self.safe_list(response, 'content', [])
|
1386
1501
|
return self.parse_transactions(content, currency, since, limit)
|
1387
1502
|
|
1388
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
1503
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1389
1504
|
#
|
1390
1505
|
# {
|
1391
1506
|
# "id":"fbf7d0d1-2629-4ad8-9def-7a1dba423362",
|
@@ -1447,25 +1562,28 @@ class latoken(Exchange, ImplicitAPI):
|
|
1447
1562
|
'fee': fee,
|
1448
1563
|
}
|
1449
1564
|
|
1450
|
-
def parse_transaction_status(self, status):
|
1451
|
-
statuses = {
|
1565
|
+
def parse_transaction_status(self, status: Str):
|
1566
|
+
statuses: dict = {
|
1452
1567
|
'TRANSACTION_STATUS_CONFIRMED': 'ok',
|
1453
1568
|
'TRANSACTION_STATUS_EXECUTED': 'ok',
|
1569
|
+
'TRANSACTION_STATUS_CHECKING': 'pending',
|
1454
1570
|
'TRANSACTION_STATUS_CANCELLED': 'canceled',
|
1455
1571
|
}
|
1456
1572
|
return self.safe_string(statuses, status, status)
|
1457
1573
|
|
1458
1574
|
def parse_transaction_type(self, type):
|
1459
|
-
types = {
|
1575
|
+
types: dict = {
|
1460
1576
|
'TRANSACTION_TYPE_DEPOSIT': 'deposit',
|
1461
1577
|
'TRANSACTION_TYPE_WITHDRAWAL': 'withdrawal',
|
1462
1578
|
}
|
1463
1579
|
return self.safe_string(types, type, type)
|
1464
1580
|
|
1465
|
-
async def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
1581
|
+
async def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[TransferEntry]:
|
1466
1582
|
"""
|
1467
1583
|
fetch a history of internal transfers made on an account
|
1468
|
-
|
1584
|
+
|
1585
|
+
https://api.latoken.com/doc/v2/#tag/Transfer/operation/getUsersTransfers
|
1586
|
+
|
1469
1587
|
:param str code: unified currency code of the currency transferred
|
1470
1588
|
:param int [since]: the earliest time in ms to fetch transfers for
|
1471
1589
|
:param int [limit]: the maximum number of transfers structures to retrieve
|
@@ -1506,15 +1624,17 @@ class latoken(Exchange, ImplicitAPI):
|
|
1506
1624
|
# "hasContent": True
|
1507
1625
|
# }
|
1508
1626
|
#
|
1509
|
-
transfers = self.
|
1627
|
+
transfers = self.safe_list(response, 'content', [])
|
1510
1628
|
return self.parse_transfers(transfers, currency, since, limit)
|
1511
1629
|
|
1512
1630
|
async def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
|
1513
1631
|
"""
|
1514
1632
|
transfer currency internally between wallets on the same account
|
1515
|
-
|
1516
|
-
|
1517
|
-
|
1633
|
+
|
1634
|
+
https://api.latoken.com/doc/v2/#tag/Transfer/operation/transferByEmail
|
1635
|
+
https://api.latoken.com/doc/v2/#tag/Transfer/operation/transferById
|
1636
|
+
https://api.latoken.com/doc/v2/#tag/Transfer/operation/transferByPhone
|
1637
|
+
|
1518
1638
|
:param str code: unified currency code
|
1519
1639
|
:param float amount: amount to transfer
|
1520
1640
|
:param str fromAccount: account to transfer from
|
@@ -1524,7 +1644,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1524
1644
|
"""
|
1525
1645
|
await self.load_markets()
|
1526
1646
|
currency = self.currency(code)
|
1527
|
-
request = {
|
1647
|
+
request: dict = {
|
1528
1648
|
'currency': currency['id'],
|
1529
1649
|
'recipient': toAccount,
|
1530
1650
|
'value': self.currency_to_precision(code, amount),
|
@@ -1560,7 +1680,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1560
1680
|
#
|
1561
1681
|
return self.parse_transfer(response)
|
1562
1682
|
|
1563
|
-
def parse_transfer(self, transfer, currency: Currency = None):
|
1683
|
+
def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
|
1564
1684
|
#
|
1565
1685
|
# {
|
1566
1686
|
# "id": "e6fc4ace-7750-44e4-b7e9-6af038ac7107",
|
@@ -1598,8 +1718,8 @@ class latoken(Exchange, ImplicitAPI):
|
|
1598
1718
|
'status': self.parse_transfer_status(status),
|
1599
1719
|
}
|
1600
1720
|
|
1601
|
-
def parse_transfer_status(self, status):
|
1602
|
-
statuses = {
|
1721
|
+
def parse_transfer_status(self, status: Str) -> Str:
|
1722
|
+
statuses: dict = {
|
1603
1723
|
'TRANSFER_STATUS_COMPLETED': 'ok',
|
1604
1724
|
'TRANSFER_STATUS_PENDING': 'pending',
|
1605
1725
|
'TRANSFER_STATUS_REJECTED': 'failed',
|
@@ -1631,7 +1751,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1631
1751
|
url = self.urls['api']['rest'] + requestString
|
1632
1752
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1633
1753
|
|
1634
|
-
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1754
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1635
1755
|
if not response:
|
1636
1756
|
return None
|
1637
1757
|
#
|