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