ccxt 4.2.77__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 +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 +3104 -880
- 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 +1513 -563
- 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 +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 +404 -109
- ccxt/async_support/deribit.py +557 -323
- 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 +1472 -463
- 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 +1633 -268
- 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 +917 -357
- 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 +1776 -454
- 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 +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 +3104 -880
- 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 +1513 -563
- 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 +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 +404 -109
- ccxt/deribit.py +557 -323
- ccxt/digifinex.py +340 -223
- ccxt/ellipx.py +1826 -0
- ccxt/exmo.py +259 -128
- ccxt/gate.py +1472 -463
- 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 +1632 -268
- 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 +917 -357
- 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 +1776 -454
- 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 +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 +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 +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.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.77.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.77.dist-info/METADATA +0 -626
- ccxt-4.2.77.dist-info/RECORD +0 -534
- {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/async_support/yobit.py
CHANGED
@@ -5,10 +5,12 @@
|
|
5
5
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.yobit import ImplicitAPI
|
8
|
+
import asyncio
|
8
9
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
|
10
|
+
from ccxt.base.types import Balances, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
|
10
11
|
from typing import List
|
11
12
|
from ccxt.base.errors import ExchangeError
|
13
|
+
from ccxt.base.errors import AuthenticationError
|
12
14
|
from ccxt.base.errors import ArgumentsRequired
|
13
15
|
from ccxt.base.errors import InsufficientFunds
|
14
16
|
from ccxt.base.errors import InvalidOrder
|
@@ -17,7 +19,6 @@ from ccxt.base.errors import DDoSProtection
|
|
17
19
|
from ccxt.base.errors import RateLimitExceeded
|
18
20
|
from ccxt.base.errors import ExchangeNotAvailable
|
19
21
|
from ccxt.base.errors import InvalidNonce
|
20
|
-
from ccxt.base.errors import AuthenticationError
|
21
22
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
22
23
|
from ccxt.base.precise import Precise
|
23
24
|
|
@@ -51,35 +52,60 @@ class yobit(Exchange, ImplicitAPI):
|
|
51
52
|
'createStopMarketOrder': False,
|
52
53
|
'createStopOrder': False,
|
53
54
|
'fetchBalance': True,
|
55
|
+
'fetchBorrowInterest': False,
|
56
|
+
'fetchBorrowRate': False,
|
54
57
|
'fetchBorrowRateHistories': False,
|
55
58
|
'fetchBorrowRateHistory': False,
|
59
|
+
'fetchBorrowRates': False,
|
60
|
+
'fetchBorrowRatesPerSymbol': False,
|
56
61
|
'fetchCrossBorrowRate': False,
|
57
62
|
'fetchCrossBorrowRates': False,
|
58
63
|
'fetchDepositAddress': True,
|
64
|
+
'fetchDepositAddresses': False,
|
65
|
+
'fetchDepositAddressesByNetwork': False,
|
59
66
|
'fetchDeposits': False,
|
60
67
|
'fetchFundingHistory': False,
|
68
|
+
'fetchFundingInterval': False,
|
69
|
+
'fetchFundingIntervals': False,
|
61
70
|
'fetchFundingRate': False,
|
62
71
|
'fetchFundingRateHistory': False,
|
63
72
|
'fetchFundingRates': False,
|
73
|
+
'fetchGreeks': False,
|
64
74
|
'fetchIndexOHLCV': False,
|
65
75
|
'fetchIsolatedBorrowRate': False,
|
66
76
|
'fetchIsolatedBorrowRates': False,
|
77
|
+
'fetchIsolatedPositions': False,
|
67
78
|
'fetchLeverage': False,
|
79
|
+
'fetchLeverages': False,
|
68
80
|
'fetchLeverageTiers': False,
|
81
|
+
'fetchLiquidations': False,
|
82
|
+
'fetchMarginAdjustmentHistory': False,
|
69
83
|
'fetchMarginMode': False,
|
84
|
+
'fetchMarginModes': False,
|
85
|
+
'fetchMarketLeverageTiers': False,
|
70
86
|
'fetchMarkets': True,
|
71
87
|
'fetchMarkOHLCV': False,
|
88
|
+
'fetchMarkPrices': False,
|
89
|
+
'fetchMyLiquidations': False,
|
90
|
+
'fetchMySettlementHistory': False,
|
72
91
|
'fetchMyTrades': True,
|
92
|
+
'fetchOpenInterest': False,
|
73
93
|
'fetchOpenInterestHistory': False,
|
74
94
|
'fetchOpenOrders': True,
|
95
|
+
'fetchOption': False,
|
96
|
+
'fetchOptionChain': False,
|
75
97
|
'fetchOrder': True,
|
76
98
|
'fetchOrderBook': True,
|
77
99
|
'fetchOrderBooks': True,
|
78
100
|
'fetchPosition': False,
|
101
|
+
'fetchPositionHistory': False,
|
79
102
|
'fetchPositionMode': False,
|
80
103
|
'fetchPositions': False,
|
104
|
+
'fetchPositionsForSymbol': False,
|
105
|
+
'fetchPositionsHistory': False,
|
81
106
|
'fetchPositionsRisk': False,
|
82
107
|
'fetchPremiumIndexOHLCV': False,
|
108
|
+
'fetchSettlementHistory': False,
|
83
109
|
'fetchTicker': True,
|
84
110
|
'fetchTickers': True,
|
85
111
|
'fetchTrades': True,
|
@@ -88,9 +114,14 @@ class yobit(Exchange, ImplicitAPI):
|
|
88
114
|
'fetchTransactions': False,
|
89
115
|
'fetchTransfer': False,
|
90
116
|
'fetchTransfers': False,
|
117
|
+
'fetchUnderlyingAssets': False,
|
118
|
+
'fetchVolatilityHistory': False,
|
91
119
|
'fetchWithdrawals': False,
|
92
120
|
'reduceMargin': False,
|
121
|
+
'repayCrossMargin': False,
|
122
|
+
'repayIsolatedMargin': False,
|
93
123
|
'setLeverage': False,
|
124
|
+
'setMargin': False,
|
94
125
|
'setMarginMode': False,
|
95
126
|
'setPositionMode': False,
|
96
127
|
'transfer': False,
|
@@ -245,6 +276,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
245
276
|
'XIN': 'XINCoin',
|
246
277
|
'XMT': 'SummitCoin',
|
247
278
|
'XRA': 'Ratecoin',
|
279
|
+
'BCHN': 'BSV',
|
248
280
|
},
|
249
281
|
'options': {
|
250
282
|
'maxUrlLength': 2048,
|
@@ -294,7 +326,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
294
326
|
def parse_balance(self, response) -> Balances:
|
295
327
|
balances = self.safe_dict(response, 'return', {})
|
296
328
|
timestamp = self.safe_integer(balances, 'server_time')
|
297
|
-
result = {
|
329
|
+
result: dict = {
|
298
330
|
'info': response,
|
299
331
|
'timestamp': timestamp,
|
300
332
|
'datetime': self.iso8601(timestamp),
|
@@ -313,7 +345,9 @@ class yobit(Exchange, ImplicitAPI):
|
|
313
345
|
|
314
346
|
async def fetch_balance(self, params={}) -> Balances:
|
315
347
|
"""
|
316
|
-
|
348
|
+
|
349
|
+
https://yobit.net/en/api
|
350
|
+
|
317
351
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
318
352
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
319
353
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
@@ -347,9 +381,11 @@ class yobit(Exchange, ImplicitAPI):
|
|
347
381
|
#
|
348
382
|
return self.parse_balance(response)
|
349
383
|
|
350
|
-
async def fetch_markets(self, params={}):
|
384
|
+
async def fetch_markets(self, params={}) -> List[Market]:
|
351
385
|
"""
|
352
|
-
|
386
|
+
|
387
|
+
https://yobit.net/en/api
|
388
|
+
|
353
389
|
retrieves data on all markets for yobit
|
354
390
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
355
391
|
:returns dict[]: an array of objects representing market data
|
@@ -443,7 +479,9 @@ class yobit(Exchange, ImplicitAPI):
|
|
443
479
|
|
444
480
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
445
481
|
"""
|
446
|
-
|
482
|
+
|
483
|
+
https://yobit.net/en/api
|
484
|
+
|
447
485
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
448
486
|
:param str symbol: unified symbol of the market to fetch the order book for
|
449
487
|
:param int [limit]: the maximum amount of order book entries to return
|
@@ -452,7 +490,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
452
490
|
"""
|
453
491
|
await self.load_markets()
|
454
492
|
market = self.market(symbol)
|
455
|
-
request = {
|
493
|
+
request: dict = {
|
456
494
|
'pair': market['id'],
|
457
495
|
}
|
458
496
|
if limit is not None:
|
@@ -466,7 +504,9 @@ class yobit(Exchange, ImplicitAPI):
|
|
466
504
|
|
467
505
|
async def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}):
|
468
506
|
"""
|
469
|
-
|
507
|
+
|
508
|
+
https://yobit.net/en/api
|
509
|
+
|
470
510
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
|
471
511
|
:param str[]|None symbols: list of unified market symbols, all symbols fetched if None, default is None
|
472
512
|
:param int [limit]: max number of entries per orderbook to return, default is None
|
@@ -484,14 +524,14 @@ class yobit(Exchange, ImplicitAPI):
|
|
484
524
|
else:
|
485
525
|
ids = self.market_ids(symbols)
|
486
526
|
ids = '-'.join(ids)
|
487
|
-
request = {
|
527
|
+
request: dict = {
|
488
528
|
'pair': ids,
|
489
529
|
# 'ignore_invalid': True,
|
490
530
|
}
|
491
531
|
if limit is not None:
|
492
532
|
request['limit'] = limit
|
493
533
|
response = await self.publicGetDepthPair(self.extend(request, params))
|
494
|
-
result = {}
|
534
|
+
result: dict = {}
|
495
535
|
ids = list(response.keys())
|
496
536
|
for i in range(0, len(ids)):
|
497
537
|
id = ids[i]
|
@@ -499,7 +539,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
499
539
|
result[symbol] = self.parse_order_book(response[id], symbol)
|
500
540
|
return result
|
501
541
|
|
502
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
542
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
503
543
|
#
|
504
544
|
# {
|
505
545
|
# "high": 0.03497582,
|
@@ -538,36 +578,12 @@ class yobit(Exchange, ImplicitAPI):
|
|
538
578
|
'info': ticker,
|
539
579
|
}, market)
|
540
580
|
|
541
|
-
async def
|
542
|
-
|
543
|
-
:see: https://yobit.net/en/api
|
544
|
-
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
545
|
-
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
546
|
-
:param dict [params]: extra parameters specific to the exchange API endpoint
|
547
|
-
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
548
|
-
"""
|
549
|
-
if symbols is None:
|
550
|
-
raise ArgumentsRequired(self.id + ' fetchTickers() requires "symbols" argument')
|
551
|
-
await self.load_markets()
|
552
|
-
symbols = self.market_symbols(symbols)
|
553
|
-
ids = None
|
554
|
-
if symbols is None:
|
555
|
-
ids = self.ids
|
556
|
-
else:
|
557
|
-
ids = self.market_ids(symbols)
|
558
|
-
idsLength = len(ids)
|
559
|
-
idsString = '-'.join(ids)
|
560
|
-
maxLength = self.safe_integer(self.options, 'maxUrlLength', 2048)
|
561
|
-
# max URL length is 2048 symbols, including http schema, hostname, tld, etc...
|
562
|
-
lenghtOfBaseUrl = 30 # the url including api-base and endpoint dir is 30 chars
|
563
|
-
actualLength = len(idsString) + lenghtOfBaseUrl
|
564
|
-
if actualLength > maxLength:
|
565
|
-
raise ArgumentsRequired(self.id + ' fetchTickers() is being requested for ' + str(idsLength) + ' markets(which has an URL length of ' + str(actualLength) + ' characters), but it exceedes max URL length(' + str(maxLength) + '), please pass limisted symbols array to fetchTickers to fit in one request')
|
566
|
-
request = {
|
581
|
+
async def fetch_tickers_helper(self, idsString: str, params={}) -> Tickers:
|
582
|
+
request: dict = {
|
567
583
|
'pair': idsString,
|
568
584
|
}
|
569
585
|
tickers = await self.publicGetTickerPair(self.extend(request, params))
|
570
|
-
result = {}
|
586
|
+
result: dict = {}
|
571
587
|
keys = list(tickers.keys())
|
572
588
|
for k in range(0, len(keys)):
|
573
589
|
id = keys[k]
|
@@ -575,11 +591,61 @@ class yobit(Exchange, ImplicitAPI):
|
|
575
591
|
market = self.safe_market(id)
|
576
592
|
symbol = market['symbol']
|
577
593
|
result[symbol] = self.parse_ticker(ticker, market)
|
578
|
-
return
|
594
|
+
return result
|
595
|
+
|
596
|
+
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
597
|
+
"""
|
598
|
+
|
599
|
+
https://yobit.net/en/api
|
600
|
+
|
601
|
+
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
602
|
+
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
603
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
604
|
+
:param dict [params.all]: you can set to `true` for convenience to fetch all tickers from self exchange by sending multiple requests
|
605
|
+
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
606
|
+
"""
|
607
|
+
allSymbols = None
|
608
|
+
allSymbols, params = self.handle_param_bool(params, 'all', False)
|
609
|
+
if symbols is None and not allSymbols:
|
610
|
+
raise ArgumentsRequired(self.id + ' fetchTickers() requires "symbols" argument or use `params["all"] = True` to send multiple requests for all markets')
|
611
|
+
await self.load_markets()
|
612
|
+
promises = []
|
613
|
+
maxLength = self.safe_integer(self.options, 'maxUrlLength', 2048)
|
614
|
+
# max URL length is 2048 symbols, including http schema, hostname, tld, etc...
|
615
|
+
lenghtOfBaseUrl = 40 # safe space for the url including api-base and endpoint dir is 30 chars
|
616
|
+
if allSymbols:
|
617
|
+
symbols = self.symbols
|
618
|
+
ids = ''
|
619
|
+
for i in range(0, len(self.ids)):
|
620
|
+
id = self.ids[i]
|
621
|
+
prefix = '' if (ids == '') else '-'
|
622
|
+
ids += prefix + id
|
623
|
+
if len(ids) > maxLength:
|
624
|
+
promises.append(self.fetch_tickers_helper(ids, params))
|
625
|
+
ids = ''
|
626
|
+
if ids != '':
|
627
|
+
promises.append(self.fetch_tickers_helper(ids, params))
|
628
|
+
else:
|
629
|
+
symbols = self.market_symbols(symbols)
|
630
|
+
ids = self.market_ids(symbols)
|
631
|
+
idsLength: number = len(ids)
|
632
|
+
idsString = '-'.join(ids)
|
633
|
+
actualLength = len(idsString) + lenghtOfBaseUrl
|
634
|
+
if actualLength > maxLength:
|
635
|
+
raise ArgumentsRequired(self.id + ' fetchTickers() is being requested for ' + str(idsLength) + ' markets(which has an URL length of ' + str(actualLength) + ' characters), but it exceedes max URL length(' + str(maxLength) + '), please pass limisted symbols array to fetchTickers to fit in one request')
|
636
|
+
promises.append(self.fetch_tickers_helper(idsString, params))
|
637
|
+
resultAll = await asyncio.gather(*promises)
|
638
|
+
finalResult = {}
|
639
|
+
for i in range(0, len(resultAll)):
|
640
|
+
result = self.filter_by_array_tickers(resultAll[i], 'symbol', symbols)
|
641
|
+
finalResult = self.extend(finalResult, result)
|
642
|
+
return finalResult
|
579
643
|
|
580
644
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
581
645
|
"""
|
582
|
-
|
646
|
+
|
647
|
+
https://yobit.net/en/api
|
648
|
+
|
583
649
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
584
650
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
585
651
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -588,7 +654,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
588
654
|
tickers = await self.fetch_tickers([symbol], params)
|
589
655
|
return tickers[symbol]
|
590
656
|
|
591
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
657
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
592
658
|
#
|
593
659
|
# fetchTrades(public)
|
594
660
|
#
|
@@ -664,7 +730,9 @@ class yobit(Exchange, ImplicitAPI):
|
|
664
730
|
|
665
731
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
666
732
|
"""
|
667
|
-
|
733
|
+
|
734
|
+
https://yobit.net/en/api
|
735
|
+
|
668
736
|
get the list of most recent trades for a particular symbol
|
669
737
|
:param str symbol: unified symbol of the market to fetch trades for
|
670
738
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
@@ -674,7 +742,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
674
742
|
"""
|
675
743
|
await self.load_markets()
|
676
744
|
market = self.market(symbol)
|
677
|
-
request = {
|
745
|
+
request: dict = {
|
678
746
|
'pair': market['id'],
|
679
747
|
}
|
680
748
|
if limit is not None:
|
@@ -700,9 +768,11 @@ class yobit(Exchange, ImplicitAPI):
|
|
700
768
|
result = self.safe_list(response, market['id'], [])
|
701
769
|
return self.parse_trades(result, market, since, limit)
|
702
770
|
|
703
|
-
async def fetch_trading_fees(self, params={}):
|
771
|
+
async def fetch_trading_fees(self, params={}) -> TradingFees:
|
704
772
|
"""
|
705
|
-
|
773
|
+
|
774
|
+
https://yobit.net/en/api
|
775
|
+
|
706
776
|
fetch the trading fees for multiple markets
|
707
777
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
708
778
|
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
|
@@ -730,7 +800,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
730
800
|
#
|
731
801
|
pairs = self.safe_dict(response, 'pairs', {})
|
732
802
|
marketIds = list(pairs.keys())
|
733
|
-
result = {}
|
803
|
+
result: dict = {}
|
734
804
|
for i in range(0, len(marketIds)):
|
735
805
|
marketId = marketIds[i]
|
736
806
|
pair = self.safe_dict(pairs, marketId, {})
|
@@ -751,13 +821,15 @@ class yobit(Exchange, ImplicitAPI):
|
|
751
821
|
|
752
822
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
753
823
|
"""
|
754
|
-
|
824
|
+
|
825
|
+
https://yobit.net/en/api
|
826
|
+
|
755
827
|
create a trade order
|
756
828
|
:param str symbol: unified symbol of the market to create an order in
|
757
829
|
:param str type: must be 'limit'
|
758
830
|
:param str side: 'buy' or 'sell'
|
759
831
|
:param float amount: how much of currency you want to trade in units of base currency
|
760
|
-
:param float [price]: the price at which the order is to be
|
832
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
761
833
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
762
834
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
763
835
|
"""
|
@@ -765,7 +837,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
765
837
|
raise ExchangeError(self.id + ' createOrder() allows limit orders only')
|
766
838
|
await self.load_markets()
|
767
839
|
market = self.market(symbol)
|
768
|
-
request = {
|
840
|
+
request: dict = {
|
769
841
|
'pair': market['id'],
|
770
842
|
'type': side,
|
771
843
|
'amount': self.amount_to_precision(symbol, amount),
|
@@ -798,7 +870,9 @@ class yobit(Exchange, ImplicitAPI):
|
|
798
870
|
|
799
871
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
800
872
|
"""
|
801
|
-
|
873
|
+
|
874
|
+
https://yobit.net/en/api
|
875
|
+
|
802
876
|
cancels an open order
|
803
877
|
:param str id: order id
|
804
878
|
:param str symbol: not used by yobit cancelOrder()
|
@@ -806,7 +880,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
806
880
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
807
881
|
"""
|
808
882
|
await self.load_markets()
|
809
|
-
request = {
|
883
|
+
request: dict = {
|
810
884
|
'order_id': int(id),
|
811
885
|
}
|
812
886
|
response = await self.privatePostCancelOrder(self.extend(request, params))
|
@@ -832,8 +906,8 @@ class yobit(Exchange, ImplicitAPI):
|
|
832
906
|
result = self.safe_dict(response, 'return', {})
|
833
907
|
return self.parse_order(result)
|
834
908
|
|
835
|
-
def parse_order_status(self, status):
|
836
|
-
statuses = {
|
909
|
+
def parse_order_status(self, status: Str):
|
910
|
+
statuses: dict = {
|
837
911
|
'0': 'open',
|
838
912
|
'1': 'closed',
|
839
913
|
'2': 'canceled',
|
@@ -841,7 +915,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
841
915
|
}
|
842
916
|
return self.safe_string(statuses, status, status)
|
843
917
|
|
844
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
918
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
845
919
|
#
|
846
920
|
# createOrder(private)
|
847
921
|
#
|
@@ -931,7 +1005,6 @@ class yobit(Exchange, ImplicitAPI):
|
|
931
1005
|
'postOnly': None,
|
932
1006
|
'side': side,
|
933
1007
|
'price': price,
|
934
|
-
'stopPrice': None,
|
935
1008
|
'triggerPrice': None,
|
936
1009
|
'cost': None,
|
937
1010
|
'amount': amount,
|
@@ -945,14 +1018,17 @@ class yobit(Exchange, ImplicitAPI):
|
|
945
1018
|
|
946
1019
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
947
1020
|
"""
|
948
|
-
|
1021
|
+
|
1022
|
+
https://yobit.net/en/api
|
1023
|
+
|
949
1024
|
fetches information on an order made by the user
|
1025
|
+
:param str id: order id
|
950
1026
|
:param str symbol: not used by yobit fetchOrder
|
951
1027
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
952
1028
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
953
1029
|
"""
|
954
1030
|
await self.load_markets()
|
955
|
-
request = {
|
1031
|
+
request: dict = {
|
956
1032
|
'order_id': int(id),
|
957
1033
|
}
|
958
1034
|
response = await self.privatePostOrderInfo(self.extend(request, params))
|
@@ -978,7 +1054,9 @@ class yobit(Exchange, ImplicitAPI):
|
|
978
1054
|
|
979
1055
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
980
1056
|
"""
|
981
|
-
|
1057
|
+
|
1058
|
+
https://yobit.net/en/api
|
1059
|
+
|
982
1060
|
fetch all unfilled currently open orders
|
983
1061
|
:param str symbol: unified market symbol
|
984
1062
|
:param int [since]: the earliest time in ms to fetch open orders for
|
@@ -989,7 +1067,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
989
1067
|
if symbol is None:
|
990
1068
|
raise ArgumentsRequired(self.id + ' fetchOpenOrders() requires a symbol argument')
|
991
1069
|
await self.load_markets()
|
992
|
-
request = {}
|
1070
|
+
request: dict = {}
|
993
1071
|
market = None
|
994
1072
|
if symbol is not None:
|
995
1073
|
marketInner = self.market(symbol)
|
@@ -1023,7 +1101,9 @@ class yobit(Exchange, ImplicitAPI):
|
|
1023
1101
|
|
1024
1102
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1025
1103
|
"""
|
1026
|
-
|
1104
|
+
|
1105
|
+
https://yobit.net/en/api
|
1106
|
+
|
1027
1107
|
fetch all trades made by the user
|
1028
1108
|
:param str symbol: unified market symbol
|
1029
1109
|
:param int [since]: the earliest time in ms to fetch trades for
|
@@ -1036,7 +1116,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
1036
1116
|
await self.load_markets()
|
1037
1117
|
market = self.market(symbol)
|
1038
1118
|
# some derived classes use camelcase notation for request fields
|
1039
|
-
request = {
|
1119
|
+
request: dict = {
|
1040
1120
|
# 'from': 123456789, # trade ID, from which the display starts numerical 0(test result: liqui ignores self field)
|
1041
1121
|
# 'count': 1000, # the number of trades for display numerical, default = 1000
|
1042
1122
|
# 'from_id': trade ID, from which the display starts numerical 0
|
@@ -1071,7 +1151,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
1071
1151
|
ids = list(trades.keys())
|
1072
1152
|
result = []
|
1073
1153
|
for i in range(0, len(ids)):
|
1074
|
-
id = ids
|
1154
|
+
id = self.safe_string(ids, i)
|
1075
1155
|
trade = self.parse_trade(self.extend(trades[id], {
|
1076
1156
|
'trade_id': id,
|
1077
1157
|
}), market)
|
@@ -1080,13 +1160,15 @@ class yobit(Exchange, ImplicitAPI):
|
|
1080
1160
|
|
1081
1161
|
async def create_deposit_address(self, code: str, params={}):
|
1082
1162
|
"""
|
1083
|
-
|
1163
|
+
|
1164
|
+
https://yobit.net/en/api
|
1165
|
+
|
1084
1166
|
create a currency deposit address
|
1085
1167
|
:param str code: unified currency code of the currency for the deposit address
|
1086
1168
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1087
1169
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
1088
1170
|
"""
|
1089
|
-
request = {
|
1171
|
+
request: dict = {
|
1090
1172
|
'need_new': 1,
|
1091
1173
|
}
|
1092
1174
|
response = await self.fetch_deposit_address(code, self.extend(request, params))
|
@@ -1099,10 +1181,12 @@ class yobit(Exchange, ImplicitAPI):
|
|
1099
1181
|
'info': response['info'],
|
1100
1182
|
}
|
1101
1183
|
|
1102
|
-
async def fetch_deposit_address(self, code: str, params={}):
|
1184
|
+
async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
1103
1185
|
"""
|
1104
|
-
:see: https://yobit.net/en/api
|
1105
1186
|
fetch the deposit address for a currency associated with self account
|
1187
|
+
|
1188
|
+
https://yobit.net/en/api
|
1189
|
+
|
1106
1190
|
:param str code: unified currency code
|
1107
1191
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1108
1192
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
@@ -1117,7 +1201,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
1117
1201
|
if network != 'ERC20':
|
1118
1202
|
currencyId = currencyId + network.lower()
|
1119
1203
|
params = self.omit(params, 'network')
|
1120
|
-
request = {
|
1204
|
+
request: dict = {
|
1121
1205
|
'coinName': currencyId,
|
1122
1206
|
'need_new': 0,
|
1123
1207
|
}
|
@@ -1125,34 +1209,18 @@ class yobit(Exchange, ImplicitAPI):
|
|
1125
1209
|
address = self.safe_string(response['return'], 'address')
|
1126
1210
|
self.check_address(address)
|
1127
1211
|
return {
|
1128
|
-
'
|
1212
|
+
'info': response,
|
1129
1213
|
'currency': code,
|
1214
|
+
'network': None,
|
1130
1215
|
'address': address,
|
1131
1216
|
'tag': None,
|
1132
|
-
'network': None,
|
1133
|
-
'info': response,
|
1134
|
-
'txid': None,
|
1135
|
-
'type': None,
|
1136
|
-
'amount': None,
|
1137
|
-
'status': None,
|
1138
|
-
'timestamp': None,
|
1139
|
-
'datetime': None,
|
1140
|
-
'addressFrom': None,
|
1141
|
-
'addressTo': None,
|
1142
|
-
'tagFrom': None,
|
1143
|
-
'tagTo': None,
|
1144
|
-
'updated': None,
|
1145
|
-
'comment': None,
|
1146
|
-
'fee': {
|
1147
|
-
'currency': None,
|
1148
|
-
'cost': None,
|
1149
|
-
'rate': None,
|
1150
|
-
},
|
1151
1217
|
}
|
1152
1218
|
|
1153
|
-
async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
1219
|
+
async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
1154
1220
|
"""
|
1155
|
-
|
1221
|
+
|
1222
|
+
https://yobit.net/en/api
|
1223
|
+
|
1156
1224
|
make a withdrawal
|
1157
1225
|
:param str code: unified currency code
|
1158
1226
|
:param float amount: the amount to withdraw
|
@@ -1165,7 +1233,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
1165
1233
|
self.check_address(address)
|
1166
1234
|
await self.load_markets()
|
1167
1235
|
currency = self.currency(code)
|
1168
|
-
request = {
|
1236
|
+
request: dict = {
|
1169
1237
|
'coinName': currency['id'],
|
1170
1238
|
'amount': amount,
|
1171
1239
|
'address': address,
|
@@ -1233,7 +1301,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
1233
1301
|
}
|
1234
1302
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1235
1303
|
|
1236
|
-
def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1304
|
+
def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1237
1305
|
if response is None:
|
1238
1306
|
return None # fallback to default error handler
|
1239
1307
|
if 'success' in response:
|