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
@@ -6,8 +6,9 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.poloniexfutures 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, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, Trade
|
10
10
|
from typing import List
|
11
|
+
from ccxt.base.errors import AuthenticationError
|
11
12
|
from ccxt.base.errors import AccountSuspended
|
12
13
|
from ccxt.base.errors import ArgumentsRequired
|
13
14
|
from ccxt.base.errors import BadRequest
|
@@ -17,7 +18,6 @@ from ccxt.base.errors import NotSupported
|
|
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
|
|
@@ -42,12 +42,16 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
42
42
|
'future': False,
|
43
43
|
'option': None,
|
44
44
|
'createOrder': True,
|
45
|
+
'createStopOrder': True,
|
46
|
+
'createTriggerOrder': True,
|
45
47
|
'fetchBalance': True,
|
46
48
|
'fetchClosedOrders': True,
|
47
49
|
'fetchCurrencies': False,
|
48
50
|
'fetchDepositAddress': False,
|
49
51
|
'fetchDepositAddresses': False,
|
50
52
|
'fetchDepositAddressesByNetwork': False,
|
53
|
+
'fetchFundingInterval': True,
|
54
|
+
'fetchFundingIntervals': False,
|
51
55
|
'fetchFundingRate': True,
|
52
56
|
'fetchFundingRateHistory': False,
|
53
57
|
'fetchL3OrderBook': True,
|
@@ -84,7 +88,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
84
88
|
'private': 'https://futures-api.poloniex.com',
|
85
89
|
},
|
86
90
|
'www': 'https://www.poloniex.com',
|
87
|
-
'doc': 'https://
|
91
|
+
'doc': 'https://api-docs.poloniex.com/futures/',
|
88
92
|
'fees': 'https://poloniex.com/fee-schedule',
|
89
93
|
'referral': 'https://poloniex.com/signup?c=UBFZJRPJ',
|
90
94
|
},
|
@@ -186,6 +190,80 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
186
190
|
},
|
187
191
|
},
|
188
192
|
},
|
193
|
+
'features': {
|
194
|
+
'default': {
|
195
|
+
'sandbox': False,
|
196
|
+
'createOrder': {
|
197
|
+
'marginMode': False,
|
198
|
+
'triggerPrice': True,
|
199
|
+
# todo implementation
|
200
|
+
'triggerPriceType': {
|
201
|
+
'last': True,
|
202
|
+
'mark': True,
|
203
|
+
'index': True,
|
204
|
+
},
|
205
|
+
'triggerDirection': True,
|
206
|
+
'stopLossPrice': False, # todo
|
207
|
+
'takeProfitPrice': False, # todo
|
208
|
+
'attachedStopLossTakeProfit': None,
|
209
|
+
'timeInForce': {
|
210
|
+
'IOC': True,
|
211
|
+
'FOK': False,
|
212
|
+
'PO': True,
|
213
|
+
'GTD': False,
|
214
|
+
},
|
215
|
+
'hedged': False,
|
216
|
+
'leverage': True, # deprecated?
|
217
|
+
'marketBuyByCost': True,
|
218
|
+
'marketBuyRequiresPrice': False,
|
219
|
+
'selfTradePrevention': False,
|
220
|
+
'trailing': False,
|
221
|
+
'iceberg': True, # deprecated?
|
222
|
+
},
|
223
|
+
'createOrders': None,
|
224
|
+
'fetchMyTrades': {
|
225
|
+
'marginMode': False,
|
226
|
+
'limit': None,
|
227
|
+
'daysBack': 100000,
|
228
|
+
'untilDays': 7,
|
229
|
+
},
|
230
|
+
'fetchOrder': {
|
231
|
+
'marginMode': False,
|
232
|
+
'trigger': False,
|
233
|
+
'trailing': False,
|
234
|
+
},
|
235
|
+
'fetchOpenOrders': {
|
236
|
+
'marginMode': True,
|
237
|
+
'limit': None,
|
238
|
+
'trigger': False,
|
239
|
+
'trailing': False,
|
240
|
+
},
|
241
|
+
'fetchOrders': None, # todo
|
242
|
+
'fetchClosedOrders': {
|
243
|
+
'marginMode': False,
|
244
|
+
'limit': 100,
|
245
|
+
'daysBack': 100000,
|
246
|
+
'daysBackCanceled': 1,
|
247
|
+
'untilDays': 100000,
|
248
|
+
'trigger': False,
|
249
|
+
'trailing': False,
|
250
|
+
},
|
251
|
+
'fetchOHLCV': {
|
252
|
+
'limit': 200, # todo implement
|
253
|
+
},
|
254
|
+
},
|
255
|
+
'spot': None,
|
256
|
+
'swap': {
|
257
|
+
'linear': {
|
258
|
+
'extends': 'default',
|
259
|
+
},
|
260
|
+
'inverse': None,
|
261
|
+
},
|
262
|
+
'future': {
|
263
|
+
'linear': None,
|
264
|
+
'inverse': None,
|
265
|
+
},
|
266
|
+
},
|
189
267
|
'exceptions': {
|
190
268
|
'exact': {
|
191
269
|
'400': BadRequest, # Bad Request -- Invalid request format
|
@@ -215,10 +293,12 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
215
293
|
},
|
216
294
|
})
|
217
295
|
|
218
|
-
async def fetch_markets(self, params={}):
|
296
|
+
async def fetch_markets(self, params={}) -> List[Market]:
|
219
297
|
"""
|
220
298
|
retrieves data on all markets for poloniexfutures
|
221
|
-
|
299
|
+
|
300
|
+
https://api-docs.poloniex.com/futures/api/symbol
|
301
|
+
|
222
302
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
223
303
|
:returns dict[]: an array of objects representing market data
|
224
304
|
"""
|
@@ -288,7 +368,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
288
368
|
data = self.safe_value(response, 'data', [])
|
289
369
|
return self.parse_markets(data)
|
290
370
|
|
291
|
-
def parse_market(self, market) -> Market:
|
371
|
+
def parse_market(self, market: dict) -> Market:
|
292
372
|
id = self.safe_string(market, 'symbol')
|
293
373
|
baseId = self.safe_string(market, 'baseCurrency')
|
294
374
|
quoteId = self.safe_string(market, 'quoteCurrency')
|
@@ -356,7 +436,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
356
436
|
'info': market,
|
357
437
|
}
|
358
438
|
|
359
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
439
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
360
440
|
#
|
361
441
|
# {
|
362
442
|
# "symbol": "BTCUSDTPERP", # Market of the symbol
|
@@ -382,7 +462,20 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
382
462
|
#
|
383
463
|
marketId = self.safe_string(ticker, 'symbol')
|
384
464
|
symbol = self.safe_symbol(marketId, market)
|
385
|
-
|
465
|
+
timestampString = self.safe_string(ticker, 'ts')
|
466
|
+
multiplier = None
|
467
|
+
if len(timestampString) == 16:
|
468
|
+
# 16 digits: https://app.travis-ci.com/github/ccxt/ccxt/builds/270587157#L5454
|
469
|
+
multiplier = 0.001
|
470
|
+
elif len(timestampString) == 17:
|
471
|
+
# 17 digits: https://app.travis-ci.com/github/ccxt/ccxt/builds/269959181#L4011
|
472
|
+
multiplier = 0.0001
|
473
|
+
elif len(timestampString) == 18:
|
474
|
+
multiplier = 0.00001
|
475
|
+
else:
|
476
|
+
# 19 length default
|
477
|
+
multiplier = 0.000001
|
478
|
+
timestamp = self.safe_integer_product(ticker, 'ts', multiplier)
|
386
479
|
last = self.safe_string_2(ticker, 'price', 'lastPrice')
|
387
480
|
percentage = Precise.string_mul(self.safe_string(ticker, 'priceChgPct'), '100')
|
388
481
|
return self.safe_ticker({
|
@@ -411,14 +504,16 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
411
504
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
412
505
|
"""
|
413
506
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
414
|
-
|
507
|
+
|
508
|
+
https://api-docs.poloniex.com/futures/api/ticker#get-real-time-ticker-20
|
509
|
+
|
415
510
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
416
511
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
417
512
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
418
513
|
"""
|
419
514
|
await self.load_markets()
|
420
515
|
market = self.market(symbol)
|
421
|
-
request = {
|
516
|
+
request: dict = {
|
422
517
|
'symbol': market['id'],
|
423
518
|
}
|
424
519
|
response = await self.publicGetTicker(self.extend(request, params))
|
@@ -445,20 +540,25 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
445
540
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
446
541
|
"""
|
447
542
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
448
|
-
|
543
|
+
|
544
|
+
https://api-docs.poloniex.com/futures/api/ticker#get-real-time-ticker-of-all-symbols
|
545
|
+
|
449
546
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
450
547
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
451
548
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
452
549
|
"""
|
453
550
|
await self.load_markets()
|
454
551
|
response = await self.publicGetTickers(params)
|
455
|
-
|
552
|
+
data = self.safe_list(response, 'data', [])
|
553
|
+
return self.parse_tickers(data, symbols)
|
456
554
|
|
457
555
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
458
556
|
"""
|
459
557
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
460
|
-
|
461
|
-
|
558
|
+
|
559
|
+
https://api-docs.poloniex.com/futures/api/orderbook#get-full-order-book---level-2
|
560
|
+
https://api-docs.poloniex.com/futures/api/orderbook#get-full-order-book--level-3
|
561
|
+
|
462
562
|
:param str symbol: unified symbol of the market to fetch the order book for
|
463
563
|
:param int [limit]: the maximum amount of order book entries to return
|
464
564
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -470,7 +570,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
470
570
|
if level is not None and level != 2 and level != 3:
|
471
571
|
raise BadRequest(self.id + ' fetchOrderBook() can only return level 2 & 3')
|
472
572
|
market = self.market(symbol)
|
473
|
-
request = {
|
573
|
+
request: dict = {
|
474
574
|
'symbol': market['id'],
|
475
575
|
}
|
476
576
|
response = None
|
@@ -537,7 +637,9 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
537
637
|
async def fetch_l3_order_book(self, symbol: str, limit: Int = None, params={}):
|
538
638
|
"""
|
539
639
|
fetches level 3 information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
540
|
-
|
640
|
+
|
641
|
+
https://api-docs.poloniex.com/futures/api/orderbook#get-full-order-book--level-3
|
642
|
+
|
541
643
|
:param str symbol: unified market symbol
|
542
644
|
:param int [limit]: max number of orders to return, default is None
|
543
645
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -547,7 +649,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
547
649
|
market = self.market(symbol)
|
548
650
|
return self.fetch_order_book(market['id'], None, {'level': 3})
|
549
651
|
|
550
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
652
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
551
653
|
#
|
552
654
|
# fetchTrades(public)
|
553
655
|
#
|
@@ -636,7 +738,9 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
636
738
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
637
739
|
"""
|
638
740
|
get the list of most recent trades for a particular symbol
|
639
|
-
|
741
|
+
|
742
|
+
https://api-docs.poloniex.com/futures/api/historical#transaction-history
|
743
|
+
|
640
744
|
:param str symbol: unified symbol of the market to fetch trades for
|
641
745
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
642
746
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -645,7 +749,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
645
749
|
"""
|
646
750
|
await self.load_markets()
|
647
751
|
market = self.market(symbol)
|
648
|
-
request = {
|
752
|
+
request: dict = {
|
649
753
|
'symbol': market['id'],
|
650
754
|
}
|
651
755
|
response = await self.publicGetTradeHistory(self.extend(request, params))
|
@@ -665,13 +769,15 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
665
769
|
# },
|
666
770
|
# }
|
667
771
|
#
|
668
|
-
trades = self.
|
772
|
+
trades = self.safe_list(response, 'data', [])
|
669
773
|
return self.parse_trades(trades, market, since, limit)
|
670
774
|
|
671
775
|
async def fetch_time(self, params={}):
|
672
776
|
"""
|
673
777
|
fetches the current integer timestamp in milliseconds from the poloniexfutures server
|
674
|
-
|
778
|
+
|
779
|
+
https://api-docs.poloniex.com/futures/api/time#server-time
|
780
|
+
|
675
781
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
676
782
|
:returns int: the current integer timestamp in milliseconds from the poloniexfutures server
|
677
783
|
"""
|
@@ -688,7 +794,9 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
688
794
|
async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
689
795
|
"""
|
690
796
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
691
|
-
|
797
|
+
|
798
|
+
https://api-docs.poloniex.com/futures/api/kline#get-k-line-data-of-contract
|
799
|
+
|
692
800
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
693
801
|
:param str timeframe: the length of time each candle represents
|
694
802
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -700,7 +808,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
700
808
|
market = self.market(symbol)
|
701
809
|
marketId = market['id']
|
702
810
|
parsedTimeframe = self.safe_integer(self.timeframes, timeframe)
|
703
|
-
request = {
|
811
|
+
request: dict = {
|
704
812
|
'symbol': marketId,
|
705
813
|
}
|
706
814
|
if parsedTimeframe is not None:
|
@@ -729,11 +837,11 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
729
837
|
# ]
|
730
838
|
# }
|
731
839
|
#
|
732
|
-
data = self.
|
840
|
+
data = self.safe_list(response, 'data', [])
|
733
841
|
return self.parse_ohlcvs(data, market, timeframe, since, limit)
|
734
842
|
|
735
843
|
def parse_balance(self, response) -> Balances:
|
736
|
-
result = {
|
844
|
+
result: dict = {
|
737
845
|
'info': response,
|
738
846
|
'timestamp': None,
|
739
847
|
'datetime': None,
|
@@ -750,13 +858,15 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
750
858
|
async def fetch_balance(self, params={}) -> Balances:
|
751
859
|
"""
|
752
860
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
753
|
-
|
861
|
+
|
862
|
+
https://api-docs.poloniex.com/futures/api/account#get-account-overview
|
863
|
+
|
754
864
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
755
865
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
756
866
|
"""
|
757
867
|
await self.load_markets()
|
758
868
|
currencyId = self.safe_string(params, 'currency')
|
759
|
-
request = {}
|
869
|
+
request: dict = {}
|
760
870
|
if currencyId is not None:
|
761
871
|
currency = self.currency(currencyId)
|
762
872
|
request = {
|
@@ -783,15 +893,17 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
783
893
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
784
894
|
"""
|
785
895
|
Create an order on the exchange
|
786
|
-
|
896
|
+
|
897
|
+
https://api-docs.poloniex.com/futures/api/orders#place-an-order
|
898
|
+
|
787
899
|
:param str symbol: Unified CCXT market symbol
|
788
900
|
:param str type: 'limit' or 'market'
|
789
901
|
:param str side: 'buy' or 'sell'
|
790
902
|
:param float amount: the amount of currency to trade
|
791
|
-
:param float [price]:
|
903
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
792
904
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
793
905
|
:param float [params.leverage]: Leverage size of the order
|
794
|
-
:param float [params.
|
906
|
+
:param float [params.triggerPrice]: The price at which a trigger order is triggered at
|
795
907
|
:param bool [params.reduceOnly]: A mark to reduce the position size only. Set to False by default. Need to set the position size when reduceOnly is True.
|
796
908
|
:param str [params.timeInForce]: GTC, GTT, IOC, or FOK, default is GTC, limit orders only
|
797
909
|
:param str [params.postOnly]: Post only flag, invalid when timeInForce is IOC or FOK
|
@@ -811,7 +923,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
811
923
|
if amount < 1:
|
812
924
|
raise InvalidOrder(self.id + ' createOrder() minimum contract order amount is 1')
|
813
925
|
preciseAmount = int(self.amount_to_precision(symbol, amount))
|
814
|
-
request = {
|
926
|
+
request: dict = {
|
815
927
|
'clientOid': clientOrderId,
|
816
928
|
'side': side,
|
817
929
|
'symbol': market['id'],
|
@@ -819,12 +931,12 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
819
931
|
'size': preciseAmount,
|
820
932
|
'leverage': 1,
|
821
933
|
}
|
822
|
-
|
823
|
-
if
|
934
|
+
triggerPrice = self.safe_value_2(params, 'triggerPrice', 'stopPrice')
|
935
|
+
if triggerPrice:
|
824
936
|
request['stop'] = 'up' if (side == 'buy') else 'down'
|
825
937
|
stopPriceType = self.safe_string(params, 'stopPriceType', 'TP')
|
826
938
|
request['stopPriceType'] = stopPriceType
|
827
|
-
request['stopPrice'] = self.price_to_precision(symbol,
|
939
|
+
request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
|
828
940
|
timeInForce = self.safe_string_upper(params, 'timeInForce')
|
829
941
|
if type == 'limit':
|
830
942
|
if price is None:
|
@@ -873,21 +985,23 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
873
985
|
'trades': None,
|
874
986
|
'timeInForce': None,
|
875
987
|
'postOnly': None,
|
876
|
-
'
|
988
|
+
'triggerPrice': None,
|
877
989
|
'info': response,
|
878
990
|
}, market)
|
879
991
|
|
880
992
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
881
993
|
"""
|
882
994
|
cancels an open order
|
883
|
-
|
995
|
+
|
996
|
+
https://api-docs.poloniex.com/futures/api/orders#cancel-an-order
|
997
|
+
|
884
998
|
:param str id: order id
|
885
999
|
:param str symbol: unified symbol of the market the order was made in
|
886
1000
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
887
1001
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
888
1002
|
"""
|
889
1003
|
await self.load_markets()
|
890
|
-
request = {
|
1004
|
+
request: dict = {
|
891
1005
|
'order-id': id,
|
892
1006
|
}
|
893
1007
|
response = await self.privateDeleteOrdersOrderId(self.extend(request, params))
|
@@ -917,7 +1031,9 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
917
1031
|
async def fetch_positions(self, symbols: Strings = None, params={}):
|
918
1032
|
"""
|
919
1033
|
fetch all open positions
|
920
|
-
|
1034
|
+
|
1035
|
+
https://api-docs.poloniex.com/futures/api/positions#get-position-list
|
1036
|
+
|
921
1037
|
:param str[]|None symbols: list of unified market symbols
|
922
1038
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
923
1039
|
:returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
|
@@ -970,10 +1086,10 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
970
1086
|
# ]
|
971
1087
|
# }
|
972
1088
|
#
|
973
|
-
data = self.
|
1089
|
+
data = self.safe_list(response, 'data')
|
974
1090
|
return self.parse_positions(data, symbols)
|
975
1091
|
|
976
|
-
def parse_position(self, position, market: Market = None):
|
1092
|
+
def parse_position(self, position: dict, market: Market = None):
|
977
1093
|
#
|
978
1094
|
# {
|
979
1095
|
# "code": "200000",
|
@@ -1067,7 +1183,9 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1067
1183
|
async def fetch_funding_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1068
1184
|
"""
|
1069
1185
|
fetch the history of funding payments paid and received on self account
|
1070
|
-
|
1186
|
+
|
1187
|
+
https://api-docs.poloniex.com/futures/api/funding-fees#get-funding-history
|
1188
|
+
|
1071
1189
|
:param str symbol: unified market symbol
|
1072
1190
|
:param int [since]: the earliest time in ms to fetch funding history for
|
1073
1191
|
:param int [limit]: the maximum number of funding history structures to retrieve
|
@@ -1078,7 +1196,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1078
1196
|
raise ArgumentsRequired(self.id + ' fetchFundingHistory() requires a symbol argument')
|
1079
1197
|
await self.load_markets()
|
1080
1198
|
market = self.market(symbol)
|
1081
|
-
request = {
|
1199
|
+
request: dict = {
|
1082
1200
|
'symbol': market['id'],
|
1083
1201
|
}
|
1084
1202
|
if since is not None:
|
@@ -1136,17 +1254,17 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1136
1254
|
cancel all open orders
|
1137
1255
|
:param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
|
1138
1256
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1139
|
-
:param dict [params.
|
1257
|
+
:param dict [params.trigger]: When True, all the trigger orders will be cancelled
|
1140
1258
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1141
1259
|
"""
|
1142
1260
|
await self.load_markets()
|
1143
|
-
request = {}
|
1261
|
+
request: dict = {}
|
1144
1262
|
if symbol is not None:
|
1145
1263
|
request['symbol'] = self.market_id(symbol)
|
1146
|
-
|
1264
|
+
trigger = self.safe_value_2(params, 'stop', 'trigger')
|
1147
1265
|
params = self.omit(params, ['stop', 'trigger'])
|
1148
1266
|
response = None
|
1149
|
-
if
|
1267
|
+
if trigger:
|
1150
1268
|
response = await self.privateDeleteStopOrders(self.extend(request, params))
|
1151
1269
|
else:
|
1152
1270
|
response = await self.privateDeleteOrders(self.extend(request, params))
|
@@ -1166,7 +1284,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1166
1284
|
cancelledOrderIdsLength = len(cancelledOrderIds)
|
1167
1285
|
for i in range(0, cancelledOrderIdsLength):
|
1168
1286
|
cancelledOrderId = self.safe_string(cancelledOrderIds, i)
|
1169
|
-
result.append({
|
1287
|
+
result.append(self.safe_order({
|
1170
1288
|
'id': cancelledOrderId,
|
1171
1289
|
'clientOrderId': None,
|
1172
1290
|
'timestamp': None,
|
@@ -1186,16 +1304,18 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1186
1304
|
'trades': None,
|
1187
1305
|
'timeInForce': None,
|
1188
1306
|
'postOnly': None,
|
1189
|
-
'
|
1307
|
+
'triggerPrice': None,
|
1190
1308
|
'info': response,
|
1191
|
-
})
|
1309
|
+
}))
|
1192
1310
|
return result
|
1193
1311
|
|
1194
1312
|
async def fetch_orders_by_status(self, status, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1195
1313
|
"""
|
1196
1314
|
fetches a list of orders placed on the exchange
|
1197
|
-
|
1198
|
-
|
1315
|
+
|
1316
|
+
https://api-docs.poloniex.com/futures/api/orders#get-order-listdeprecated
|
1317
|
+
https://api-docs.poloniex.com/futures/api/orders#get-untriggered-stop-order-list
|
1318
|
+
|
1199
1319
|
:param str status: 'active' or 'closed', only 'active' is valid for stop orders
|
1200
1320
|
:param str symbol: unified symbol for the market to retrieve orders from
|
1201
1321
|
:param int [since]: timestamp in ms of the earliest order to retrieve
|
@@ -1208,13 +1328,13 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1208
1328
|
:returns: An `array of order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1209
1329
|
"""
|
1210
1330
|
await self.load_markets()
|
1211
|
-
|
1212
|
-
until = self.
|
1213
|
-
params = self.omit(params, ['
|
1331
|
+
trigger = self.safe_value_2(params, 'stop', 'trigger')
|
1332
|
+
until = self.safe_integer(params, 'until')
|
1333
|
+
params = self.omit(params, ['trigger', 'stop', 'until'])
|
1214
1334
|
if status == 'closed':
|
1215
1335
|
status = 'done'
|
1216
|
-
request = {}
|
1217
|
-
if not
|
1336
|
+
request: dict = {}
|
1337
|
+
if not trigger:
|
1218
1338
|
request['status'] = 'active' if (status == 'open') else 'done'
|
1219
1339
|
elif status != 'open':
|
1220
1340
|
raise BadRequest(self.id + ' fetchOrdersByStatus() can only fetch untriggered stop orders')
|
@@ -1227,7 +1347,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1227
1347
|
if until is not None:
|
1228
1348
|
request['endAt'] = until
|
1229
1349
|
response = None
|
1230
|
-
if
|
1350
|
+
if trigger:
|
1231
1351
|
response = await self.privateGetStopOrders(self.extend(request, params))
|
1232
1352
|
else:
|
1233
1353
|
response = await self.privateGetOrders(self.extend(request, params))
|
@@ -1292,13 +1412,15 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1292
1412
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1293
1413
|
"""
|
1294
1414
|
fetch all unfilled currently open orders
|
1295
|
-
|
1296
|
-
|
1415
|
+
|
1416
|
+
https://api-docs.poloniex.com/futures/api/orders#get-order-listdeprecated
|
1417
|
+
https://api-docs.poloniex.com/futures/api/orders#get-untriggered-stop-order-list
|
1418
|
+
|
1297
1419
|
:param str symbol: unified market symbol
|
1298
1420
|
:param int [since]: the earliest time in ms to fetch open orders for
|
1299
1421
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
1300
1422
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1301
|
-
:param int [params.
|
1423
|
+
:param int [params.until]: end time in ms
|
1302
1424
|
:param str [params.side]: buy or sell
|
1303
1425
|
:param str [params.type]: limit, or market
|
1304
1426
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1308,13 +1430,15 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1308
1430
|
async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1309
1431
|
"""
|
1310
1432
|
fetches information on multiple closed orders made by the user
|
1311
|
-
|
1312
|
-
|
1433
|
+
|
1434
|
+
https://api-docs.poloniex.com/futures/api/orders#get-order-listdeprecated
|
1435
|
+
https://api-docs.poloniex.com/futures/api/orders#get-untriggered-stop-order-list
|
1436
|
+
|
1313
1437
|
:param str symbol: unified market symbol of the market orders were made in
|
1314
1438
|
:param int [since]: the earliest time in ms to fetch orders for
|
1315
1439
|
:param int [limit]: the maximum number of order structures to retrieve
|
1316
1440
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1317
|
-
:param int [params.
|
1441
|
+
:param int [params.until]: end time in ms
|
1318
1442
|
:param str [params.side]: buy or sell
|
1319
1443
|
:param str [params.type]: limit, or market
|
1320
1444
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1324,14 +1448,17 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1324
1448
|
async def fetch_order(self, id: Str = None, symbol: Str = None, params={}):
|
1325
1449
|
"""
|
1326
1450
|
fetches information on an order made by the user
|
1327
|
-
|
1328
|
-
|
1451
|
+
|
1452
|
+
https://api-docs.poloniex.com/futures/api/orders#get-details-of-a-single-order
|
1453
|
+
https://api-docs.poloniex.com/futures/api/orders#get-single-order-by-clientoid
|
1454
|
+
|
1455
|
+
:param str id: the order id
|
1329
1456
|
:param str symbol: unified symbol of the market the order was made in
|
1330
1457
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1331
1458
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1332
1459
|
"""
|
1333
1460
|
await self.load_markets()
|
1334
|
-
request = {}
|
1461
|
+
request: dict = {}
|
1335
1462
|
response = None
|
1336
1463
|
if id is None:
|
1337
1464
|
clientOrderId = self.safe_string_2(params, 'clientOid', 'clientOrderId')
|
@@ -1389,10 +1516,10 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1389
1516
|
# }
|
1390
1517
|
#
|
1391
1518
|
market = self.market(symbol) if (symbol is not None) else None
|
1392
|
-
responseData = self.
|
1519
|
+
responseData = self.safe_dict(response, 'data')
|
1393
1520
|
return self.parse_order(responseData, market)
|
1394
1521
|
|
1395
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
1522
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
1396
1523
|
#
|
1397
1524
|
# createOrder
|
1398
1525
|
#
|
@@ -1496,7 +1623,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1496
1623
|
'side': self.safe_string(order, 'side'),
|
1497
1624
|
'amount': self.safe_string(order, 'size'),
|
1498
1625
|
'price': self.safe_string(order, 'price'),
|
1499
|
-
'
|
1626
|
+
'triggerPrice': self.safe_string(order, 'stopPrice'),
|
1500
1627
|
'cost': self.safe_string(order, 'dealValue'),
|
1501
1628
|
'filled': filled,
|
1502
1629
|
'remaining': None,
|
@@ -1512,17 +1639,19 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1512
1639
|
'trades': None,
|
1513
1640
|
}, market)
|
1514
1641
|
|
1515
|
-
async def fetch_funding_rate(self, symbol: str, params={}):
|
1642
|
+
async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
|
1516
1643
|
"""
|
1517
1644
|
fetch the current funding rate
|
1518
|
-
|
1645
|
+
|
1646
|
+
https://api-docs.poloniex.com/futures/api/futures-index#get-premium-index
|
1647
|
+
|
1519
1648
|
:param str symbol: unified market symbol
|
1520
1649
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1521
1650
|
:returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
|
1522
1651
|
"""
|
1523
1652
|
await self.load_markets()
|
1524
1653
|
market = self.market(symbol)
|
1525
|
-
request = {
|
1654
|
+
request: dict = {
|
1526
1655
|
'symbol': market['id'],
|
1527
1656
|
}
|
1528
1657
|
response = await self.publicGetFundingRateSymbolCurrent(self.extend(request, params))
|
@@ -1535,45 +1664,82 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1535
1664
|
# "predictedValue": 0.00375
|
1536
1665
|
# }
|
1537
1666
|
#
|
1538
|
-
data = self.
|
1667
|
+
data = self.safe_dict(response, 'data', {})
|
1668
|
+
return self.parse_funding_rate(data, market)
|
1669
|
+
|
1670
|
+
async def fetch_funding_interval(self, symbol: str, params={}) -> FundingRate:
|
1671
|
+
"""
|
1672
|
+
fetch the current funding rate interval
|
1673
|
+
|
1674
|
+
https://api-docs.poloniex.com/futures/api/futures-index#get-premium-index
|
1675
|
+
|
1676
|
+
:param str symbol: unified market symbol
|
1677
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1678
|
+
:returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
|
1679
|
+
"""
|
1680
|
+
return await self.fetch_funding_rate(symbol, params)
|
1681
|
+
|
1682
|
+
def parse_funding_rate(self, data, market: Market = None) -> FundingRate:
|
1683
|
+
#
|
1684
|
+
# {
|
1685
|
+
# "symbol": ".ETHUSDTMFPI8H",
|
1686
|
+
# "granularity": 28800000,
|
1687
|
+
# "timePoint": 1637380800000,
|
1688
|
+
# "value": 0.0001,
|
1689
|
+
# "predictedValue": 0.0001,
|
1690
|
+
# }
|
1691
|
+
#
|
1539
1692
|
fundingTimestamp = self.safe_integer(data, 'timePoint')
|
1540
|
-
|
1693
|
+
marketId = self.safe_string(data, 'symbol')
|
1541
1694
|
return {
|
1542
1695
|
'info': data,
|
1543
|
-
'symbol': market
|
1696
|
+
'symbol': self.safe_symbol(marketId, market, None, 'contract'),
|
1544
1697
|
'markPrice': None,
|
1545
1698
|
'indexPrice': None,
|
1546
1699
|
'interestRate': None,
|
1547
1700
|
'estimatedSettlePrice': None,
|
1548
1701
|
'timestamp': None,
|
1549
1702
|
'datetime': None,
|
1550
|
-
'fundingRate': self.safe_number(data, '
|
1551
|
-
'fundingTimestamp':
|
1552
|
-
'fundingDatetime':
|
1553
|
-
'nextFundingRate':
|
1703
|
+
'fundingRate': self.safe_number(data, 'value'),
|
1704
|
+
'fundingTimestamp': fundingTimestamp,
|
1705
|
+
'fundingDatetime': self.iso8601(fundingTimestamp),
|
1706
|
+
'nextFundingRate': self.safe_number(data, 'predictedValue'),
|
1554
1707
|
'nextFundingTimestamp': None,
|
1555
1708
|
'nextFundingDatetime': None,
|
1556
|
-
'previousFundingRate':
|
1557
|
-
'previousFundingTimestamp':
|
1558
|
-
'previousFundingDatetime':
|
1709
|
+
'previousFundingRate': None,
|
1710
|
+
'previousFundingTimestamp': None,
|
1711
|
+
'previousFundingDatetime': None,
|
1712
|
+
'interval': self.parse_funding_interval(self.safe_string(data, 'granularity')),
|
1559
1713
|
}
|
1560
1714
|
|
1715
|
+
def parse_funding_interval(self, interval):
|
1716
|
+
intervals: dict = {
|
1717
|
+
'3600000': '1h',
|
1718
|
+
'14400000': '4h',
|
1719
|
+
'28800000': '8h',
|
1720
|
+
'57600000': '16h',
|
1721
|
+
'86400000': '24h',
|
1722
|
+
}
|
1723
|
+
return self.safe_string(intervals, interval, interval)
|
1724
|
+
|
1561
1725
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1562
1726
|
"""
|
1563
1727
|
fetch all trades made by the user
|
1564
|
-
|
1728
|
+
|
1729
|
+
https://api-docs.poloniex.com/futures/api/fills#get-fillsdeprecated
|
1730
|
+
|
1565
1731
|
:param str symbol: unified market symbol
|
1566
1732
|
:param int [since]: the earliest time in ms to fetch trades for
|
1567
1733
|
:param int [limit]: the maximum number of trades structures to retrieve
|
1568
1734
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1569
|
-
:param str orderIdFills: filles for a specific order(other parameters can be ignored if specified)
|
1570
|
-
:param str side: buy or sell
|
1571
|
-
:param str type: limit, market, limit_stop or market_stop
|
1572
|
-
:param int endAt: end time(milisecond)
|
1735
|
+
:param str [params.orderIdFills]: filles for a specific order(other parameters can be ignored if specified)
|
1736
|
+
:param str [params.side]: buy or sell
|
1737
|
+
:param str [params.type]: limit, market, limit_stop or market_stop
|
1738
|
+
:param int [params.endAt]: end time(milisecond)
|
1573
1739
|
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
1574
1740
|
"""
|
1575
1741
|
await self.load_markets()
|
1576
|
-
request = {
|
1742
|
+
request: dict = {
|
1577
1743
|
}
|
1578
1744
|
market = None
|
1579
1745
|
if symbol is not None:
|
@@ -1616,13 +1782,15 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1616
1782
|
# }
|
1617
1783
|
#
|
1618
1784
|
data = self.safe_value(response, 'data', {})
|
1619
|
-
trades = self.
|
1785
|
+
trades = self.safe_list(data, 'items', [])
|
1620
1786
|
return self.parse_trades(trades, market, since, limit)
|
1621
1787
|
|
1622
1788
|
async def set_margin_mode(self, marginMode: str, symbol: Str = None, params={}):
|
1623
1789
|
"""
|
1624
1790
|
set margin mode to 'cross' or 'isolated'
|
1625
|
-
|
1791
|
+
|
1792
|
+
https://api-docs.poloniex.com/futures/api/margin-mode#change-margin-mode
|
1793
|
+
|
1626
1794
|
:param str marginMode: "0"(isolated) or "1"(cross)
|
1627
1795
|
:param str symbol: unified market symbol
|
1628
1796
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -1638,7 +1806,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1638
1806
|
if marginMode == 'cross':
|
1639
1807
|
marginMode = '1'
|
1640
1808
|
market = self.market(symbol)
|
1641
|
-
request = {
|
1809
|
+
request: dict = {
|
1642
1810
|
'symbol': market['id'],
|
1643
1811
|
'marginType': self.parse_to_int(marginMode),
|
1644
1812
|
}
|
@@ -1684,7 +1852,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1684
1852
|
headers['Content-Type'] = 'application/json'
|
1685
1853
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1686
1854
|
|
1687
|
-
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1855
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1688
1856
|
if not response:
|
1689
1857
|
self.throw_broadly_matched_exception(self.exceptions['broad'], body, body)
|
1690
1858
|
return None
|