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/bitbank.py
CHANGED
@@ -6,15 +6,15 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.bitbank import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, Transaction
|
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
11
|
from ccxt.base.errors import ExchangeError
|
12
|
+
from ccxt.base.errors import AuthenticationError
|
12
13
|
from ccxt.base.errors import PermissionDenied
|
13
14
|
from ccxt.base.errors import InsufficientFunds
|
14
15
|
from ccxt.base.errors import InvalidOrder
|
15
16
|
from ccxt.base.errors import OrderNotFound
|
16
17
|
from ccxt.base.errors import InvalidNonce
|
17
|
-
from ccxt.base.errors import AuthenticationError
|
18
18
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
19
19
|
|
20
20
|
|
@@ -46,6 +46,8 @@ class bitbank(Exchange, ImplicitAPI):
|
|
46
46
|
'fetchCrossBorrowRate': False,
|
47
47
|
'fetchCrossBorrowRates': False,
|
48
48
|
'fetchDepositAddress': True,
|
49
|
+
'fetchDepositAddresses': False,
|
50
|
+
'fetchDepositAddressesByNetwork': False,
|
49
51
|
'fetchFundingHistory': False,
|
50
52
|
'fetchFundingRate': False,
|
51
53
|
'fetchFundingRateHistory': False,
|
@@ -64,8 +66,11 @@ class bitbank(Exchange, ImplicitAPI):
|
|
64
66
|
'fetchOrder': True,
|
65
67
|
'fetchOrderBook': True,
|
66
68
|
'fetchPosition': False,
|
69
|
+
'fetchPositionHistory': False,
|
67
70
|
'fetchPositionMode': False,
|
68
71
|
'fetchPositions': False,
|
72
|
+
'fetchPositionsForSymbol': False,
|
73
|
+
'fetchPositionsHistory': False,
|
69
74
|
'fetchPositionsRisk': False,
|
70
75
|
'fetchPremiumIndexOHLCV': False,
|
71
76
|
'fetchTicker': True,
|
@@ -95,7 +100,7 @@ class bitbank(Exchange, ImplicitAPI):
|
|
95
100
|
},
|
96
101
|
'hostname': 'bitbank.cc',
|
97
102
|
'urls': {
|
98
|
-
'logo': 'https://
|
103
|
+
'logo': 'https://github.com/user-attachments/assets/9d616de0-8a88-4468-8e38-d269acab0348',
|
99
104
|
'api': {
|
100
105
|
'public': 'https://public.{hostname}',
|
101
106
|
'private': 'https://api.{hostname}',
|
@@ -123,8 +128,11 @@ class bitbank(Exchange, ImplicitAPI):
|
|
123
128
|
'user/assets',
|
124
129
|
'user/spot/order',
|
125
130
|
'user/spot/active_orders',
|
131
|
+
'user/margin/positions',
|
126
132
|
'user/spot/trade_history',
|
127
133
|
'user/deposit_history',
|
134
|
+
'user/unconfirmed_deposits',
|
135
|
+
'user/deposit_originators',
|
128
136
|
'user/withdrawal_account',
|
129
137
|
'user/withdrawal_history',
|
130
138
|
'spot/status',
|
@@ -135,6 +143,8 @@ class bitbank(Exchange, ImplicitAPI):
|
|
135
143
|
'user/spot/cancel_order',
|
136
144
|
'user/spot/cancel_orders',
|
137
145
|
'user/spot/orders_info',
|
146
|
+
'user/confirm_deposits',
|
147
|
+
'user/confirm_deposits_all',
|
138
148
|
'user/request_withdrawal',
|
139
149
|
],
|
140
150
|
},
|
@@ -144,30 +154,92 @@ class bitbank(Exchange, ImplicitAPI):
|
|
144
154
|
],
|
145
155
|
},
|
146
156
|
},
|
157
|
+
'features': {
|
158
|
+
'spot': {
|
159
|
+
'sandbox': False,
|
160
|
+
'createOrder': {
|
161
|
+
'marginMode': False,
|
162
|
+
'triggerPrice': True, # todo implement
|
163
|
+
'triggerPriceType': None,
|
164
|
+
'triggerDirection': False,
|
165
|
+
'stopLossPrice': False,
|
166
|
+
'takeProfitPrice': False,
|
167
|
+
'attachedStopLossTakeProfit': None,
|
168
|
+
'timeInForce': {
|
169
|
+
'IOC': False,
|
170
|
+
'FOK': False,
|
171
|
+
'PO': True, # todo: implement
|
172
|
+
'GTD': False,
|
173
|
+
},
|
174
|
+
'hedged': False,
|
175
|
+
'trailing': False,
|
176
|
+
'leverage': False,
|
177
|
+
'marketBuyRequiresPrice': False,
|
178
|
+
'marketBuyByCost': False,
|
179
|
+
'selfTradePrevention': False,
|
180
|
+
'iceberg': False,
|
181
|
+
},
|
182
|
+
'createOrders': None,
|
183
|
+
'fetchMyTrades': {
|
184
|
+
'marginMode': False,
|
185
|
+
'limit': 1000,
|
186
|
+
'daysBack': None,
|
187
|
+
'untilDays': None,
|
188
|
+
},
|
189
|
+
'fetchOrder': {
|
190
|
+
'marginMode': False,
|
191
|
+
'trigger': False,
|
192
|
+
'trailing': False,
|
193
|
+
},
|
194
|
+
'fetchOpenOrders': {
|
195
|
+
'marginMode': False,
|
196
|
+
'limit': 1000,
|
197
|
+
'trigger': False,
|
198
|
+
'trailing': False,
|
199
|
+
},
|
200
|
+
'fetchOrders': None,
|
201
|
+
'fetchClosedOrders': None,
|
202
|
+
'fetchOHLCV': {
|
203
|
+
'limit': 1000,
|
204
|
+
},
|
205
|
+
},
|
206
|
+
'swap': {
|
207
|
+
'linear': None,
|
208
|
+
'inverse': None,
|
209
|
+
},
|
210
|
+
'future': {
|
211
|
+
'linear': None,
|
212
|
+
'inverse': None,
|
213
|
+
},
|
214
|
+
},
|
147
215
|
'precisionMode': TICK_SIZE,
|
148
216
|
'exceptions': {
|
149
|
-
'
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
217
|
+
'exact': {
|
218
|
+
'20001': AuthenticationError,
|
219
|
+
'20002': AuthenticationError,
|
220
|
+
'20003': AuthenticationError,
|
221
|
+
'20005': AuthenticationError,
|
222
|
+
'20004': InvalidNonce,
|
223
|
+
'40020': InvalidOrder,
|
224
|
+
'40021': InvalidOrder,
|
225
|
+
'40025': ExchangeError,
|
226
|
+
'40013': OrderNotFound,
|
227
|
+
'40014': OrderNotFound,
|
228
|
+
'50008': PermissionDenied,
|
229
|
+
'50009': OrderNotFound,
|
230
|
+
'50010': OrderNotFound,
|
231
|
+
'60001': InsufficientFunds,
|
232
|
+
'60005': InvalidOrder,
|
233
|
+
},
|
164
234
|
},
|
165
235
|
})
|
166
236
|
|
167
|
-
def fetch_markets(self, params={}):
|
237
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
168
238
|
"""
|
169
239
|
retrieves data on all markets for bitbank
|
170
|
-
|
240
|
+
|
241
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-all-pairs-info
|
242
|
+
|
171
243
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
172
244
|
:returns dict[]: an array of objects representing market data
|
173
245
|
"""
|
@@ -261,7 +333,7 @@ class bitbank(Exchange, ImplicitAPI):
|
|
261
333
|
'info': entry,
|
262
334
|
}
|
263
335
|
|
264
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
336
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
265
337
|
symbol = self.safe_symbol(None, market)
|
266
338
|
timestamp = self.safe_integer(ticker, 'timestamp')
|
267
339
|
last = self.safe_string(ticker, 'last')
|
@@ -291,24 +363,28 @@ class bitbank(Exchange, ImplicitAPI):
|
|
291
363
|
def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
292
364
|
"""
|
293
365
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
294
|
-
|
366
|
+
|
367
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#ticker
|
368
|
+
|
295
369
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
296
370
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
297
371
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
298
372
|
"""
|
299
373
|
self.load_markets()
|
300
374
|
market = self.market(symbol)
|
301
|
-
request = {
|
375
|
+
request: dict = {
|
302
376
|
'pair': market['id'],
|
303
377
|
}
|
304
378
|
response = self.publicGetPairTicker(self.extend(request, params))
|
305
|
-
data = self.
|
379
|
+
data = self.safe_dict(response, 'data', {})
|
306
380
|
return self.parse_ticker(data, market)
|
307
381
|
|
308
382
|
def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
309
383
|
"""
|
310
384
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
311
|
-
|
385
|
+
|
386
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#depth
|
387
|
+
|
312
388
|
:param str symbol: unified symbol of the market to fetch the order book for
|
313
389
|
:param int [limit]: the maximum amount of order book entries to return
|
314
390
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -316,7 +392,7 @@ class bitbank(Exchange, ImplicitAPI):
|
|
316
392
|
"""
|
317
393
|
self.load_markets()
|
318
394
|
market = self.market(symbol)
|
319
|
-
request = {
|
395
|
+
request: dict = {
|
320
396
|
'pair': market['id'],
|
321
397
|
}
|
322
398
|
response = self.publicGetPairDepth(self.extend(request, params))
|
@@ -324,7 +400,7 @@ class bitbank(Exchange, ImplicitAPI):
|
|
324
400
|
timestamp = self.safe_integer(orderbook, 'timestamp')
|
325
401
|
return self.parse_order_book(orderbook, market['symbol'], timestamp)
|
326
402
|
|
327
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
403
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
328
404
|
#
|
329
405
|
# fetchTrades
|
330
406
|
#
|
@@ -371,7 +447,9 @@ class bitbank(Exchange, ImplicitAPI):
|
|
371
447
|
def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
372
448
|
"""
|
373
449
|
get the list of most recent trades for a particular symbol
|
374
|
-
|
450
|
+
|
451
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#transactions
|
452
|
+
|
375
453
|
:param str symbol: unified symbol of the market to fetch trades for
|
376
454
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
377
455
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -380,18 +458,20 @@ class bitbank(Exchange, ImplicitAPI):
|
|
380
458
|
"""
|
381
459
|
self.load_markets()
|
382
460
|
market = self.market(symbol)
|
383
|
-
request = {
|
461
|
+
request: dict = {
|
384
462
|
'pair': market['id'],
|
385
463
|
}
|
386
464
|
response = self.publicGetPairTransactions(self.extend(request, params))
|
387
465
|
data = self.safe_value(response, 'data', {})
|
388
|
-
trades = self.
|
466
|
+
trades = self.safe_list(data, 'transactions', [])
|
389
467
|
return self.parse_trades(trades, market, since, limit)
|
390
468
|
|
391
|
-
def fetch_trading_fees(self, params={}):
|
469
|
+
def fetch_trading_fees(self, params={}) -> TradingFees:
|
392
470
|
"""
|
393
471
|
fetch the trading fees for multiple markets
|
394
|
-
|
472
|
+
|
473
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-all-pairs-info
|
474
|
+
|
395
475
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
396
476
|
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
|
397
477
|
"""
|
@@ -427,7 +507,7 @@ class bitbank(Exchange, ImplicitAPI):
|
|
427
507
|
#
|
428
508
|
data = self.safe_value(response, 'data', {})
|
429
509
|
pairs = self.safe_value(data, 'pairs', [])
|
430
|
-
result = {}
|
510
|
+
result: dict = {}
|
431
511
|
for i in range(0, len(pairs)):
|
432
512
|
pair = pairs[i]
|
433
513
|
marketId = self.safe_string(pair, 'name')
|
@@ -466,7 +546,9 @@ class bitbank(Exchange, ImplicitAPI):
|
|
466
546
|
def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
467
547
|
"""
|
468
548
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
469
|
-
|
549
|
+
|
550
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#candlestick
|
551
|
+
|
470
552
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
471
553
|
:param str timeframe: the length of time each candle represents
|
472
554
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -481,7 +563,7 @@ class bitbank(Exchange, ImplicitAPI):
|
|
481
563
|
since = self.milliseconds() - duration * 1000 * limit
|
482
564
|
self.load_markets()
|
483
565
|
market = self.market(symbol)
|
484
|
-
request = {
|
566
|
+
request: dict = {
|
485
567
|
'pair': market['id'],
|
486
568
|
'candletype': self.safe_string(self.timeframes, timeframe, timeframe),
|
487
569
|
'yyyymmdd': self.yyyymmdd(since, ''),
|
@@ -508,11 +590,11 @@ class bitbank(Exchange, ImplicitAPI):
|
|
508
590
|
data = self.safe_value(response, 'data', {})
|
509
591
|
candlestick = self.safe_value(data, 'candlestick', [])
|
510
592
|
first = self.safe_value(candlestick, 0, {})
|
511
|
-
ohlcv = self.
|
593
|
+
ohlcv = self.safe_list(first, 'ohlcv', [])
|
512
594
|
return self.parse_ohlcvs(ohlcv, market, timeframe, since, limit)
|
513
595
|
|
514
596
|
def parse_balance(self, response) -> Balances:
|
515
|
-
result = {
|
597
|
+
result: dict = {
|
516
598
|
'info': response,
|
517
599
|
'timestamp': None,
|
518
600
|
'datetime': None,
|
@@ -533,7 +615,9 @@ class bitbank(Exchange, ImplicitAPI):
|
|
533
615
|
def fetch_balance(self, params={}) -> Balances:
|
534
616
|
"""
|
535
617
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
536
|
-
|
618
|
+
|
619
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#assets
|
620
|
+
|
537
621
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
538
622
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
539
623
|
"""
|
@@ -574,8 +658,8 @@ class bitbank(Exchange, ImplicitAPI):
|
|
574
658
|
#
|
575
659
|
return self.parse_balance(response)
|
576
660
|
|
577
|
-
def parse_order_status(self, status):
|
578
|
-
statuses = {
|
661
|
+
def parse_order_status(self, status: Str):
|
662
|
+
statuses: dict = {
|
579
663
|
'UNFILLED': 'open',
|
580
664
|
'PARTIALLY_FILLED': 'open',
|
581
665
|
'FULLY_FILLED': 'closed',
|
@@ -584,7 +668,7 @@ class bitbank(Exchange, ImplicitAPI):
|
|
584
668
|
}
|
585
669
|
return self.safe_string(statuses, status, status)
|
586
670
|
|
587
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
671
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
588
672
|
id = self.safe_string(order, 'order_id')
|
589
673
|
marketId = self.safe_string(order, 'pair')
|
590
674
|
market = self.safe_market(marketId, market)
|
@@ -610,7 +694,6 @@ class bitbank(Exchange, ImplicitAPI):
|
|
610
694
|
'postOnly': None,
|
611
695
|
'side': side,
|
612
696
|
'price': price,
|
613
|
-
'stopPrice': None,
|
614
697
|
'triggerPrice': None,
|
615
698
|
'cost': None,
|
616
699
|
'average': average,
|
@@ -625,18 +708,20 @@ class bitbank(Exchange, ImplicitAPI):
|
|
625
708
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
626
709
|
"""
|
627
710
|
create a trade order
|
628
|
-
|
711
|
+
|
712
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#create-new-order
|
713
|
+
|
629
714
|
:param str symbol: unified symbol of the market to create an order in
|
630
715
|
:param str type: 'market' or 'limit'
|
631
716
|
:param str side: 'buy' or 'sell'
|
632
717
|
:param float amount: how much of currency you want to trade in units of base currency
|
633
|
-
:param float [price]: the price at which the order is to be
|
718
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
634
719
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
635
720
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
636
721
|
"""
|
637
722
|
self.load_markets()
|
638
723
|
market = self.market(symbol)
|
639
|
-
request = {
|
724
|
+
request: dict = {
|
640
725
|
'pair': market['id'],
|
641
726
|
'amount': self.amount_to_precision(symbol, amount),
|
642
727
|
'side': side,
|
@@ -645,13 +730,15 @@ class bitbank(Exchange, ImplicitAPI):
|
|
645
730
|
if type == 'limit':
|
646
731
|
request['price'] = self.price_to_precision(symbol, price)
|
647
732
|
response = self.privatePostUserSpotOrder(self.extend(request, params))
|
648
|
-
data = self.
|
733
|
+
data = self.safe_dict(response, 'data')
|
649
734
|
return self.parse_order(data, market)
|
650
735
|
|
651
736
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
652
737
|
"""
|
653
738
|
cancels an open order
|
654
|
-
|
739
|
+
|
740
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#cancel-order
|
741
|
+
|
655
742
|
:param str id: order id
|
656
743
|
:param str symbol: unified symbol of the market the order was made in
|
657
744
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -659,36 +746,86 @@ class bitbank(Exchange, ImplicitAPI):
|
|
659
746
|
"""
|
660
747
|
self.load_markets()
|
661
748
|
market = self.market(symbol)
|
662
|
-
request = {
|
749
|
+
request: dict = {
|
663
750
|
'order_id': id,
|
664
751
|
'pair': market['id'],
|
665
752
|
}
|
666
753
|
response = self.privatePostUserSpotCancelOrder(self.extend(request, params))
|
754
|
+
#
|
755
|
+
# {
|
756
|
+
# "success": 1,
|
757
|
+
# "data": {
|
758
|
+
# "order_id": 0,
|
759
|
+
# "pair": "string",
|
760
|
+
# "side": "string",
|
761
|
+
# "type": "string",
|
762
|
+
# "start_amount": "string",
|
763
|
+
# "remaining_amount": "string",
|
764
|
+
# "executed_amount": "string",
|
765
|
+
# "price": "string",
|
766
|
+
# "post_only": False,
|
767
|
+
# "average_price": "string",
|
768
|
+
# "ordered_at": 0,
|
769
|
+
# "expire_at": 0,
|
770
|
+
# "canceled_at": 0,
|
771
|
+
# "triggered_at": 0,
|
772
|
+
# "trigger_price": "string",
|
773
|
+
# "status": "string"
|
774
|
+
# }
|
775
|
+
# }
|
776
|
+
#
|
667
777
|
data = self.safe_value(response, 'data')
|
668
|
-
return data
|
778
|
+
return self.parse_order(data)
|
669
779
|
|
670
780
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
671
781
|
"""
|
672
782
|
fetches information on an order made by the user
|
673
|
-
|
783
|
+
|
784
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-order-information
|
785
|
+
|
786
|
+
:param str id: the order id
|
674
787
|
:param str symbol: unified symbol of the market the order was made in
|
675
788
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
676
789
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
677
790
|
"""
|
678
791
|
self.load_markets()
|
679
792
|
market = self.market(symbol)
|
680
|
-
request = {
|
793
|
+
request: dict = {
|
681
794
|
'order_id': id,
|
682
795
|
'pair': market['id'],
|
683
796
|
}
|
684
797
|
response = self.privateGetUserSpotOrder(self.extend(request, params))
|
685
|
-
|
798
|
+
#
|
799
|
+
# {
|
800
|
+
# "success": 1,
|
801
|
+
# "data": {
|
802
|
+
# "order_id": 0,
|
803
|
+
# "pair": "string",
|
804
|
+
# "side": "string",
|
805
|
+
# "type": "string",
|
806
|
+
# "start_amount": "string",
|
807
|
+
# "remaining_amount": "string",
|
808
|
+
# "executed_amount": "string",
|
809
|
+
# "price": "string",
|
810
|
+
# "post_only": False,
|
811
|
+
# "average_price": "string",
|
812
|
+
# "ordered_at": 0,
|
813
|
+
# "expire_at": 0,
|
814
|
+
# "triggered_at": 0,
|
815
|
+
# "triger_price": "string",
|
816
|
+
# "status": "string"
|
817
|
+
# }
|
818
|
+
# }
|
819
|
+
#
|
820
|
+
data = self.safe_dict(response, 'data')
|
686
821
|
return self.parse_order(data, market)
|
687
822
|
|
688
823
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
689
824
|
"""
|
690
825
|
fetch all unfilled currently open orders
|
691
|
-
|
826
|
+
|
827
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-active-orders
|
828
|
+
|
692
829
|
:param str symbol: unified market symbol
|
693
830
|
:param int [since]: the earliest time in ms to fetch open orders for
|
694
831
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
@@ -697,7 +834,7 @@ class bitbank(Exchange, ImplicitAPI):
|
|
697
834
|
"""
|
698
835
|
self.load_markets()
|
699
836
|
market = self.market(symbol)
|
700
|
-
request = {
|
837
|
+
request: dict = {
|
701
838
|
'pair': market['id'],
|
702
839
|
}
|
703
840
|
if limit is not None:
|
@@ -706,13 +843,15 @@ class bitbank(Exchange, ImplicitAPI):
|
|
706
843
|
request['since'] = self.parse_to_int(since / 1000)
|
707
844
|
response = self.privateGetUserSpotActiveOrders(self.extend(request, params))
|
708
845
|
data = self.safe_value(response, 'data', {})
|
709
|
-
orders = self.
|
846
|
+
orders = self.safe_list(data, 'orders', [])
|
710
847
|
return self.parse_orders(orders, market, since, limit)
|
711
848
|
|
712
849
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
713
850
|
"""
|
714
851
|
fetch all trades made by the user
|
715
|
-
|
852
|
+
|
853
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-trade-history
|
854
|
+
|
716
855
|
:param str symbol: unified market symbol
|
717
856
|
:param int [since]: the earliest time in ms to fetch trades for
|
718
857
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -720,7 +859,7 @@ class bitbank(Exchange, ImplicitAPI):
|
|
720
859
|
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
721
860
|
"""
|
722
861
|
self.load_markets()
|
723
|
-
request = {}
|
862
|
+
request: dict = {}
|
724
863
|
market = None
|
725
864
|
if symbol is not None:
|
726
865
|
market = self.market(symbol)
|
@@ -731,20 +870,22 @@ class bitbank(Exchange, ImplicitAPI):
|
|
731
870
|
request['since'] = self.parse_to_int(since / 1000)
|
732
871
|
response = self.privateGetUserSpotTradeHistory(self.extend(request, params))
|
733
872
|
data = self.safe_value(response, 'data', {})
|
734
|
-
trades = self.
|
873
|
+
trades = self.safe_list(data, 'trades', [])
|
735
874
|
return self.parse_trades(trades, market, since, limit)
|
736
875
|
|
737
|
-
def fetch_deposit_address(self, code: str, params={}):
|
876
|
+
def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
738
877
|
"""
|
739
878
|
fetch the deposit address for a currency associated with self account
|
740
|
-
|
879
|
+
|
880
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-withdrawal-accounts
|
881
|
+
|
741
882
|
:param str code: unified currency code
|
742
883
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
743
884
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
744
885
|
"""
|
745
886
|
self.load_markets()
|
746
887
|
currency = self.currency(code)
|
747
|
-
request = {
|
888
|
+
request: dict = {
|
748
889
|
'asset': currency['id'],
|
749
890
|
}
|
750
891
|
response = self.privateGetUserWithdrawalAccount(self.extend(request, params))
|
@@ -754,17 +895,19 @@ class bitbank(Exchange, ImplicitAPI):
|
|
754
895
|
firstAccount = self.safe_value(accounts, 0, {})
|
755
896
|
address = self.safe_string(firstAccount, 'address')
|
756
897
|
return {
|
898
|
+
'info': response,
|
757
899
|
'currency': currency,
|
900
|
+
'network': None,
|
758
901
|
'address': address,
|
759
902
|
'tag': None,
|
760
|
-
'network': None,
|
761
|
-
'info': response,
|
762
903
|
}
|
763
904
|
|
764
|
-
def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
905
|
+
def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
765
906
|
"""
|
766
907
|
make a withdrawal
|
767
|
-
|
908
|
+
|
909
|
+
https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#new-withdrawal-request
|
910
|
+
|
768
911
|
:param str code: unified currency code
|
769
912
|
:param float amount: the amount to withdraw
|
770
913
|
:param str address: the address to withdraw to
|
@@ -777,7 +920,7 @@ class bitbank(Exchange, ImplicitAPI):
|
|
777
920
|
raise ExchangeError(self.id + ' uuid is required for withdrawal')
|
778
921
|
self.load_markets()
|
779
922
|
currency = self.currency(code)
|
780
|
-
request = {
|
923
|
+
request: dict = {
|
781
924
|
'asset': currency['id'],
|
782
925
|
'amount': amount,
|
783
926
|
}
|
@@ -799,10 +942,10 @@ class bitbank(Exchange, ImplicitAPI):
|
|
799
942
|
# }
|
800
943
|
# }
|
801
944
|
#
|
802
|
-
data = self.
|
945
|
+
data = self.safe_dict(response, 'data', {})
|
803
946
|
return self.parse_transaction(data, currency)
|
804
947
|
|
805
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
948
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
806
949
|
#
|
807
950
|
# withdraw
|
808
951
|
#
|
@@ -876,13 +1019,13 @@ class bitbank(Exchange, ImplicitAPI):
|
|
876
1019
|
}
|
877
1020
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
878
1021
|
|
879
|
-
def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1022
|
+
def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
880
1023
|
if response is None:
|
881
1024
|
return None
|
882
1025
|
success = self.safe_integer(response, 'success')
|
883
1026
|
data = self.safe_value(response, 'data')
|
884
1027
|
if not success or not data:
|
885
|
-
errorMessages = {
|
1028
|
+
errorMessages: dict = {
|
886
1029
|
'10000': 'URL does not exist',
|
887
1030
|
'10001': 'A system error occurred. Please contact support',
|
888
1031
|
'10002': 'Invalid JSON format. Please check the contents of transmission',
|
@@ -944,12 +1087,8 @@ class bitbank(Exchange, ImplicitAPI):
|
|
944
1087
|
'70009': 'We are currently temporarily restricting orders to be carried out. Please use the limit order.',
|
945
1088
|
'70010': 'We are temporarily raising the minimum order quantity system load is now rising.',
|
946
1089
|
}
|
947
|
-
errorClasses = self.exceptions
|
948
1090
|
code = self.safe_string(data, 'code')
|
949
1091
|
message = self.safe_string(errorMessages, code, 'Error')
|
950
|
-
|
951
|
-
|
952
|
-
raise errorClasses[code](message)
|
953
|
-
else:
|
954
|
-
raise ExchangeError(self.id + ' ' + self.json(response))
|
1092
|
+
self.throw_exactly_matched_exception(self.exceptions['exact'], code, message)
|
1093
|
+
raise ExchangeError(self.id + ' ' + self.json(response))
|
955
1094
|
return None
|