ccxt 4.2.77__py2.py3-none-any.whl → 4.4.49__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 +3205 -937
- 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 +1525 -573
- 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 +223 -97
- 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 +639 -323
- ccxt/async_support/digifinex.py +465 -233
- ccxt/async_support/ellipx.py +1887 -0
- ccxt/async_support/exmo.py +317 -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 +433 -178
- ccxt/async_support/hollaex.py +207 -83
- ccxt/async_support/htx.py +1095 -563
- ccxt/async_support/huobijp.py +178 -56
- ccxt/async_support/hyperliquid.py +1678 -292
- ccxt/async_support/idex.py +219 -95
- ccxt/async_support/independentreserve.py +300 -31
- ccxt/async_support/indodax.py +226 -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 +198 -107
- ccxt/async_support/latoken.py +199 -79
- ccxt/async_support/lbank.py +360 -113
- ccxt/async_support/luno.py +185 -62
- ccxt/async_support/lykke.py +168 -55
- ccxt/async_support/mercado.py +101 -29
- ccxt/async_support/mexc.py +995 -429
- ccxt/async_support/myokx.py +53 -0
- ccxt/async_support/ndax.py +234 -82
- ccxt/async_support/novadax.py +195 -75
- ccxt/async_support/oceanex.py +244 -59
- ccxt/async_support/okcoin.py +301 -165
- ccxt/async_support/okx.py +1776 -454
- ccxt/async_support/onetrading.py +198 -414
- ccxt/async_support/oxfun.py +2898 -0
- ccxt/async_support/p2b.py +142 -52
- ccxt/async_support/paradex.py +2085 -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 +3205 -937
- 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 +1525 -573
- 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 +223 -97
- 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 +639 -323
- ccxt/digifinex.py +465 -233
- ccxt/ellipx.py +1887 -0
- ccxt/exmo.py +317 -128
- ccxt/gate.py +1472 -463
- ccxt/gemini.py +206 -84
- ccxt/hashkey.py +4164 -0
- ccxt/hitbtc.py +433 -178
- ccxt/hollaex.py +207 -83
- ccxt/htx.py +1095 -563
- ccxt/huobijp.py +178 -56
- ccxt/hyperliquid.py +1677 -292
- ccxt/idex.py +219 -95
- ccxt/independentreserve.py +299 -31
- ccxt/indodax.py +226 -62
- ccxt/kraken.py +871 -354
- ccxt/krakenfutures.py +324 -100
- ccxt/kucoin.py +917 -357
- ccxt/kucoinfutures.py +1004 -149
- ccxt/kuna.py +198 -107
- ccxt/latoken.py +199 -79
- ccxt/lbank.py +360 -113
- ccxt/luno.py +185 -62
- ccxt/lykke.py +168 -55
- ccxt/mercado.py +101 -29
- ccxt/mexc.py +994 -429
- ccxt/myokx.py +53 -0
- ccxt/ndax.py +234 -82
- ccxt/novadax.py +195 -75
- ccxt/oceanex.py +244 -59
- ccxt/okcoin.py +301 -165
- ccxt/okx.py +1776 -454
- ccxt/onetrading.py +198 -414
- ccxt/oxfun.py +2897 -0
- ccxt/p2b.py +142 -52
- ccxt/paradex.py +2085 -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 +143 -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.49.dist-info/LICENSE.txt +21 -0
- ccxt-4.4.49.dist-info/METADATA +646 -0
- ccxt-4.4.49.dist-info/RECORD +669 -0
- {ccxt-4.2.77.dist-info → ccxt-4.4.49.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.49.dist-info}/top_level.txt +0 -0
ccxt/independentreserve.py
CHANGED
@@ -6,8 +6,9 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.independentreserve import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade
|
9
|
+
from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees, Transaction
|
10
10
|
from typing import List
|
11
|
+
from ccxt.base.errors import BadRequest
|
11
12
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
12
13
|
from ccxt.base.precise import Precise
|
13
14
|
|
@@ -64,8 +65,11 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
64
65
|
'fetchOrder': True,
|
65
66
|
'fetchOrderBook': True,
|
66
67
|
'fetchPosition': False,
|
68
|
+
'fetchPositionHistory': False,
|
67
69
|
'fetchPositionMode': False,
|
68
70
|
'fetchPositions': False,
|
71
|
+
'fetchPositionsForSymbol': False,
|
72
|
+
'fetchPositionsHistory': False,
|
69
73
|
'fetchPositionsRisk': False,
|
70
74
|
'fetchPremiumIndexOHLCV': False,
|
71
75
|
'fetchTicker': True,
|
@@ -76,6 +80,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
76
80
|
'setLeverage': False,
|
77
81
|
'setMarginMode': False,
|
78
82
|
'setPositionMode': False,
|
83
|
+
'withdraw': True,
|
79
84
|
},
|
80
85
|
'urls': {
|
81
86
|
'logo': 'https://user-images.githubusercontent.com/51840849/87182090-1e9e9080-c2ec-11ea-8e49-563db9a38f37.jpg',
|
@@ -102,7 +107,10 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
102
107
|
'GetRecentTrades',
|
103
108
|
'GetFxRates',
|
104
109
|
'GetOrderMinimumVolumes',
|
105
|
-
'GetCryptoWithdrawalFees',
|
110
|
+
'GetCryptoWithdrawalFees', # deprecated - replaced by GetCryptoWithdrawalFees2(docs removed)
|
111
|
+
'GetCryptoWithdrawalFees2',
|
112
|
+
'GetNetworks',
|
113
|
+
'GetPrimaryCurrencyConfig2',
|
106
114
|
],
|
107
115
|
},
|
108
116
|
'private': {
|
@@ -114,8 +122,10 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
114
122
|
'GetAccounts',
|
115
123
|
'GetTransactions',
|
116
124
|
'GetFiatBankAccounts',
|
117
|
-
'GetDigitalCurrencyDepositAddress',
|
118
|
-
'
|
125
|
+
'GetDigitalCurrencyDepositAddress', # deprecated - replaced by GetDigitalCurrencyDepositAddress2(docs removed)
|
126
|
+
'GetDigitalCurrencyDepositAddress2',
|
127
|
+
'GetDigitalCurrencyDepositAddresses', # deprecated - replaced by GetDigitalCurrencyDepositAddresses2(docs removed)
|
128
|
+
'GetDigitalCurrencyDepositAddresses2',
|
119
129
|
'GetTrades',
|
120
130
|
'GetBrokerageFees',
|
121
131
|
'GetDigitalCurrencyWithdrawal',
|
@@ -125,7 +135,8 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
125
135
|
'SynchDigitalCurrencyDepositAddressWithBlockchain',
|
126
136
|
'RequestFiatWithdrawal',
|
127
137
|
'WithdrawFiatCurrency',
|
128
|
-
'WithdrawDigitalCurrency',
|
138
|
+
'WithdrawDigitalCurrency', # deprecated - replaced by WithdrawCrypto(docs removed)
|
139
|
+
'WithdrawCrypto',
|
129
140
|
],
|
130
141
|
},
|
131
142
|
},
|
@@ -137,23 +148,142 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
137
148
|
'tierBased': False,
|
138
149
|
},
|
139
150
|
},
|
151
|
+
'features': {
|
152
|
+
'spot': {
|
153
|
+
'sandbox': False,
|
154
|
+
'createOrder': {
|
155
|
+
'marginMode': False,
|
156
|
+
'triggerPrice': False,
|
157
|
+
'triggerPriceType': None,
|
158
|
+
'triggerDirection': False,
|
159
|
+
'stopLossPrice': False,
|
160
|
+
'takeProfitPrice': False,
|
161
|
+
'attachedStopLossTakeProfit': None,
|
162
|
+
'timeInForce': {
|
163
|
+
'IOC': False,
|
164
|
+
'FOK': False,
|
165
|
+
'PO': False,
|
166
|
+
'GTD': False,
|
167
|
+
},
|
168
|
+
'hedged': False,
|
169
|
+
'selfTradePrevention': False,
|
170
|
+
'trailing': False,
|
171
|
+
'leverage': False,
|
172
|
+
'marketBuyByCost': False,
|
173
|
+
'marketBuyRequiresPrice': False,
|
174
|
+
'iceberg': False,
|
175
|
+
},
|
176
|
+
'createOrders': None,
|
177
|
+
'fetchMyTrades': {
|
178
|
+
'marginMode': False,
|
179
|
+
'limit': 100, # todo
|
180
|
+
'daysBack': None,
|
181
|
+
'untilDays': None,
|
182
|
+
},
|
183
|
+
'fetchOrder': {
|
184
|
+
'marginMode': False,
|
185
|
+
'trigger': False,
|
186
|
+
'trailing': False,
|
187
|
+
},
|
188
|
+
'fetchOpenOrders': {
|
189
|
+
'marginMode': False,
|
190
|
+
'limit': 100, # todo
|
191
|
+
'trigger': False,
|
192
|
+
'trailing': False,
|
193
|
+
},
|
194
|
+
'fetchOrders': None,
|
195
|
+
'fetchClosedOrders': {
|
196
|
+
'marginMode': False,
|
197
|
+
'limit': 100, # todo
|
198
|
+
'daysBack': None,
|
199
|
+
'daysBackCanceled': None,
|
200
|
+
'untilDays': None,
|
201
|
+
'trigger': False,
|
202
|
+
'trailing': False,
|
203
|
+
},
|
204
|
+
'fetchOHLCV': None,
|
205
|
+
},
|
206
|
+
'swap': {
|
207
|
+
'linear': None,
|
208
|
+
'inverse': None,
|
209
|
+
},
|
210
|
+
'future': {
|
211
|
+
'linear': None,
|
212
|
+
'inverse': None,
|
213
|
+
},
|
214
|
+
},
|
140
215
|
'commonCurrencies': {
|
141
216
|
'PLA': 'PlayChip',
|
142
217
|
},
|
143
218
|
'precisionMode': TICK_SIZE,
|
219
|
+
'options': {
|
220
|
+
'defaultNetworks': {
|
221
|
+
'USDT': 'Ethereum',
|
222
|
+
'USDC': 'Ethereum',
|
223
|
+
'BTC': 'Bitcoin',
|
224
|
+
'BCH': 'BitcoinCash',
|
225
|
+
'ETH': 'Ethereum',
|
226
|
+
'LTC': 'Litecoin',
|
227
|
+
'XRP': 'XrpLedger',
|
228
|
+
'ZRX': 'Ethereum',
|
229
|
+
'EOS': 'EosIo',
|
230
|
+
'XLM': 'Stellar',
|
231
|
+
'BAT': 'Ethereum',
|
232
|
+
'ETC': 'EthereumClassic',
|
233
|
+
'LINK': 'Ethereum',
|
234
|
+
'MKR': 'Ethereum',
|
235
|
+
'DAI': 'Ethereum',
|
236
|
+
'COMP': 'Ethereum',
|
237
|
+
'SNX': 'Ethereum',
|
238
|
+
'YFI': 'Ethereum',
|
239
|
+
'AAVE': 'Ethereum',
|
240
|
+
'GRT': 'Ethereum',
|
241
|
+
'DOT': 'Polkadot',
|
242
|
+
'UNI': 'Ethereum',
|
243
|
+
'ADA': 'Cardano',
|
244
|
+
'MATIC': 'Ethereum',
|
245
|
+
'DOGE': 'Dogecoin',
|
246
|
+
'SOL': 'Solana',
|
247
|
+
'MANA': 'Ethereum',
|
248
|
+
'SAND': 'Ethereum',
|
249
|
+
'SHIB': 'Ethereum',
|
250
|
+
'TRX': 'Tron',
|
251
|
+
'RENDER': 'Solana',
|
252
|
+
'WIF': 'Solana',
|
253
|
+
'RLUSD': 'Ethereum',
|
254
|
+
'PEPE': 'Ethereum',
|
255
|
+
},
|
256
|
+
'networks': {
|
257
|
+
'BTC': 'Bitcoin',
|
258
|
+
'ETH': 'Ethereum',
|
259
|
+
'BCH': 'BitcoinCash',
|
260
|
+
'LTC': 'Litecoin',
|
261
|
+
'XRP': 'XrpLedger',
|
262
|
+
'EOS': 'EosIo',
|
263
|
+
'XLM': 'Stellar',
|
264
|
+
'ETC': 'EthereumClassic',
|
265
|
+
'BSV': 'BitcoinSV',
|
266
|
+
'DOGE': 'Dogecoin',
|
267
|
+
'DOT': 'Polkadot',
|
268
|
+
'ADA': 'Cardano',
|
269
|
+
'SOL': 'Solana',
|
270
|
+
'TRX': 'Tron',
|
271
|
+
},
|
272
|
+
},
|
144
273
|
})
|
145
274
|
|
146
|
-
def fetch_markets(self, params={}):
|
275
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
147
276
|
"""
|
148
277
|
retrieves data on all markets for independentreserve
|
149
278
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
150
279
|
:returns dict[]: an array of objects representing market data
|
151
280
|
"""
|
152
|
-
|
281
|
+
baseCurrenciesPromise = self.publicGetGetValidPrimaryCurrencyCodes(params)
|
153
282
|
# ['Xbt', 'Eth', 'Usdt', ...]
|
154
|
-
|
283
|
+
quoteCurrenciesPromise = self.publicGetGetValidSecondaryCurrencyCodes(params)
|
155
284
|
# ['Aud', 'Usd', 'Nzd', 'Sgd']
|
156
|
-
|
285
|
+
limitsPromise = self.publicGetGetOrderMinimumVolumes(params)
|
286
|
+
baseCurrencies, quoteCurrencies, limits = [baseCurrenciesPromise, quoteCurrenciesPromise, limitsPromise]
|
157
287
|
#
|
158
288
|
# {
|
159
289
|
# "Xbt": 0.0001,
|
@@ -223,7 +353,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
223
353
|
return result
|
224
354
|
|
225
355
|
def parse_balance(self, response) -> Balances:
|
226
|
-
result = {'info': response}
|
356
|
+
result: dict = {'info': response}
|
227
357
|
for i in range(0, len(response)):
|
228
358
|
balance = response[i]
|
229
359
|
currencyId = self.safe_string(balance, 'CurrencyCode')
|
@@ -254,7 +384,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
254
384
|
"""
|
255
385
|
self.load_markets()
|
256
386
|
market = self.market(symbol)
|
257
|
-
request = {
|
387
|
+
request: dict = {
|
258
388
|
'primaryCurrencyCode': market['baseId'],
|
259
389
|
'secondaryCurrencyCode': market['quoteId'],
|
260
390
|
}
|
@@ -262,7 +392,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
262
392
|
timestamp = self.parse8601(self.safe_string(response, 'CreatedTimestampUtc'))
|
263
393
|
return self.parse_order_book(response, market['symbol'], timestamp, 'BuyOrders', 'SellOrders', 'Price', 'Volume')
|
264
394
|
|
265
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
395
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
266
396
|
# {
|
267
397
|
# "DayHighestPrice":43489.49,
|
268
398
|
# "DayLowestPrice":41998.32,
|
@@ -317,7 +447,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
317
447
|
"""
|
318
448
|
self.load_markets()
|
319
449
|
market = self.market(symbol)
|
320
|
-
request = {
|
450
|
+
request: dict = {
|
321
451
|
'primaryCurrencyCode': market['baseId'],
|
322
452
|
'secondaryCurrencyCode': market['quoteId'],
|
323
453
|
}
|
@@ -337,7 +467,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
337
467
|
# }
|
338
468
|
return self.parse_ticker(response, market)
|
339
469
|
|
340
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
470
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
341
471
|
#
|
342
472
|
# fetchOrder
|
343
473
|
#
|
@@ -372,6 +502,21 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
372
502
|
# "FeePercent": 0.005,
|
373
503
|
# }
|
374
504
|
#
|
505
|
+
# cancelOrder
|
506
|
+
#
|
507
|
+
# {
|
508
|
+
# "AvgPrice": 455.48,
|
509
|
+
# "CreatedTimestampUtc": "2022-08-05T06:42:11.3032208Z",
|
510
|
+
# "OrderGuid": "719c495c-a39e-4884-93ac-280b37245037",
|
511
|
+
# "Price": 485.76,
|
512
|
+
# "PrimaryCurrencyCode": "Xbt",
|
513
|
+
# "ReservedAmount": 0.358,
|
514
|
+
# "SecondaryCurrencyCode": "Usd",
|
515
|
+
# "Status": "Cancelled",
|
516
|
+
# "Type": "LimitOffer",
|
517
|
+
# "VolumeFilled": 0,
|
518
|
+
# "VolumeOrdered": 0.358
|
519
|
+
# }
|
375
520
|
symbol = None
|
376
521
|
baseId = self.safe_string(order, 'PrimaryCurrencyCode')
|
377
522
|
quoteId = self.safe_string(order, 'SecondaryCurrencyCode')
|
@@ -415,7 +560,6 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
415
560
|
'postOnly': None,
|
416
561
|
'side': side,
|
417
562
|
'price': self.safe_string(order, 'Price'),
|
418
|
-
'stopPrice': None,
|
419
563
|
'triggerPrice': None,
|
420
564
|
'cost': self.safe_string(order, 'Value'),
|
421
565
|
'average': self.safe_string(order, 'AvgPrice'),
|
@@ -431,8 +575,8 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
431
575
|
'trades': None,
|
432
576
|
}, market)
|
433
577
|
|
434
|
-
def parse_order_status(self, status):
|
435
|
-
statuses = {
|
578
|
+
def parse_order_status(self, status: Str):
|
579
|
+
statuses: dict = {
|
436
580
|
'Open': 'open',
|
437
581
|
'PartiallyFilled': 'open',
|
438
582
|
'Filled': 'closed',
|
@@ -446,6 +590,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
446
590
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
447
591
|
"""
|
448
592
|
fetches information on an order made by the user
|
593
|
+
:param str id: order id
|
449
594
|
:param str symbol: unified symbol of the market the order was made in
|
450
595
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
451
596
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -480,7 +625,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
480
625
|
request['pageIndex'] = 1
|
481
626
|
request['pageSize'] = limit
|
482
627
|
response = self.privatePostGetOpenOrders(self.extend(request, params))
|
483
|
-
data = self.
|
628
|
+
data = self.safe_list(response, 'Data', [])
|
484
629
|
return self.parse_orders(data, market, since, limit)
|
485
630
|
|
486
631
|
def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
@@ -504,7 +649,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
504
649
|
request['pageIndex'] = 1
|
505
650
|
request['pageSize'] = limit
|
506
651
|
response = self.privatePostGetClosedOrders(self.extend(request, params))
|
507
|
-
data = self.
|
652
|
+
data = self.safe_list(response, 'Data', [])
|
508
653
|
return self.parse_orders(data, market, since, limit)
|
509
654
|
|
510
655
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = 50, params={}):
|
@@ -530,7 +675,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
530
675
|
market = self.market(symbol)
|
531
676
|
return self.parse_trades(response['Data'], market, since, limit)
|
532
677
|
|
533
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
678
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
534
679
|
timestamp = self.parse8601(trade['TradeTimestampUtc'])
|
535
680
|
id = self.safe_string(trade, 'TradeGuid')
|
536
681
|
orderId = self.safe_string(trade, 'OrderGuid')
|
@@ -578,7 +723,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
578
723
|
"""
|
579
724
|
self.load_markets()
|
580
725
|
market = self.market(symbol)
|
581
|
-
request = {
|
726
|
+
request: dict = {
|
582
727
|
'primaryCurrencyCode': market['baseId'],
|
583
728
|
'secondaryCurrencyCode': market['quoteId'],
|
584
729
|
'numberOfRecentTradesToRetrieve': 50, # max = 50
|
@@ -586,7 +731,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
586
731
|
response = self.publicGetGetRecentTrades(self.extend(request, params))
|
587
732
|
return self.parse_trades(response['Trades'], market, since, limit)
|
588
733
|
|
589
|
-
def fetch_trading_fees(self, params={}):
|
734
|
+
def fetch_trading_fees(self, params={}) -> TradingFees:
|
590
735
|
"""
|
591
736
|
fetch the trading fees for multiple markets
|
592
737
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -603,7 +748,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
603
748
|
# ...
|
604
749
|
# ]
|
605
750
|
#
|
606
|
-
fees = {}
|
751
|
+
fees: dict = {}
|
607
752
|
for i in range(0, len(response)):
|
608
753
|
fee = response[i]
|
609
754
|
currencyId = self.safe_string(fee, 'CurrencyCode')
|
@@ -613,7 +758,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
613
758
|
'info': fee,
|
614
759
|
'fee': tradingFee,
|
615
760
|
}
|
616
|
-
result = {}
|
761
|
+
result: dict = {}
|
617
762
|
for i in range(0, len(self.symbols)):
|
618
763
|
symbol = self.symbols[i]
|
619
764
|
market = self.market(symbol)
|
@@ -635,7 +780,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
635
780
|
:param str type: 'market' or 'limit'
|
636
781
|
:param str side: 'buy' or 'sell'
|
637
782
|
:param float amount: how much of currency you want to trade in units of base currency
|
638
|
-
:param float [price]: the price at which the order is to be
|
783
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
639
784
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
640
785
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
641
786
|
"""
|
@@ -663,28 +808,49 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
663
808
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
664
809
|
"""
|
665
810
|
cancels an open order
|
811
|
+
|
812
|
+
https://www.independentreserve.com/features/api#CancelOrder
|
813
|
+
|
666
814
|
:param str id: order id
|
667
815
|
:param str symbol: unified symbol of the market the order was made in
|
668
816
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
669
817
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
670
818
|
"""
|
671
819
|
self.load_markets()
|
672
|
-
request = {
|
820
|
+
request: dict = {
|
673
821
|
'orderGuid': id,
|
674
822
|
}
|
675
|
-
|
823
|
+
response = self.privatePostCancelOrder(self.extend(request, params))
|
824
|
+
#
|
825
|
+
# {
|
826
|
+
# "AvgPrice": 455.48,
|
827
|
+
# "CreatedTimestampUtc": "2022-08-05T06:42:11.3032208Z",
|
828
|
+
# "OrderGuid": "719c495c-a39e-4884-93ac-280b37245037",
|
829
|
+
# "Price": 485.76,
|
830
|
+
# "PrimaryCurrencyCode": "Xbt",
|
831
|
+
# "ReservedAmount": 0.358,
|
832
|
+
# "SecondaryCurrencyCode": "Usd",
|
833
|
+
# "Status": "Cancelled",
|
834
|
+
# "Type": "LimitOffer",
|
835
|
+
# "VolumeFilled": 0,
|
836
|
+
# "VolumeOrdered": 0.358
|
837
|
+
# }
|
838
|
+
#
|
839
|
+
return self.parse_order(response)
|
676
840
|
|
677
|
-
def fetch_deposit_address(self, code: str, params={}):
|
841
|
+
def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
678
842
|
"""
|
679
843
|
fetch the deposit address for a currency associated with self account
|
680
|
-
|
844
|
+
|
845
|
+
https://www.independentreserve.com/features/api#GetDigitalCurrencyDepositAddress
|
846
|
+
|
681
847
|
:param str code: unified currency code
|
682
848
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
683
849
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
684
850
|
"""
|
685
851
|
self.load_markets()
|
686
852
|
currency = self.currency(code)
|
687
|
-
request = {
|
853
|
+
request: dict = {
|
688
854
|
'primaryCurrencyCode': currency['id'],
|
689
855
|
}
|
690
856
|
response = self.privatePostGetDigitalCurrencyDepositAddress(self.extend(request, params))
|
@@ -698,7 +864,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
698
864
|
#
|
699
865
|
return self.parse_deposit_address(response)
|
700
866
|
|
701
|
-
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
867
|
+
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
702
868
|
#
|
703
869
|
# {
|
704
870
|
# Tag: '3307446684',
|
@@ -712,9 +878,111 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
712
878
|
return {
|
713
879
|
'info': depositAddress,
|
714
880
|
'currency': self.safe_string(currency, 'code'),
|
881
|
+
'network': None,
|
715
882
|
'address': address,
|
716
883
|
'tag': self.safe_string(depositAddress, 'Tag'),
|
884
|
+
}
|
885
|
+
|
886
|
+
def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
887
|
+
"""
|
888
|
+
make a withdrawal
|
889
|
+
|
890
|
+
https://www.independentreserve.com/features/api#WithdrawDigitalCurrency
|
891
|
+
|
892
|
+
:param str code: unified currency code
|
893
|
+
:param float amount: the amount to withdraw
|
894
|
+
:param str address: the address to withdraw to
|
895
|
+
:param str tag:
|
896
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
897
|
+
|
898
|
+
EXCHANGE SPECIFIC PARAMETERS
|
899
|
+
:param dict [params.comment]: withdrawal comment, should not exceed 500 characters
|
900
|
+
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
901
|
+
"""
|
902
|
+
tag, params = self.handle_withdraw_tag_and_params(tag, params)
|
903
|
+
self.load_markets()
|
904
|
+
currency = self.currency(code)
|
905
|
+
request: dict = {
|
906
|
+
'primaryCurrencyCode': currency['id'],
|
907
|
+
'withdrawalAddress': address,
|
908
|
+
'amount': self.currency_to_precision(code, amount),
|
909
|
+
}
|
910
|
+
if tag is not None:
|
911
|
+
request['destinationTag'] = tag
|
912
|
+
networkCode = None
|
913
|
+
networkCode, params = self.handle_network_code_and_params(params)
|
914
|
+
if networkCode is not None:
|
915
|
+
raise BadRequest(self.id + ' withdraw() does not accept params["networkCode"]')
|
916
|
+
response = self.privatePostWithdrawDigitalCurrency(self.extend(request, params))
|
917
|
+
#
|
918
|
+
# {
|
919
|
+
# "TransactionGuid": "dc932e19-562b-4c50-821e-a73fd048b93b",
|
920
|
+
# "PrimaryCurrencyCode": "Bch",
|
921
|
+
# "CreatedTimestampUtc": "2020-04-01T05:26:30.5093622+00:00",
|
922
|
+
# "Amount": {
|
923
|
+
# "Total": 0.1231,
|
924
|
+
# "Fee": 0.0001
|
925
|
+
# },
|
926
|
+
# "Destination": {
|
927
|
+
# "Address": "bc1qhpqxkjpvgkckw530yfmxyr53c94q8f4273a7ez",
|
928
|
+
# "Tag": null
|
929
|
+
# },
|
930
|
+
# "Status": "Pending",
|
931
|
+
# "Transaction": null
|
932
|
+
# }
|
933
|
+
#
|
934
|
+
return self.parse_transaction(response, currency)
|
935
|
+
|
936
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
937
|
+
#
|
938
|
+
# {
|
939
|
+
# "TransactionGuid": "dc932e19-562b-4c50-821e-a73fd048b93b",
|
940
|
+
# "PrimaryCurrencyCode": "Bch",
|
941
|
+
# "CreatedTimestampUtc": "2020-04-01T05:26:30.5093622+00:00",
|
942
|
+
# "Amount": {
|
943
|
+
# "Total": 0.1231,
|
944
|
+
# "Fee": 0.0001
|
945
|
+
# },
|
946
|
+
# "Destination": {
|
947
|
+
# "Address": "bc1qhpqxkjpvgkckw530yfmxyr53c94q8f4273a7ez",
|
948
|
+
# "Tag": null
|
949
|
+
# },
|
950
|
+
# "Status": "Pending",
|
951
|
+
# "Transaction": null
|
952
|
+
# }
|
953
|
+
#
|
954
|
+
amount = self.safe_dict(transaction, 'Amount')
|
955
|
+
destination = self.safe_dict(transaction, 'Destination')
|
956
|
+
currencyId = self.safe_string(transaction, 'PrimaryCurrencyCode')
|
957
|
+
datetime = self.safe_string(transaction, 'CreatedTimestampUtc')
|
958
|
+
address = self.safe_string(destination, 'Address')
|
959
|
+
tag = self.safe_string(destination, 'Tag')
|
960
|
+
code = self.safe_currency_code(currencyId, currency)
|
961
|
+
return {
|
962
|
+
'info': transaction,
|
963
|
+
'id': self.safe_string(transaction, 'TransactionGuid'),
|
964
|
+
'txid': None,
|
965
|
+
'type': 'withdraw',
|
966
|
+
'currency': code,
|
717
967
|
'network': None,
|
968
|
+
'amount': self.safe_number(amount, 'Total'),
|
969
|
+
'status': self.safe_string(transaction, 'Status'),
|
970
|
+
'timestamp': self.parse8601(datetime),
|
971
|
+
'datetime': datetime,
|
972
|
+
'address': address,
|
973
|
+
'addressFrom': None,
|
974
|
+
'addressTo': address,
|
975
|
+
'tag': tag,
|
976
|
+
'tagFrom': None,
|
977
|
+
'tagTo': tag,
|
978
|
+
'updated': None,
|
979
|
+
'comment': None,
|
980
|
+
'fee': {
|
981
|
+
'currency': code,
|
982
|
+
'cost': self.safe_number(amount, 'Fee'),
|
983
|
+
'rate': None,
|
984
|
+
},
|
985
|
+
'internal': False,
|
718
986
|
}
|
719
987
|
|
720
988
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|