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/poloniex.py
CHANGED
@@ -6,9 +6,10 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.poloniex import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
|
+
from ccxt.base.errors import AuthenticationError
|
12
13
|
from ccxt.base.errors import PermissionDenied
|
13
14
|
from ccxt.base.errors import AccountSuspended
|
14
15
|
from ccxt.base.errors import ArgumentsRequired
|
@@ -21,7 +22,6 @@ from ccxt.base.errors import NotSupported
|
|
21
22
|
from ccxt.base.errors import ExchangeNotAvailable
|
22
23
|
from ccxt.base.errors import OnMaintenance
|
23
24
|
from ccxt.base.errors import RequestTimeout
|
24
|
-
from ccxt.base.errors import AuthenticationError
|
25
25
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
26
26
|
from ccxt.base.precise import Precise
|
27
27
|
|
@@ -51,16 +51,25 @@ class poloniex(Exchange, ImplicitAPI):
|
|
51
51
|
'createMarketOrderWithCost': False,
|
52
52
|
'createMarketSellOrderWithCost': False,
|
53
53
|
'createOrder': True,
|
54
|
+
'createStopOrder': True,
|
55
|
+
'createTriggerOrder': True,
|
54
56
|
'editOrder': True,
|
55
57
|
'fetchBalance': True,
|
56
58
|
'fetchClosedOrder': False,
|
57
59
|
'fetchCurrencies': True,
|
58
60
|
'fetchDepositAddress': True,
|
61
|
+
'fetchDepositAddresses': False,
|
62
|
+
'fetchDepositAddressesByNetwork': False,
|
59
63
|
'fetchDeposits': True,
|
60
64
|
'fetchDepositsWithdrawals': True,
|
61
65
|
'fetchDepositWithdrawFee': 'emulated',
|
62
66
|
'fetchDepositWithdrawFees': True,
|
67
|
+
'fetchFundingHistory': False,
|
68
|
+
'fetchFundingInterval': False,
|
69
|
+
'fetchFundingIntervals': False,
|
63
70
|
'fetchFundingRate': False,
|
71
|
+
'fetchFundingRateHistory': False,
|
72
|
+
'fetchFundingRates': False,
|
64
73
|
'fetchMarginMode': False,
|
65
74
|
'fetchMarkets': True,
|
66
75
|
'fetchMyTrades': True,
|
@@ -84,6 +93,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
84
93
|
'fetchTransfer': False,
|
85
94
|
'fetchTransfers': False,
|
86
95
|
'fetchWithdrawals': True,
|
96
|
+
'sandbox': True,
|
87
97
|
'transfer': True,
|
88
98
|
'withdraw': True,
|
89
99
|
},
|
@@ -112,7 +122,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
112
122
|
'rest': 'https://sand-spot-api-gateway.poloniex.com',
|
113
123
|
},
|
114
124
|
'www': 'https://www.poloniex.com',
|
115
|
-
'doc': 'https://docs.poloniex.com',
|
125
|
+
'doc': 'https://api-docs.poloniex.com/spot/',
|
116
126
|
'fees': 'https://poloniex.com/fees',
|
117
127
|
'referral': 'https://poloniex.com/signup?c=UBFZJRPJ',
|
118
128
|
},
|
@@ -276,6 +286,67 @@ class poloniex(Exchange, ImplicitAPI):
|
|
276
286
|
'futures': 'future',
|
277
287
|
},
|
278
288
|
},
|
289
|
+
'features': {
|
290
|
+
'default': {
|
291
|
+
'sandbox': True,
|
292
|
+
'createOrder': {
|
293
|
+
'marginMode': True, # todo
|
294
|
+
'triggerPrice': True,
|
295
|
+
'triggerPriceType': None,
|
296
|
+
'triggerDirection': False,
|
297
|
+
'stopLossPrice': False, # todo
|
298
|
+
'takeProfitPrice': False, # todo
|
299
|
+
'attachedStopLossTakeProfit': None,
|
300
|
+
'timeInForce': {
|
301
|
+
'IOC': True,
|
302
|
+
'FOK': True,
|
303
|
+
'PO': False,
|
304
|
+
'GTD': False,
|
305
|
+
},
|
306
|
+
'hedged': False,
|
307
|
+
'leverage': False,
|
308
|
+
'marketBuyByCost': True,
|
309
|
+
'marketBuyRequiresPrice': False,
|
310
|
+
'selfTradePrevention': True, # todo, only for non-trigger orders
|
311
|
+
'trailing': False,
|
312
|
+
'iceberg': False,
|
313
|
+
},
|
314
|
+
'createOrders': None,
|
315
|
+
'fetchMyTrades': {
|
316
|
+
'marginMode': False,
|
317
|
+
'limit': 1000,
|
318
|
+
'daysBack': 100000,
|
319
|
+
'untilDays': 100000,
|
320
|
+
},
|
321
|
+
'fetchOrder': {
|
322
|
+
'marginMode': False,
|
323
|
+
'trigger': False,
|
324
|
+
'trailing': False,
|
325
|
+
},
|
326
|
+
'fetchOpenOrders': {
|
327
|
+
'marginMode': False,
|
328
|
+
'limit': 2000,
|
329
|
+
'trigger': False,
|
330
|
+
'trailing': False,
|
331
|
+
},
|
332
|
+
'fetchOrders': None,
|
333
|
+
'fetchClosedOrders': None, # todo implement
|
334
|
+
'fetchOHLCV': {
|
335
|
+
'limit': 500,
|
336
|
+
},
|
337
|
+
},
|
338
|
+
'spot': {
|
339
|
+
'extends': 'default',
|
340
|
+
},
|
341
|
+
'swap': {
|
342
|
+
'linear': None,
|
343
|
+
'inverse': None,
|
344
|
+
},
|
345
|
+
'future': {
|
346
|
+
'linear': None,
|
347
|
+
'inverse': None,
|
348
|
+
},
|
349
|
+
},
|
279
350
|
'precisionMode': TICK_SIZE,
|
280
351
|
'exceptions': {
|
281
352
|
'exact': {
|
@@ -358,6 +429,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
358
429
|
'21350': InvalidOrder, # Amount must be greater than 1 USDT
|
359
430
|
'21355': ExchangeError, # Interval between startTime and endTime in trade/order history has exceeded 7 day limit
|
360
431
|
'21356': BadRequest, # Order size would cause too much price movement. Reduce order size.
|
432
|
+
'21721': InsufficientFunds,
|
361
433
|
'24101': BadSymbol, # Invalid symbol
|
362
434
|
'24102': InvalidOrder, # Invalid K-line type
|
363
435
|
'24103': InvalidOrder, # Invalid endTime
|
@@ -424,7 +496,9 @@ class poloniex(Exchange, ImplicitAPI):
|
|
424
496
|
async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
425
497
|
"""
|
426
498
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
427
|
-
|
499
|
+
|
500
|
+
https://api-docs.poloniex.com/spot/api/public/market-data#candles
|
501
|
+
|
428
502
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
429
503
|
:param str timeframe: the length of time each candle represents
|
430
504
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -440,7 +514,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
440
514
|
if paginate:
|
441
515
|
return await self.fetch_paginated_call_deterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 500)
|
442
516
|
market = self.market(symbol)
|
443
|
-
request = {
|
517
|
+
request: dict = {
|
444
518
|
'symbol': market['id'],
|
445
519
|
'interval': self.safe_string(self.timeframes, timeframe, timeframe),
|
446
520
|
}
|
@@ -480,10 +554,12 @@ class poloniex(Exchange, ImplicitAPI):
|
|
480
554
|
self.options['currenciesByNumericId'] = self.index_by(self.currencies, 'numericId')
|
481
555
|
return markets
|
482
556
|
|
483
|
-
async def fetch_markets(self, params={}):
|
557
|
+
async def fetch_markets(self, params={}) -> List[Market]:
|
484
558
|
"""
|
485
559
|
retrieves data on all markets for poloniex
|
486
|
-
|
560
|
+
|
561
|
+
https://api-docs.poloniex.com/spot/api/public/reference-data#symbol-information
|
562
|
+
|
487
563
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
488
564
|
:returns dict[]: an array of objects representing market data
|
489
565
|
"""
|
@@ -513,7 +589,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
513
589
|
#
|
514
590
|
return self.parse_markets(markets)
|
515
591
|
|
516
|
-
def parse_market(self, market) -> Market:
|
592
|
+
def parse_market(self, market: dict) -> Market:
|
517
593
|
id = self.safe_string(market, 'symbol')
|
518
594
|
baseId = self.safe_string(market, 'baseCurrencyName')
|
519
595
|
quoteId = self.safe_string(market, 'quoteCurrencyName')
|
@@ -572,14 +648,16 @@ class poloniex(Exchange, ImplicitAPI):
|
|
572
648
|
async def fetch_time(self, params={}):
|
573
649
|
"""
|
574
650
|
fetches the current integer timestamp in milliseconds from the exchange server
|
575
|
-
|
651
|
+
|
652
|
+
https://api-docs.poloniex.com/spot/api/public/reference-data#system-timestamp
|
653
|
+
|
576
654
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
577
655
|
:returns int: the current integer timestamp in milliseconds from the exchange server
|
578
656
|
"""
|
579
657
|
response = await self.publicGetTimestamp(params)
|
580
658
|
return self.safe_integer(response, 'serverTime')
|
581
659
|
|
582
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
660
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
583
661
|
#
|
584
662
|
# {
|
585
663
|
# "symbol" : "BTC_USDT",
|
@@ -631,13 +709,16 @@ class poloniex(Exchange, ImplicitAPI):
|
|
631
709
|
'average': None,
|
632
710
|
'baseVolume': self.safe_string(ticker, 'quantity'),
|
633
711
|
'quoteVolume': self.safe_string(ticker, 'amount'),
|
712
|
+
'markPrice': self.safe_string(ticker, 'markPrice'),
|
634
713
|
'info': ticker,
|
635
714
|
}, market)
|
636
715
|
|
637
716
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
638
717
|
"""
|
639
718
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
640
|
-
|
719
|
+
|
720
|
+
https://api-docs.poloniex.com/spot/api/public/market-data#ticker
|
721
|
+
|
641
722
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
642
723
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
643
724
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -671,10 +752,12 @@ class poloniex(Exchange, ImplicitAPI):
|
|
671
752
|
#
|
672
753
|
return self.parse_tickers(response, symbols)
|
673
754
|
|
674
|
-
async def fetch_currencies(self, params={}):
|
755
|
+
async def fetch_currencies(self, params={}) -> Currencies:
|
675
756
|
"""
|
676
757
|
fetches all available currencies on an exchange
|
677
|
-
|
758
|
+
|
759
|
+
https://api-docs.poloniex.com/spot/api/public/reference-data#currency-information
|
760
|
+
|
678
761
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
679
762
|
:returns dict: an associative dictionary of currencies
|
680
763
|
"""
|
@@ -704,7 +787,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
704
787
|
# }
|
705
788
|
# ]
|
706
789
|
#
|
707
|
-
result = {}
|
790
|
+
result: dict = {}
|
708
791
|
for i in range(0, len(response)):
|
709
792
|
item = self.safe_value(response, i)
|
710
793
|
ids = list(item.keys())
|
@@ -788,7 +871,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
788
871
|
}
|
789
872
|
result[code]['networks'] = networks
|
790
873
|
info = self.safe_value(result[code], 'info', [])
|
791
|
-
rawInfo = {}
|
874
|
+
rawInfo: dict = {}
|
792
875
|
rawInfo[id] = currency
|
793
876
|
info.append(rawInfo)
|
794
877
|
result[code]['info'] = info
|
@@ -804,14 +887,16 @@ class poloniex(Exchange, ImplicitAPI):
|
|
804
887
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
805
888
|
"""
|
806
889
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
807
|
-
|
890
|
+
|
891
|
+
https://api-docs.poloniex.com/spot/api/public/market-data#ticker
|
892
|
+
|
808
893
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
809
894
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
810
895
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
811
896
|
"""
|
812
897
|
await self.load_markets()
|
813
898
|
market = self.market(symbol)
|
814
|
-
request = {
|
899
|
+
request: dict = {
|
815
900
|
'symbol': market['id'],
|
816
901
|
}
|
817
902
|
response = await self.publicGetMarketsSymbolTicker24h(self.extend(request, params))
|
@@ -839,7 +924,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
839
924
|
#
|
840
925
|
return self.parse_ticker(response, market)
|
841
926
|
|
842
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
927
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
843
928
|
#
|
844
929
|
# fetchTrades
|
845
930
|
#
|
@@ -932,7 +1017,9 @@ class poloniex(Exchange, ImplicitAPI):
|
|
932
1017
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
933
1018
|
"""
|
934
1019
|
get the list of most recent trades for a particular symbol
|
935
|
-
|
1020
|
+
|
1021
|
+
https://api-docs.poloniex.com/spot/api/public/market-data#trades
|
1022
|
+
|
936
1023
|
:param str symbol: unified symbol of the market to fetch trades for
|
937
1024
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
938
1025
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -941,7 +1028,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
941
1028
|
"""
|
942
1029
|
await self.load_markets()
|
943
1030
|
market = self.market(symbol)
|
944
|
-
request = {
|
1031
|
+
request: dict = {
|
945
1032
|
'symbol': market['id'],
|
946
1033
|
}
|
947
1034
|
if limit is not None:
|
@@ -965,7 +1052,9 @@ class poloniex(Exchange, ImplicitAPI):
|
|
965
1052
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
966
1053
|
"""
|
967
1054
|
fetch all trades made by the user
|
968
|
-
|
1055
|
+
|
1056
|
+
https://api-docs.poloniex.com/spot/api/private/trade#trade-history
|
1057
|
+
|
969
1058
|
:param str symbol: unified market symbol
|
970
1059
|
:param int [since]: the earliest time in ms to fetch trades for
|
971
1060
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -982,7 +1071,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
982
1071
|
market: Market = None
|
983
1072
|
if symbol is not None:
|
984
1073
|
market = self.market(symbol)
|
985
|
-
request = {
|
1074
|
+
request: dict = {
|
986
1075
|
# 'from': 12345678, # A 'trade Id'. The query begins at ‘from'.
|
987
1076
|
# 'direction': 'PRE', # PRE, NEXT The direction before or after ‘from'.
|
988
1077
|
}
|
@@ -1016,8 +1105,8 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1016
1105
|
result = self.parse_trades(response, market, since, limit)
|
1017
1106
|
return result
|
1018
1107
|
|
1019
|
-
def parse_order_status(self, status):
|
1020
|
-
statuses = {
|
1108
|
+
def parse_order_status(self, status: Str):
|
1109
|
+
statuses: dict = {
|
1021
1110
|
'NEW': 'open',
|
1022
1111
|
'PARTIALLY_FILLED': 'open',
|
1023
1112
|
'FILLED': 'closed',
|
@@ -1028,7 +1117,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1028
1117
|
}
|
1029
1118
|
return self.safe_string(statuses, status, status)
|
1030
1119
|
|
1031
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
1120
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
1032
1121
|
#
|
1033
1122
|
# fetchOpenOrder
|
1034
1123
|
#
|
@@ -1086,8 +1175,9 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1086
1175
|
market = self.safe_market(marketId, market, '_')
|
1087
1176
|
symbol = market['symbol']
|
1088
1177
|
resultingTrades = self.safe_value(order, 'resultingTrades')
|
1089
|
-
if not
|
1090
|
-
|
1178
|
+
if resultingTrades is not None:
|
1179
|
+
if not isinstance(resultingTrades, list):
|
1180
|
+
resultingTrades = self.safe_value(resultingTrades, self.safe_string(market, 'id', marketId))
|
1091
1181
|
price = self.safe_string_2(order, 'price', 'rate')
|
1092
1182
|
amount = self.safe_string(order, 'quantity')
|
1093
1183
|
filled = self.safe_string(order, 'filledQuantity')
|
@@ -1114,7 +1204,6 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1114
1204
|
'currency': feeCurrencyCode,
|
1115
1205
|
}
|
1116
1206
|
clientOrderId = self.safe_string(order, 'clientOrderId')
|
1117
|
-
triggerPrice = self.safe_string_2(order, 'triggerPrice', 'stopPrice')
|
1118
1207
|
return self.safe_order({
|
1119
1208
|
'info': order,
|
1120
1209
|
'id': id,
|
@@ -1129,8 +1218,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1129
1218
|
'postOnly': None,
|
1130
1219
|
'side': side,
|
1131
1220
|
'price': price,
|
1132
|
-
'
|
1133
|
-
'triggerPrice': triggerPrice,
|
1221
|
+
'triggerPrice': self.safe_string_2(order, 'triggerPrice', 'stopPrice'),
|
1134
1222
|
'cost': None,
|
1135
1223
|
'average': self.safe_string(order, 'avgPrice'),
|
1136
1224
|
'amount': amount,
|
@@ -1141,7 +1229,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1141
1229
|
}, market)
|
1142
1230
|
|
1143
1231
|
def parse_order_type(self, status):
|
1144
|
-
statuses = {
|
1232
|
+
statuses: dict = {
|
1145
1233
|
'MARKET': 'market',
|
1146
1234
|
'LIMIT': 'limit',
|
1147
1235
|
'STOP-LIMIT': 'limit',
|
@@ -1164,18 +1252,20 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1164
1252
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1165
1253
|
"""
|
1166
1254
|
fetch all unfilled currently open orders
|
1167
|
-
|
1168
|
-
|
1255
|
+
|
1256
|
+
https://api-docs.poloniex.com/spot/api/private/order#open-orders
|
1257
|
+
https://api-docs.poloniex.com/spot/api/private/smart-order#open-orders # trigger orders
|
1258
|
+
|
1169
1259
|
:param str symbol: unified market symbol
|
1170
1260
|
:param int [since]: the earliest time in ms to fetch open orders for
|
1171
1261
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
1172
1262
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1173
|
-
:param boolean [params.
|
1263
|
+
:param boolean [params.trigger]: set True to fetch trigger orders instead of regular orders
|
1174
1264
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1175
1265
|
"""
|
1176
1266
|
await self.load_markets()
|
1177
1267
|
market: Market = None
|
1178
|
-
request = {}
|
1268
|
+
request: dict = {}
|
1179
1269
|
if symbol is not None:
|
1180
1270
|
market = self.market(symbol)
|
1181
1271
|
request['symbol'] = market['id']
|
@@ -1211,21 +1301,23 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1211
1301
|
# }
|
1212
1302
|
# ]
|
1213
1303
|
#
|
1214
|
-
extension = {'status': 'open'}
|
1304
|
+
extension: dict = {'status': 'open'}
|
1215
1305
|
return self.parse_orders(response, market, since, limit, extension)
|
1216
1306
|
|
1217
1307
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
1218
1308
|
"""
|
1219
1309
|
create a trade order
|
1220
|
-
|
1221
|
-
|
1310
|
+
|
1311
|
+
https://api-docs.poloniex.com/spot/api/private/order#create-order
|
1312
|
+
https://api-docs.poloniex.com/spot/api/private/smart-order#create-order # trigger orders
|
1313
|
+
|
1222
1314
|
:param str symbol: unified symbol of the market to create an order in
|
1223
1315
|
:param str type: 'market' or 'limit'
|
1224
1316
|
:param str side: 'buy' or 'sell'
|
1225
1317
|
:param float amount: how much of currency you want to trade in units of base currency
|
1226
|
-
:param float [price]: the price at which the order is to be
|
1318
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1227
1319
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1228
|
-
:param float [params.triggerPrice]:
|
1320
|
+
:param float [params.triggerPrice]: the price at which a trigger order is triggered at
|
1229
1321
|
:param float [params.cost]: *spot market buy only* the quote quantity that can be used alternative for the amount
|
1230
1322
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1231
1323
|
"""
|
@@ -1233,7 +1325,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1233
1325
|
market = self.market(symbol)
|
1234
1326
|
if not market['spot']:
|
1235
1327
|
raise NotSupported(self.id + ' createOrder() does not support ' + market['type'] + ' orders, only spot orders are accepted')
|
1236
|
-
request = {
|
1328
|
+
request: dict = {
|
1237
1329
|
'symbol': market['id'],
|
1238
1330
|
'side': side,
|
1239
1331
|
# 'timeInForce': timeInForce,
|
@@ -1254,7 +1346,8 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1254
1346
|
# }
|
1255
1347
|
#
|
1256
1348
|
response = self.extend(response, {
|
1257
|
-
'type':
|
1349
|
+
'type': type,
|
1350
|
+
'side': side,
|
1258
1351
|
})
|
1259
1352
|
return self.parse_order(response, market)
|
1260
1353
|
|
@@ -1305,14 +1398,16 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1305
1398
|
async def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}):
|
1306
1399
|
"""
|
1307
1400
|
edit a trade order
|
1308
|
-
|
1309
|
-
|
1401
|
+
|
1402
|
+
https://api-docs.poloniex.com/spot/api/private/order#cancel-replace-order
|
1403
|
+
https://api-docs.poloniex.com/spot/api/private/smart-order#cancel-replace-order
|
1404
|
+
|
1310
1405
|
:param str id: order id
|
1311
1406
|
:param str symbol: unified symbol of the market to create an order in
|
1312
1407
|
:param str type: 'market' or 'limit'
|
1313
1408
|
:param str side: 'buy' or 'sell'
|
1314
1409
|
:param float [amount]: how much of the currency you want to trade in units of the base currency
|
1315
|
-
:param float [price]: the price at which the order is to be
|
1410
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1316
1411
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1317
1412
|
:param float [params.triggerPrice]: The price at which a trigger order is triggered at
|
1318
1413
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1321,7 +1416,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1321
1416
|
market = self.market(symbol)
|
1322
1417
|
if not market['spot']:
|
1323
1418
|
raise NotSupported(self.id + ' editOrder() does not support ' + market['type'] + ' orders, only spot orders are accepted')
|
1324
|
-
request = {
|
1419
|
+
request: dict = {
|
1325
1420
|
'id': id,
|
1326
1421
|
# 'timeInForce': timeInForce,
|
1327
1422
|
}
|
@@ -1339,7 +1434,8 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1339
1434
|
# }
|
1340
1435
|
#
|
1341
1436
|
response = self.extend(response, {
|
1342
|
-
'
|
1437
|
+
'side': side,
|
1438
|
+
'type': type,
|
1343
1439
|
})
|
1344
1440
|
return self.parse_order(response, market)
|
1345
1441
|
|
@@ -1348,8 +1444,8 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1348
1444
|
# @method
|
1349
1445
|
# @name poloniex#cancelOrder
|
1350
1446
|
# @description cancels an open order
|
1351
|
-
# @see https://docs.poloniex.com
|
1352
|
-
# @see https://docs.poloniex.com
|
1447
|
+
# @see https://api-docs.poloniex.com/spot/api/private/order#cancel-order-by-id
|
1448
|
+
# @see https://api-docs.poloniex.com/spot/api/private/smart-order#cancel-order-by-id # trigger orders
|
1353
1449
|
# @param {string} id order id
|
1354
1450
|
# @param {string} symbol unified symbol of the market the order was made in
|
1355
1451
|
# @param {object} [params] extra parameters specific to the exchange API endpoint
|
@@ -1357,7 +1453,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1357
1453
|
# @returns {object} An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1358
1454
|
#
|
1359
1455
|
await self.load_markets()
|
1360
|
-
request = {}
|
1456
|
+
request: dict = {}
|
1361
1457
|
clientOrderId = self.safe_value(params, 'clientOrderId')
|
1362
1458
|
if clientOrderId is not None:
|
1363
1459
|
id = clientOrderId
|
@@ -1383,15 +1479,17 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1383
1479
|
async def cancel_all_orders(self, symbol: Str = None, params={}):
|
1384
1480
|
"""
|
1385
1481
|
cancel all open orders
|
1386
|
-
|
1387
|
-
|
1482
|
+
|
1483
|
+
https://api-docs.poloniex.com/spot/api/private/order#cancel-all-orders
|
1484
|
+
https://api-docs.poloniex.com/spot/api/private/smart-order#cancel-all-orders # trigger orders
|
1485
|
+
|
1388
1486
|
:param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
|
1389
1487
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1390
1488
|
:param boolean [params.trigger]: True if canceling trigger orders
|
1391
1489
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1392
1490
|
"""
|
1393
1491
|
await self.load_markets()
|
1394
|
-
request = {
|
1492
|
+
request: dict = {
|
1395
1493
|
# 'accountTypes': 'SPOT',
|
1396
1494
|
'symbols': [],
|
1397
1495
|
}
|
@@ -1430,8 +1528,10 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1430
1528
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1431
1529
|
"""
|
1432
1530
|
fetch an order by it's id
|
1433
|
-
|
1434
|
-
|
1531
|
+
|
1532
|
+
https://api-docs.poloniex.com/spot/api/private/order#order-details
|
1533
|
+
https://api-docs.poloniex.com/spot/api/private/smart-order#open-orders # trigger orders
|
1534
|
+
|
1435
1535
|
:param str id: order id
|
1436
1536
|
:param str symbol: unified market symbol, default is None
|
1437
1537
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -1440,7 +1540,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1440
1540
|
"""
|
1441
1541
|
await self.load_markets()
|
1442
1542
|
id = str(id)
|
1443
|
-
request = {
|
1543
|
+
request: dict = {
|
1444
1544
|
'id': id,
|
1445
1545
|
}
|
1446
1546
|
isTrigger = self.safe_value_2(params, 'trigger', 'stop')
|
@@ -1485,7 +1585,9 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1485
1585
|
async def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1486
1586
|
"""
|
1487
1587
|
fetch all the trades made from a single order
|
1488
|
-
|
1588
|
+
|
1589
|
+
https://api-docs.poloniex.com/spot/api/private/trade#trades-by-order-id
|
1590
|
+
|
1489
1591
|
:param str id: order id
|
1490
1592
|
:param str symbol: unified market symbol
|
1491
1593
|
:param int [since]: the earliest time in ms to fetch trades for
|
@@ -1494,7 +1596,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1494
1596
|
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
1495
1597
|
"""
|
1496
1598
|
await self.load_markets()
|
1497
|
-
request = {
|
1599
|
+
request: dict = {
|
1498
1600
|
'id': id,
|
1499
1601
|
}
|
1500
1602
|
trades = await self.privateGetOrdersIdTrades(self.extend(request, params))
|
@@ -1522,7 +1624,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1522
1624
|
return self.parse_trades(trades)
|
1523
1625
|
|
1524
1626
|
def parse_balance(self, response) -> Balances:
|
1525
|
-
result = {
|
1627
|
+
result: dict = {
|
1526
1628
|
'info': response,
|
1527
1629
|
'timestamp': None,
|
1528
1630
|
'datetime': None,
|
@@ -1543,12 +1645,14 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1543
1645
|
async def fetch_balance(self, params={}) -> Balances:
|
1544
1646
|
"""
|
1545
1647
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
1546
|
-
|
1648
|
+
|
1649
|
+
https://api-docs.poloniex.com/spot/api/private/account#all-account-balances
|
1650
|
+
|
1547
1651
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1548
1652
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
1549
1653
|
"""
|
1550
1654
|
await self.load_markets()
|
1551
|
-
request = {
|
1655
|
+
request: dict = {
|
1552
1656
|
'accountType': 'SPOT',
|
1553
1657
|
}
|
1554
1658
|
response = await self.privateGetAccountsBalances(self.extend(request, params))
|
@@ -1570,10 +1674,12 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1570
1674
|
#
|
1571
1675
|
return self.parse_balance(response)
|
1572
1676
|
|
1573
|
-
async def fetch_trading_fees(self, params={}):
|
1677
|
+
async def fetch_trading_fees(self, params={}) -> TradingFees:
|
1574
1678
|
"""
|
1575
1679
|
fetch the trading fees for multiple markets
|
1576
|
-
|
1680
|
+
|
1681
|
+
https://api-docs.poloniex.com/spot/api/private/account#fee-info
|
1682
|
+
|
1577
1683
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1578
1684
|
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
|
1579
1685
|
"""
|
@@ -1587,7 +1693,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1587
1693
|
# "volume30D" : "0.00"
|
1588
1694
|
# }
|
1589
1695
|
#
|
1590
|
-
result = {}
|
1696
|
+
result: dict = {}
|
1591
1697
|
for i in range(0, len(self.symbols)):
|
1592
1698
|
symbol = self.symbols[i]
|
1593
1699
|
result[symbol] = {
|
@@ -1603,7 +1709,9 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1603
1709
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
1604
1710
|
"""
|
1605
1711
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
1606
|
-
|
1712
|
+
|
1713
|
+
https://api-docs.poloniex.com/spot/api/public/market-data#order-book
|
1714
|
+
|
1607
1715
|
:param str symbol: unified symbol of the market to fetch the order book for
|
1608
1716
|
:param int [limit]: the maximum amount of order book entries to return
|
1609
1717
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -1611,7 +1719,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1611
1719
|
"""
|
1612
1720
|
await self.load_markets()
|
1613
1721
|
market = self.market(symbol)
|
1614
|
-
request = {
|
1722
|
+
request: dict = {
|
1615
1723
|
'symbol': market['id'],
|
1616
1724
|
}
|
1617
1725
|
if limit is not None:
|
@@ -1653,14 +1761,16 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1653
1761
|
async def create_deposit_address(self, code: str, params={}):
|
1654
1762
|
"""
|
1655
1763
|
create a currency deposit address
|
1656
|
-
|
1764
|
+
|
1765
|
+
https://api-docs.poloniex.com/spot/api/private/wallet#deposit-addresses
|
1766
|
+
|
1657
1767
|
:param str code: unified currency code of the currency for the deposit address
|
1658
1768
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1659
1769
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
1660
1770
|
"""
|
1661
1771
|
await self.load_markets()
|
1662
1772
|
currency = self.currency(code)
|
1663
|
-
request = {
|
1773
|
+
request: dict = {
|
1664
1774
|
'currency': currency['id'],
|
1665
1775
|
}
|
1666
1776
|
networks = self.safe_value(self.options, 'networks', {})
|
@@ -1694,17 +1804,19 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1694
1804
|
'info': response,
|
1695
1805
|
}
|
1696
1806
|
|
1697
|
-
async def fetch_deposit_address(self, code: str, params={}):
|
1807
|
+
async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
1698
1808
|
"""
|
1699
1809
|
fetch the deposit address for a currency associated with self account
|
1700
|
-
|
1810
|
+
|
1811
|
+
https://api-docs.poloniex.com/spot/api/private/wallet#deposit-addresses
|
1812
|
+
|
1701
1813
|
:param str code: unified currency code
|
1702
1814
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1703
1815
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
1704
1816
|
"""
|
1705
1817
|
await self.load_markets()
|
1706
1818
|
currency = self.currency(code)
|
1707
|
-
request = {
|
1819
|
+
request: dict = {
|
1708
1820
|
'currency': currency['id'],
|
1709
1821
|
}
|
1710
1822
|
networks = self.safe_value(self.options, 'networks', {})
|
@@ -1731,17 +1843,19 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1731
1843
|
tag = address
|
1732
1844
|
address = depositAddress
|
1733
1845
|
return {
|
1846
|
+
'info': response,
|
1734
1847
|
'currency': code,
|
1848
|
+
'network': network,
|
1735
1849
|
'address': address,
|
1736
1850
|
'tag': tag,
|
1737
|
-
'network': network,
|
1738
|
-
'info': response,
|
1739
1851
|
}
|
1740
1852
|
|
1741
1853
|
async def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
|
1742
1854
|
"""
|
1743
1855
|
transfer currency internally between wallets on the same account
|
1744
|
-
|
1856
|
+
|
1857
|
+
https://api-docs.poloniex.com/spot/api/private/account#accounts-transfer
|
1858
|
+
|
1745
1859
|
:param str code: unified currency code
|
1746
1860
|
:param float amount: amount to transfer
|
1747
1861
|
:param str fromAccount: account to transfer from
|
@@ -1751,12 +1865,11 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1751
1865
|
"""
|
1752
1866
|
await self.load_markets()
|
1753
1867
|
currency = self.currency(code)
|
1754
|
-
amount = self.currency_to_precision(code, amount)
|
1755
1868
|
accountsByType = self.safe_value(self.options, 'accountsByType', {})
|
1756
1869
|
fromId = self.safe_string(accountsByType, fromAccount, fromAccount)
|
1757
1870
|
toId = self.safe_string(accountsByType, toAccount, fromAccount)
|
1758
|
-
request = {
|
1759
|
-
'amount': amount,
|
1871
|
+
request: dict = {
|
1872
|
+
'amount': self.currency_to_precision(code, amount),
|
1760
1873
|
'currency': currency['id'],
|
1761
1874
|
'fromAccount': fromId,
|
1762
1875
|
'toAccount': toId,
|
@@ -1769,7 +1882,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1769
1882
|
#
|
1770
1883
|
return self.parse_transfer(response, currency)
|
1771
1884
|
|
1772
|
-
def parse_transfer(self, transfer, currency: Currency = None):
|
1885
|
+
def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
|
1773
1886
|
#
|
1774
1887
|
# {
|
1775
1888
|
# "transferId" : "168041074"
|
@@ -1787,10 +1900,12 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1787
1900
|
'status': None,
|
1788
1901
|
}
|
1789
1902
|
|
1790
|
-
async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
1903
|
+
async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
1791
1904
|
"""
|
1792
1905
|
make a withdrawal
|
1793
|
-
|
1906
|
+
|
1907
|
+
https://api-docs.poloniex.com/spot/api/private/wallet#withdraw-currency
|
1908
|
+
|
1794
1909
|
:param str code: unified currency code
|
1795
1910
|
:param float amount: the amount to withdraw
|
1796
1911
|
:param str address: the address to withdraw to
|
@@ -1802,7 +1917,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1802
1917
|
self.check_address(address)
|
1803
1918
|
await self.load_markets()
|
1804
1919
|
currency = self.currency(code)
|
1805
|
-
request = {
|
1920
|
+
request: dict = {
|
1806
1921
|
'currency': currency['id'],
|
1807
1922
|
'amount': amount,
|
1808
1923
|
'address': address,
|
@@ -1830,7 +1945,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1830
1945
|
year = 31104000 # 60 * 60 * 24 * 30 * 12 = one year of history, why not
|
1831
1946
|
now = self.seconds()
|
1832
1947
|
start = self.parse_to_int(since / 1000) if (since is not None) else now - 10 * year
|
1833
|
-
request = {
|
1948
|
+
request: dict = {
|
1834
1949
|
'start': start, # UNIX timestamp, required
|
1835
1950
|
'end': now, # UNIX timestamp, required
|
1836
1951
|
}
|
@@ -1911,7 +2026,9 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1911
2026
|
async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1912
2027
|
"""
|
1913
2028
|
fetch history of deposits and withdrawals
|
1914
|
-
|
2029
|
+
|
2030
|
+
https://api-docs.poloniex.com/spot/api/private/wallet#wallets-activity-records
|
2031
|
+
|
1915
2032
|
:param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
|
1916
2033
|
:param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
|
1917
2034
|
:param int [limit]: max number of deposit/withdrawals to return, default is None
|
@@ -1933,7 +2050,9 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1933
2050
|
async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1934
2051
|
"""
|
1935
2052
|
fetch all withdrawals made from an account
|
1936
|
-
|
2053
|
+
|
2054
|
+
https://api-docs.poloniex.com/spot/api/private/wallet#wallets-activity-records
|
2055
|
+
|
1937
2056
|
:param str code: unified currency code
|
1938
2057
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
1939
2058
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
@@ -1951,7 +2070,9 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1951
2070
|
async def fetch_deposit_withdraw_fees(self, codes: Strings = None, params={}):
|
1952
2071
|
"""
|
1953
2072
|
fetch deposit and withdraw fees
|
1954
|
-
|
2073
|
+
|
2074
|
+
https://api-docs.poloniex.com/spot/api/public/reference-data#currency-information
|
2075
|
+
|
1955
2076
|
:param str[]|None codes: list of unified currency codes
|
1956
2077
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1957
2078
|
:returns dict[]: a list of `fees structures <https://docs.ccxt.com/#/?id=fee-structure>`
|
@@ -1981,7 +2102,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1981
2102
|
# }
|
1982
2103
|
# ]
|
1983
2104
|
#
|
1984
|
-
data = {}
|
2105
|
+
data: dict = {}
|
1985
2106
|
for i in range(0, len(response)):
|
1986
2107
|
entry = response[i]
|
1987
2108
|
currencies = list(entry.keys())
|
@@ -2011,7 +2132,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
2011
2132
|
# },
|
2012
2133
|
# }
|
2013
2134
|
#
|
2014
|
-
depositWithdrawFees = {}
|
2135
|
+
depositWithdrawFees: dict = {}
|
2015
2136
|
codes = self.market_codes(codes)
|
2016
2137
|
responseKeys = list(response.keys())
|
2017
2138
|
for i in range(0, len(responseKeys)):
|
@@ -2029,7 +2150,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
2029
2150
|
networkId = networkId.replace(code, '')
|
2030
2151
|
networkCode = self.network_id_to_code(networkId)
|
2031
2152
|
networkInfo = self.safe_value(response, networkId)
|
2032
|
-
networkObject = {}
|
2153
|
+
networkObject: dict = {}
|
2033
2154
|
withdrawFee = self.safe_number(networkInfo, 'withdrawalFee')
|
2034
2155
|
networkObject[networkCode] = {
|
2035
2156
|
'withdraw': {
|
@@ -2049,11 +2170,11 @@ class poloniex(Exchange, ImplicitAPI):
|
|
2049
2170
|
depositWithdrawFee['info'][currency['code']] = fee
|
2050
2171
|
networkId = self.safe_string(fee, 'blockchain')
|
2051
2172
|
withdrawFee = self.safe_number(fee, 'withdrawalFee')
|
2052
|
-
withdrawResult = {
|
2173
|
+
withdrawResult: dict = {
|
2053
2174
|
'fee': withdrawFee,
|
2054
2175
|
'percentage': False if (withdrawFee is not None) else None,
|
2055
2176
|
}
|
2056
|
-
depositResult = {
|
2177
|
+
depositResult: dict = {
|
2057
2178
|
'fee': None,
|
2058
2179
|
'percentage': None,
|
2059
2180
|
}
|
@@ -2069,7 +2190,9 @@ class poloniex(Exchange, ImplicitAPI):
|
|
2069
2190
|
async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
2070
2191
|
"""
|
2071
2192
|
fetch all deposits made to an account
|
2072
|
-
|
2193
|
+
|
2194
|
+
https://api-docs.poloniex.com/spot/api/private/wallet#wallets-activity-records
|
2195
|
+
|
2073
2196
|
:param str code: unified currency code
|
2074
2197
|
:param int [since]: the earliest time in ms to fetch deposits for
|
2075
2198
|
:param int [limit]: the maximum number of deposits structures to retrieve
|
@@ -2084,8 +2207,8 @@ class poloniex(Exchange, ImplicitAPI):
|
|
2084
2207
|
transactions = self.parse_transactions(deposits, currency, since, limit)
|
2085
2208
|
return self.filter_by_currency_since_limit(transactions, code, since, limit)
|
2086
2209
|
|
2087
|
-
def parse_transaction_status(self, status):
|
2088
|
-
statuses = {
|
2210
|
+
def parse_transaction_status(self, status: Str):
|
2211
|
+
statuses: dict = {
|
2089
2212
|
'COMPLETE': 'ok',
|
2090
2213
|
'COMPLETED': 'ok',
|
2091
2214
|
'AWAITING APPROVAL': 'pending',
|
@@ -2097,7 +2220,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
2097
2220
|
}
|
2098
2221
|
return self.safe_string(statuses, status, status)
|
2099
2222
|
|
2100
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
2223
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
2101
2224
|
#
|
2102
2225
|
# deposits
|
2103
2226
|
#
|
@@ -2212,7 +2335,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
2212
2335
|
}
|
2213
2336
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
2214
2337
|
|
2215
|
-
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
2338
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
2216
2339
|
if response is None:
|
2217
2340
|
return None
|
2218
2341
|
#
|