ccxt 4.2.77__py2.py3-none-any.whl → 4.4.49__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccxt/__init__.py +36 -14
- ccxt/abstract/alpaca.py +4 -0
- ccxt/abstract/bigone.py +1 -1
- ccxt/abstract/binance.py +112 -48
- ccxt/abstract/binancecoinm.py +112 -48
- ccxt/abstract/binanceus.py +147 -83
- ccxt/abstract/binanceusdm.py +112 -48
- ccxt/abstract/bingx.py +133 -78
- ccxt/abstract/bitbank.py +5 -0
- ccxt/abstract/bitfinex.py +136 -65
- ccxt/abstract/bitfinex1.py +69 -0
- ccxt/abstract/bitflyer.py +1 -0
- ccxt/abstract/bitget.py +8 -1
- ccxt/abstract/bitmart.py +13 -1
- ccxt/abstract/bitopro.py +1 -0
- ccxt/abstract/bitpanda.py +0 -12
- ccxt/abstract/bitrue.py +3 -3
- ccxt/abstract/bitstamp.py +26 -3
- ccxt/abstract/blofin.py +24 -0
- ccxt/abstract/btcbox.py +1 -0
- ccxt/abstract/bybit.py +29 -14
- ccxt/abstract/cex.py +28 -29
- ccxt/abstract/coinbase.py +6 -0
- ccxt/abstract/coinbaseadvanced.py +94 -0
- ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
- ccxt/abstract/coinbaseinternational.py +1 -1
- ccxt/abstract/coincatch.py +94 -0
- ccxt/abstract/coinex.py +233 -123
- ccxt/abstract/coinmetro.py +1 -0
- ccxt/abstract/cryptocom.py +14 -0
- ccxt/abstract/defx.py +69 -0
- ccxt/abstract/deribit.py +1 -0
- ccxt/abstract/digifinex.py +1 -0
- ccxt/abstract/ellipx.py +25 -0
- ccxt/abstract/gate.py +20 -0
- ccxt/abstract/gateio.py +20 -0
- ccxt/abstract/gemini.py +1 -0
- ccxt/abstract/hashkey.py +67 -0
- ccxt/abstract/hyperliquid.py +1 -1
- ccxt/abstract/independentreserve.py +6 -0
- ccxt/abstract/kraken.py +4 -3
- ccxt/abstract/krakenfutures.py +4 -0
- ccxt/abstract/kucoin.py +24 -0
- ccxt/abstract/kucoinfutures.py +34 -0
- ccxt/abstract/luno.py +2 -0
- ccxt/abstract/mexc.py +4 -0
- ccxt/abstract/myokx.py +340 -0
- ccxt/abstract/oceanex.py +5 -0
- ccxt/abstract/okx.py +30 -0
- ccxt/abstract/onetrading.py +0 -12
- ccxt/abstract/oxfun.py +34 -0
- ccxt/abstract/paradex.py +40 -0
- ccxt/abstract/phemex.py +1 -0
- ccxt/abstract/upbit.py +4 -0
- ccxt/abstract/vertex.py +19 -0
- ccxt/abstract/whitebit.py +31 -1
- ccxt/abstract/woo.py +6 -2
- ccxt/abstract/woofipro.py +119 -0
- ccxt/abstract/xt.py +153 -0
- ccxt/abstract/zonda.py +6 -0
- ccxt/ace.py +164 -60
- ccxt/alpaca.py +727 -63
- ccxt/ascendex.py +395 -249
- ccxt/async_support/__init__.py +36 -14
- ccxt/async_support/ace.py +164 -60
- ccxt/async_support/alpaca.py +727 -63
- ccxt/async_support/ascendex.py +396 -249
- ccxt/async_support/base/exchange.py +531 -155
- ccxt/async_support/base/ws/aiohttp_client.py +28 -5
- ccxt/async_support/base/ws/cache.py +3 -2
- ccxt/async_support/base/ws/client.py +26 -5
- ccxt/async_support/base/ws/fast_client.py +4 -3
- ccxt/async_support/base/ws/functions.py +1 -1
- ccxt/async_support/base/ws/future.py +40 -31
- ccxt/async_support/base/ws/order_book_side.py +3 -0
- ccxt/async_support/bequant.py +1 -1
- ccxt/async_support/bigone.py +329 -202
- ccxt/async_support/binance.py +3030 -1087
- ccxt/async_support/binancecoinm.py +2 -1
- ccxt/async_support/binanceus.py +12 -1
- ccxt/async_support/binanceusdm.py +3 -1
- ccxt/async_support/bingx.py +3205 -937
- ccxt/async_support/bit2c.py +119 -38
- ccxt/async_support/bitbank.py +215 -76
- ccxt/async_support/bitbns.py +124 -53
- ccxt/async_support/bitfinex.py +3236 -1078
- ccxt/async_support/bitfinex1.py +1711 -0
- ccxt/async_support/bitflyer.py +238 -49
- ccxt/async_support/bitget.py +1525 -573
- ccxt/async_support/bithumb.py +199 -65
- ccxt/async_support/bitmart.py +1320 -435
- ccxt/async_support/bitmex.py +308 -111
- ccxt/async_support/bitopro.py +256 -96
- ccxt/async_support/bitrue.py +365 -233
- ccxt/async_support/bitso.py +201 -89
- ccxt/async_support/bitstamp.py +438 -269
- ccxt/async_support/bitteam.py +179 -73
- ccxt/async_support/bitvavo.py +180 -70
- ccxt/async_support/bl3p.py +92 -25
- ccxt/async_support/blockchaincom.py +193 -79
- ccxt/async_support/blofin.py +392 -148
- ccxt/async_support/btcalpha.py +161 -55
- ccxt/async_support/btcbox.py +250 -34
- ccxt/async_support/btcmarkets.py +232 -85
- ccxt/async_support/btcturk.py +159 -60
- ccxt/async_support/bybit.py +2231 -1193
- ccxt/async_support/cex.py +1409 -1329
- ccxt/async_support/coinbase.py +1454 -287
- ccxt/async_support/coinbaseadvanced.py +17 -0
- ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/async_support/coinbaseinternational.py +428 -88
- ccxt/async_support/coincatch.py +5152 -0
- ccxt/async_support/coincheck.py +121 -38
- ccxt/async_support/coinex.py +4020 -3339
- ccxt/async_support/coinlist.py +273 -116
- ccxt/async_support/coinmate.py +204 -97
- ccxt/async_support/coinmetro.py +203 -110
- ccxt/async_support/coinone.py +142 -68
- ccxt/async_support/coinsph.py +223 -97
- ccxt/async_support/coinspot.py +137 -62
- ccxt/async_support/cryptocom.py +515 -185
- ccxt/async_support/currencycom.py +203 -85
- ccxt/async_support/defx.py +2066 -0
- ccxt/async_support/delta.py +404 -109
- ccxt/async_support/deribit.py +639 -323
- ccxt/async_support/digifinex.py +465 -233
- ccxt/async_support/ellipx.py +1887 -0
- ccxt/async_support/exmo.py +317 -128
- ccxt/async_support/gate.py +1472 -463
- ccxt/async_support/gemini.py +206 -84
- ccxt/async_support/hashkey.py +4164 -0
- ccxt/async_support/hitbtc.py +433 -178
- ccxt/async_support/hollaex.py +207 -83
- ccxt/async_support/htx.py +1095 -563
- ccxt/async_support/huobijp.py +178 -56
- ccxt/async_support/hyperliquid.py +1678 -292
- ccxt/async_support/idex.py +219 -95
- ccxt/async_support/independentreserve.py +300 -31
- ccxt/async_support/indodax.py +226 -62
- ccxt/async_support/kraken.py +871 -354
- ccxt/async_support/krakenfutures.py +324 -100
- ccxt/async_support/kucoin.py +917 -357
- ccxt/async_support/kucoinfutures.py +1004 -149
- ccxt/async_support/kuna.py +198 -107
- ccxt/async_support/latoken.py +199 -79
- ccxt/async_support/lbank.py +360 -113
- ccxt/async_support/luno.py +185 -62
- ccxt/async_support/lykke.py +168 -55
- ccxt/async_support/mercado.py +101 -29
- ccxt/async_support/mexc.py +995 -429
- ccxt/async_support/myokx.py +53 -0
- ccxt/async_support/ndax.py +234 -82
- ccxt/async_support/novadax.py +195 -75
- ccxt/async_support/oceanex.py +244 -59
- ccxt/async_support/okcoin.py +301 -165
- ccxt/async_support/okx.py +1776 -454
- ccxt/async_support/onetrading.py +198 -414
- ccxt/async_support/oxfun.py +2898 -0
- ccxt/async_support/p2b.py +142 -52
- ccxt/async_support/paradex.py +2085 -0
- ccxt/async_support/paymium.py +56 -32
- ccxt/async_support/phemex.py +572 -196
- ccxt/async_support/poloniex.py +218 -95
- ccxt/async_support/poloniexfutures.py +260 -92
- ccxt/async_support/probit.py +143 -110
- ccxt/async_support/timex.py +123 -70
- ccxt/async_support/tokocrypto.py +129 -93
- ccxt/async_support/tradeogre.py +39 -25
- ccxt/async_support/upbit.py +322 -113
- ccxt/async_support/vertex.py +2983 -0
- ccxt/async_support/wavesexchange.py +227 -173
- ccxt/async_support/wazirx.py +145 -65
- ccxt/async_support/whitebit.py +533 -138
- ccxt/async_support/woo.py +1137 -296
- ccxt/async_support/woofipro.py +2716 -0
- ccxt/async_support/xt.py +4628 -0
- ccxt/async_support/yobit.py +160 -92
- ccxt/async_support/zaif.py +80 -33
- ccxt/async_support/zonda.py +140 -69
- ccxt/base/errors.py +51 -20
- ccxt/base/exchange.py +1722 -480
- ccxt/base/precise.py +10 -0
- ccxt/base/types.py +223 -4
- ccxt/bequant.py +1 -1
- ccxt/bigone.py +329 -202
- ccxt/binance.py +3030 -1087
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +12 -1
- ccxt/binanceusdm.py +3 -1
- ccxt/bingx.py +3205 -937
- ccxt/bit2c.py +119 -38
- ccxt/bitbank.py +215 -76
- ccxt/bitbns.py +124 -53
- ccxt/bitfinex.py +3235 -1078
- ccxt/bitfinex1.py +1710 -0
- ccxt/bitflyer.py +238 -49
- ccxt/bitget.py +1525 -573
- ccxt/bithumb.py +198 -65
- ccxt/bitmart.py +1320 -435
- ccxt/bitmex.py +308 -111
- ccxt/bitopro.py +256 -96
- ccxt/bitrue.py +365 -233
- ccxt/bitso.py +201 -89
- ccxt/bitstamp.py +438 -269
- ccxt/bitteam.py +179 -73
- ccxt/bitvavo.py +180 -70
- ccxt/bl3p.py +92 -25
- ccxt/blockchaincom.py +193 -79
- ccxt/blofin.py +392 -148
- ccxt/btcalpha.py +161 -55
- ccxt/btcbox.py +250 -34
- ccxt/btcmarkets.py +232 -85
- ccxt/btcturk.py +159 -60
- ccxt/bybit.py +2231 -1193
- ccxt/cex.py +1408 -1329
- ccxt/coinbase.py +1454 -287
- ccxt/coinbaseadvanced.py +17 -0
- ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/coinbaseinternational.py +428 -88
- ccxt/coincatch.py +5152 -0
- ccxt/coincheck.py +121 -38
- ccxt/coinex.py +4020 -3339
- ccxt/coinlist.py +273 -116
- ccxt/coinmate.py +204 -97
- ccxt/coinmetro.py +203 -110
- ccxt/coinone.py +142 -68
- ccxt/coinsph.py +223 -97
- ccxt/coinspot.py +137 -62
- ccxt/cryptocom.py +515 -185
- ccxt/currencycom.py +203 -85
- ccxt/defx.py +2065 -0
- ccxt/delta.py +404 -109
- ccxt/deribit.py +639 -323
- ccxt/digifinex.py +465 -233
- ccxt/ellipx.py +1887 -0
- ccxt/exmo.py +317 -128
- ccxt/gate.py +1472 -463
- ccxt/gemini.py +206 -84
- ccxt/hashkey.py +4164 -0
- ccxt/hitbtc.py +433 -178
- ccxt/hollaex.py +207 -83
- ccxt/htx.py +1095 -563
- ccxt/huobijp.py +178 -56
- ccxt/hyperliquid.py +1677 -292
- ccxt/idex.py +219 -95
- ccxt/independentreserve.py +299 -31
- ccxt/indodax.py +226 -62
- ccxt/kraken.py +871 -354
- ccxt/krakenfutures.py +324 -100
- ccxt/kucoin.py +917 -357
- ccxt/kucoinfutures.py +1004 -149
- ccxt/kuna.py +198 -107
- ccxt/latoken.py +199 -79
- ccxt/lbank.py +360 -113
- ccxt/luno.py +185 -62
- ccxt/lykke.py +168 -55
- ccxt/mercado.py +101 -29
- ccxt/mexc.py +994 -429
- ccxt/myokx.py +53 -0
- ccxt/ndax.py +234 -82
- ccxt/novadax.py +195 -75
- ccxt/oceanex.py +244 -59
- ccxt/okcoin.py +301 -165
- ccxt/okx.py +1776 -454
- ccxt/onetrading.py +198 -414
- ccxt/oxfun.py +2897 -0
- ccxt/p2b.py +142 -52
- ccxt/paradex.py +2085 -0
- ccxt/paymium.py +56 -32
- ccxt/phemex.py +572 -196
- ccxt/poloniex.py +218 -95
- ccxt/poloniexfutures.py +260 -92
- ccxt/pro/__init__.py +29 -5
- ccxt/pro/alpaca.py +32 -17
- ccxt/pro/ascendex.py +62 -14
- ccxt/pro/bequant.py +4 -0
- ccxt/pro/binance.py +1596 -329
- ccxt/pro/binancecoinm.py +1 -0
- ccxt/pro/binanceus.py +2 -9
- ccxt/pro/binanceusdm.py +2 -0
- ccxt/pro/bingx.py +527 -134
- ccxt/pro/bitcoincom.py +4 -1
- ccxt/pro/bitfinex.py +731 -266
- ccxt/pro/bitfinex1.py +635 -0
- ccxt/pro/bitget.py +726 -357
- ccxt/pro/bithumb.py +380 -0
- ccxt/pro/bitmart.py +143 -39
- ccxt/pro/bitmex.py +199 -40
- ccxt/pro/bitopro.py +25 -13
- ccxt/pro/bitrue.py +31 -32
- ccxt/pro/bitstamp.py +7 -6
- ccxt/pro/bitvavo.py +203 -81
- ccxt/pro/blockchaincom.py +30 -17
- ccxt/pro/blofin.py +692 -0
- ccxt/pro/bybit.py +791 -82
- ccxt/pro/cex.py +99 -51
- ccxt/pro/coinbase.py +220 -30
- ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
- ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
- ccxt/pro/coinbaseinternational.py +193 -30
- ccxt/pro/coincatch.py +1464 -0
- ccxt/pro/coincheck.py +11 -6
- ccxt/pro/coinex.py +965 -665
- ccxt/pro/coinone.py +17 -10
- ccxt/pro/cryptocom.py +446 -66
- ccxt/pro/currencycom.py +11 -10
- ccxt/pro/defx.py +832 -0
- ccxt/pro/deribit.py +167 -31
- ccxt/pro/exmo.py +252 -20
- ccxt/pro/gate.py +729 -64
- ccxt/pro/gemini.py +44 -26
- ccxt/pro/hashkey.py +802 -0
- ccxt/pro/hitbtc.py +208 -103
- ccxt/pro/hollaex.py +25 -9
- ccxt/pro/htx.py +83 -39
- ccxt/pro/huobijp.py +17 -16
- ccxt/pro/hyperliquid.py +502 -31
- ccxt/pro/idex.py +28 -13
- ccxt/pro/independentreserve.py +21 -16
- ccxt/pro/kraken.py +298 -51
- ccxt/pro/krakenfutures.py +166 -75
- ccxt/pro/kucoin.py +395 -77
- ccxt/pro/kucoinfutures.py +400 -99
- ccxt/pro/lbank.py +52 -31
- ccxt/pro/luno.py +12 -10
- ccxt/pro/mexc.py +400 -50
- ccxt/pro/myokx.py +28 -0
- ccxt/pro/ndax.py +25 -12
- ccxt/pro/okcoin.py +28 -9
- ccxt/pro/okx.py +935 -124
- ccxt/pro/onetrading.py +41 -24
- ccxt/pro/oxfun.py +1054 -0
- ccxt/pro/p2b.py +100 -24
- ccxt/pro/paradex.py +352 -0
- ccxt/pro/phemex.py +92 -33
- ccxt/pro/poloniex.py +128 -49
- ccxt/pro/poloniexfutures.py +53 -32
- ccxt/pro/probit.py +92 -85
- ccxt/pro/upbit.py +401 -8
- ccxt/pro/vertex.py +943 -0
- ccxt/pro/wazirx.py +46 -28
- ccxt/pro/whitebit.py +65 -12
- ccxt/pro/woo.py +437 -65
- ccxt/pro/woofipro.py +1271 -0
- ccxt/pro/xt.py +1067 -0
- ccxt/probit.py +143 -110
- ccxt/static_dependencies/__init__.py +1 -1
- ccxt/static_dependencies/lark/__init__.py +38 -0
- ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
- ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
- ccxt/static_dependencies/lark/ast_utils.py +59 -0
- ccxt/static_dependencies/lark/common.py +86 -0
- ccxt/static_dependencies/lark/exceptions.py +292 -0
- ccxt/static_dependencies/lark/grammar.py +130 -0
- ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
- ccxt/static_dependencies/lark/indenter.py +143 -0
- ccxt/static_dependencies/lark/lark.py +658 -0
- ccxt/static_dependencies/lark/lexer.py +678 -0
- ccxt/static_dependencies/lark/load_grammar.py +1428 -0
- ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
- ccxt/static_dependencies/lark/parser_frontends.py +257 -0
- ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
- ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
- ccxt/static_dependencies/lark/parsers/earley.py +314 -0
- ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
- ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
- ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
- ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
- ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
- ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
- ccxt/static_dependencies/lark/py.typed +0 -0
- ccxt/static_dependencies/lark/reconstruct.py +107 -0
- ccxt/static_dependencies/lark/tools/__init__.py +70 -0
- ccxt/static_dependencies/lark/tools/nearley.py +202 -0
- ccxt/static_dependencies/lark/tools/serialize.py +32 -0
- ccxt/static_dependencies/lark/tools/standalone.py +196 -0
- ccxt/static_dependencies/lark/tree.py +267 -0
- ccxt/static_dependencies/lark/tree_matcher.py +186 -0
- ccxt/static_dependencies/lark/tree_templates.py +180 -0
- ccxt/static_dependencies/lark/utils.py +343 -0
- ccxt/static_dependencies/lark/visitors.py +596 -0
- ccxt/static_dependencies/marshmallow/__init__.py +81 -0
- ccxt/static_dependencies/marshmallow/base.py +65 -0
- ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
- ccxt/static_dependencies/marshmallow/decorators.py +231 -0
- ccxt/static_dependencies/marshmallow/error_store.py +60 -0
- ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
- ccxt/static_dependencies/marshmallow/fields.py +2114 -0
- ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
- ccxt/static_dependencies/marshmallow/py.typed +0 -0
- ccxt/static_dependencies/marshmallow/schema.py +1228 -0
- ccxt/static_dependencies/marshmallow/types.py +12 -0
- ccxt/static_dependencies/marshmallow/utils.py +378 -0
- ccxt/static_dependencies/marshmallow/validate.py +678 -0
- ccxt/static_dependencies/marshmallow/warnings.py +2 -0
- ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
- ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
- ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
- ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
- ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
- ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
- ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
- ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
- ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- ccxt/static_dependencies/starknet/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
- ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
- ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
- ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
- ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
- ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
- ccxt/static_dependencies/starknet/common.py +15 -0
- ccxt/static_dependencies/starknet/constants.py +39 -0
- ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
- ccxt/static_dependencies/starknet/hash/address.py +79 -0
- ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
- ccxt/static_dependencies/starknet/hash/selector.py +16 -0
- ccxt/static_dependencies/starknet/hash/storage.py +12 -0
- ccxt/static_dependencies/starknet/hash/utils.py +78 -0
- ccxt/static_dependencies/starknet/models/__init__.py +0 -0
- ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
- ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
- ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
- ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
- ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
- ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
- ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
- ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
- ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
- ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
- ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
- ccxt/static_dependencies/starknet/utils/schema.py +13 -0
- ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
- ccxt/static_dependencies/starkware/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
- ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
- ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
- ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
- ccxt/static_dependencies/sympy/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
- ccxt/static_dependencies/sympy/external/__init__.py +0 -0
- ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
- ccxt/static_dependencies/sympy/external/importtools.py +187 -0
- ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
- ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
- ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
- ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
- ccxt/test/{test_async.py → tests_async.py} +456 -391
- ccxt/test/tests_helpers.py +285 -0
- ccxt/test/tests_init.py +39 -0
- ccxt/test/{test_sync.py → tests_sync.py} +456 -393
- ccxt/timex.py +123 -70
- ccxt/tokocrypto.py +129 -93
- ccxt/tradeogre.py +39 -25
- ccxt/upbit.py +322 -113
- ccxt/vertex.py +2983 -0
- ccxt/wavesexchange.py +227 -173
- ccxt/wazirx.py +145 -65
- ccxt/whitebit.py +533 -138
- ccxt/woo.py +1137 -296
- ccxt/woofipro.py +2716 -0
- ccxt/xt.py +4627 -0
- ccxt/yobit.py +159 -92
- ccxt/zaif.py +80 -33
- ccxt/zonda.py +140 -69
- ccxt-4.4.49.dist-info/LICENSE.txt +21 -0
- ccxt-4.4.49.dist-info/METADATA +646 -0
- ccxt-4.4.49.dist-info/RECORD +669 -0
- {ccxt-4.2.77.dist-info → ccxt-4.4.49.dist-info}/WHEEL +1 -1
- ccxt/abstract/bitbay.py +0 -47
- ccxt/abstract/bitfinex2.py +0 -139
- ccxt/abstract/hitbtc3.py +0 -115
- ccxt/async_support/bitbay.py +0 -17
- ccxt/async_support/bitfinex2.py +0 -3496
- ccxt/async_support/flowbtc.py +0 -34
- ccxt/bitbay.py +0 -17
- ccxt/bitfinex2.py +0 -3496
- ccxt/flowbtc.py +0 -34
- ccxt/hitbtc3.py +0 -16
- ccxt/pro/bitfinex2.py +0 -1081
- ccxt/test/base/__init__.py +0 -28
- ccxt/test/base/test_account.py +0 -26
- ccxt/test/base/test_balance.py +0 -56
- ccxt/test/base/test_borrow_interest.py +0 -35
- ccxt/test/base/test_borrow_rate.py +0 -32
- ccxt/test/base/test_calculate_fee.py +0 -51
- ccxt/test/base/test_crypto.py +0 -127
- ccxt/test/base/test_currency.py +0 -76
- ccxt/test/base/test_datetime.py +0 -103
- ccxt/test/base/test_decimal_to_precision.py +0 -392
- ccxt/test/base/test_deep_extend.py +0 -68
- ccxt/test/base/test_deposit_withdrawal.py +0 -50
- ccxt/test/base/test_exchange_datetime_functions.py +0 -76
- ccxt/test/base/test_funding_rate_history.py +0 -29
- ccxt/test/base/test_last_price.py +0 -32
- ccxt/test/base/test_ledger_entry.py +0 -45
- ccxt/test/base/test_ledger_item.py +0 -48
- ccxt/test/base/test_leverage_tier.py +0 -33
- ccxt/test/base/test_margin_mode.py +0 -24
- ccxt/test/base/test_margin_modification.py +0 -35
- ccxt/test/base/test_market.py +0 -190
- ccxt/test/base/test_number.py +0 -411
- ccxt/test/base/test_ohlcv.py +0 -32
- ccxt/test/base/test_open_interest.py +0 -32
- ccxt/test/base/test_order.py +0 -64
- ccxt/test/base/test_order_book.py +0 -63
- ccxt/test/base/test_position.py +0 -60
- ccxt/test/base/test_shared_methods.py +0 -345
- ccxt/test/base/test_status.py +0 -24
- ccxt/test/base/test_throttle.py +0 -126
- ccxt/test/base/test_ticker.py +0 -86
- ccxt/test/base/test_trade.py +0 -47
- ccxt/test/base/test_trading_fee.py +0 -26
- ccxt/test/base/test_transaction.py +0 -39
- ccxt-4.2.77.dist-info/METADATA +0 -626
- ccxt-4.2.77.dist-info/RECORD +0 -534
- {ccxt-4.2.77.dist-info → ccxt-4.4.49.dist-info}/top_level.txt +0 -0
ccxt/bitflyer.py
CHANGED
@@ -6,11 +6,12 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.bitflyer import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, MarketInterface, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Trade, Transaction
|
9
|
+
from ccxt.base.types import Balances, Currency, Int, Market, MarketInterface, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, FundingRate, Trade, TradingFeeInterface, Transaction
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import ArgumentsRequired
|
13
13
|
from ccxt.base.errors import OrderNotFound
|
14
|
+
from ccxt.base.errors import OnMaintenance
|
14
15
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
15
16
|
from ccxt.base.precise import Precise
|
16
17
|
|
@@ -38,6 +39,9 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
38
39
|
'fetchBalance': True,
|
39
40
|
'fetchClosedOrders': 'emulated',
|
40
41
|
'fetchDeposits': True,
|
42
|
+
'fetchFundingRate': True,
|
43
|
+
'fetchFundingRateHistory': False,
|
44
|
+
'fetchFundingRates': False,
|
41
45
|
'fetchMarginMode': False,
|
42
46
|
'fetchMarkets': True,
|
43
47
|
'fetchMyTrades': True,
|
@@ -58,7 +62,7 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
58
62
|
'withdraw': True,
|
59
63
|
},
|
60
64
|
'urls': {
|
61
|
-
'logo': 'https://
|
65
|
+
'logo': 'https://github.com/user-attachments/assets/d0217747-e54d-4533-8416-0d553dca74bb',
|
62
66
|
'api': {
|
63
67
|
'rest': 'https://api.{hostname}',
|
64
68
|
},
|
@@ -77,6 +81,7 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
77
81
|
'gethealth',
|
78
82
|
'getboardstate',
|
79
83
|
'getchats',
|
84
|
+
'getfundingrate',
|
80
85
|
],
|
81
86
|
},
|
82
87
|
'private': {
|
@@ -118,13 +123,89 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
118
123
|
},
|
119
124
|
},
|
120
125
|
'precisionMode': TICK_SIZE,
|
126
|
+
'features': {
|
127
|
+
'spot': {
|
128
|
+
'sandbox': False,
|
129
|
+
'createOrder': {
|
130
|
+
'marginMode': False,
|
131
|
+
'triggerPrice': False,
|
132
|
+
'triggerPriceType': None,
|
133
|
+
'triggerDirection': False,
|
134
|
+
'stopLossPrice': False,
|
135
|
+
'takeProfitPrice': False,
|
136
|
+
'attachedStopLossTakeProfit': None,
|
137
|
+
'timeInForce': {
|
138
|
+
'IOC': True,
|
139
|
+
'FOK': True,
|
140
|
+
'PO': True,
|
141
|
+
'GTD': True, # todo implement
|
142
|
+
},
|
143
|
+
'hedged': False,
|
144
|
+
'trailing': False, # todo recheck
|
145
|
+
'leverage': False,
|
146
|
+
'marketBuyRequiresPrice': False,
|
147
|
+
'marketBuyByCost': False,
|
148
|
+
'selfTradePrevention': False,
|
149
|
+
'iceberg': False,
|
150
|
+
},
|
151
|
+
'createOrders': None,
|
152
|
+
'fetchMyTrades': {
|
153
|
+
'marginMode': False,
|
154
|
+
'limit': 100,
|
155
|
+
'daysBack': None,
|
156
|
+
'untilDays': None,
|
157
|
+
},
|
158
|
+
'fetchOrder': {
|
159
|
+
'marginMode': False,
|
160
|
+
'trigger': False,
|
161
|
+
'trailing': False,
|
162
|
+
},
|
163
|
+
'fetchOpenOrders': {
|
164
|
+
'marginMode': False,
|
165
|
+
'limit': 100,
|
166
|
+
'trigger': False,
|
167
|
+
'trailing': False,
|
168
|
+
},
|
169
|
+
'fetchOrders': {
|
170
|
+
'marginMode': False,
|
171
|
+
'limit': 100,
|
172
|
+
'daysBack': None,
|
173
|
+
'untilDays': None,
|
174
|
+
'trigger': False,
|
175
|
+
'trailing': False,
|
176
|
+
},
|
177
|
+
'fetchClosedOrders': {
|
178
|
+
'marginMode': False,
|
179
|
+
'limit': 100,
|
180
|
+
'daysBack': None,
|
181
|
+
'daysBackCanceled': None,
|
182
|
+
'untilDays': None,
|
183
|
+
'trigger': False,
|
184
|
+
'trailing': False,
|
185
|
+
},
|
186
|
+
'fetchOHLCV': None,
|
187
|
+
},
|
188
|
+
'swap': {
|
189
|
+
'linear': None,
|
190
|
+
'inverse': None,
|
191
|
+
},
|
192
|
+
'future': {
|
193
|
+
'linear': None,
|
194
|
+
'inverse': None,
|
195
|
+
},
|
196
|
+
},
|
197
|
+
'exceptions': {
|
198
|
+
'exact': {
|
199
|
+
'-2': OnMaintenance, # {"status":-2,"error_message":"Under maintenance","data":null}
|
200
|
+
},
|
201
|
+
},
|
121
202
|
})
|
122
203
|
|
123
204
|
def parse_expiry_date(self, expiry):
|
124
205
|
day = expiry[0:2]
|
125
206
|
monthName = expiry[2:5]
|
126
207
|
year = expiry[5:9]
|
127
|
-
months = {
|
208
|
+
months: dict = {
|
128
209
|
'JAN': '01',
|
129
210
|
'FEB': '02',
|
130
211
|
'MAR': '03',
|
@@ -147,10 +228,12 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
147
228
|
# Since they're the same we just need to return one
|
148
229
|
return super(bitflyer, self).safe_market(marketId, market, delimiter, 'spot')
|
149
230
|
|
150
|
-
def fetch_markets(self, params={}):
|
231
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
151
232
|
"""
|
152
233
|
retrieves data on all markets for bitflyer
|
153
|
-
|
234
|
+
|
235
|
+
https://lightning.bitflyer.com/docs?lang=en#market-list
|
236
|
+
|
154
237
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
155
238
|
:returns dict[]: an array of objects representing market data
|
156
239
|
"""
|
@@ -294,7 +377,7 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
294
377
|
return result
|
295
378
|
|
296
379
|
def parse_balance(self, response) -> Balances:
|
297
|
-
result = {'info': response}
|
380
|
+
result: dict = {'info': response}
|
298
381
|
for i in range(0, len(response)):
|
299
382
|
balance = response[i]
|
300
383
|
currencyId = self.safe_string(balance, 'currency_code')
|
@@ -308,7 +391,9 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
308
391
|
def fetch_balance(self, params={}) -> Balances:
|
309
392
|
"""
|
310
393
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
311
|
-
|
394
|
+
|
395
|
+
https://lightning.bitflyer.com/docs?lang=en#get-account-asset-balance
|
396
|
+
|
312
397
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
313
398
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
314
399
|
"""
|
@@ -338,7 +423,9 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
338
423
|
def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
339
424
|
"""
|
340
425
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
341
|
-
|
426
|
+
|
427
|
+
https://lightning.bitflyer.com/docs?lang=en#order-book
|
428
|
+
|
342
429
|
:param str symbol: unified symbol of the market to fetch the order book for
|
343
430
|
:param int [limit]: the maximum amount of order book entries to return
|
344
431
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -346,13 +433,13 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
346
433
|
"""
|
347
434
|
self.load_markets()
|
348
435
|
market = self.market(symbol)
|
349
|
-
request = {
|
436
|
+
request: dict = {
|
350
437
|
'product_code': market['id'],
|
351
438
|
}
|
352
439
|
orderbook = self.publicGetGetboard(self.extend(request, params))
|
353
440
|
return self.parse_order_book(orderbook, market['symbol'], None, 'bids', 'asks', 'price', 'size')
|
354
441
|
|
355
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
442
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
356
443
|
symbol = self.safe_symbol(None, market)
|
357
444
|
timestamp = self.parse8601(self.safe_string(ticker, 'timestamp'))
|
358
445
|
last = self.safe_string(ticker, 'ltp')
|
@@ -382,20 +469,22 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
382
469
|
def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
383
470
|
"""
|
384
471
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
385
|
-
|
472
|
+
|
473
|
+
https://lightning.bitflyer.com/docs?lang=en#ticker
|
474
|
+
|
386
475
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
387
476
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
388
477
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
389
478
|
"""
|
390
479
|
self.load_markets()
|
391
480
|
market = self.market(symbol)
|
392
|
-
request = {
|
481
|
+
request: dict = {
|
393
482
|
'product_code': market['id'],
|
394
483
|
}
|
395
484
|
response = self.publicGetGetticker(self.extend(request, params))
|
396
485
|
return self.parse_ticker(response, market)
|
397
486
|
|
398
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
487
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
399
488
|
#
|
400
489
|
# fetchTrades(public) v1
|
401
490
|
#
|
@@ -457,7 +546,9 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
457
546
|
def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
458
547
|
"""
|
459
548
|
get the list of most recent trades for a particular symbol
|
460
|
-
|
549
|
+
|
550
|
+
https://lightning.bitflyer.com/docs?lang=en#list-executions
|
551
|
+
|
461
552
|
:param str symbol: unified symbol of the market to fetch trades for
|
462
553
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
463
554
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -466,7 +557,7 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
466
557
|
"""
|
467
558
|
self.load_markets()
|
468
559
|
market = self.market(symbol)
|
469
|
-
request = {
|
560
|
+
request: dict = {
|
470
561
|
'product_code': market['id'],
|
471
562
|
}
|
472
563
|
if limit is not None:
|
@@ -487,17 +578,19 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
487
578
|
#
|
488
579
|
return self.parse_trades(response, market, since, limit)
|
489
580
|
|
490
|
-
def fetch_trading_fee(self, symbol: str, params={}):
|
581
|
+
def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
491
582
|
"""
|
492
583
|
fetch the trading fees for a market
|
493
|
-
|
584
|
+
|
585
|
+
https://lightning.bitflyer.com/docs?lang=en#get-trading-commission
|
586
|
+
|
494
587
|
:param str symbol: unified market symbol
|
495
588
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
496
589
|
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
|
497
590
|
"""
|
498
591
|
self.load_markets()
|
499
592
|
market = self.market(symbol)
|
500
|
-
request = {
|
593
|
+
request: dict = {
|
501
594
|
'product_code': market['id'],
|
502
595
|
}
|
503
596
|
response = self.privateGetGettradingcommission(self.extend(request, params))
|
@@ -512,22 +605,26 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
512
605
|
'symbol': market['symbol'],
|
513
606
|
'maker': fee,
|
514
607
|
'taker': fee,
|
608
|
+
'percentage': None,
|
609
|
+
'tierBased': None,
|
515
610
|
}
|
516
611
|
|
517
612
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
518
613
|
"""
|
519
614
|
create a trade order
|
520
|
-
|
615
|
+
|
616
|
+
https://lightning.bitflyer.com/docs?lang=en#send-a-new-order
|
617
|
+
|
521
618
|
:param str symbol: unified symbol of the market to create an order in
|
522
619
|
:param str type: 'market' or 'limit'
|
523
620
|
:param str side: 'buy' or 'sell'
|
524
621
|
:param float amount: how much of currency you want to trade in units of base currency
|
525
|
-
:param float [price]: the price at which the order is to be
|
622
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
526
623
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
527
624
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
528
625
|
"""
|
529
626
|
self.load_markets()
|
530
|
-
request = {
|
627
|
+
request: dict = {
|
531
628
|
'product_code': self.market_id(symbol),
|
532
629
|
'child_order_type': type.upper(),
|
533
630
|
'side': side.upper(),
|
@@ -545,7 +642,9 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
545
642
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
546
643
|
"""
|
547
644
|
cancels an open order
|
548
|
-
|
645
|
+
|
646
|
+
https://lightning.bitflyer.com/docs?lang=en#cancel-order
|
647
|
+
|
549
648
|
:param str id: order id
|
550
649
|
:param str symbol: unified symbol of the market the order was made in
|
551
650
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -554,14 +653,20 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
554
653
|
if symbol is None:
|
555
654
|
raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol argument')
|
556
655
|
self.load_markets()
|
557
|
-
request = {
|
656
|
+
request: dict = {
|
558
657
|
'product_code': self.market_id(symbol),
|
559
658
|
'child_order_acceptance_id': id,
|
560
659
|
}
|
561
|
-
|
660
|
+
response = self.privatePostCancelchildorder(self.extend(request, params))
|
661
|
+
#
|
662
|
+
# 200 OK.
|
663
|
+
#
|
664
|
+
return self.safe_order({
|
665
|
+
'info': response,
|
666
|
+
})
|
562
667
|
|
563
|
-
def parse_order_status(self, status):
|
564
|
-
statuses = {
|
668
|
+
def parse_order_status(self, status: Str):
|
669
|
+
statuses: dict = {
|
565
670
|
'ACTIVE': 'open',
|
566
671
|
'COMPLETED': 'closed',
|
567
672
|
'CANCELED': 'canceled',
|
@@ -570,7 +675,7 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
570
675
|
}
|
571
676
|
return self.safe_string(statuses, status, status)
|
572
677
|
|
573
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
678
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
574
679
|
timestamp = self.parse8601(self.safe_string(order, 'child_order_date'))
|
575
680
|
price = self.safe_string(order, 'price')
|
576
681
|
amount = self.safe_string(order, 'size')
|
@@ -604,7 +709,6 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
604
709
|
'postOnly': None,
|
605
710
|
'side': side,
|
606
711
|
'price': price,
|
607
|
-
'stopPrice': None,
|
608
712
|
'triggerPrice': None,
|
609
713
|
'cost': None,
|
610
714
|
'amount': amount,
|
@@ -618,7 +722,9 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
618
722
|
def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = 100, params={}) -> List[Order]:
|
619
723
|
"""
|
620
724
|
fetches information on multiple orders made by the user
|
621
|
-
|
725
|
+
|
726
|
+
https://lightning.bitflyer.com/docs?lang=en#list-orders
|
727
|
+
|
622
728
|
:param str symbol: unified market symbol of the market orders were made in
|
623
729
|
:param int [since]: the earliest time in ms to fetch orders for
|
624
730
|
:param int [limit]: the maximum number of order structures to retrieve
|
@@ -629,7 +735,7 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
629
735
|
raise ArgumentsRequired(self.id + ' fetchOrders() requires a symbol argument')
|
630
736
|
self.load_markets()
|
631
737
|
market = self.market(symbol)
|
632
|
-
request = {
|
738
|
+
request: dict = {
|
633
739
|
'product_code': market['id'],
|
634
740
|
'count': limit,
|
635
741
|
}
|
@@ -642,14 +748,16 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
642
748
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = 100, params={}) -> List[Order]:
|
643
749
|
"""
|
644
750
|
fetch all unfilled currently open orders
|
645
|
-
|
751
|
+
|
752
|
+
https://lightning.bitflyer.com/docs?lang=en#list-orders
|
753
|
+
|
646
754
|
:param str symbol: unified market symbol
|
647
755
|
:param int [since]: the earliest time in ms to fetch open orders for
|
648
756
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
649
757
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
650
758
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
651
759
|
"""
|
652
|
-
request = {
|
760
|
+
request: dict = {
|
653
761
|
'child_order_state': 'ACTIVE',
|
654
762
|
}
|
655
763
|
return self.fetch_orders(symbol, since, limit, self.extend(request, params))
|
@@ -657,14 +765,16 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
657
765
|
def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = 100, params={}) -> List[Order]:
|
658
766
|
"""
|
659
767
|
fetches information on multiple closed orders made by the user
|
660
|
-
|
768
|
+
|
769
|
+
https://lightning.bitflyer.com/docs?lang=en#list-orders
|
770
|
+
|
661
771
|
:param str symbol: unified market symbol of the market orders were made in
|
662
772
|
:param int [since]: the earliest time in ms to fetch orders for
|
663
773
|
:param int [limit]: the maximum number of order structures to retrieve
|
664
774
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
665
775
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
666
776
|
"""
|
667
|
-
request = {
|
777
|
+
request: dict = {
|
668
778
|
'child_order_state': 'COMPLETED',
|
669
779
|
}
|
670
780
|
return self.fetch_orders(symbol, since, limit, self.extend(request, params))
|
@@ -672,7 +782,10 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
672
782
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
673
783
|
"""
|
674
784
|
fetches information on an order made by the user
|
675
|
-
|
785
|
+
|
786
|
+
https://lightning.bitflyer.com/docs?lang=en#list-orders
|
787
|
+
|
788
|
+
:param str id: the order id
|
676
789
|
:param str symbol: unified symbol of the market the order was made in
|
677
790
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
678
791
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -688,7 +801,9 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
688
801
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
689
802
|
"""
|
690
803
|
fetch all trades made by the user
|
691
|
-
|
804
|
+
|
805
|
+
https://lightning.bitflyer.com/docs?lang=en#list-executions
|
806
|
+
|
692
807
|
:param str symbol: unified market symbol
|
693
808
|
:param int [since]: the earliest time in ms to fetch trades for
|
694
809
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -699,7 +814,7 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
699
814
|
raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol argument')
|
700
815
|
self.load_markets()
|
701
816
|
market = self.market(symbol)
|
702
|
-
request = {
|
817
|
+
request: dict = {
|
703
818
|
'product_code': market['id'],
|
704
819
|
}
|
705
820
|
if limit is not None:
|
@@ -724,7 +839,9 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
724
839
|
def fetch_positions(self, symbols: Strings = None, params={}):
|
725
840
|
"""
|
726
841
|
fetch all open positions
|
727
|
-
|
842
|
+
|
843
|
+
https://lightning.bitflyer.com/docs?lang=en#get-open-interest-summary
|
844
|
+
|
728
845
|
:param str[] symbols: list of unified market symbols
|
729
846
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
730
847
|
:returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
|
@@ -732,7 +849,7 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
732
849
|
if symbols is None:
|
733
850
|
raise ArgumentsRequired(self.id + ' fetchPositions() requires a `symbols` argument, exactly one symbol in an array')
|
734
851
|
self.load_markets()
|
735
|
-
request = {
|
852
|
+
request: dict = {
|
736
853
|
'product_code': self.market_ids(symbols),
|
737
854
|
}
|
738
855
|
response = self.privateGetGetpositions(self.extend(request, params))
|
@@ -756,10 +873,12 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
756
873
|
# todo unify parsePosition/parsePositions
|
757
874
|
return response
|
758
875
|
|
759
|
-
def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
876
|
+
def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
760
877
|
"""
|
761
878
|
make a withdrawal
|
762
|
-
|
879
|
+
|
880
|
+
https://lightning.bitflyer.com/docs?lang=en#withdrawing-funds
|
881
|
+
|
763
882
|
:param str code: unified currency code
|
764
883
|
:param float amount: the amount to withdraw
|
765
884
|
:param str address: the address to withdraw to
|
@@ -772,7 +891,7 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
772
891
|
if code != 'JPY' and code != 'USD' and code != 'EUR':
|
773
892
|
raise ExchangeError(self.id + ' allows withdrawing JPY, USD, EUR only, ' + code + ' is not supported')
|
774
893
|
currency = self.currency(code)
|
775
|
-
request = {
|
894
|
+
request: dict = {
|
776
895
|
'currency_code': currency['id'],
|
777
896
|
'amount': amount,
|
778
897
|
# 'bank_account_id': 1234,
|
@@ -788,7 +907,9 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
788
907
|
def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
789
908
|
"""
|
790
909
|
fetch all deposits made to an account
|
791
|
-
|
910
|
+
|
911
|
+
https://lightning.bitflyer.com/docs?lang=en#get-crypto-assets-deposit-history
|
912
|
+
|
792
913
|
:param str code: unified currency code
|
793
914
|
:param int [since]: the earliest time in ms to fetch deposits for
|
794
915
|
:param int [limit]: the maximum number of deposits structures to retrieve
|
@@ -797,7 +918,7 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
797
918
|
"""
|
798
919
|
self.load_markets()
|
799
920
|
currency = None
|
800
|
-
request = {}
|
921
|
+
request: dict = {}
|
801
922
|
if code is not None:
|
802
923
|
currency = self.currency(code)
|
803
924
|
if limit is not None:
|
@@ -822,7 +943,9 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
822
943
|
def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
823
944
|
"""
|
824
945
|
fetch all withdrawals made from an account
|
825
|
-
|
946
|
+
|
947
|
+
https://lightning.bitflyer.com/docs?lang=en#get-crypto-assets-transaction-history
|
948
|
+
|
826
949
|
:param str code: unified currency code
|
827
950
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
828
951
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
@@ -831,7 +954,7 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
831
954
|
"""
|
832
955
|
self.load_markets()
|
833
956
|
currency = None
|
834
|
-
request = {}
|
957
|
+
request: dict = {}
|
835
958
|
if code is not None:
|
836
959
|
currency = self.currency(code)
|
837
960
|
if limit is not None:
|
@@ -856,20 +979,20 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
856
979
|
return self.parse_transactions(response, currency, since, limit)
|
857
980
|
|
858
981
|
def parse_deposit_status(self, status):
|
859
|
-
statuses = {
|
982
|
+
statuses: dict = {
|
860
983
|
'PENDING': 'pending',
|
861
984
|
'COMPLETED': 'ok',
|
862
985
|
}
|
863
986
|
return self.safe_string(statuses, status, status)
|
864
987
|
|
865
988
|
def parse_withdrawal_status(self, status):
|
866
|
-
statuses = {
|
989
|
+
statuses: dict = {
|
867
990
|
'PENDING': 'pending',
|
868
991
|
'COMPLETED': 'ok',
|
869
992
|
}
|
870
993
|
return self.safe_string(statuses, status, status)
|
871
994
|
|
872
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
995
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
873
996
|
#
|
874
997
|
# fetchDeposits
|
875
998
|
#
|
@@ -948,6 +1071,60 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
948
1071
|
'fee': fee,
|
949
1072
|
}
|
950
1073
|
|
1074
|
+
def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
|
1075
|
+
"""
|
1076
|
+
fetch the current funding rate
|
1077
|
+
|
1078
|
+
https://lightning.bitflyer.com/docs#funding-rate
|
1079
|
+
|
1080
|
+
:param str symbol: unified market symbol
|
1081
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1082
|
+
:returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
|
1083
|
+
"""
|
1084
|
+
self.load_markets()
|
1085
|
+
market = self.market(symbol)
|
1086
|
+
request: dict = {
|
1087
|
+
'product_code': market['id'],
|
1088
|
+
}
|
1089
|
+
response = self.publicGetGetfundingrate(self.extend(request, params))
|
1090
|
+
#
|
1091
|
+
# {
|
1092
|
+
# "current_funding_rate": -0.003750000000
|
1093
|
+
# "next_funding_rate_settledate": "2024-04-15T13:00:00"
|
1094
|
+
# }
|
1095
|
+
#
|
1096
|
+
return self.parse_funding_rate(response, market)
|
1097
|
+
|
1098
|
+
def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
|
1099
|
+
#
|
1100
|
+
# {
|
1101
|
+
# "current_funding_rate": -0.003750000000
|
1102
|
+
# "next_funding_rate_settledate": "2024-04-15T13:00:00"
|
1103
|
+
# }
|
1104
|
+
#
|
1105
|
+
nextFundingDatetime = self.safe_string(contract, 'next_funding_rate_settledate')
|
1106
|
+
nextFundingTimestamp = self.parse8601(nextFundingDatetime)
|
1107
|
+
return {
|
1108
|
+
'info': contract,
|
1109
|
+
'symbol': self.safe_string(market, 'symbol'),
|
1110
|
+
'markPrice': None,
|
1111
|
+
'indexPrice': None,
|
1112
|
+
'interestRate': None,
|
1113
|
+
'estimatedSettlePrice': None,
|
1114
|
+
'timestamp': None,
|
1115
|
+
'datetime': None,
|
1116
|
+
'fundingRate': None,
|
1117
|
+
'fundingTimestamp': None,
|
1118
|
+
'fundingDatetime': None,
|
1119
|
+
'nextFundingRate': self.safe_number(contract, 'current_funding_rate'),
|
1120
|
+
'nextFundingTimestamp': nextFundingTimestamp,
|
1121
|
+
'nextFundingDatetime': self.iso8601(nextFundingTimestamp),
|
1122
|
+
'previousFundingRate': None,
|
1123
|
+
'previousFundingTimestamp': None,
|
1124
|
+
'previousFundingDatetime': None,
|
1125
|
+
'interval': None,
|
1126
|
+
}
|
1127
|
+
|
951
1128
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|
952
1129
|
request = '/' + self.version + '/'
|
953
1130
|
if api == 'private':
|
@@ -973,3 +1150,15 @@ class bitflyer(Exchange, ImplicitAPI):
|
|
973
1150
|
'Content-Type': 'application/json',
|
974
1151
|
}
|
975
1152
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1153
|
+
|
1154
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1155
|
+
if response is None:
|
1156
|
+
return None # fallback to the default error handler
|
1157
|
+
feedback = self.id + ' ' + body
|
1158
|
+
# i.e. {"status":-2,"error_message":"Under maintenance","data":null}
|
1159
|
+
errorMessage = self.safe_string(response, 'error_message')
|
1160
|
+
statusCode = self.safe_integer(response, 'status')
|
1161
|
+
if errorMessage is not None:
|
1162
|
+
self.throw_exactly_matched_exception(self.exceptions['exact'], statusCode, feedback)
|
1163
|
+
raise ExchangeError(feedback)
|
1164
|
+
return None
|