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/btcbox.py
CHANGED
@@ -7,16 +7,16 @@ from ccxt.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.btcbox import ImplicitAPI
|
8
8
|
import hashlib
|
9
9
|
import json
|
10
|
-
from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade
|
10
|
+
from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
|
11
11
|
from typing import List
|
12
12
|
from ccxt.base.errors import ExchangeError
|
13
|
+
from ccxt.base.errors import AuthenticationError
|
13
14
|
from ccxt.base.errors import PermissionDenied
|
14
15
|
from ccxt.base.errors import InsufficientFunds
|
15
16
|
from ccxt.base.errors import InvalidOrder
|
16
17
|
from ccxt.base.errors import OrderNotFound
|
17
18
|
from ccxt.base.errors import DDoSProtection
|
18
19
|
from ccxt.base.errors import InvalidNonce
|
19
|
-
from ccxt.base.errors import AuthenticationError
|
20
20
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
21
21
|
from ccxt.base.precise import Precise
|
22
22
|
|
@@ -65,12 +65,15 @@ class btcbox(Exchange, ImplicitAPI):
|
|
65
65
|
'fetchOrderBook': True,
|
66
66
|
'fetchOrders': True,
|
67
67
|
'fetchPosition': False,
|
68
|
+
'fetchPositionHistory': False,
|
68
69
|
'fetchPositionMode': False,
|
69
70
|
'fetchPositions': False,
|
71
|
+
'fetchPositionsForSymbol': False,
|
72
|
+
'fetchPositionsHistory': False,
|
70
73
|
'fetchPositionsRisk': False,
|
71
74
|
'fetchPremiumIndexOHLCV': False,
|
72
75
|
'fetchTicker': True,
|
73
|
-
'fetchTickers':
|
76
|
+
'fetchTickers': True,
|
74
77
|
'fetchTrades': True,
|
75
78
|
'fetchTransfer': False,
|
76
79
|
'fetchTransfers': False,
|
@@ -85,7 +88,7 @@ class btcbox(Exchange, ImplicitAPI):
|
|
85
88
|
'ws': False,
|
86
89
|
},
|
87
90
|
'urls': {
|
88
|
-
'logo': 'https://
|
91
|
+
'logo': 'https://github.com/user-attachments/assets/1e2cb499-8d0f-4f8f-9464-3c015cfbc76b',
|
89
92
|
'api': {
|
90
93
|
'rest': 'https://www.btcbox.co.jp/api',
|
91
94
|
},
|
@@ -99,6 +102,7 @@ class btcbox(Exchange, ImplicitAPI):
|
|
99
102
|
'depth',
|
100
103
|
'orders',
|
101
104
|
'ticker',
|
105
|
+
'tickers',
|
102
106
|
],
|
103
107
|
},
|
104
108
|
'private': {
|
@@ -112,11 +116,63 @@ class btcbox(Exchange, ImplicitAPI):
|
|
112
116
|
],
|
113
117
|
},
|
114
118
|
},
|
115
|
-
'
|
116
|
-
'
|
117
|
-
|
118
|
-
|
119
|
-
|
119
|
+
'features': {
|
120
|
+
'spot': {
|
121
|
+
'sandbox': False,
|
122
|
+
'createOrder': {
|
123
|
+
'marginMode': False,
|
124
|
+
'triggerPrice': False,
|
125
|
+
'triggerPriceType': None,
|
126
|
+
'triggerDirection': False,
|
127
|
+
'stopLossPrice': False,
|
128
|
+
'takeProfitPrice': False,
|
129
|
+
'attachedStopLossTakeProfit': None,
|
130
|
+
'timeInForce': {
|
131
|
+
'IOC': False,
|
132
|
+
'FOK': False,
|
133
|
+
'PO': False,
|
134
|
+
'GTD': False,
|
135
|
+
},
|
136
|
+
'hedged': False,
|
137
|
+
'leverage': False,
|
138
|
+
'marketBuyRequiresPrice': False,
|
139
|
+
'marketBuyByCost': False,
|
140
|
+
'selfTradePrevention': False,
|
141
|
+
'trailing': False,
|
142
|
+
'iceberg': False,
|
143
|
+
},
|
144
|
+
'createOrders': None,
|
145
|
+
'fetchMyTrades': None,
|
146
|
+
'fetchOrder': {
|
147
|
+
'marginMode': False,
|
148
|
+
'trigger': False,
|
149
|
+
'trailing': False,
|
150
|
+
},
|
151
|
+
'fetchOpenOrders': {
|
152
|
+
'marginMode': False,
|
153
|
+
'limit': 100,
|
154
|
+
'trigger': False,
|
155
|
+
'trailing': False,
|
156
|
+
},
|
157
|
+
'fetchOrders': {
|
158
|
+
'marginMode': False,
|
159
|
+
'limit': 100,
|
160
|
+
'daysBack': None,
|
161
|
+
'untilDays': None,
|
162
|
+
'trigger': False,
|
163
|
+
'trailing': False,
|
164
|
+
},
|
165
|
+
'fetchClosedOrders': None,
|
166
|
+
'fetchOHLCV': None,
|
167
|
+
},
|
168
|
+
'swap': {
|
169
|
+
'linear': None,
|
170
|
+
'inverse': None,
|
171
|
+
},
|
172
|
+
'future': {
|
173
|
+
'linear': None,
|
174
|
+
'inverse': None,
|
175
|
+
},
|
120
176
|
},
|
121
177
|
'precisionMode': TICK_SIZE,
|
122
178
|
'exceptions': {
|
@@ -133,8 +189,139 @@ class btcbox(Exchange, ImplicitAPI):
|
|
133
189
|
},
|
134
190
|
})
|
135
191
|
|
192
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
193
|
+
"""
|
194
|
+
retrieves data on all markets for ace
|
195
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
196
|
+
:returns dict[]: an array of objects representing market data
|
197
|
+
"""
|
198
|
+
response = self.publicGetTickers()
|
199
|
+
#
|
200
|
+
marketIds = list(response.keys())
|
201
|
+
markets = []
|
202
|
+
for i in range(0, len(marketIds)):
|
203
|
+
marketId = marketIds[i]
|
204
|
+
symbolParts = marketId.split('_')
|
205
|
+
baseCurr = self.safe_string(symbolParts, 0)
|
206
|
+
quote = self.safe_string(symbolParts, 1)
|
207
|
+
quoteId = quote.lower()
|
208
|
+
id = baseCurr.lower()
|
209
|
+
res = response[marketId]
|
210
|
+
symbol = baseCurr + '/' + quote
|
211
|
+
fee = self.parse_number('0.0005') if (id == 'BTC') else self.parse_number('0.0010')
|
212
|
+
markets.append(self.safe_market_structure({
|
213
|
+
'id': id,
|
214
|
+
'uppercaseId': None,
|
215
|
+
'symbol': symbol,
|
216
|
+
'base': baseCurr,
|
217
|
+
'baseId': id,
|
218
|
+
'quote': quote,
|
219
|
+
'quoteId': quoteId,
|
220
|
+
'settle': None,
|
221
|
+
'settleId': None,
|
222
|
+
'type': 'spot',
|
223
|
+
'spot': True,
|
224
|
+
'margin': False,
|
225
|
+
'swap': False,
|
226
|
+
'future': False,
|
227
|
+
'option': False,
|
228
|
+
'taker': fee,
|
229
|
+
'maker': fee,
|
230
|
+
'contract': False,
|
231
|
+
'linear': None,
|
232
|
+
'inverse': None,
|
233
|
+
'contractSize': None,
|
234
|
+
'expiry': None,
|
235
|
+
'expiryDatetime': None,
|
236
|
+
'strike': None,
|
237
|
+
'optionType': None,
|
238
|
+
'limits': {
|
239
|
+
'amount': {
|
240
|
+
'min': None,
|
241
|
+
'max': None,
|
242
|
+
},
|
243
|
+
'price': {
|
244
|
+
'min': None,
|
245
|
+
'max': None,
|
246
|
+
},
|
247
|
+
'cost': {
|
248
|
+
'min': None,
|
249
|
+
'max': None,
|
250
|
+
},
|
251
|
+
'leverage': {
|
252
|
+
'min': None,
|
253
|
+
'max': None,
|
254
|
+
},
|
255
|
+
},
|
256
|
+
'precision': {
|
257
|
+
'price': None,
|
258
|
+
'amount': None,
|
259
|
+
},
|
260
|
+
'active': None,
|
261
|
+
'created': None,
|
262
|
+
'info': res,
|
263
|
+
}))
|
264
|
+
return markets
|
265
|
+
|
266
|
+
def parse_market(self, market: dict) -> Market:
|
267
|
+
baseId = self.safe_string(market, 'base')
|
268
|
+
base = self.safe_currency_code(baseId)
|
269
|
+
quoteId = self.safe_string(market, 'quote')
|
270
|
+
quote = self.safe_currency_code(quoteId)
|
271
|
+
symbol = base + '/' + quote
|
272
|
+
return {
|
273
|
+
'id': self.safe_string(market, 'symbol'),
|
274
|
+
'uppercaseId': None,
|
275
|
+
'symbol': symbol,
|
276
|
+
'base': base,
|
277
|
+
'baseId': baseId,
|
278
|
+
'quote': quote,
|
279
|
+
'quoteId': quoteId,
|
280
|
+
'settle': None,
|
281
|
+
'settleId': None,
|
282
|
+
'type': 'spot',
|
283
|
+
'spot': True,
|
284
|
+
'margin': False,
|
285
|
+
'swap': False,
|
286
|
+
'future': False,
|
287
|
+
'option': False,
|
288
|
+
'contract': False,
|
289
|
+
'linear': None,
|
290
|
+
'inverse': None,
|
291
|
+
'contractSize': None,
|
292
|
+
'expiry': None,
|
293
|
+
'expiryDatetime': None,
|
294
|
+
'strike': None,
|
295
|
+
'optionType': None,
|
296
|
+
'limits': {
|
297
|
+
'amount': {
|
298
|
+
'min': self.safe_number(market, 'minLimitBaseAmount'),
|
299
|
+
'max': self.safe_number(market, 'maxLimitBaseAmount'),
|
300
|
+
},
|
301
|
+
'price': {
|
302
|
+
'min': None,
|
303
|
+
'max': None,
|
304
|
+
},
|
305
|
+
'cost': {
|
306
|
+
'min': None,
|
307
|
+
'max': None,
|
308
|
+
},
|
309
|
+
'leverage': {
|
310
|
+
'min': None,
|
311
|
+
'max': None,
|
312
|
+
},
|
313
|
+
},
|
314
|
+
'precision': {
|
315
|
+
'price': self.parse_number(self.parse_precision(self.safe_string(market, 'quotePrecision'))),
|
316
|
+
'amount': self.parse_number(self.parse_precision(self.safe_string(market, 'basePrecision'))),
|
317
|
+
},
|
318
|
+
'active': None,
|
319
|
+
'created': None,
|
320
|
+
'info': market,
|
321
|
+
}
|
322
|
+
|
136
323
|
def parse_balance(self, response) -> Balances:
|
137
|
-
result = {'info': response}
|
324
|
+
result: dict = {'info': response}
|
138
325
|
codes = list(self.currencies.keys())
|
139
326
|
for i in range(0, len(codes)):
|
140
327
|
code = codes[i]
|
@@ -152,7 +339,9 @@ class btcbox(Exchange, ImplicitAPI):
|
|
152
339
|
def fetch_balance(self, params={}) -> Balances:
|
153
340
|
"""
|
154
341
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
155
|
-
|
342
|
+
|
343
|
+
https://blog.btcbox.jp/en/archives/8762#toc13
|
344
|
+
|
156
345
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
157
346
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
158
347
|
"""
|
@@ -163,7 +352,9 @@ class btcbox(Exchange, ImplicitAPI):
|
|
163
352
|
def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
164
353
|
"""
|
165
354
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
166
|
-
|
355
|
+
|
356
|
+
https://blog.btcbox.jp/en/archives/8762#toc6
|
357
|
+
|
167
358
|
:param str symbol: unified symbol of the market to fetch the order book for
|
168
359
|
:param int [limit]: the maximum amount of order book entries to return
|
169
360
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -171,14 +362,14 @@ class btcbox(Exchange, ImplicitAPI):
|
|
171
362
|
"""
|
172
363
|
self.load_markets()
|
173
364
|
market = self.market(symbol)
|
174
|
-
request = {}
|
365
|
+
request: dict = {}
|
175
366
|
numSymbols = len(self.symbols)
|
176
367
|
if numSymbols > 1:
|
177
368
|
request['coin'] = market['baseId']
|
178
369
|
response = self.publicGetDepth(self.extend(request, params))
|
179
370
|
return self.parse_order_book(response, market['symbol'])
|
180
371
|
|
181
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
372
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
182
373
|
symbol = self.safe_symbol(None, market)
|
183
374
|
last = self.safe_string(ticker, 'last')
|
184
375
|
return self.safe_ticker({
|
@@ -207,21 +398,34 @@ class btcbox(Exchange, ImplicitAPI):
|
|
207
398
|
def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
208
399
|
"""
|
209
400
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
210
|
-
|
401
|
+
|
402
|
+
https://blog.btcbox.jp/en/archives/8762#toc5
|
403
|
+
|
211
404
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
212
405
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
213
406
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
214
407
|
"""
|
215
408
|
self.load_markets()
|
216
409
|
market = self.market(symbol)
|
217
|
-
request = {}
|
410
|
+
request: dict = {}
|
218
411
|
numSymbols = len(self.symbols)
|
219
412
|
if numSymbols > 1:
|
220
413
|
request['coin'] = market['baseId']
|
221
414
|
response = self.publicGetTicker(self.extend(request, params))
|
222
415
|
return self.parse_ticker(response, market)
|
223
416
|
|
224
|
-
def
|
417
|
+
def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
418
|
+
"""
|
419
|
+
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
420
|
+
:param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
421
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
422
|
+
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
423
|
+
"""
|
424
|
+
self.load_markets()
|
425
|
+
response = self.publicGetTickers(params)
|
426
|
+
return self.parse_tickers(response, symbols)
|
427
|
+
|
428
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
225
429
|
#
|
226
430
|
# fetchTrades(public)
|
227
431
|
#
|
@@ -259,7 +463,9 @@ class btcbox(Exchange, ImplicitAPI):
|
|
259
463
|
def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
260
464
|
"""
|
261
465
|
get the list of most recent trades for a particular symbol
|
262
|
-
|
466
|
+
|
467
|
+
https://blog.btcbox.jp/en/archives/8762#toc7
|
468
|
+
|
263
469
|
:param str symbol: unified symbol of the market to fetch trades for
|
264
470
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
265
471
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -268,7 +474,7 @@ class btcbox(Exchange, ImplicitAPI):
|
|
268
474
|
"""
|
269
475
|
self.load_markets()
|
270
476
|
market = self.market(symbol)
|
271
|
-
request = {}
|
477
|
+
request: dict = {}
|
272
478
|
numSymbols = len(self.symbols)
|
273
479
|
if numSymbols > 1:
|
274
480
|
request['coin'] = market['baseId']
|
@@ -289,18 +495,20 @@ class btcbox(Exchange, ImplicitAPI):
|
|
289
495
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
290
496
|
"""
|
291
497
|
create a trade order
|
292
|
-
|
498
|
+
|
499
|
+
https://blog.btcbox.jp/en/archives/8762#toc18
|
500
|
+
|
293
501
|
:param str symbol: unified symbol of the market to create an order in
|
294
502
|
:param str type: 'market' or 'limit'
|
295
503
|
:param str side: 'buy' or 'sell'
|
296
504
|
:param float amount: how much of currency you want to trade in units of base currency
|
297
|
-
:param float [price]: the price at which the order is to be
|
505
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
298
506
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
299
507
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
300
508
|
"""
|
301
509
|
self.load_markets()
|
302
510
|
market = self.market(symbol)
|
303
|
-
request = {
|
511
|
+
request: dict = {
|
304
512
|
'amount': amount,
|
305
513
|
'price': price,
|
306
514
|
'type': side,
|
@@ -318,7 +526,9 @@ class btcbox(Exchange, ImplicitAPI):
|
|
318
526
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
319
527
|
"""
|
320
528
|
cancels an open order
|
321
|
-
|
529
|
+
|
530
|
+
https://blog.btcbox.jp/en/archives/8762#toc17
|
531
|
+
|
322
532
|
:param str id: order id
|
323
533
|
:param str symbol: unified symbol of the market the order was made in
|
324
534
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -329,7 +539,7 @@ class btcbox(Exchange, ImplicitAPI):
|
|
329
539
|
if symbol is None:
|
330
540
|
symbol = 'BTC/JPY'
|
331
541
|
market = self.market(symbol)
|
332
|
-
request = {
|
542
|
+
request: dict = {
|
333
543
|
'id': id,
|
334
544
|
'coin': market['baseId'],
|
335
545
|
}
|
@@ -339,8 +549,8 @@ class btcbox(Exchange, ImplicitAPI):
|
|
339
549
|
#
|
340
550
|
return self.parse_order(response, market)
|
341
551
|
|
342
|
-
def parse_order_status(self, status):
|
343
|
-
statuses = {
|
552
|
+
def parse_order_status(self, status: Str):
|
553
|
+
statuses: dict = {
|
344
554
|
# TODO: complete list
|
345
555
|
'part': 'open', # partially or not at all executed
|
346
556
|
'all': 'closed', # fully executed
|
@@ -350,7 +560,7 @@ class btcbox(Exchange, ImplicitAPI):
|
|
350
560
|
}
|
351
561
|
return self.safe_string(statuses, status, status)
|
352
562
|
|
353
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
563
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
354
564
|
#
|
355
565
|
# {
|
356
566
|
# "id":11,
|
@@ -396,7 +606,6 @@ class btcbox(Exchange, ImplicitAPI):
|
|
396
606
|
'status': status,
|
397
607
|
'symbol': market['symbol'],
|
398
608
|
'price': price,
|
399
|
-
'stopPrice': None,
|
400
609
|
'triggerPrice': None,
|
401
610
|
'cost': None,
|
402
611
|
'trades': trades,
|
@@ -408,7 +617,10 @@ class btcbox(Exchange, ImplicitAPI):
|
|
408
617
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
409
618
|
"""
|
410
619
|
fetches information on an order made by the user
|
411
|
-
|
620
|
+
|
621
|
+
https://blog.btcbox.jp/en/archives/8762#toc16
|
622
|
+
|
623
|
+
:param str id: the order id
|
412
624
|
:param str symbol: unified symbol of the market the order was made in
|
413
625
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
414
626
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -443,7 +655,7 @@ class btcbox(Exchange, ImplicitAPI):
|
|
443
655
|
if symbol is None:
|
444
656
|
symbol = 'BTC/JPY'
|
445
657
|
market = self.market(symbol)
|
446
|
-
request = {
|
658
|
+
request: dict = {
|
447
659
|
'type': type, # 'open' or 'all'
|
448
660
|
'coin': market['baseId'],
|
449
661
|
}
|
@@ -471,7 +683,9 @@ class btcbox(Exchange, ImplicitAPI):
|
|
471
683
|
def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
472
684
|
"""
|
473
685
|
fetches information on multiple orders made by the user
|
474
|
-
|
686
|
+
|
687
|
+
https://blog.btcbox.jp/en/archives/8762#toc15
|
688
|
+
|
475
689
|
:param str symbol: unified market symbol of the market orders were made in
|
476
690
|
:param int [since]: the earliest time in ms to fetch orders for
|
477
691
|
:param int [limit]: the maximum number of order structures to retrieve
|
@@ -483,7 +697,9 @@ class btcbox(Exchange, ImplicitAPI):
|
|
483
697
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
484
698
|
"""
|
485
699
|
fetch all unfilled currently open orders
|
486
|
-
|
700
|
+
|
701
|
+
https://blog.btcbox.jp/en/archives/8762#toc15
|
702
|
+
|
487
703
|
:param str symbol: unified market symbol
|
488
704
|
:param int [since]: the earliest time in ms to fetch open orders for
|
489
705
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
@@ -508,7 +724,7 @@ class btcbox(Exchange, ImplicitAPI):
|
|
508
724
|
'nonce': nonce,
|
509
725
|
}, params)
|
510
726
|
request = self.urlencode(query)
|
511
|
-
secret = self.hash(self.encode(self.secret), '
|
727
|
+
secret = self.hash(self.encode(self.secret), 'md5')
|
512
728
|
query['signature'] = self.hmac(self.encode(request), self.encode(secret), hashlib.sha256)
|
513
729
|
body = self.urlencode(query)
|
514
730
|
headers = {
|
@@ -516,7 +732,7 @@ class btcbox(Exchange, ImplicitAPI):
|
|
516
732
|
}
|
517
733
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
518
734
|
|
519
|
-
def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
735
|
+
def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
520
736
|
if response is None:
|
521
737
|
return None # resort to defaultErrorHandler
|
522
738
|
# typical error response: {"result":false,"code":"401"}
|