ccxt 4.2.77__py2.py3-none-any.whl → 4.4.48__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccxt/__init__.py +36 -14
- ccxt/abstract/alpaca.py +4 -0
- ccxt/abstract/bigone.py +1 -1
- ccxt/abstract/binance.py +112 -48
- ccxt/abstract/binancecoinm.py +112 -48
- ccxt/abstract/binanceus.py +147 -83
- ccxt/abstract/binanceusdm.py +112 -48
- ccxt/abstract/bingx.py +133 -78
- ccxt/abstract/bitbank.py +5 -0
- ccxt/abstract/bitfinex.py +136 -65
- ccxt/abstract/bitfinex1.py +69 -0
- ccxt/abstract/bitflyer.py +1 -0
- ccxt/abstract/bitget.py +8 -1
- ccxt/abstract/bitmart.py +13 -1
- ccxt/abstract/bitopro.py +1 -0
- ccxt/abstract/bitpanda.py +0 -12
- ccxt/abstract/bitrue.py +3 -3
- ccxt/abstract/bitstamp.py +26 -3
- ccxt/abstract/blofin.py +24 -0
- ccxt/abstract/btcbox.py +1 -0
- ccxt/abstract/bybit.py +29 -14
- ccxt/abstract/cex.py +28 -29
- ccxt/abstract/coinbase.py +6 -0
- ccxt/abstract/coinbaseadvanced.py +94 -0
- ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
- ccxt/abstract/coinbaseinternational.py +1 -1
- ccxt/abstract/coincatch.py +94 -0
- ccxt/abstract/coinex.py +233 -123
- ccxt/abstract/coinmetro.py +1 -0
- ccxt/abstract/cryptocom.py +14 -0
- ccxt/abstract/defx.py +69 -0
- ccxt/abstract/deribit.py +1 -0
- ccxt/abstract/digifinex.py +1 -0
- ccxt/abstract/ellipx.py +25 -0
- ccxt/abstract/gate.py +20 -0
- ccxt/abstract/gateio.py +20 -0
- ccxt/abstract/gemini.py +1 -0
- ccxt/abstract/hashkey.py +67 -0
- ccxt/abstract/hyperliquid.py +1 -1
- ccxt/abstract/independentreserve.py +6 -0
- ccxt/abstract/kraken.py +4 -3
- ccxt/abstract/krakenfutures.py +4 -0
- ccxt/abstract/kucoin.py +24 -0
- ccxt/abstract/kucoinfutures.py +34 -0
- ccxt/abstract/luno.py +2 -0
- ccxt/abstract/mexc.py +4 -0
- ccxt/abstract/myokx.py +340 -0
- ccxt/abstract/oceanex.py +5 -0
- ccxt/abstract/okx.py +30 -0
- ccxt/abstract/onetrading.py +0 -12
- ccxt/abstract/oxfun.py +34 -0
- ccxt/abstract/paradex.py +40 -0
- ccxt/abstract/phemex.py +1 -0
- ccxt/abstract/upbit.py +4 -0
- ccxt/abstract/vertex.py +19 -0
- ccxt/abstract/whitebit.py +31 -1
- ccxt/abstract/woo.py +6 -2
- ccxt/abstract/woofipro.py +119 -0
- ccxt/abstract/xt.py +153 -0
- ccxt/abstract/zonda.py +6 -0
- ccxt/ace.py +164 -60
- ccxt/alpaca.py +727 -63
- ccxt/ascendex.py +395 -249
- ccxt/async_support/__init__.py +36 -14
- ccxt/async_support/ace.py +164 -60
- ccxt/async_support/alpaca.py +727 -63
- ccxt/async_support/ascendex.py +396 -249
- ccxt/async_support/base/exchange.py +531 -155
- ccxt/async_support/base/ws/aiohttp_client.py +28 -5
- ccxt/async_support/base/ws/cache.py +3 -2
- ccxt/async_support/base/ws/client.py +26 -5
- ccxt/async_support/base/ws/fast_client.py +4 -3
- ccxt/async_support/base/ws/functions.py +1 -1
- ccxt/async_support/base/ws/future.py +40 -31
- ccxt/async_support/base/ws/order_book_side.py +3 -0
- ccxt/async_support/bequant.py +1 -1
- ccxt/async_support/bigone.py +329 -202
- ccxt/async_support/binance.py +3030 -1087
- ccxt/async_support/binancecoinm.py +2 -1
- ccxt/async_support/binanceus.py +12 -1
- ccxt/async_support/binanceusdm.py +3 -1
- ccxt/async_support/bingx.py +3104 -880
- ccxt/async_support/bit2c.py +119 -38
- ccxt/async_support/bitbank.py +215 -76
- ccxt/async_support/bitbns.py +124 -53
- ccxt/async_support/bitfinex.py +3236 -1078
- ccxt/async_support/bitfinex1.py +1711 -0
- ccxt/async_support/bitflyer.py +238 -49
- ccxt/async_support/bitget.py +1513 -563
- ccxt/async_support/bithumb.py +199 -65
- ccxt/async_support/bitmart.py +1320 -435
- ccxt/async_support/bitmex.py +308 -111
- ccxt/async_support/bitopro.py +256 -96
- ccxt/async_support/bitrue.py +365 -233
- ccxt/async_support/bitso.py +201 -89
- ccxt/async_support/bitstamp.py +438 -269
- ccxt/async_support/bitteam.py +179 -73
- ccxt/async_support/bitvavo.py +180 -70
- ccxt/async_support/bl3p.py +92 -25
- ccxt/async_support/blockchaincom.py +193 -79
- ccxt/async_support/blofin.py +392 -148
- ccxt/async_support/btcalpha.py +161 -55
- ccxt/async_support/btcbox.py +250 -34
- ccxt/async_support/btcmarkets.py +232 -85
- ccxt/async_support/btcturk.py +159 -60
- ccxt/async_support/bybit.py +2231 -1193
- ccxt/async_support/cex.py +1409 -1329
- ccxt/async_support/coinbase.py +1454 -287
- ccxt/async_support/coinbaseadvanced.py +17 -0
- ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/async_support/coinbaseinternational.py +428 -88
- ccxt/async_support/coincatch.py +5152 -0
- ccxt/async_support/coincheck.py +121 -38
- ccxt/async_support/coinex.py +4020 -3339
- ccxt/async_support/coinlist.py +273 -116
- ccxt/async_support/coinmate.py +204 -97
- ccxt/async_support/coinmetro.py +203 -110
- ccxt/async_support/coinone.py +142 -68
- ccxt/async_support/coinsph.py +206 -89
- ccxt/async_support/coinspot.py +137 -62
- ccxt/async_support/cryptocom.py +515 -185
- ccxt/async_support/currencycom.py +203 -85
- ccxt/async_support/defx.py +2066 -0
- ccxt/async_support/delta.py +404 -109
- ccxt/async_support/deribit.py +557 -323
- ccxt/async_support/digifinex.py +340 -223
- ccxt/async_support/ellipx.py +1826 -0
- ccxt/async_support/exmo.py +259 -128
- ccxt/async_support/gate.py +1472 -463
- ccxt/async_support/gemini.py +206 -84
- ccxt/async_support/hashkey.py +4164 -0
- ccxt/async_support/hitbtc.py +334 -178
- ccxt/async_support/hollaex.py +134 -83
- ccxt/async_support/htx.py +1095 -563
- ccxt/async_support/huobijp.py +105 -56
- ccxt/async_support/hyperliquid.py +1633 -268
- ccxt/async_support/idex.py +148 -95
- ccxt/async_support/independentreserve.py +236 -31
- ccxt/async_support/indodax.py +165 -62
- ccxt/async_support/kraken.py +871 -354
- ccxt/async_support/krakenfutures.py +324 -100
- ccxt/async_support/kucoin.py +917 -357
- ccxt/async_support/kucoinfutures.py +1004 -149
- ccxt/async_support/kuna.py +138 -106
- ccxt/async_support/latoken.py +135 -79
- ccxt/async_support/lbank.py +290 -113
- ccxt/async_support/luno.py +112 -62
- ccxt/async_support/lykke.py +104 -55
- ccxt/async_support/mercado.py +36 -29
- ccxt/async_support/mexc.py +995 -429
- ccxt/async_support/myokx.py +43 -0
- ccxt/async_support/ndax.py +163 -82
- ccxt/async_support/novadax.py +121 -75
- ccxt/async_support/oceanex.py +175 -59
- ccxt/async_support/okcoin.py +222 -163
- ccxt/async_support/okx.py +1776 -454
- ccxt/async_support/onetrading.py +132 -414
- ccxt/async_support/oxfun.py +2832 -0
- ccxt/async_support/p2b.py +79 -51
- ccxt/async_support/paradex.py +2017 -0
- ccxt/async_support/paymium.py +56 -32
- ccxt/async_support/phemex.py +572 -196
- ccxt/async_support/poloniex.py +218 -95
- ccxt/async_support/poloniexfutures.py +260 -92
- ccxt/async_support/probit.py +143 -110
- ccxt/async_support/timex.py +123 -70
- ccxt/async_support/tokocrypto.py +129 -93
- ccxt/async_support/tradeogre.py +39 -25
- ccxt/async_support/upbit.py +322 -113
- ccxt/async_support/vertex.py +2983 -0
- ccxt/async_support/wavesexchange.py +227 -173
- ccxt/async_support/wazirx.py +145 -65
- ccxt/async_support/whitebit.py +533 -138
- ccxt/async_support/woo.py +1137 -296
- ccxt/async_support/woofipro.py +2716 -0
- ccxt/async_support/xt.py +4628 -0
- ccxt/async_support/yobit.py +160 -92
- ccxt/async_support/zaif.py +80 -33
- ccxt/async_support/zonda.py +140 -69
- ccxt/base/errors.py +51 -20
- ccxt/base/exchange.py +1722 -480
- ccxt/base/precise.py +10 -0
- ccxt/base/types.py +223 -4
- ccxt/bequant.py +1 -1
- ccxt/bigone.py +329 -202
- ccxt/binance.py +3030 -1087
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +12 -1
- ccxt/binanceusdm.py +3 -1
- ccxt/bingx.py +3104 -880
- ccxt/bit2c.py +119 -38
- ccxt/bitbank.py +215 -76
- ccxt/bitbns.py +124 -53
- ccxt/bitfinex.py +3235 -1078
- ccxt/bitfinex1.py +1710 -0
- ccxt/bitflyer.py +238 -49
- ccxt/bitget.py +1513 -563
- ccxt/bithumb.py +198 -65
- ccxt/bitmart.py +1320 -435
- ccxt/bitmex.py +308 -111
- ccxt/bitopro.py +256 -96
- ccxt/bitrue.py +365 -233
- ccxt/bitso.py +201 -89
- ccxt/bitstamp.py +438 -269
- ccxt/bitteam.py +179 -73
- ccxt/bitvavo.py +180 -70
- ccxt/bl3p.py +92 -25
- ccxt/blockchaincom.py +193 -79
- ccxt/blofin.py +392 -148
- ccxt/btcalpha.py +161 -55
- ccxt/btcbox.py +250 -34
- ccxt/btcmarkets.py +232 -85
- ccxt/btcturk.py +159 -60
- ccxt/bybit.py +2231 -1193
- ccxt/cex.py +1408 -1329
- ccxt/coinbase.py +1454 -287
- ccxt/coinbaseadvanced.py +17 -0
- ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/coinbaseinternational.py +428 -88
- ccxt/coincatch.py +5152 -0
- ccxt/coincheck.py +121 -38
- ccxt/coinex.py +4020 -3339
- ccxt/coinlist.py +273 -116
- ccxt/coinmate.py +204 -97
- ccxt/coinmetro.py +203 -110
- ccxt/coinone.py +142 -68
- ccxt/coinsph.py +206 -89
- ccxt/coinspot.py +137 -62
- ccxt/cryptocom.py +515 -185
- ccxt/currencycom.py +203 -85
- ccxt/defx.py +2065 -0
- ccxt/delta.py +404 -109
- ccxt/deribit.py +557 -323
- ccxt/digifinex.py +340 -223
- ccxt/ellipx.py +1826 -0
- ccxt/exmo.py +259 -128
- ccxt/gate.py +1472 -463
- ccxt/gemini.py +206 -84
- ccxt/hashkey.py +4164 -0
- ccxt/hitbtc.py +334 -178
- ccxt/hollaex.py +134 -83
- ccxt/htx.py +1095 -563
- ccxt/huobijp.py +105 -56
- ccxt/hyperliquid.py +1632 -268
- ccxt/idex.py +148 -95
- ccxt/independentreserve.py +235 -31
- ccxt/indodax.py +165 -62
- ccxt/kraken.py +871 -354
- ccxt/krakenfutures.py +324 -100
- ccxt/kucoin.py +917 -357
- ccxt/kucoinfutures.py +1004 -149
- ccxt/kuna.py +138 -106
- ccxt/latoken.py +135 -79
- ccxt/lbank.py +290 -113
- ccxt/luno.py +112 -62
- ccxt/lykke.py +104 -55
- ccxt/mercado.py +36 -29
- ccxt/mexc.py +994 -429
- ccxt/myokx.py +43 -0
- ccxt/ndax.py +163 -82
- ccxt/novadax.py +121 -75
- ccxt/oceanex.py +175 -59
- ccxt/okcoin.py +222 -163
- ccxt/okx.py +1776 -454
- ccxt/onetrading.py +132 -414
- ccxt/oxfun.py +2831 -0
- ccxt/p2b.py +79 -51
- ccxt/paradex.py +2017 -0
- ccxt/paymium.py +56 -32
- ccxt/phemex.py +572 -196
- ccxt/poloniex.py +218 -95
- ccxt/poloniexfutures.py +260 -92
- ccxt/pro/__init__.py +29 -5
- ccxt/pro/alpaca.py +32 -17
- ccxt/pro/ascendex.py +62 -14
- ccxt/pro/bequant.py +4 -0
- ccxt/pro/binance.py +1596 -329
- ccxt/pro/binancecoinm.py +1 -0
- ccxt/pro/binanceus.py +2 -9
- ccxt/pro/binanceusdm.py +2 -0
- ccxt/pro/bingx.py +527 -134
- ccxt/pro/bitcoincom.py +4 -1
- ccxt/pro/bitfinex.py +731 -266
- ccxt/pro/bitfinex1.py +635 -0
- ccxt/pro/bitget.py +726 -357
- ccxt/pro/bithumb.py +380 -0
- ccxt/pro/bitmart.py +138 -39
- ccxt/pro/bitmex.py +199 -40
- ccxt/pro/bitopro.py +25 -13
- ccxt/pro/bitrue.py +31 -32
- ccxt/pro/bitstamp.py +7 -6
- ccxt/pro/bitvavo.py +203 -81
- ccxt/pro/blockchaincom.py +30 -17
- ccxt/pro/blofin.py +692 -0
- ccxt/pro/bybit.py +791 -82
- ccxt/pro/cex.py +99 -51
- ccxt/pro/coinbase.py +220 -30
- ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
- ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
- ccxt/pro/coinbaseinternational.py +193 -30
- ccxt/pro/coincatch.py +1464 -0
- ccxt/pro/coincheck.py +11 -6
- ccxt/pro/coinex.py +965 -665
- ccxt/pro/coinone.py +17 -10
- ccxt/pro/cryptocom.py +446 -66
- ccxt/pro/currencycom.py +11 -10
- ccxt/pro/defx.py +832 -0
- ccxt/pro/deribit.py +167 -31
- ccxt/pro/exmo.py +252 -20
- ccxt/pro/gate.py +729 -64
- ccxt/pro/gemini.py +44 -26
- ccxt/pro/hashkey.py +802 -0
- ccxt/pro/hitbtc.py +208 -103
- ccxt/pro/hollaex.py +25 -9
- ccxt/pro/htx.py +83 -39
- ccxt/pro/huobijp.py +17 -16
- ccxt/pro/hyperliquid.py +502 -31
- ccxt/pro/idex.py +28 -13
- ccxt/pro/independentreserve.py +21 -16
- ccxt/pro/kraken.py +298 -51
- ccxt/pro/krakenfutures.py +166 -75
- ccxt/pro/kucoin.py +395 -77
- ccxt/pro/kucoinfutures.py +400 -99
- ccxt/pro/lbank.py +52 -31
- ccxt/pro/luno.py +12 -10
- ccxt/pro/mexc.py +400 -50
- ccxt/pro/myokx.py +28 -0
- ccxt/pro/ndax.py +25 -12
- ccxt/pro/okcoin.py +28 -9
- ccxt/pro/okx.py +935 -124
- ccxt/pro/onetrading.py +41 -24
- ccxt/pro/oxfun.py +1054 -0
- ccxt/pro/p2b.py +100 -24
- ccxt/pro/paradex.py +352 -0
- ccxt/pro/phemex.py +92 -33
- ccxt/pro/poloniex.py +128 -49
- ccxt/pro/poloniexfutures.py +53 -32
- ccxt/pro/probit.py +92 -85
- ccxt/pro/upbit.py +401 -8
- ccxt/pro/vertex.py +943 -0
- ccxt/pro/wazirx.py +46 -28
- ccxt/pro/whitebit.py +65 -12
- ccxt/pro/woo.py +437 -65
- ccxt/pro/woofipro.py +1271 -0
- ccxt/pro/xt.py +1067 -0
- ccxt/probit.py +143 -110
- ccxt/static_dependencies/__init__.py +1 -1
- ccxt/static_dependencies/lark/__init__.py +38 -0
- ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
- ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
- ccxt/static_dependencies/lark/ast_utils.py +59 -0
- ccxt/static_dependencies/lark/common.py +86 -0
- ccxt/static_dependencies/lark/exceptions.py +292 -0
- ccxt/static_dependencies/lark/grammar.py +130 -0
- ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
- ccxt/static_dependencies/lark/indenter.py +143 -0
- ccxt/static_dependencies/lark/lark.py +658 -0
- ccxt/static_dependencies/lark/lexer.py +678 -0
- ccxt/static_dependencies/lark/load_grammar.py +1428 -0
- ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
- ccxt/static_dependencies/lark/parser_frontends.py +257 -0
- ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
- ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
- ccxt/static_dependencies/lark/parsers/earley.py +314 -0
- ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
- ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
- ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
- ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
- ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
- ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
- ccxt/static_dependencies/lark/py.typed +0 -0
- ccxt/static_dependencies/lark/reconstruct.py +107 -0
- ccxt/static_dependencies/lark/tools/__init__.py +70 -0
- ccxt/static_dependencies/lark/tools/nearley.py +202 -0
- ccxt/static_dependencies/lark/tools/serialize.py +32 -0
- ccxt/static_dependencies/lark/tools/standalone.py +196 -0
- ccxt/static_dependencies/lark/tree.py +267 -0
- ccxt/static_dependencies/lark/tree_matcher.py +186 -0
- ccxt/static_dependencies/lark/tree_templates.py +180 -0
- ccxt/static_dependencies/lark/utils.py +343 -0
- ccxt/static_dependencies/lark/visitors.py +596 -0
- ccxt/static_dependencies/marshmallow/__init__.py +81 -0
- ccxt/static_dependencies/marshmallow/base.py +65 -0
- ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
- ccxt/static_dependencies/marshmallow/decorators.py +231 -0
- ccxt/static_dependencies/marshmallow/error_store.py +60 -0
- ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
- ccxt/static_dependencies/marshmallow/fields.py +2114 -0
- ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
- ccxt/static_dependencies/marshmallow/py.typed +0 -0
- ccxt/static_dependencies/marshmallow/schema.py +1228 -0
- ccxt/static_dependencies/marshmallow/types.py +12 -0
- ccxt/static_dependencies/marshmallow/utils.py +378 -0
- ccxt/static_dependencies/marshmallow/validate.py +678 -0
- ccxt/static_dependencies/marshmallow/warnings.py +2 -0
- ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
- ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
- ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
- ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
- ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
- ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
- ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
- ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
- ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- ccxt/static_dependencies/starknet/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
- ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
- ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
- ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
- ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
- ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
- ccxt/static_dependencies/starknet/common.py +15 -0
- ccxt/static_dependencies/starknet/constants.py +39 -0
- ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
- ccxt/static_dependencies/starknet/hash/address.py +79 -0
- ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
- ccxt/static_dependencies/starknet/hash/selector.py +16 -0
- ccxt/static_dependencies/starknet/hash/storage.py +12 -0
- ccxt/static_dependencies/starknet/hash/utils.py +78 -0
- ccxt/static_dependencies/starknet/models/__init__.py +0 -0
- ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
- ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
- ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
- ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
- ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
- ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
- ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
- ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
- ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
- ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
- ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
- ccxt/static_dependencies/starknet/utils/schema.py +13 -0
- ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
- ccxt/static_dependencies/starkware/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
- ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
- ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
- ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
- ccxt/static_dependencies/sympy/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
- ccxt/static_dependencies/sympy/external/__init__.py +0 -0
- ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
- ccxt/static_dependencies/sympy/external/importtools.py +187 -0
- ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
- ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
- ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
- ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
- ccxt/test/{test_async.py → tests_async.py} +456 -391
- ccxt/test/tests_helpers.py +285 -0
- ccxt/test/tests_init.py +39 -0
- ccxt/test/{test_sync.py → tests_sync.py} +456 -393
- ccxt/timex.py +123 -70
- ccxt/tokocrypto.py +129 -93
- ccxt/tradeogre.py +39 -25
- ccxt/upbit.py +322 -113
- ccxt/vertex.py +2983 -0
- ccxt/wavesexchange.py +227 -173
- ccxt/wazirx.py +145 -65
- ccxt/whitebit.py +533 -138
- ccxt/woo.py +1137 -296
- ccxt/woofipro.py +2716 -0
- ccxt/xt.py +4627 -0
- ccxt/yobit.py +159 -92
- ccxt/zaif.py +80 -33
- ccxt/zonda.py +140 -69
- ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
- ccxt-4.4.48.dist-info/METADATA +646 -0
- ccxt-4.4.48.dist-info/RECORD +669 -0
- {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
- ccxt/abstract/bitbay.py +0 -47
- ccxt/abstract/bitfinex2.py +0 -139
- ccxt/abstract/hitbtc3.py +0 -115
- ccxt/async_support/bitbay.py +0 -17
- ccxt/async_support/bitfinex2.py +0 -3496
- ccxt/async_support/flowbtc.py +0 -34
- ccxt/bitbay.py +0 -17
- ccxt/bitfinex2.py +0 -3496
- ccxt/flowbtc.py +0 -34
- ccxt/hitbtc3.py +0 -16
- ccxt/pro/bitfinex2.py +0 -1081
- ccxt/test/base/__init__.py +0 -28
- ccxt/test/base/test_account.py +0 -26
- ccxt/test/base/test_balance.py +0 -56
- ccxt/test/base/test_borrow_interest.py +0 -35
- ccxt/test/base/test_borrow_rate.py +0 -32
- ccxt/test/base/test_calculate_fee.py +0 -51
- ccxt/test/base/test_crypto.py +0 -127
- ccxt/test/base/test_currency.py +0 -76
- ccxt/test/base/test_datetime.py +0 -103
- ccxt/test/base/test_decimal_to_precision.py +0 -392
- ccxt/test/base/test_deep_extend.py +0 -68
- ccxt/test/base/test_deposit_withdrawal.py +0 -50
- ccxt/test/base/test_exchange_datetime_functions.py +0 -76
- ccxt/test/base/test_funding_rate_history.py +0 -29
- ccxt/test/base/test_last_price.py +0 -32
- ccxt/test/base/test_ledger_entry.py +0 -45
- ccxt/test/base/test_ledger_item.py +0 -48
- ccxt/test/base/test_leverage_tier.py +0 -33
- ccxt/test/base/test_margin_mode.py +0 -24
- ccxt/test/base/test_margin_modification.py +0 -35
- ccxt/test/base/test_market.py +0 -190
- ccxt/test/base/test_number.py +0 -411
- ccxt/test/base/test_ohlcv.py +0 -32
- ccxt/test/base/test_open_interest.py +0 -32
- ccxt/test/base/test_order.py +0 -64
- ccxt/test/base/test_order_book.py +0 -63
- ccxt/test/base/test_position.py +0 -60
- ccxt/test/base/test_shared_methods.py +0 -345
- ccxt/test/base/test_status.py +0 -24
- ccxt/test/base/test_throttle.py +0 -126
- ccxt/test/base/test_ticker.py +0 -86
- ccxt/test/base/test_trade.py +0 -47
- ccxt/test/base/test_trading_fee.py +0 -26
- ccxt/test/base/test_transaction.py +0 -39
- ccxt-4.2.77.dist-info/METADATA +0 -626
- ccxt-4.2.77.dist-info/RECORD +0 -534
- {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/async_support/coinone.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.coinone import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
|
9
|
+
from ccxt.base.types import Balances, Currencies, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import ArgumentsRequired
|
@@ -25,8 +25,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
25
25
|
'id': 'coinone',
|
26
26
|
'name': 'CoinOne',
|
27
27
|
'countries': ['KR'], # Korea
|
28
|
-
|
29
|
-
'rateLimit': 667,
|
28
|
+
'rateLimit': 50,
|
30
29
|
'version': 'v2',
|
31
30
|
'pro': False,
|
32
31
|
'has': {
|
@@ -53,7 +52,9 @@ class coinone(Exchange, ImplicitAPI):
|
|
53
52
|
'fetchCrossBorrowRate': False,
|
54
53
|
'fetchCrossBorrowRates': False,
|
55
54
|
'fetchCurrencies': True,
|
55
|
+
'fetchDepositAddress': False,
|
56
56
|
'fetchDepositAddresses': True,
|
57
|
+
'fetchDepositAddressesByNetwork': False,
|
57
58
|
'fetchFundingHistory': False,
|
58
59
|
'fetchFundingRate': False,
|
59
60
|
'fetchFundingRateHistory': False,
|
@@ -72,8 +73,11 @@ class coinone(Exchange, ImplicitAPI):
|
|
72
73
|
'fetchOrder': True,
|
73
74
|
'fetchOrderBook': True,
|
74
75
|
'fetchPosition': False,
|
76
|
+
'fetchPositionHistory': False,
|
75
77
|
'fetchPositionMode': False,
|
76
78
|
'fetchPositions': False,
|
79
|
+
'fetchPositionsForSymbol': False,
|
80
|
+
'fetchPositionsHistory': False,
|
77
81
|
'fetchPositionsRisk': False,
|
78
82
|
'fetchPremiumIndexOHLCV': False,
|
79
83
|
'fetchTicker': True,
|
@@ -193,22 +197,80 @@ class coinone(Exchange, ImplicitAPI):
|
|
193
197
|
'maker': 0.002,
|
194
198
|
},
|
195
199
|
},
|
200
|
+
'features': {
|
201
|
+
'spot': {
|
202
|
+
'sandbox': False,
|
203
|
+
'createOrder': {
|
204
|
+
'marginMode': False,
|
205
|
+
'triggerPrice': False,
|
206
|
+
'triggerPriceType': None,
|
207
|
+
'triggerDirection': False,
|
208
|
+
'stopLossPrice': False,
|
209
|
+
'takeProfitPrice': False,
|
210
|
+
'attachedStopLossTakeProfit': None,
|
211
|
+
'timeInForce': {
|
212
|
+
'IOC': False,
|
213
|
+
'FOK': False,
|
214
|
+
'PO': False,
|
215
|
+
'GTD': False,
|
216
|
+
},
|
217
|
+
'hedged': False,
|
218
|
+
'trailing': False,
|
219
|
+
'leverage': False,
|
220
|
+
'marketBuyByCost': False,
|
221
|
+
'marketBuyRequiresPrice': False,
|
222
|
+
'selfTradePrevention': False,
|
223
|
+
'iceberg': False,
|
224
|
+
},
|
225
|
+
'createOrders': None,
|
226
|
+
'fetchMyTrades': {
|
227
|
+
'marginMode': False,
|
228
|
+
'limit': 100, # todo implement
|
229
|
+
'daysBack': 100000, # todo implement
|
230
|
+
'untilDays': 100000, # todo implement
|
231
|
+
},
|
232
|
+
'fetchOrder': {
|
233
|
+
'marginMode': False,
|
234
|
+
'trigger': False,
|
235
|
+
'trailing': False,
|
236
|
+
},
|
237
|
+
'fetchOpenOrders': {
|
238
|
+
'marginMode': False,
|
239
|
+
'limit': None,
|
240
|
+
'trigger': False,
|
241
|
+
'trailing': False,
|
242
|
+
},
|
243
|
+
'fetchOrders': None,
|
244
|
+
'fetchClosedOrders': None, # todo implement
|
245
|
+
'fetchOHLCV': None, # todo implement
|
246
|
+
},
|
247
|
+
'swap': {
|
248
|
+
'linear': None,
|
249
|
+
'inverse': None,
|
250
|
+
},
|
251
|
+
'future': {
|
252
|
+
'linear': None,
|
253
|
+
'inverse': None,
|
254
|
+
},
|
255
|
+
},
|
196
256
|
'precisionMode': TICK_SIZE,
|
197
257
|
'exceptions': {
|
198
|
-
'
|
199
|
-
'
|
200
|
-
'108': BadSymbol,
|
201
|
-
'
|
258
|
+
'104': OrderNotFound,
|
259
|
+
'107': BadRequest,
|
260
|
+
'108': BadSymbol,
|
261
|
+
'405': OnMaintenance,
|
202
262
|
},
|
203
263
|
'commonCurrencies': {
|
204
264
|
'SOC': 'Soda Coin',
|
205
265
|
},
|
206
266
|
})
|
207
267
|
|
208
|
-
async def fetch_currencies(self, params={}):
|
268
|
+
async def fetch_currencies(self, params={}) -> Currencies:
|
209
269
|
"""
|
210
270
|
fetches all available currencies on an exchange
|
211
|
-
|
271
|
+
|
272
|
+
https://docs.coinone.co.kr/reference/currencies
|
273
|
+
|
212
274
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
213
275
|
:returns dict: an associative dictionary of currencies
|
214
276
|
"""
|
@@ -233,8 +295,8 @@ class coinone(Exchange, ImplicitAPI):
|
|
233
295
|
# ]
|
234
296
|
# }
|
235
297
|
#
|
236
|
-
result = {}
|
237
|
-
currencies = self.
|
298
|
+
result: dict = {}
|
299
|
+
currencies = self.safe_list(response, 'currencies', [])
|
238
300
|
for i in range(0, len(currencies)):
|
239
301
|
entry = currencies[i]
|
240
302
|
id = self.safe_string(entry, 'symbol')
|
@@ -268,14 +330,16 @@ class coinone(Exchange, ImplicitAPI):
|
|
268
330
|
}
|
269
331
|
return result
|
270
332
|
|
271
|
-
async def fetch_markets(self, params={}):
|
333
|
+
async def fetch_markets(self, params={}) -> List[Market]:
|
272
334
|
"""
|
273
335
|
retrieves data on all markets for coinone
|
274
|
-
|
336
|
+
|
337
|
+
https://docs.coinone.co.kr/v1.0/reference/tickers
|
338
|
+
|
275
339
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
276
340
|
:returns dict[]: an array of objects representing market data
|
277
341
|
"""
|
278
|
-
request = {
|
342
|
+
request: dict = {
|
279
343
|
'quote_currency': 'KRW',
|
280
344
|
}
|
281
345
|
response = await self.v2PublicGetTickerNewQuoteCurrency(request)
|
@@ -312,7 +376,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
312
376
|
# ]
|
313
377
|
# }
|
314
378
|
#
|
315
|
-
tickers = self.
|
379
|
+
tickers = self.safe_list(response, 'tickers', [])
|
316
380
|
result = []
|
317
381
|
for i in range(0, len(tickers)):
|
318
382
|
entry = self.safe_value(tickers, i)
|
@@ -374,7 +438,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
374
438
|
return result
|
375
439
|
|
376
440
|
def parse_balance(self, response) -> Balances:
|
377
|
-
result = {'info': response}
|
441
|
+
result: dict = {'info': response}
|
378
442
|
balances = self.omit(response, [
|
379
443
|
'errorCode',
|
380
444
|
'result',
|
@@ -394,7 +458,9 @@ class coinone(Exchange, ImplicitAPI):
|
|
394
458
|
async def fetch_balance(self, params={}) -> Balances:
|
395
459
|
"""
|
396
460
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
397
|
-
|
461
|
+
|
462
|
+
https://docs.coinone.co.kr/v1.0/reference/v21
|
463
|
+
|
398
464
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
399
465
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
400
466
|
"""
|
@@ -405,7 +471,9 @@ class coinone(Exchange, ImplicitAPI):
|
|
405
471
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
406
472
|
"""
|
407
473
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
408
|
-
|
474
|
+
|
475
|
+
https://docs.coinone.co.kr/v1.0/reference/orderbook
|
476
|
+
|
409
477
|
:param str symbol: unified symbol of the market to fetch the order book for
|
410
478
|
:param int [limit]: the maximum amount of order book entries to return
|
411
479
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -413,7 +481,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
413
481
|
"""
|
414
482
|
await self.load_markets()
|
415
483
|
market = self.market(symbol)
|
416
|
-
request = {
|
484
|
+
request: dict = {
|
417
485
|
'quote_currency': market['quote'],
|
418
486
|
'target_currency': market['base'],
|
419
487
|
}
|
@@ -449,15 +517,17 @@ class coinone(Exchange, ImplicitAPI):
|
|
449
517
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
450
518
|
"""
|
451
519
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
452
|
-
|
453
|
-
|
520
|
+
|
521
|
+
https://docs.coinone.co.kr/v1.0/reference/tickers
|
522
|
+
https://docs.coinone.co.kr/v1.0/reference/ticker
|
523
|
+
|
454
524
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
455
525
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
456
526
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
457
527
|
"""
|
458
528
|
await self.load_markets()
|
459
529
|
symbols = self.market_symbols(symbols)
|
460
|
-
request = {
|
530
|
+
request: dict = {
|
461
531
|
'quote_currency': 'KRW',
|
462
532
|
}
|
463
533
|
market = None
|
@@ -503,20 +573,22 @@ class coinone(Exchange, ImplicitAPI):
|
|
503
573
|
# ]
|
504
574
|
# }
|
505
575
|
#
|
506
|
-
data = self.
|
576
|
+
data = self.safe_list(response, 'tickers', [])
|
507
577
|
return self.parse_tickers(data, symbols)
|
508
578
|
|
509
579
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
510
580
|
"""
|
511
581
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
512
|
-
|
582
|
+
|
583
|
+
https://docs.coinone.co.kr/v1.0/reference/ticker
|
584
|
+
|
513
585
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
514
586
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
515
587
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
516
588
|
"""
|
517
589
|
await self.load_markets()
|
518
590
|
market = self.market(symbol)
|
519
|
-
request = {
|
591
|
+
request: dict = {
|
520
592
|
'quote_currency': market['quote'],
|
521
593
|
'target_currency': market['base'],
|
522
594
|
}
|
@@ -554,11 +626,11 @@ class coinone(Exchange, ImplicitAPI):
|
|
554
626
|
# ]
|
555
627
|
# }
|
556
628
|
#
|
557
|
-
data = self.
|
558
|
-
ticker = self.
|
629
|
+
data = self.safe_list(response, 'tickers', [])
|
630
|
+
ticker = self.safe_dict(data, 0, {})
|
559
631
|
return self.parse_ticker(ticker, market)
|
560
632
|
|
561
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
633
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
562
634
|
#
|
563
635
|
# {
|
564
636
|
# "quote_currency": "krw",
|
@@ -587,8 +659,8 @@ class coinone(Exchange, ImplicitAPI):
|
|
587
659
|
#
|
588
660
|
timestamp = self.safe_integer(ticker, 'timestamp')
|
589
661
|
last = self.safe_string(ticker, 'last')
|
590
|
-
asks = self.
|
591
|
-
bids = self.
|
662
|
+
asks = self.safe_list(ticker, 'best_asks', [])
|
663
|
+
bids = self.safe_list(ticker, 'best_bids', [])
|
592
664
|
baseId = self.safe_string(ticker, 'target_currency')
|
593
665
|
quoteId = self.safe_string(ticker, 'quote_currency')
|
594
666
|
base = self.safe_currency_code(baseId)
|
@@ -616,7 +688,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
616
688
|
'info': ticker,
|
617
689
|
}, market)
|
618
690
|
|
619
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
691
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
620
692
|
#
|
621
693
|
# fetchTrades(public)
|
622
694
|
#
|
@@ -642,7 +714,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
642
714
|
#
|
643
715
|
timestamp = self.safe_integer(trade, 'timestamp')
|
644
716
|
market = self.safe_market(None, market)
|
645
|
-
isSellerMaker = self.
|
717
|
+
isSellerMaker = self.safe_bool(trade, 'is_seller_maker')
|
646
718
|
side = None
|
647
719
|
if isSellerMaker is not None:
|
648
720
|
side = 'sell' if isSellerMaker else 'buy'
|
@@ -680,7 +752,9 @@ class coinone(Exchange, ImplicitAPI):
|
|
680
752
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
681
753
|
"""
|
682
754
|
get the list of most recent trades for a particular symbol
|
683
|
-
|
755
|
+
|
756
|
+
https://docs.coinone.co.kr/v1.0/reference/recent-completed-orders
|
757
|
+
|
684
758
|
:param str symbol: unified symbol of the market to fetch trades for
|
685
759
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
686
760
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -689,7 +763,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
689
763
|
"""
|
690
764
|
await self.load_markets()
|
691
765
|
market = self.market(symbol)
|
692
|
-
request = {
|
766
|
+
request: dict = {
|
693
767
|
'quote_currency': market['quote'],
|
694
768
|
'target_currency': market['base'],
|
695
769
|
}
|
@@ -714,19 +788,21 @@ class coinone(Exchange, ImplicitAPI):
|
|
714
788
|
# ]
|
715
789
|
# }
|
716
790
|
#
|
717
|
-
data = self.
|
791
|
+
data = self.safe_list(response, 'transactions', [])
|
718
792
|
return self.parse_trades(data, market, since, limit)
|
719
793
|
|
720
794
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
721
795
|
"""
|
722
796
|
create a trade order
|
723
|
-
|
724
|
-
|
797
|
+
|
798
|
+
https://doc.coinone.co.kr/#tag/Order-V2/operation/v2_order_limit_buy
|
799
|
+
https://doc.coinone.co.kr/#tag/Order-V2/operation/v2_order_limit_sell
|
800
|
+
|
725
801
|
:param str symbol: unified symbol of the market to create an order in
|
726
802
|
:param str type: must be 'limit'
|
727
803
|
:param str side: 'buy' or 'sell'
|
728
804
|
:param float amount: how much of currency you want to trade in units of base currency
|
729
|
-
:param float [price]: the price at which the order is to be
|
805
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
730
806
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
731
807
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
732
808
|
"""
|
@@ -734,7 +810,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
734
810
|
raise ExchangeError(self.id + ' createOrder() allows limit orders only')
|
735
811
|
await self.load_markets()
|
736
812
|
market = self.market(symbol)
|
737
|
-
request = {
|
813
|
+
request: dict = {
|
738
814
|
'price': price,
|
739
815
|
'currency': market['id'],
|
740
816
|
'qty': amount,
|
@@ -753,6 +829,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
753
829
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
754
830
|
"""
|
755
831
|
fetches information on an order made by the user
|
832
|
+
:param str id: order id
|
756
833
|
:param str symbol: unified symbol of the market the order was made in
|
757
834
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
758
835
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -761,7 +838,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
761
838
|
raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol argument')
|
762
839
|
await self.load_markets()
|
763
840
|
market = self.market(symbol)
|
764
|
-
request = {
|
841
|
+
request: dict = {
|
765
842
|
'order_id': id,
|
766
843
|
'currency': market['id'],
|
767
844
|
}
|
@@ -789,8 +866,8 @@ class coinone(Exchange, ImplicitAPI):
|
|
789
866
|
#
|
790
867
|
return self.parse_order(response, market)
|
791
868
|
|
792
|
-
def parse_order_status(self, status):
|
793
|
-
statuses = {
|
869
|
+
def parse_order_status(self, status: Str):
|
870
|
+
statuses: dict = {
|
794
871
|
'live': 'open',
|
795
872
|
'partially_filled': 'open',
|
796
873
|
'partially_canceled': 'open',
|
@@ -799,7 +876,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
799
876
|
}
|
800
877
|
return self.safe_string(statuses, status, status)
|
801
878
|
|
802
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
879
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
803
880
|
#
|
804
881
|
# createOrder
|
805
882
|
#
|
@@ -894,7 +971,6 @@ class coinone(Exchange, ImplicitAPI):
|
|
894
971
|
'postOnly': None,
|
895
972
|
'side': side,
|
896
973
|
'price': self.safe_string(order, 'price'),
|
897
|
-
'stopPrice': None,
|
898
974
|
'triggerPrice': None,
|
899
975
|
'cost': None,
|
900
976
|
'average': self.safe_string(order, 'averageExecutedPrice'),
|
@@ -921,7 +997,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
921
997
|
raise ExchangeError(self.id + ' fetchOpenOrders() allows fetching closed orders with a specific symbol')
|
922
998
|
await self.load_markets()
|
923
999
|
market = self.market(symbol)
|
924
|
-
request = {
|
1000
|
+
request: dict = {
|
925
1001
|
'currency': market['id'],
|
926
1002
|
}
|
927
1003
|
response = await self.privatePostOrderLimitOrders(self.extend(request, params))
|
@@ -942,7 +1018,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
942
1018
|
# ]
|
943
1019
|
# }
|
944
1020
|
#
|
945
|
-
limitOrders = self.
|
1021
|
+
limitOrders = self.safe_list(response, 'limitOrders', [])
|
946
1022
|
return self.parse_orders(limitOrders, market, since, limit)
|
947
1023
|
|
948
1024
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
@@ -958,7 +1034,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
958
1034
|
raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol argument')
|
959
1035
|
await self.load_markets()
|
960
1036
|
market = self.market(symbol)
|
961
|
-
request = {
|
1037
|
+
request: dict = {
|
962
1038
|
'currency': market['id'],
|
963
1039
|
}
|
964
1040
|
response = await self.v2PrivatePostOrderCompleteOrders(self.extend(request, params))
|
@@ -982,7 +1058,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
982
1058
|
# ]
|
983
1059
|
# }
|
984
1060
|
#
|
985
|
-
completeOrders = self.
|
1061
|
+
completeOrders = self.safe_list(response, 'completeOrders', [])
|
986
1062
|
return self.parse_trades(completeOrders, market, since, limit)
|
987
1063
|
|
988
1064
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
@@ -1003,7 +1079,7 @@ class coinone(Exchange, ImplicitAPI):
|
|
1003
1079
|
# eslint-disable-next-line quotes
|
1004
1080
|
raise ArgumentsRequired(self.id + " cancelOrder() requires {'price': 12345, 'qty': 1.2345, 'is_ask': 0} in the params argument.")
|
1005
1081
|
await self.load_markets()
|
1006
|
-
request = {
|
1082
|
+
request: dict = {
|
1007
1083
|
'order_id': id,
|
1008
1084
|
'price': price,
|
1009
1085
|
'qty': qty,
|
@@ -1017,9 +1093,9 @@ class coinone(Exchange, ImplicitAPI):
|
|
1017
1093
|
# "errorCode": "0"
|
1018
1094
|
# }
|
1019
1095
|
#
|
1020
|
-
return response
|
1096
|
+
return self.safe_order(response)
|
1021
1097
|
|
1022
|
-
async def fetch_deposit_addresses(self, codes:
|
1098
|
+
async def fetch_deposit_addresses(self, codes: Strings = None, params={}) -> List[DepositAddress]:
|
1023
1099
|
"""
|
1024
1100
|
fetch deposit addresses for multiple currencies and chain types
|
1025
1101
|
:param str[]|None codes: list of unified currency codes, default is None
|
@@ -1042,9 +1118,9 @@ class coinone(Exchange, ImplicitAPI):
|
|
1042
1118
|
# }
|
1043
1119
|
# }
|
1044
1120
|
#
|
1045
|
-
walletAddress = self.
|
1121
|
+
walletAddress = self.safe_dict(response, 'walletAddress', {})
|
1046
1122
|
keys = list(walletAddress.keys())
|
1047
|
-
result = {}
|
1123
|
+
result: dict = {}
|
1048
1124
|
for i in range(0, len(keys)):
|
1049
1125
|
key = keys[i]
|
1050
1126
|
value = walletAddress[key]
|
@@ -1057,10 +1133,11 @@ class coinone(Exchange, ImplicitAPI):
|
|
1057
1133
|
depositAddress = self.safe_value(result, code)
|
1058
1134
|
if depositAddress is None:
|
1059
1135
|
depositAddress = {
|
1136
|
+
'info': value,
|
1060
1137
|
'currency': code,
|
1138
|
+
'network': None,
|
1061
1139
|
'address': None,
|
1062
1140
|
'tag': None,
|
1063
|
-
'info': value,
|
1064
1141
|
}
|
1065
1142
|
address = self.safe_string(depositAddress, 'address', value)
|
1066
1143
|
self.check_address(address)
|
@@ -1106,19 +1183,16 @@ class coinone(Exchange, ImplicitAPI):
|
|
1106
1183
|
}
|
1107
1184
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1108
1185
|
|
1109
|
-
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1186
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1110
1187
|
if response is None:
|
1111
|
-
return None
|
1112
|
-
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
raise ExchangeError(feedback)
|
1122
|
-
else:
|
1123
|
-
raise ExchangeError(self.id + ' ' + body)
|
1188
|
+
return None # fallback to default error handler
|
1189
|
+
#
|
1190
|
+
# {"result":"error","error_code":"107","error_msg":"Parameter value is wrong"}
|
1191
|
+
# {"result":"error","error_code":"108","error_msg":"Unknown CryptoCurrency"}
|
1192
|
+
#
|
1193
|
+
errorCode = self.safe_string(response, 'error_code')
|
1194
|
+
if errorCode is not None and errorCode != '0':
|
1195
|
+
feedback = self.id + ' ' + body
|
1196
|
+
self.throw_exactly_matched_exception(self.exceptions, errorCode, feedback)
|
1197
|
+
raise ExchangeError(feedback) # unknown message
|
1124
1198
|
return None
|