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/btcturk.py
CHANGED
@@ -7,7 +7,7 @@ from ccxt.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.btcturk import ImplicitAPI
|
8
8
|
import hashlib
|
9
9
|
import math
|
10
|
-
from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
|
10
|
+
from ccxt.base.types import Balances, Bool, 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
13
|
from ccxt.base.errors import BadRequest
|
@@ -66,8 +66,11 @@ class btcturk(Exchange, ImplicitAPI):
|
|
66
66
|
'fetchOrderBook': True,
|
67
67
|
'fetchOrders': True,
|
68
68
|
'fetchPosition': False,
|
69
|
+
'fetchPositionHistory': False,
|
69
70
|
'fetchPositionMode': False,
|
70
71
|
'fetchPositions': False,
|
72
|
+
'fetchPositionsForSymbol': False,
|
73
|
+
'fetchPositionsHistory': False,
|
71
74
|
'fetchPositionsRisk': False,
|
72
75
|
'fetchPremiumIndexOHLCV': False,
|
73
76
|
'fetchTicker': True,
|
@@ -90,7 +93,7 @@ class btcturk(Exchange, ImplicitAPI):
|
|
90
93
|
'1y': '1 y',
|
91
94
|
},
|
92
95
|
'urls': {
|
93
|
-
'logo': 'https://
|
96
|
+
'logo': 'https://github.com/user-attachments/assets/10e0a238-9f60-4b06-9dda-edfc7602f1d6',
|
94
97
|
'api': {
|
95
98
|
'public': 'https://api.btcturk.com/api/v2',
|
96
99
|
'private': 'https://api.btcturk.com/api/v1',
|
@@ -133,6 +136,67 @@ class btcturk(Exchange, ImplicitAPI):
|
|
133
136
|
},
|
134
137
|
},
|
135
138
|
},
|
139
|
+
'features': {
|
140
|
+
'spot': {
|
141
|
+
'sandbox': False,
|
142
|
+
'createOrder': {
|
143
|
+
'marginMode': False,
|
144
|
+
'triggerPrice': True,
|
145
|
+
'triggerPriceType': None,
|
146
|
+
'triggerDirection': False,
|
147
|
+
'stopLossPrice': False,
|
148
|
+
'takeProfitPrice': False,
|
149
|
+
'attachedStopLossTakeProfit': None,
|
150
|
+
'timeInForce': {
|
151
|
+
'IOC': False,
|
152
|
+
'FOK': False,
|
153
|
+
'PO': False,
|
154
|
+
'GTD': False,
|
155
|
+
},
|
156
|
+
'hedged': False,
|
157
|
+
'leverage': False,
|
158
|
+
'marketBuyRequiresPrice': False,
|
159
|
+
'marketBuyByCost': False,
|
160
|
+
'selfTradePrevention': False,
|
161
|
+
'trailing': False,
|
162
|
+
'iceberg': False,
|
163
|
+
},
|
164
|
+
'createOrders': None,
|
165
|
+
'fetchMyTrades': {
|
166
|
+
'marginMode': False,
|
167
|
+
'limit': 100,
|
168
|
+
'daysBack': 100000,
|
169
|
+
'untilDays': 30,
|
170
|
+
},
|
171
|
+
'fetchOrder': None,
|
172
|
+
'fetchOpenOrders': {
|
173
|
+
'marginMode': False,
|
174
|
+
'limit': None,
|
175
|
+
'trigger': False,
|
176
|
+
'trailing': False,
|
177
|
+
},
|
178
|
+
'fetchOrders': {
|
179
|
+
'marginMode': False,
|
180
|
+
'limit': 1000,
|
181
|
+
'daysBack': 100000,
|
182
|
+
'untilDays': 30,
|
183
|
+
'trigger': False,
|
184
|
+
'trailing': False,
|
185
|
+
},
|
186
|
+
'fetchClosedOrders': None,
|
187
|
+
'fetchOHLCV': {
|
188
|
+
'limit': None,
|
189
|
+
},
|
190
|
+
},
|
191
|
+
'swap': {
|
192
|
+
'linear': None,
|
193
|
+
'inverse': None,
|
194
|
+
},
|
195
|
+
'future': {
|
196
|
+
'linear': None,
|
197
|
+
'inverse': None,
|
198
|
+
},
|
199
|
+
},
|
136
200
|
'fees': {
|
137
201
|
'trading': {
|
138
202
|
'maker': self.parse_number('0.0005'),
|
@@ -149,10 +213,12 @@ class btcturk(Exchange, ImplicitAPI):
|
|
149
213
|
'precisionMode': TICK_SIZE,
|
150
214
|
})
|
151
215
|
|
152
|
-
def fetch_markets(self, params={}):
|
216
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
153
217
|
"""
|
154
218
|
retrieves data on all markets for btcturk
|
155
|
-
|
219
|
+
|
220
|
+
https://docs.btcturk.com/public-endpoints/exchange-info
|
221
|
+
|
156
222
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
157
223
|
:returns dict[]: an array of objects representing market data
|
158
224
|
"""
|
@@ -200,8 +266,8 @@ class btcturk(Exchange, ImplicitAPI):
|
|
200
266
|
# ],
|
201
267
|
# }
|
202
268
|
#
|
203
|
-
data = self.
|
204
|
-
markets = self.
|
269
|
+
data = self.safe_dict(response, 'data', {})
|
270
|
+
markets = self.safe_list(data, 'symbols', [])
|
205
271
|
return self.parse_markets(markets)
|
206
272
|
|
207
273
|
def parse_market(self, entry) -> Market:
|
@@ -210,7 +276,7 @@ class btcturk(Exchange, ImplicitAPI):
|
|
210
276
|
quoteId = self.safe_string(entry, 'denominator')
|
211
277
|
base = self.safe_currency_code(baseId)
|
212
278
|
quote = self.safe_currency_code(quoteId)
|
213
|
-
filters = self.
|
279
|
+
filters = self.safe_list(entry, 'filters', [])
|
214
280
|
minPrice = None
|
215
281
|
maxPrice = None
|
216
282
|
minAmount = None
|
@@ -277,8 +343,8 @@ class btcturk(Exchange, ImplicitAPI):
|
|
277
343
|
}
|
278
344
|
|
279
345
|
def parse_balance(self, response) -> Balances:
|
280
|
-
data = self.
|
281
|
-
result = {
|
346
|
+
data = self.safe_list(response, 'data', [])
|
347
|
+
result: dict = {
|
282
348
|
'info': response,
|
283
349
|
'timestamp': None,
|
284
350
|
'datetime': None,
|
@@ -297,7 +363,9 @@ class btcturk(Exchange, ImplicitAPI):
|
|
297
363
|
def fetch_balance(self, params={}) -> Balances:
|
298
364
|
"""
|
299
365
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
300
|
-
|
366
|
+
|
367
|
+
https://docs.btcturk.com/private-endpoints/account-balance
|
368
|
+
|
301
369
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
302
370
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
303
371
|
"""
|
@@ -324,7 +392,9 @@ class btcturk(Exchange, ImplicitAPI):
|
|
324
392
|
def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
325
393
|
"""
|
326
394
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
327
|
-
|
395
|
+
|
396
|
+
https://docs.btcturk.com/public-endpoints/orderbook
|
397
|
+
|
328
398
|
:param str symbol: unified symbol of the market to fetch the order book for
|
329
399
|
:param int [limit]: the maximum amount of order book entries to return
|
330
400
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -332,7 +402,7 @@ class btcturk(Exchange, ImplicitAPI):
|
|
332
402
|
"""
|
333
403
|
self.load_markets()
|
334
404
|
market = self.market(symbol)
|
335
|
-
request = {
|
405
|
+
request: dict = {
|
336
406
|
'pairSymbol': market['id'],
|
337
407
|
}
|
338
408
|
response = self.publicGetOrderbook(self.extend(request, params))
|
@@ -347,11 +417,11 @@ class btcturk(Exchange, ImplicitAPI):
|
|
347
417
|
# ]
|
348
418
|
# }
|
349
419
|
# }
|
350
|
-
data = self.
|
420
|
+
data = self.safe_dict(response, 'data', {})
|
351
421
|
timestamp = self.safe_integer(data, 'timestamp')
|
352
422
|
return self.parse_order_book(data, market['symbol'], timestamp, 'bids', 'asks', 0, 1)
|
353
423
|
|
354
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
424
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
355
425
|
#
|
356
426
|
# {
|
357
427
|
# "pair": "BTCTRY",
|
@@ -403,20 +473,24 @@ class btcturk(Exchange, ImplicitAPI):
|
|
403
473
|
def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
404
474
|
"""
|
405
475
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
406
|
-
|
476
|
+
|
477
|
+
https://docs.btcturk.com/public-endpoints/ticker
|
478
|
+
|
407
479
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
408
480
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
409
481
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
410
482
|
"""
|
411
483
|
self.load_markets()
|
412
484
|
response = self.publicGetTicker(params)
|
413
|
-
tickers = self.
|
485
|
+
tickers = self.safe_list(response, 'data')
|
414
486
|
return self.parse_tickers(tickers, symbols)
|
415
487
|
|
416
488
|
def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
417
489
|
"""
|
418
490
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
419
|
-
|
491
|
+
|
492
|
+
https://docs.btcturk.com/public-endpoints/ticker
|
493
|
+
|
420
494
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
421
495
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
422
496
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -425,7 +499,7 @@ class btcturk(Exchange, ImplicitAPI):
|
|
425
499
|
tickers = self.fetch_tickers([symbol], params)
|
426
500
|
return self.safe_value(tickers, symbol)
|
427
501
|
|
428
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
502
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
429
503
|
#
|
430
504
|
# fetchTrades
|
431
505
|
# {
|
@@ -489,7 +563,9 @@ class btcturk(Exchange, ImplicitAPI):
|
|
489
563
|
def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
490
564
|
"""
|
491
565
|
get the list of most recent trades for a particular symbol
|
492
|
-
|
566
|
+
|
567
|
+
https://docs.btcturk.com/public-endpoints/trades
|
568
|
+
|
493
569
|
:param str symbol: unified symbol of the market to fetch trades for
|
494
570
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
495
571
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -499,7 +575,7 @@ class btcturk(Exchange, ImplicitAPI):
|
|
499
575
|
self.load_markets()
|
500
576
|
market = self.market(symbol)
|
501
577
|
# maxCount = 50
|
502
|
-
request = {
|
578
|
+
request: dict = {
|
503
579
|
'pairSymbol': market['id'],
|
504
580
|
}
|
505
581
|
if limit is not None:
|
@@ -522,7 +598,7 @@ class btcturk(Exchange, ImplicitAPI):
|
|
522
598
|
# ]
|
523
599
|
# }
|
524
600
|
#
|
525
|
-
data = self.
|
601
|
+
data = self.safe_list(response, 'data')
|
526
602
|
return self.parse_trades(data, market, since, limit)
|
527
603
|
|
528
604
|
def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
|
@@ -548,7 +624,9 @@ class btcturk(Exchange, ImplicitAPI):
|
|
548
624
|
def fetch_ohlcv(self, symbol: str, timeframe='1h', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
549
625
|
"""
|
550
626
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
551
|
-
|
627
|
+
|
628
|
+
https://docs.btcturk.com/public-endpoints/get-kline-data
|
629
|
+
|
552
630
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
553
631
|
:param str timeframe: the length of time each candle represents
|
554
632
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -559,7 +637,7 @@ class btcturk(Exchange, ImplicitAPI):
|
|
559
637
|
"""
|
560
638
|
self.load_markets()
|
561
639
|
market = self.market(symbol)
|
562
|
-
request = {
|
640
|
+
request: dict = {
|
563
641
|
'symbol': market['id'],
|
564
642
|
'resolution': self.safe_value(self.timeframes, timeframe, timeframe), # allows the user to pass custom timeframes if needed
|
565
643
|
}
|
@@ -570,6 +648,7 @@ class btcturk(Exchange, ImplicitAPI):
|
|
570
648
|
elif limit is None: # since will also be None
|
571
649
|
limit = 100 # default value
|
572
650
|
if limit is not None:
|
651
|
+
limit = min(limit, 11000) # max 11000 candles diapason can be covered
|
573
652
|
if timeframe == '1y': # difficult with leap years
|
574
653
|
raise BadRequest(self.id + ' fetchOHLCV() does not accept a limit parameter when timeframe == "1y"')
|
575
654
|
seconds = self.parse_timeframe(timeframe)
|
@@ -578,7 +657,7 @@ class btcturk(Exchange, ImplicitAPI):
|
|
578
657
|
to = self.parse_to_int(since / 1000) + limitSeconds
|
579
658
|
request['to'] = min(request['to'], to)
|
580
659
|
else:
|
581
|
-
request['from'] = self.parse_to_int(
|
660
|
+
request['from'] = self.parse_to_int(0 / 1000) - limitSeconds
|
582
661
|
response = self.graphGetKlinesHistory(self.extend(request, params))
|
583
662
|
#
|
584
663
|
# {
|
@@ -617,42 +696,44 @@ class btcturk(Exchange, ImplicitAPI):
|
|
617
696
|
#
|
618
697
|
return self.parse_ohlcvs(response, market, timeframe, since, limit)
|
619
698
|
|
620
|
-
def parse_ohlcvs(self, ohlcvs, market=None, timeframe='1m', since: Int = None, limit: Int = None):
|
699
|
+
def parse_ohlcvs(self, ohlcvs, market=None, timeframe='1m', since: Int = None, limit: Int = None, tail: Bool = False):
|
621
700
|
results = []
|
622
|
-
timestamp = self.
|
623
|
-
high = self.
|
624
|
-
open = self.
|
625
|
-
low = self.
|
626
|
-
close = self.
|
627
|
-
volume = self.
|
701
|
+
timestamp = self.safe_list(ohlcvs, 't', [])
|
702
|
+
high = self.safe_list(ohlcvs, 'h', [])
|
703
|
+
open = self.safe_list(ohlcvs, 'o', [])
|
704
|
+
low = self.safe_list(ohlcvs, 'l', [])
|
705
|
+
close = self.safe_list(ohlcvs, 'c', [])
|
706
|
+
volume = self.safe_list(ohlcvs, 'v', [])
|
628
707
|
for i in range(0, len(timestamp)):
|
629
|
-
ohlcv = {
|
630
|
-
'timestamp': self.
|
631
|
-
'high': self.
|
632
|
-
'open': self.
|
633
|
-
'low': self.
|
634
|
-
'close': self.
|
635
|
-
'volume': self.
|
708
|
+
ohlcv: dict = {
|
709
|
+
'timestamp': self.safe_integer(timestamp, i),
|
710
|
+
'high': self.safe_number(high, i),
|
711
|
+
'open': self.safe_number(open, i),
|
712
|
+
'low': self.safe_number(low, i),
|
713
|
+
'close': self.safe_number(close, i),
|
714
|
+
'volume': self.safe_number(volume, i),
|
636
715
|
}
|
637
716
|
results.append(self.parse_ohlcv(ohlcv, market))
|
638
717
|
sorted = self.sort_by(results, 0)
|
639
|
-
return self.filter_by_since_limit(sorted, since, limit, 0)
|
718
|
+
return self.filter_by_since_limit(sorted, since, limit, 0, tail)
|
640
719
|
|
641
720
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
642
721
|
"""
|
643
722
|
create a trade order
|
644
|
-
|
723
|
+
|
724
|
+
https://docs.btcturk.com/private-endpoints/submit-order
|
725
|
+
|
645
726
|
:param str symbol: unified symbol of the market to create an order in
|
646
727
|
:param str type: 'market' or 'limit'
|
647
728
|
:param str side: 'buy' or 'sell'
|
648
729
|
:param float amount: how much of currency you want to trade in units of base currency
|
649
|
-
:param float [price]: the price at which the order is to be
|
730
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
650
731
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
651
732
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
652
733
|
"""
|
653
734
|
self.load_markets()
|
654
735
|
market = self.market(symbol)
|
655
|
-
request = {
|
736
|
+
request: dict = {
|
656
737
|
'orderType': side,
|
657
738
|
'orderMethod': type,
|
658
739
|
'pairSymbol': market['id'],
|
@@ -665,27 +746,41 @@ class btcturk(Exchange, ImplicitAPI):
|
|
665
746
|
elif not ('newClientOrderId' in params):
|
666
747
|
request['newClientOrderId'] = self.uuid()
|
667
748
|
response = self.privatePostOrder(self.extend(request, params))
|
668
|
-
data = self.
|
749
|
+
data = self.safe_dict(response, 'data')
|
669
750
|
return self.parse_order(data, market)
|
670
751
|
|
671
752
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
672
753
|
"""
|
673
754
|
cancels an open order
|
674
|
-
|
755
|
+
|
756
|
+
https://docs.btcturk.com/private-endpoints/cancel-order
|
757
|
+
|
675
758
|
:param str id: order id
|
676
759
|
:param str symbol: not used by btcturk cancelOrder()
|
677
760
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
678
761
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
679
762
|
"""
|
680
|
-
request = {
|
763
|
+
request: dict = {
|
681
764
|
'id': id,
|
682
765
|
}
|
683
|
-
|
766
|
+
response = self.privateDeleteOrder(self.extend(request, params))
|
767
|
+
#
|
768
|
+
# {
|
769
|
+
# "success": True,
|
770
|
+
# "message": "SUCCESS",
|
771
|
+
# "code": 0
|
772
|
+
# }
|
773
|
+
#
|
774
|
+
return self.safe_order({
|
775
|
+
'info': response,
|
776
|
+
})
|
684
777
|
|
685
778
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
686
779
|
"""
|
687
780
|
fetch all unfilled currently open orders
|
688
|
-
|
781
|
+
|
782
|
+
https://docs.btcturk.com/private-endpoints/open-orders
|
783
|
+
|
689
784
|
:param str symbol: unified market symbol
|
690
785
|
:param int [since]: the earliest time in ms to fetch open orders for
|
691
786
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
@@ -693,21 +788,23 @@ class btcturk(Exchange, ImplicitAPI):
|
|
693
788
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
694
789
|
"""
|
695
790
|
self.load_markets()
|
696
|
-
request = {}
|
791
|
+
request: dict = {}
|
697
792
|
market = None
|
698
793
|
if symbol is not None:
|
699
794
|
market = self.market(symbol)
|
700
795
|
request['pairSymbol'] = market['id']
|
701
796
|
response = self.privateGetOpenOrders(self.extend(request, params))
|
702
|
-
data = self.
|
703
|
-
bids = self.
|
704
|
-
asks = self.
|
797
|
+
data = self.safe_dict(response, 'data', {})
|
798
|
+
bids = self.safe_list(data, 'bids', [])
|
799
|
+
asks = self.safe_list(data, 'asks', [])
|
705
800
|
return self.parse_orders(self.array_concat(bids, asks), market, since, limit)
|
706
801
|
|
707
802
|
def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
708
803
|
"""
|
709
804
|
fetches information on multiple orders made by the user
|
710
|
-
|
805
|
+
|
806
|
+
https://docs.btcturk.com/private-endpoints/all-orders
|
807
|
+
|
711
808
|
:param str symbol: unified market symbol of the market orders were made in
|
712
809
|
:param int [since]: the earliest time in ms to fetch orders for
|
713
810
|
:param int [limit]: the maximum number of order structures to retrieve
|
@@ -716,7 +813,7 @@ class btcturk(Exchange, ImplicitAPI):
|
|
716
813
|
"""
|
717
814
|
self.load_markets()
|
718
815
|
market = self.market(symbol)
|
719
|
-
request = {
|
816
|
+
request: dict = {
|
720
817
|
'pairSymbol': market['id'],
|
721
818
|
}
|
722
819
|
if limit is not None:
|
@@ -745,11 +842,11 @@ class btcturk(Exchange, ImplicitAPI):
|
|
745
842
|
# }
|
746
843
|
# ]
|
747
844
|
# }
|
748
|
-
data = self.
|
845
|
+
data = self.safe_list(response, 'data')
|
749
846
|
return self.parse_orders(data, market, since, limit)
|
750
847
|
|
751
|
-
def parse_order_status(self, status):
|
752
|
-
statuses = {
|
848
|
+
def parse_order_status(self, status: Str):
|
849
|
+
statuses: dict = {
|
753
850
|
'Untouched': 'open',
|
754
851
|
'Partial': 'open',
|
755
852
|
'Canceled': 'canceled',
|
@@ -757,7 +854,7 @@ class btcturk(Exchange, ImplicitAPI):
|
|
757
854
|
}
|
758
855
|
return self.safe_string(statuses, status, status)
|
759
856
|
|
760
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
857
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
761
858
|
#
|
762
859
|
# fetchOrders / fetchOpenOrders
|
763
860
|
# {
|
@@ -826,7 +923,9 @@ class btcturk(Exchange, ImplicitAPI):
|
|
826
923
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
827
924
|
"""
|
828
925
|
fetch all trades made by the user
|
829
|
-
|
926
|
+
|
927
|
+
https://docs.btcturk.com/private-endpoints/user-transactions
|
928
|
+
|
830
929
|
:param str symbol: unified market symbol
|
831
930
|
:param int [since]: the earliest time in ms to fetch trades for
|
832
931
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -859,7 +958,7 @@ class btcturk(Exchange, ImplicitAPI):
|
|
859
958
|
# "code": "0"
|
860
959
|
# }
|
861
960
|
#
|
862
|
-
data = self.
|
961
|
+
data = self.safe_list(response, 'data')
|
863
962
|
return self.parse_trades(data, market, since, limit)
|
864
963
|
|
865
964
|
def nonce(self):
|
@@ -887,7 +986,7 @@ class btcturk(Exchange, ImplicitAPI):
|
|
887
986
|
}
|
888
987
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
889
988
|
|
890
|
-
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
989
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
891
990
|
errorCode = self.safe_string(response, 'code', '0')
|
892
991
|
message = self.safe_string(response, 'message')
|
893
992
|
output = body if (message is None) else message
|