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,9 +6,10 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.currencycom import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Account, Balances, Currency, Int, Leverage, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
|
+
from ccxt.base.types import Account, Balances, Currencies, Currency, DepositAddress, Int, LedgerEntry, Leverage, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
|
+
from ccxt.base.errors import AuthenticationError
|
12
13
|
from ccxt.base.errors import ArgumentsRequired
|
13
14
|
from ccxt.base.errors import BadRequest
|
14
15
|
from ccxt.base.errors import BadSymbol
|
@@ -19,7 +20,6 @@ from ccxt.base.errors import NotSupported
|
|
19
20
|
from ccxt.base.errors import DDoSProtection
|
20
21
|
from ccxt.base.errors import ExchangeNotAvailable
|
21
22
|
from ccxt.base.errors import InvalidNonce
|
22
|
-
from ccxt.base.errors import AuthenticationError
|
23
23
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
24
24
|
from ccxt.base.precise import Precise
|
25
25
|
|
@@ -114,6 +114,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
114
114
|
'fetchWithdrawal': None,
|
115
115
|
'fetchWithdrawals': True,
|
116
116
|
'reduceMargin': None,
|
117
|
+
'sandbox': True,
|
117
118
|
'setLeverage': None,
|
118
119
|
'setMarginMode': None,
|
119
120
|
'setPositionMode': None,
|
@@ -260,6 +261,78 @@ class currencycom(Exchange, ImplicitAPI):
|
|
260
261
|
'leverage_markets_suffix': '_LEVERAGE',
|
261
262
|
'collateralCurrencies': ['USD', 'EUR', 'USDT'],
|
262
263
|
},
|
264
|
+
'features': {
|
265
|
+
'default': {
|
266
|
+
'sandbox': True,
|
267
|
+
'createOrder': {
|
268
|
+
'marginMode': True, # todo implementation
|
269
|
+
'triggerPrice': True,
|
270
|
+
'triggerPriceType': None,
|
271
|
+
'triggerDirection': False,
|
272
|
+
'stopLossPrice': False, # todo
|
273
|
+
'takeProfitPrice': False, # todo
|
274
|
+
'attachedStopLossTakeProfit': {
|
275
|
+
'triggerPriceType': None,
|
276
|
+
'price': False,
|
277
|
+
},
|
278
|
+
'timeInForce': {
|
279
|
+
'IOC': True,
|
280
|
+
'FOK': True,
|
281
|
+
'PO': False,
|
282
|
+
'GTD': True,
|
283
|
+
},
|
284
|
+
'hedged': False,
|
285
|
+
'selfTradePrevention': False,
|
286
|
+
'trailing': False,
|
287
|
+
'iceberg': False,
|
288
|
+
'leverage': True,
|
289
|
+
'marketBuyByCost': False,
|
290
|
+
'marketBuyRequiresPrice': False,
|
291
|
+
},
|
292
|
+
'createOrders': None,
|
293
|
+
'fetchMyTrades': {
|
294
|
+
'marginMode': False,
|
295
|
+
'limit': 500,
|
296
|
+
'daysBack': 100000,
|
297
|
+
'untilDays': 100000, # todo implementation
|
298
|
+
},
|
299
|
+
'fetchOrder': {
|
300
|
+
'marginMode': False,
|
301
|
+
'trigger': False,
|
302
|
+
'trailing': False,
|
303
|
+
},
|
304
|
+
'fetchOpenOrders': {
|
305
|
+
'marginMode': True,
|
306
|
+
'limit': 100,
|
307
|
+
'trigger': False,
|
308
|
+
'trailing': False,
|
309
|
+
},
|
310
|
+
'fetchOrders': None,
|
311
|
+
'fetchClosedOrders': None,
|
312
|
+
'fetchOHLCV': {
|
313
|
+
'limit': 1000,
|
314
|
+
},
|
315
|
+
},
|
316
|
+
'spot': {
|
317
|
+
'extends': 'default',
|
318
|
+
},
|
319
|
+
'swap': {
|
320
|
+
'linear': {
|
321
|
+
'extends': 'default',
|
322
|
+
},
|
323
|
+
'inverse': {
|
324
|
+
'extends': 'default',
|
325
|
+
},
|
326
|
+
},
|
327
|
+
'future': {
|
328
|
+
'linear': {
|
329
|
+
'extends': 'default',
|
330
|
+
},
|
331
|
+
'inverse': {
|
332
|
+
'extends': 'default',
|
333
|
+
},
|
334
|
+
},
|
335
|
+
},
|
263
336
|
'exceptions': {
|
264
337
|
'broad': {
|
265
338
|
'FIELD_VALIDATION_ERROR Cancel is available only for LIMIT order': InvalidOrder,
|
@@ -314,7 +387,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
314
387
|
async def fetch_time(self, params={}):
|
315
388
|
"""
|
316
389
|
fetches the current integer timestamp in milliseconds from the exchange server
|
317
|
-
|
390
|
+
|
391
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/timeUsingGET
|
392
|
+
|
318
393
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
319
394
|
:returns int: the current integer timestamp in milliseconds from the exchange server
|
320
395
|
"""
|
@@ -326,10 +401,12 @@ class currencycom(Exchange, ImplicitAPI):
|
|
326
401
|
#
|
327
402
|
return self.safe_integer(response, 'serverTime')
|
328
403
|
|
329
|
-
async def fetch_currencies(self, params={}):
|
404
|
+
async def fetch_currencies(self, params={}) -> Currencies:
|
330
405
|
"""
|
331
406
|
fetches all available currencies on an exchange
|
332
|
-
|
407
|
+
|
408
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getCurrenciesUsingGET
|
409
|
+
|
333
410
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
334
411
|
:returns dict: an associative dictionary of currencies
|
335
412
|
"""
|
@@ -361,7 +438,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
361
438
|
# },
|
362
439
|
# ]
|
363
440
|
#
|
364
|
-
result = {}
|
441
|
+
result: dict = {}
|
365
442
|
for i in range(0, len(response)):
|
366
443
|
currency = response[i]
|
367
444
|
id = self.safe_string(currency, 'displaySymbol')
|
@@ -395,10 +472,12 @@ class currencycom(Exchange, ImplicitAPI):
|
|
395
472
|
}
|
396
473
|
return result
|
397
474
|
|
398
|
-
async def fetch_markets(self, params={}):
|
475
|
+
async def fetch_markets(self, params={}) -> List[Market]:
|
399
476
|
"""
|
400
477
|
retrieves data on all markets for currencycom
|
401
|
-
|
478
|
+
|
479
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/exchangeInfoUsingGET
|
480
|
+
|
402
481
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
403
482
|
:returns dict[]: an array of objects representing market data
|
404
483
|
"""
|
@@ -497,7 +576,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
497
576
|
if (maxPrice is not None) and (Precise.string_gt(maxPrice, '0')):
|
498
577
|
limitPriceMax = maxPrice
|
499
578
|
precisionAmount = self.parse_number(self.parse_precision(self.safe_string(market, 'baseAssetPrecision')))
|
500
|
-
limitAmount = {
|
579
|
+
limitAmount: dict = {
|
501
580
|
'min': None,
|
502
581
|
'max': None,
|
503
582
|
}
|
@@ -508,7 +587,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
508
587
|
'min': self.safe_number(filter, 'minQty'),
|
509
588
|
'max': self.safe_number(filter, 'maxQty'),
|
510
589
|
}
|
511
|
-
limitMarket = {
|
590
|
+
limitMarket: dict = {
|
512
591
|
'min': None,
|
513
592
|
'max': None,
|
514
593
|
}
|
@@ -577,7 +656,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
577
656
|
async def fetch_accounts(self, params={}) -> List[Account]:
|
578
657
|
"""
|
579
658
|
fetch all the accounts associated with a profile
|
580
|
-
|
659
|
+
|
660
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/accountUsingGET
|
661
|
+
|
581
662
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
582
663
|
:returns dict: a dictionary of `account structures <https://docs.ccxt.com/#/?id=account-structure>` indexed by the account type
|
583
664
|
"""
|
@@ -628,10 +709,12 @@ class currencycom(Exchange, ImplicitAPI):
|
|
628
709
|
})
|
629
710
|
return result
|
630
711
|
|
631
|
-
async def fetch_trading_fees(self, params={}):
|
712
|
+
async def fetch_trading_fees(self, params={}) -> TradingFees:
|
632
713
|
"""
|
633
714
|
fetch the trading fees for multiple markets
|
634
|
-
|
715
|
+
|
716
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/accountUsingGET
|
717
|
+
|
635
718
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
636
719
|
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
|
637
720
|
"""
|
@@ -653,7 +736,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
653
736
|
#
|
654
737
|
makerFee = self.safe_number(response, 'makerCommission')
|
655
738
|
takerFee = self.safe_number(response, 'takerCommission')
|
656
|
-
result = {}
|
739
|
+
result: dict = {}
|
657
740
|
for i in range(0, len(self.symbols)):
|
658
741
|
symbol = self.symbols[i]
|
659
742
|
result[symbol] = {
|
@@ -689,7 +772,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
689
772
|
# ]
|
690
773
|
# }
|
691
774
|
#
|
692
|
-
result = {'info': response}
|
775
|
+
result: dict = {'info': response}
|
693
776
|
balances = self.safe_value(response, 'balances', [])
|
694
777
|
for i in range(0, len(balances)):
|
695
778
|
balance = balances[i]
|
@@ -704,7 +787,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
704
787
|
async def fetch_balance(self, params={}) -> Balances:
|
705
788
|
"""
|
706
789
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
707
|
-
|
790
|
+
|
791
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/accountUsingGET
|
792
|
+
|
708
793
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
709
794
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
710
795
|
"""
|
@@ -746,7 +831,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
746
831
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
747
832
|
"""
|
748
833
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
749
|
-
|
834
|
+
|
835
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/depthUsingGET
|
836
|
+
|
750
837
|
:param str symbol: unified symbol of the market to fetch the order book for
|
751
838
|
:param int [limit]: the maximum amount of order book entries to return
|
752
839
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -754,7 +841,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
754
841
|
"""
|
755
842
|
await self.load_markets()
|
756
843
|
market = self.market(symbol)
|
757
|
-
request = {
|
844
|
+
request: dict = {
|
758
845
|
'symbol': market['id'],
|
759
846
|
}
|
760
847
|
if limit is not None:
|
@@ -779,7 +866,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
779
866
|
orderbook['nonce'] = self.safe_integer(response, 'lastUpdateId')
|
780
867
|
return orderbook
|
781
868
|
|
782
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
869
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
783
870
|
#
|
784
871
|
# fetchTicker
|
785
872
|
#
|
@@ -860,14 +947,16 @@ class currencycom(Exchange, ImplicitAPI):
|
|
860
947
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
861
948
|
"""
|
862
949
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
863
|
-
|
950
|
+
|
951
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/ticker_24hrUsingGET
|
952
|
+
|
864
953
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
865
954
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
866
955
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
867
956
|
"""
|
868
957
|
await self.load_markets()
|
869
958
|
market = self.market(symbol)
|
870
|
-
request = {
|
959
|
+
request: dict = {
|
871
960
|
'symbol': market['id'],
|
872
961
|
}
|
873
962
|
response = await self.publicGetV2Ticker24hr(self.extend(request, params))
|
@@ -896,7 +985,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
896
985
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
897
986
|
"""
|
898
987
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
899
|
-
|
988
|
+
|
989
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/ticker_24hrUsingGET
|
990
|
+
|
900
991
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
901
992
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
902
993
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -946,7 +1037,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
946
1037
|
async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
947
1038
|
"""
|
948
1039
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
949
|
-
|
1040
|
+
|
1041
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/klinesUsingGET
|
1042
|
+
|
950
1043
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
951
1044
|
:param str timeframe: the length of time each candle represents
|
952
1045
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -956,14 +1049,14 @@ class currencycom(Exchange, ImplicitAPI):
|
|
956
1049
|
"""
|
957
1050
|
await self.load_markets()
|
958
1051
|
market = self.market(symbol)
|
959
|
-
request = {
|
1052
|
+
request: dict = {
|
960
1053
|
'symbol': market['id'],
|
961
1054
|
'interval': self.safe_string(self.timeframes, timeframe, timeframe),
|
962
1055
|
}
|
963
1056
|
if since is not None:
|
964
1057
|
request['startTime'] = since
|
965
1058
|
if limit is not None:
|
966
|
-
request['limit'] = limit # default 500, max 1000
|
1059
|
+
request['limit'] = min(limit, 1000) # default 500, max 1000
|
967
1060
|
response = await self.publicGetV2Klines(self.extend(request, params))
|
968
1061
|
#
|
969
1062
|
# [
|
@@ -974,7 +1067,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
974
1067
|
#
|
975
1068
|
return self.parse_ohlcvs(response, market, timeframe, since, limit)
|
976
1069
|
|
977
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
1070
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
978
1071
|
#
|
979
1072
|
# fetchTrades(public aggregate trades)
|
980
1073
|
#
|
@@ -1052,7 +1145,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1052
1145
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
1053
1146
|
"""
|
1054
1147
|
get the list of most recent trades for a particular symbol
|
1055
|
-
|
1148
|
+
|
1149
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/aggTradesUsingGET
|
1150
|
+
|
1056
1151
|
:param str symbol: unified symbol of the market to fetch trades for
|
1057
1152
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
1058
1153
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -1061,7 +1156,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1061
1156
|
"""
|
1062
1157
|
await self.load_markets()
|
1063
1158
|
market = self.market(symbol)
|
1064
|
-
request = {
|
1159
|
+
request: dict = {
|
1065
1160
|
'symbol': market['id'],
|
1066
1161
|
# 'limit': 500, # default 500, max 1000
|
1067
1162
|
}
|
@@ -1083,7 +1178,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1083
1178
|
#
|
1084
1179
|
return self.parse_trades(response, market, since, limit)
|
1085
1180
|
|
1086
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
1181
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
1087
1182
|
#
|
1088
1183
|
# createOrder
|
1089
1184
|
#
|
@@ -1175,7 +1270,6 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1175
1270
|
'timeInForce': timeInForce,
|
1176
1271
|
'side': side,
|
1177
1272
|
'price': price,
|
1178
|
-
'stopPrice': None,
|
1179
1273
|
'triggerPrice': None,
|
1180
1274
|
'amount': amount,
|
1181
1275
|
'cost': None,
|
@@ -1187,8 +1281,8 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1187
1281
|
'trades': fills,
|
1188
1282
|
}, market)
|
1189
1283
|
|
1190
|
-
def parse_order_status(self, status):
|
1191
|
-
statuses = {
|
1284
|
+
def parse_order_status(self, status: Str):
|
1285
|
+
statuses: dict = {
|
1192
1286
|
'NEW': 'open',
|
1193
1287
|
'CREATED': 'open',
|
1194
1288
|
'MODIFIED': 'open',
|
@@ -1202,7 +1296,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1202
1296
|
return self.safe_string(statuses, status, status)
|
1203
1297
|
|
1204
1298
|
def parse_order_type(self, status):
|
1205
|
-
statuses = {
|
1299
|
+
statuses: dict = {
|
1206
1300
|
'MARKET': 'market',
|
1207
1301
|
'LIMIT': 'limit',
|
1208
1302
|
'STOP': 'stop',
|
@@ -1216,7 +1310,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1216
1310
|
return self.safe_string(statuses, status, status)
|
1217
1311
|
|
1218
1312
|
def parse_order_time_in_force(self, status):
|
1219
|
-
statuses = {
|
1313
|
+
statuses: dict = {
|
1220
1314
|
'GTC': 'GTC',
|
1221
1315
|
'FOK': 'FOK',
|
1222
1316
|
'IOC': 'IOC',
|
@@ -1224,7 +1318,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1224
1318
|
return self.safe_string(statuses, status, status)
|
1225
1319
|
|
1226
1320
|
def parse_order_side(self, status):
|
1227
|
-
statuses = {
|
1321
|
+
statuses: dict = {
|
1228
1322
|
'BUY': 'buy',
|
1229
1323
|
'SELL': 'sell',
|
1230
1324
|
}
|
@@ -1233,12 +1327,14 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1233
1327
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
1234
1328
|
"""
|
1235
1329
|
create a trade order
|
1236
|
-
|
1330
|
+
|
1331
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/orderUsingPOST
|
1332
|
+
|
1237
1333
|
:param str symbol: unified symbol of the market to create an order in
|
1238
1334
|
:param str type: 'market' or 'limit'
|
1239
1335
|
:param str side: 'buy' or 'sell'
|
1240
1336
|
:param float amount: how much of currency you want to trade in units of base currency
|
1241
|
-
:param float [price]: the price at which the order is to be
|
1337
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1242
1338
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1243
1339
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1244
1340
|
"""
|
@@ -1251,7 +1347,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1251
1347
|
if accountId is None:
|
1252
1348
|
raise ArgumentsRequired(self.id + " createOrder() requires an accountId parameter or an exchange.options['accountId'] option for " + market['type'] + ' markets')
|
1253
1349
|
newOrderRespType = self.safe_value(self.options['newOrderRespType'], type, 'RESULT')
|
1254
|
-
request = {
|
1350
|
+
request: dict = {
|
1255
1351
|
'symbol': market['id'],
|
1256
1352
|
'quantity': self.amount_to_precision(symbol, amount),
|
1257
1353
|
'type': type.upper(),
|
@@ -1271,11 +1367,11 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1271
1367
|
request['type'] = 'STOP'
|
1272
1368
|
request['price'] = self.price_to_precision(symbol, price)
|
1273
1369
|
elif type == 'market':
|
1274
|
-
|
1370
|
+
triggerPrice = self.safe_value_2(params, 'triggerPrice', 'stopPrice')
|
1275
1371
|
params = self.omit(params, ['triggerPrice', 'stopPrice'])
|
1276
|
-
if
|
1372
|
+
if triggerPrice is not None:
|
1277
1373
|
request['type'] = 'STOP'
|
1278
|
-
request['price'] = self.price_to_precision(symbol,
|
1374
|
+
request['price'] = self.price_to_precision(symbol, triggerPrice)
|
1279
1375
|
response = await self.privatePostV2Order(self.extend(request, params))
|
1280
1376
|
#
|
1281
1377
|
# limit
|
@@ -1321,7 +1417,10 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1321
1417
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1322
1418
|
"""
|
1323
1419
|
fetches information on an order made by the user
|
1324
|
-
|
1420
|
+
|
1421
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getOrderUsingGET
|
1422
|
+
|
1423
|
+
:param str id: order id
|
1325
1424
|
:param str symbol: unified symbol of the market the order was made in
|
1326
1425
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1327
1426
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1330,7 +1429,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1330
1429
|
raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol argument')
|
1331
1430
|
await self.load_markets()
|
1332
1431
|
market = self.market(symbol)
|
1333
|
-
request = {
|
1432
|
+
request: dict = {
|
1334
1433
|
'orderId': id,
|
1335
1434
|
'symbol': market['id'],
|
1336
1435
|
}
|
@@ -1362,7 +1461,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1362
1461
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1363
1462
|
"""
|
1364
1463
|
fetch all unfilled currently open orders
|
1365
|
-
|
1464
|
+
|
1465
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/openOrdersUsingGET
|
1466
|
+
|
1366
1467
|
:param str symbol: unified market symbol
|
1367
1468
|
:param int [since]: the earliest time in ms to fetch open orders for
|
1368
1469
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
@@ -1371,7 +1472,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1371
1472
|
"""
|
1372
1473
|
await self.load_markets()
|
1373
1474
|
market = None
|
1374
|
-
request = {}
|
1475
|
+
request: dict = {}
|
1375
1476
|
if symbol is not None:
|
1376
1477
|
market = self.market(symbol)
|
1377
1478
|
request['symbol'] = market['id']
|
@@ -1405,7 +1506,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1405
1506
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
1406
1507
|
"""
|
1407
1508
|
cancels an open order
|
1408
|
-
|
1509
|
+
|
1510
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/cancelOrderUsingDELETE
|
1511
|
+
|
1409
1512
|
:param str id: order id
|
1410
1513
|
:param str symbol: unified symbol of the market the order was made in
|
1411
1514
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -1416,7 +1519,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1416
1519
|
await self.load_markets()
|
1417
1520
|
market = self.market(symbol)
|
1418
1521
|
origClientOrderId = self.safe_value(params, 'origClientOrderId')
|
1419
|
-
request = {
|
1522
|
+
request: dict = {
|
1420
1523
|
'symbol': market['id'],
|
1421
1524
|
# 'orderId': int(id),
|
1422
1525
|
# 'origClientOrderId': id,
|
@@ -1444,7 +1547,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1444
1547
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1445
1548
|
"""
|
1446
1549
|
fetch all trades made by the user
|
1447
|
-
|
1550
|
+
|
1551
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/myTradesUsingGET
|
1552
|
+
|
1448
1553
|
:param str symbol: unified market symbol
|
1449
1554
|
:param int [since]: the earliest time in ms to fetch trades for
|
1450
1555
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -1455,7 +1560,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1455
1560
|
raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol argument')
|
1456
1561
|
await self.load_markets()
|
1457
1562
|
market = self.market(symbol)
|
1458
|
-
request = {
|
1563
|
+
request: dict = {
|
1459
1564
|
'symbol': market['id'],
|
1460
1565
|
}
|
1461
1566
|
if limit is not None:
|
@@ -1484,7 +1589,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1484
1589
|
async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1485
1590
|
"""
|
1486
1591
|
fetch all deposits made to an account
|
1487
|
-
|
1592
|
+
|
1593
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getDepositsUsingGET
|
1594
|
+
|
1488
1595
|
:param str code: unified currency code
|
1489
1596
|
:param int [since]: the earliest time in ms to fetch deposits for
|
1490
1597
|
:param int [limit]: the maximum number of deposits structures to retrieve
|
@@ -1496,7 +1603,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1496
1603
|
async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1497
1604
|
"""
|
1498
1605
|
fetch all withdrawals made from an account
|
1499
|
-
|
1606
|
+
|
1607
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getWithdrawalsUsingGET
|
1608
|
+
|
1500
1609
|
:param str code: unified currency code
|
1501
1610
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
1502
1611
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
@@ -1508,7 +1617,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1508
1617
|
async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1509
1618
|
"""
|
1510
1619
|
fetch history of deposits and withdrawals
|
1511
|
-
|
1620
|
+
|
1621
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getTransactionsUsingGET
|
1622
|
+
|
1512
1623
|
:param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
|
1513
1624
|
:param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
|
1514
1625
|
:param int [limit]: max number of deposit/withdrawals to return, default is None
|
@@ -1519,7 +1630,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1519
1630
|
|
1520
1631
|
async def fetch_transactions_by_method(self, method, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
1521
1632
|
await self.load_markets()
|
1522
|
-
request = {}
|
1633
|
+
request: dict = {}
|
1523
1634
|
currency = None
|
1524
1635
|
if code is not None:
|
1525
1636
|
currency = self.currency(code)
|
@@ -1554,7 +1665,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1554
1665
|
#
|
1555
1666
|
return self.parse_transactions(response, currency, since, limit, params)
|
1556
1667
|
|
1557
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
1668
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1558
1669
|
#
|
1559
1670
|
# {
|
1560
1671
|
# "id": "616769213",
|
@@ -1604,32 +1715,34 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1604
1715
|
'fee': fee,
|
1605
1716
|
}
|
1606
1717
|
|
1607
|
-
def parse_transaction_status(self, status):
|
1608
|
-
statuses = {
|
1718
|
+
def parse_transaction_status(self, status: Str):
|
1719
|
+
statuses: dict = {
|
1609
1720
|
'APPROVAL': 'pending',
|
1610
1721
|
'PROCESSED': 'ok',
|
1611
1722
|
}
|
1612
1723
|
return self.safe_string(statuses, status, status)
|
1613
1724
|
|
1614
1725
|
def parse_transaction_type(self, type):
|
1615
|
-
types = {
|
1726
|
+
types: dict = {
|
1616
1727
|
'deposit': 'deposit',
|
1617
1728
|
'withdrawal': 'withdrawal',
|
1618
1729
|
}
|
1619
1730
|
return self.safe_string(types, type, type)
|
1620
1731
|
|
1621
|
-
async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
1732
|
+
async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[LedgerEntry]:
|
1622
1733
|
"""
|
1623
|
-
fetch the history of changes, actions done by the user or operations that altered balance of the user
|
1624
|
-
|
1625
|
-
|
1734
|
+
fetch the history of changes, actions done by the user or operations that altered the balance of the user
|
1735
|
+
|
1736
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getLedgerUsingGET
|
1737
|
+
|
1738
|
+
:param str [code]: unified currency code, default is None
|
1626
1739
|
:param int [since]: timestamp in ms of the earliest ledger entry, default is None
|
1627
|
-
:param int [limit]: max number of ledger
|
1740
|
+
:param int [limit]: max number of ledger entries to return, default is None
|
1628
1741
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1629
|
-
:returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger
|
1742
|
+
:returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
|
1630
1743
|
"""
|
1631
1744
|
await self.load_markets()
|
1632
|
-
request = {}
|
1745
|
+
request: dict = {}
|
1633
1746
|
currency = None
|
1634
1747
|
if code is not None:
|
1635
1748
|
currency = self.currency(code)
|
@@ -1667,19 +1780,20 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1667
1780
|
#
|
1668
1781
|
return self.parse_ledger(response, currency, since, limit)
|
1669
1782
|
|
1670
|
-
def parse_ledger_entry(self, item, currency: Currency = None):
|
1783
|
+
def parse_ledger_entry(self, item: dict, currency: Currency = None) -> LedgerEntry:
|
1671
1784
|
id = self.safe_string(item, 'id')
|
1672
1785
|
amountString = self.safe_string(item, 'amount')
|
1673
1786
|
amount = Precise.string_abs(amountString)
|
1674
1787
|
timestamp = self.safe_integer(item, 'timestamp')
|
1675
1788
|
currencyId = self.safe_string(item, 'currency')
|
1676
1789
|
code = self.safe_currency_code(currencyId, currency)
|
1790
|
+
currency = self.safe_currency(currencyId, currency)
|
1677
1791
|
feeCost = self.safe_string(item, 'commission')
|
1678
1792
|
fee = None
|
1679
1793
|
if feeCost is not None:
|
1680
1794
|
fee = {'currency': code, 'cost': feeCost}
|
1681
1795
|
direction = 'out' if Precise.string_lt(amountString, '0') else 'in'
|
1682
|
-
|
1796
|
+
return self.safe_ledger_entry({
|
1683
1797
|
'id': id,
|
1684
1798
|
'timestamp': timestamp,
|
1685
1799
|
'datetime': self.iso8601(timestamp),
|
@@ -1695,11 +1809,10 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1695
1809
|
'status': self.parse_ledger_entry_status(self.safe_string(item, 'status')),
|
1696
1810
|
'fee': fee,
|
1697
1811
|
'info': item,
|
1698
|
-
}
|
1699
|
-
return result
|
1812
|
+
}, currency)
|
1700
1813
|
|
1701
1814
|
def parse_ledger_entry_status(self, status):
|
1702
|
-
statuses = {
|
1815
|
+
statuses: dict = {
|
1703
1816
|
'APPROVAL': 'pending',
|
1704
1817
|
'PROCESSED': 'ok',
|
1705
1818
|
'CANCELLED': 'canceled',
|
@@ -1707,7 +1820,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1707
1820
|
return self.safe_string(statuses, status, status)
|
1708
1821
|
|
1709
1822
|
def parse_ledger_entry_type(self, type):
|
1710
|
-
types = {
|
1823
|
+
types: dict = {
|
1711
1824
|
'deposit': 'transaction',
|
1712
1825
|
'withdrawal': 'transaction',
|
1713
1826
|
'exchange_commission': 'fee',
|
@@ -1717,14 +1830,16 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1717
1830
|
async def fetch_leverage(self, symbol: str, params={}) -> Leverage:
|
1718
1831
|
"""
|
1719
1832
|
fetch the set leverage for a market
|
1720
|
-
|
1833
|
+
|
1834
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/leverageSettingsUsingGET
|
1835
|
+
|
1721
1836
|
:param str symbol: unified market symbol
|
1722
1837
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1723
1838
|
:returns dict: a `leverage structure <https://docs.ccxt.com/#/?id=leverage-structure>`
|
1724
1839
|
"""
|
1725
1840
|
await self.load_markets()
|
1726
1841
|
market = self.market(symbol)
|
1727
|
-
request = {
|
1842
|
+
request: dict = {
|
1728
1843
|
'symbol': market['id'],
|
1729
1844
|
}
|
1730
1845
|
response = await self.privateGetV2LeverageSettings(self.extend(request, params))
|
@@ -1736,7 +1851,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1736
1851
|
#
|
1737
1852
|
return self.parse_leverage(response, market)
|
1738
1853
|
|
1739
|
-
def parse_leverage(self, leverage, market=None) -> Leverage:
|
1854
|
+
def parse_leverage(self, leverage: dict, market: Market = None) -> Leverage:
|
1740
1855
|
leverageValue = self.safe_integer(leverage, 'value')
|
1741
1856
|
return {
|
1742
1857
|
'info': leverage,
|
@@ -1746,17 +1861,19 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1746
1861
|
'shortLeverage': leverageValue,
|
1747
1862
|
}
|
1748
1863
|
|
1749
|
-
async def fetch_deposit_address(self, code: str, params={}):
|
1864
|
+
async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
1750
1865
|
"""
|
1751
1866
|
fetch the deposit address for a currency associated with self account
|
1752
|
-
|
1867
|
+
|
1868
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getDepositAddressUsingGET
|
1869
|
+
|
1753
1870
|
:param str code: unified currency code
|
1754
1871
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1755
1872
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
1756
1873
|
"""
|
1757
1874
|
await self.load_markets()
|
1758
1875
|
currency = self.currency(code)
|
1759
|
-
request = {
|
1876
|
+
request: dict = {
|
1760
1877
|
'coin': currency['id'],
|
1761
1878
|
}
|
1762
1879
|
response = await self.privateGetV2DepositAddress(self.extend(request, params))
|
@@ -1765,16 +1882,16 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1765
1882
|
#
|
1766
1883
|
return self.parse_deposit_address(response, currency)
|
1767
1884
|
|
1768
|
-
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
1885
|
+
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
1769
1886
|
address = self.safe_string(depositAddress, 'address')
|
1770
1887
|
self.check_address(address)
|
1771
1888
|
currency = self.safe_currency(None, currency)
|
1772
1889
|
return {
|
1890
|
+
'info': depositAddress,
|
1773
1891
|
'currency': currency['code'],
|
1892
|
+
'network': None,
|
1774
1893
|
'address': address,
|
1775
1894
|
'tag': None,
|
1776
|
-
'network': None,
|
1777
|
-
'info': depositAddress,
|
1778
1895
|
}
|
1779
1896
|
|
1780
1897
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|
@@ -1808,7 +1925,9 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1808
1925
|
async def fetch_positions(self, symbols: Strings = None, params={}):
|
1809
1926
|
"""
|
1810
1927
|
fetch all open positions
|
1811
|
-
|
1928
|
+
|
1929
|
+
https://apitradedoc.currency.com/swagger-ui.html#/rest-api/tradingPositionsUsingGET
|
1930
|
+
|
1812
1931
|
:param str[]|None symbols: list of unified market symbols
|
1813
1932
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1814
1933
|
:returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
|
@@ -1847,10 +1966,10 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1847
1966
|
# ]
|
1848
1967
|
# }
|
1849
1968
|
#
|
1850
|
-
data = self.
|
1969
|
+
data = self.safe_list(response, 'positions', [])
|
1851
1970
|
return self.parse_positions(data, symbols)
|
1852
1971
|
|
1853
|
-
def parse_position(self, position, market: Market = None):
|
1972
|
+
def parse_position(self, position: dict, market: Market = None):
|
1854
1973
|
#
|
1855
1974
|
# {
|
1856
1975
|
# "accountId": "109698017416453793",
|
@@ -1901,7 +2020,7 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1901
2020
|
'collateral': None,
|
1902
2021
|
'side': side,
|
1903
2022
|
# 'realizedProfit': self.safe_number(position, 'rpl'),
|
1904
|
-
'
|
2023
|
+
'unrealizedPnl': unrealizedProfit,
|
1905
2024
|
'leverage': leverage,
|
1906
2025
|
'percentage': None,
|
1907
2026
|
'marginMode': None,
|
@@ -1915,13 +2034,12 @@ class currencycom(Exchange, ImplicitAPI):
|
|
1915
2034
|
'maintenanceMarginPercentage': None,
|
1916
2035
|
'marginRatio': None,
|
1917
2036
|
'id': None,
|
1918
|
-
'unrealizedPnl': None,
|
1919
2037
|
'hedged': None,
|
1920
2038
|
'stopLossPrice': None,
|
1921
2039
|
'takeProfitPrice': None,
|
1922
2040
|
})
|
1923
2041
|
|
1924
|
-
def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
2042
|
+
def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1925
2043
|
if (httpCode == 418) or (httpCode == 429):
|
1926
2044
|
raise DDoSProtection(self.id + ' ' + str(httpCode) + ' ' + reason + ' ' + body)
|
1927
2045
|
# error response in a form: {"code": -1013, "msg": "Invalid quantity."}
|