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/test/base/test_number.py
DELETED
@@ -1,411 +0,0 @@
|
|
1
|
-
import os
|
2
|
-
import sys
|
3
|
-
|
4
|
-
root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
5
|
-
sys.path.append(root)
|
6
|
-
|
7
|
-
# ----------------------------------------------------------------------------
|
8
|
-
|
9
|
-
# PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
|
10
|
-
# https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
|
11
|
-
|
12
|
-
# ----------------------------------------------------------------------------
|
13
|
-
|
14
|
-
from ccxt.base.decimal_to_precision import decimal_to_precision # noqa F401
|
15
|
-
from ccxt.base.decimal_to_precision import TRUNCATE # noqa F401
|
16
|
-
from ccxt.base.decimal_to_precision import ROUND # noqa F401
|
17
|
-
from ccxt.base.decimal_to_precision import DECIMAL_PLACES # noqa F401
|
18
|
-
from ccxt.base.decimal_to_precision import SIGNIFICANT_DIGITS # noqa F401
|
19
|
-
from ccxt.base.decimal_to_precision import TICK_SIZE # noqa F401
|
20
|
-
from ccxt.base.decimal_to_precision import PAD_WITH_ZERO # noqa F401
|
21
|
-
from ccxt.base.decimal_to_precision import NO_PADDING # noqa F401
|
22
|
-
from ccxt.base.decimal_to_precision import number_to_string # noqa F401
|
23
|
-
from ccxt.base.exchange import Exchange # noqa F401
|
24
|
-
from ccxt.base.precise import Precise # noqa F401
|
25
|
-
|
26
|
-
# eslint-disable-next-line import/newline-after-import
|
27
|
-
|
28
|
-
# ----------------------------------------------------------------------------
|
29
|
-
# number_to_string
|
30
|
-
|
31
|
-
assert number_to_string(-7.8e-7) == '-0.00000078'
|
32
|
-
assert number_to_string(7.8e-7) == '0.00000078'
|
33
|
-
assert number_to_string(-17.805e-7) == '-0.0000017805'
|
34
|
-
assert number_to_string(17.805e-7) == '0.0000017805'
|
35
|
-
assert number_to_string(-7.0005e27) == '-7000500000000000000000000000'
|
36
|
-
assert number_to_string(7.0005e27) == '7000500000000000000000000000'
|
37
|
-
assert number_to_string(-7.9e27) == '-7900000000000000000000000000'
|
38
|
-
assert number_to_string(7e27) == '7000000000000000000000000000'
|
39
|
-
assert number_to_string(7.9e27) == '7900000000000000000000000000'
|
40
|
-
assert number_to_string(-12.345) == '-12.345'
|
41
|
-
assert number_to_string(12.345) == '12.345'
|
42
|
-
assert number_to_string(0) == '0'
|
43
|
-
assert number_to_string(7.35946e21) == '7359460000000000000000'
|
44
|
-
assert number_to_string(0.00000001) == '0.00000001'
|
45
|
-
assert number_to_string(1e-7) == '0.0000001'
|
46
|
-
assert number_to_string(-1e-7) == '-0.0000001'
|
47
|
-
|
48
|
-
# ----------------------------------------------------------------------------
|
49
|
-
# testDecimalToPrecisionTruncationToNDigitsAfterDot
|
50
|
-
|
51
|
-
assert decimal_to_precision('12.3456000', TRUNCATE, 100, DECIMAL_PLACES) == '12.3456'
|
52
|
-
assert decimal_to_precision('12.3456', TRUNCATE, 100, DECIMAL_PLACES) == '12.3456'
|
53
|
-
assert decimal_to_precision('12.3456', TRUNCATE, 4, DECIMAL_PLACES) == '12.3456'
|
54
|
-
assert decimal_to_precision('12.3456', TRUNCATE, 3, DECIMAL_PLACES) == '12.345'
|
55
|
-
assert decimal_to_precision('12.3456', TRUNCATE, 2, DECIMAL_PLACES) == '12.34'
|
56
|
-
assert decimal_to_precision('12.3456', TRUNCATE, 1, DECIMAL_PLACES) == '12.3'
|
57
|
-
assert decimal_to_precision('12.3456', TRUNCATE, 0, DECIMAL_PLACES) == '12'
|
58
|
-
# ['12.3456', TRUNCATE, -1, DECIMAL_PLACES, '10'], # not yet supported
|
59
|
-
# ['123.456', TRUNCATE, -2, DECIMAL_PLACES, '120'], # not yet supported
|
60
|
-
# ['123.456', TRUNCATE, -3, DECIMAL_PLACES, '100'], # not yet supported
|
61
|
-
|
62
|
-
assert decimal_to_precision('0.0000001', TRUNCATE, 8, DECIMAL_PLACES) == '0.0000001'
|
63
|
-
assert decimal_to_precision('0.00000001', TRUNCATE, 8, DECIMAL_PLACES) == '0.00000001'
|
64
|
-
|
65
|
-
assert decimal_to_precision('0.000000000', TRUNCATE, 9, DECIMAL_PLACES, PAD_WITH_ZERO) == '0.000000000'
|
66
|
-
assert decimal_to_precision('0.000000001', TRUNCATE, 9, DECIMAL_PLACES, PAD_WITH_ZERO) == '0.000000001'
|
67
|
-
|
68
|
-
assert decimal_to_precision('12.3456', TRUNCATE, -1, DECIMAL_PLACES) == '10'
|
69
|
-
assert decimal_to_precision('123.456', TRUNCATE, -1, DECIMAL_PLACES) == '120'
|
70
|
-
assert decimal_to_precision('123.456', TRUNCATE, -2, DECIMAL_PLACES) == '100'
|
71
|
-
assert decimal_to_precision('9.99999', TRUNCATE, -1, DECIMAL_PLACES) == '0'
|
72
|
-
assert decimal_to_precision('99.9999', TRUNCATE, -1, DECIMAL_PLACES) == '90'
|
73
|
-
assert decimal_to_precision('99.9999', TRUNCATE, -2, DECIMAL_PLACES) == '0'
|
74
|
-
|
75
|
-
assert decimal_to_precision('0', TRUNCATE, 0, DECIMAL_PLACES) == '0'
|
76
|
-
assert decimal_to_precision('-0.9', TRUNCATE, 0, DECIMAL_PLACES) == '0'
|
77
|
-
|
78
|
-
# ----------------------------------------------------------------------------
|
79
|
-
# testDecimalToPrecisionTruncationToNSignificantDigits
|
80
|
-
|
81
|
-
assert decimal_to_precision('0.000123456700', TRUNCATE, 100, SIGNIFICANT_DIGITS) == '0.0001234567'
|
82
|
-
assert decimal_to_precision('0.0001234567', TRUNCATE, 100, SIGNIFICANT_DIGITS) == '0.0001234567'
|
83
|
-
assert decimal_to_precision('0.0001234567', TRUNCATE, 7, SIGNIFICANT_DIGITS) == '0.0001234567'
|
84
|
-
|
85
|
-
assert decimal_to_precision('0.000123456', TRUNCATE, 6, SIGNIFICANT_DIGITS) == '0.000123456'
|
86
|
-
assert decimal_to_precision('0.000123456', TRUNCATE, 5, SIGNIFICANT_DIGITS) == '0.00012345'
|
87
|
-
assert decimal_to_precision('0.000123456', TRUNCATE, 2, SIGNIFICANT_DIGITS) == '0.00012'
|
88
|
-
assert decimal_to_precision('0.000123456', TRUNCATE, 1, SIGNIFICANT_DIGITS) == '0.0001'
|
89
|
-
|
90
|
-
assert decimal_to_precision('123.0000987654', TRUNCATE, 10, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123.0000987'
|
91
|
-
assert decimal_to_precision('123.0000987654', TRUNCATE, 8, SIGNIFICANT_DIGITS) == '123.00009'
|
92
|
-
assert decimal_to_precision('123.0000987654', TRUNCATE, 7, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123.0000'
|
93
|
-
assert decimal_to_precision('123.0000987654', TRUNCATE, 6, SIGNIFICANT_DIGITS) == '123'
|
94
|
-
assert decimal_to_precision('123.0000987654', TRUNCATE, 5, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123.00'
|
95
|
-
assert decimal_to_precision('123.0000987654', TRUNCATE, 4, SIGNIFICANT_DIGITS) == '123'
|
96
|
-
assert decimal_to_precision('123.0000987654', TRUNCATE, 4, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123.0'
|
97
|
-
assert decimal_to_precision('123.0000987654', TRUNCATE, 3, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123'
|
98
|
-
assert decimal_to_precision('123.0000987654', TRUNCATE, 2, SIGNIFICANT_DIGITS) == '120'
|
99
|
-
assert decimal_to_precision('123.0000987654', TRUNCATE, 1, SIGNIFICANT_DIGITS) == '100'
|
100
|
-
assert decimal_to_precision('123.0000987654', TRUNCATE, 1, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '100'
|
101
|
-
|
102
|
-
assert decimal_to_precision('1234', TRUNCATE, 5, SIGNIFICANT_DIGITS) == '1234'
|
103
|
-
assert decimal_to_precision('1234', TRUNCATE, 5, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '1234.0'
|
104
|
-
assert decimal_to_precision('1234', TRUNCATE, 4, SIGNIFICANT_DIGITS) == '1234'
|
105
|
-
assert decimal_to_precision('1234', TRUNCATE, 4, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '1234'
|
106
|
-
assert decimal_to_precision('1234.69', TRUNCATE, 0, SIGNIFICANT_DIGITS) == '0'
|
107
|
-
assert decimal_to_precision('1234.69', TRUNCATE, 0, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '0'
|
108
|
-
|
109
|
-
# ----------------------------------------------------------------------------
|
110
|
-
# testDecimalToPrecisionRoundingToNDigitsAfterDot
|
111
|
-
|
112
|
-
assert decimal_to_precision('12.3456000', ROUND, 100, DECIMAL_PLACES) == '12.3456'
|
113
|
-
assert decimal_to_precision('12.3456', ROUND, 100, DECIMAL_PLACES) == '12.3456'
|
114
|
-
assert decimal_to_precision('12.3456', ROUND, 4, DECIMAL_PLACES) == '12.3456'
|
115
|
-
assert decimal_to_precision('12.3456', ROUND, 3, DECIMAL_PLACES) == '12.346'
|
116
|
-
assert decimal_to_precision('12.3456', ROUND, 2, DECIMAL_PLACES) == '12.35'
|
117
|
-
assert decimal_to_precision('12.3456', ROUND, 1, DECIMAL_PLACES) == '12.3'
|
118
|
-
assert decimal_to_precision('12.3456', ROUND, 0, DECIMAL_PLACES) == '12'
|
119
|
-
|
120
|
-
# todo:
|
121
|
-
# ['9.999', ROUND, 3, DECIMAL_PLACES, NO_PADDING, '9.999'],
|
122
|
-
# ['9.999', ROUND, 2, DECIMAL_PLACES, NO_PADDING, '10'],
|
123
|
-
# ['9.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO, '10.00'],
|
124
|
-
# ['99.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO, '100.00'],
|
125
|
-
# ['-99.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO, '-100.00'],
|
126
|
-
|
127
|
-
# ['12.3456', ROUND, -1, DECIMAL_PLACES, NO_PADDING, '10'], # not yet supported
|
128
|
-
# ['123.456', ROUND, -1, DECIMAL_PLACES, NO_PADDING, '120'], # not yet supported
|
129
|
-
# ['123.456', ROUND, -2, DECIMAL_PLACES, NO_PADDING, '100'], # not yet supported
|
130
|
-
|
131
|
-
# a problematic case in PHP
|
132
|
-
assert decimal_to_precision('10000', ROUND, 6, DECIMAL_PLACES) == '10000'
|
133
|
-
assert decimal_to_precision('0.00003186', ROUND, 8, DECIMAL_PLACES) == '0.00003186'
|
134
|
-
|
135
|
-
assert decimal_to_precision('12.3456', ROUND, -1, DECIMAL_PLACES) == '10'
|
136
|
-
assert decimal_to_precision('123.456', ROUND, -1, DECIMAL_PLACES) == '120'
|
137
|
-
assert decimal_to_precision('123.456', ROUND, -2, DECIMAL_PLACES) == '100'
|
138
|
-
assert decimal_to_precision('9.99999', ROUND, -1, DECIMAL_PLACES) == '10'
|
139
|
-
assert decimal_to_precision('99.9999', ROUND, -1, DECIMAL_PLACES) == '100'
|
140
|
-
assert decimal_to_precision('99.9999', ROUND, -2, DECIMAL_PLACES) == '100'
|
141
|
-
|
142
|
-
assert decimal_to_precision('9.999', ROUND, 3, DECIMAL_PLACES) == '9.999'
|
143
|
-
assert decimal_to_precision('9.999', ROUND, 2, DECIMAL_PLACES) == '10'
|
144
|
-
assert decimal_to_precision('9.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO) == '10.00'
|
145
|
-
assert decimal_to_precision('99.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO) == '100.00'
|
146
|
-
assert decimal_to_precision('-99.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO) == '-100.00'
|
147
|
-
|
148
|
-
# ----------------------------------------------------------------------------
|
149
|
-
# testDecimalToPrecisionRoundingToNSignificantDigits
|
150
|
-
|
151
|
-
assert decimal_to_precision('0.000123456700', ROUND, 100, SIGNIFICANT_DIGITS) == '0.0001234567'
|
152
|
-
assert decimal_to_precision('0.0001234567', ROUND, 100, SIGNIFICANT_DIGITS) == '0.0001234567'
|
153
|
-
assert decimal_to_precision('0.0001234567', ROUND, 7, SIGNIFICANT_DIGITS) == '0.0001234567'
|
154
|
-
|
155
|
-
assert decimal_to_precision('0.000123456', ROUND, 6, SIGNIFICANT_DIGITS) == '0.000123456'
|
156
|
-
assert decimal_to_precision('0.000123456', ROUND, 5, SIGNIFICANT_DIGITS) == '0.00012346'
|
157
|
-
assert decimal_to_precision('0.000123456', ROUND, 4, SIGNIFICANT_DIGITS) == '0.0001235'
|
158
|
-
assert decimal_to_precision('0.00012', ROUND, 2, SIGNIFICANT_DIGITS) == '0.00012'
|
159
|
-
assert decimal_to_precision('0.0001', ROUND, 1, SIGNIFICANT_DIGITS) == '0.0001'
|
160
|
-
|
161
|
-
assert decimal_to_precision('123.0000987654', ROUND, 7, SIGNIFICANT_DIGITS) == '123.0001'
|
162
|
-
assert decimal_to_precision('123.0000987654', ROUND, 6, SIGNIFICANT_DIGITS) == '123'
|
163
|
-
|
164
|
-
assert decimal_to_precision('0.00098765', ROUND, 2, SIGNIFICANT_DIGITS) == '0.00099'
|
165
|
-
assert decimal_to_precision('0.00098765', ROUND, 2, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '0.00099'
|
166
|
-
|
167
|
-
assert decimal_to_precision('0.00098765', ROUND, 1, SIGNIFICANT_DIGITS) == '0.001'
|
168
|
-
assert decimal_to_precision('0.00098765', ROUND, 10, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '0.0009876500000'
|
169
|
-
|
170
|
-
assert decimal_to_precision('0.098765', ROUND, 1, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '0.1'
|
171
|
-
|
172
|
-
assert decimal_to_precision('0', ROUND, 0, SIGNIFICANT_DIGITS) == '0'
|
173
|
-
assert decimal_to_precision('-0.123', ROUND, 0, SIGNIFICANT_DIGITS) == '0'
|
174
|
-
|
175
|
-
assert decimal_to_precision('0.00000044', ROUND, 5, SIGNIFICANT_DIGITS) == '0.00000044'
|
176
|
-
|
177
|
-
# ----------------------------------------------------------------------------
|
178
|
-
# testDecimalToPrecisionRoundingToTickSize
|
179
|
-
|
180
|
-
assert decimal_to_precision('0.000123456700', ROUND, 0.00012, TICK_SIZE) == '0.00012'
|
181
|
-
assert decimal_to_precision('0.0001234567', ROUND, 0.00013, TICK_SIZE) == '0.00013'
|
182
|
-
assert decimal_to_precision('0.0001234567', TRUNCATE, 0.00013, TICK_SIZE) == '0'
|
183
|
-
assert decimal_to_precision('101.000123456700', ROUND, 100, TICK_SIZE) == '100'
|
184
|
-
assert decimal_to_precision('0.000123456700', ROUND, 100, TICK_SIZE) == '0'
|
185
|
-
assert decimal_to_precision('165', TRUNCATE, 110, TICK_SIZE) == '110'
|
186
|
-
assert decimal_to_precision('3210', TRUNCATE, 1110, TICK_SIZE) == '2220'
|
187
|
-
assert decimal_to_precision('165', ROUND, 110, TICK_SIZE) == '220'
|
188
|
-
assert decimal_to_precision('0.000123456789', ROUND, 0.00000012, TICK_SIZE) == '0.00012348'
|
189
|
-
assert decimal_to_precision('0.000123456789', TRUNCATE, 0.00000012, TICK_SIZE) == '0.00012336'
|
190
|
-
assert decimal_to_precision('0.000273398', ROUND, 1e-7, TICK_SIZE) == '0.0002734'
|
191
|
-
|
192
|
-
assert decimal_to_precision('0.00005714', TRUNCATE, 0.00000001, TICK_SIZE) == '0.00005714'
|
193
|
-
# self line causes problems in JS, fix with Precise
|
194
|
-
# assert decimal_to_precision('0.0000571495257361', TRUNCATE, 0.00000001, TICK_SIZE) == '0.00005714'
|
195
|
-
|
196
|
-
assert decimal_to_precision('0.01', ROUND, 0.0001, TICK_SIZE, PAD_WITH_ZERO) == '0.0100'
|
197
|
-
assert decimal_to_precision('0.01', TRUNCATE, 0.0001, TICK_SIZE, PAD_WITH_ZERO) == '0.0100'
|
198
|
-
|
199
|
-
assert decimal_to_precision('-0.000123456789', ROUND, 0.00000012, TICK_SIZE) == '-0.00012348'
|
200
|
-
assert decimal_to_precision('-0.000123456789', TRUNCATE, 0.00000012, TICK_SIZE) == '-0.00012336'
|
201
|
-
assert decimal_to_precision('-165', TRUNCATE, 110, TICK_SIZE) == '-110'
|
202
|
-
assert decimal_to_precision('-165', ROUND, 110, TICK_SIZE) == '-220'
|
203
|
-
assert decimal_to_precision('-1650', TRUNCATE, 1100, TICK_SIZE) == '-1100'
|
204
|
-
assert decimal_to_precision('-1650', ROUND, 1100, TICK_SIZE) == '-2200'
|
205
|
-
|
206
|
-
assert decimal_to_precision('0.0006', TRUNCATE, 0.0001, TICK_SIZE) == '0.0006'
|
207
|
-
assert decimal_to_precision('-0.0006', TRUNCATE, 0.0001, TICK_SIZE) == '-0.0006'
|
208
|
-
assert decimal_to_precision('0.6', TRUNCATE, 0.2, TICK_SIZE) == '0.6'
|
209
|
-
assert decimal_to_precision('-0.6', TRUNCATE, 0.2, TICK_SIZE) == '-0.6'
|
210
|
-
assert decimal_to_precision('1.2', ROUND, 0.4, TICK_SIZE) == '1.2'
|
211
|
-
assert decimal_to_precision('-1.2', ROUND, 0.4, TICK_SIZE) == '-1.2'
|
212
|
-
assert decimal_to_precision('1.2', ROUND, 0.02, TICK_SIZE) == '1.2'
|
213
|
-
assert decimal_to_precision('-1.2', ROUND, 0.02, TICK_SIZE) == '-1.2'
|
214
|
-
assert decimal_to_precision('44', ROUND, 4.4, TICK_SIZE) == '44'
|
215
|
-
assert decimal_to_precision('-44', ROUND, 4.4, TICK_SIZE) == '-44'
|
216
|
-
assert decimal_to_precision('44.00000001', ROUND, 4.4, TICK_SIZE) == '44'
|
217
|
-
assert decimal_to_precision('-44.00000001', ROUND, 4.4, TICK_SIZE) == '-44'
|
218
|
-
|
219
|
-
# https://github.com/ccxt/ccxt/issues/6731
|
220
|
-
assert decimal_to_precision('20', TRUNCATE, 0.00000001, TICK_SIZE) == '20'
|
221
|
-
|
222
|
-
# ----------------------------------------------------------------------------
|
223
|
-
# testDecimalToPrecisionNegativeNumbers
|
224
|
-
|
225
|
-
assert decimal_to_precision('-0.123456', TRUNCATE, 5, DECIMAL_PLACES) == '-0.12345'
|
226
|
-
assert decimal_to_precision('-0.123456', ROUND, 5, DECIMAL_PLACES) == '-0.12346'
|
227
|
-
|
228
|
-
# ----------------------------------------------------------------------------
|
229
|
-
# decimal_to_precision: without dot / trailing dot
|
230
|
-
|
231
|
-
assert decimal_to_precision('123', TRUNCATE, 0) == '123'
|
232
|
-
|
233
|
-
assert decimal_to_precision('123', TRUNCATE, 5, DECIMAL_PLACES) == '123'
|
234
|
-
assert decimal_to_precision('123', TRUNCATE, 5, DECIMAL_PLACES, PAD_WITH_ZERO) == '123.00000'
|
235
|
-
|
236
|
-
assert decimal_to_precision('123.', TRUNCATE, 0, DECIMAL_PLACES) == '123'
|
237
|
-
assert decimal_to_precision('123.', TRUNCATE, 5, DECIMAL_PLACES, PAD_WITH_ZERO) == '123.00000'
|
238
|
-
|
239
|
-
assert decimal_to_precision('0.', TRUNCATE, 0) == '0'
|
240
|
-
assert decimal_to_precision('0.', TRUNCATE, 5, DECIMAL_PLACES, PAD_WITH_ZERO) == '0.00000'
|
241
|
-
|
242
|
-
# ----------------------------------------------------------------------------
|
243
|
-
# decimal_to_precision: rounding for equidistant digits
|
244
|
-
|
245
|
-
assert decimal_to_precision('1.44', ROUND, 1, DECIMAL_PLACES) == '1.4'
|
246
|
-
assert decimal_to_precision('1.45', ROUND, 1, DECIMAL_PLACES) == '1.5'
|
247
|
-
assert decimal_to_precision('1.45', ROUND, 0, DECIMAL_PLACES) == '1' # not 2
|
248
|
-
|
249
|
-
# ----------------------------------------------------------------------------
|
250
|
-
# negative precision only implemented so far in python
|
251
|
-
# pretty useless for decimal applications |x| < 5 == 0
|
252
|
-
# NO_PADDING and PAD_WITH_ZERO are ignored
|
253
|
-
|
254
|
-
assert decimal_to_precision('5', ROUND, -1, DECIMAL_PLACES) == '10'
|
255
|
-
assert decimal_to_precision('4.999', ROUND, -1, DECIMAL_PLACES) == '0'
|
256
|
-
assert decimal_to_precision('0.0431531423', ROUND, -1, DECIMAL_PLACES) == '0'
|
257
|
-
assert decimal_to_precision('-69.3', ROUND, -1, DECIMAL_PLACES) == '-70'
|
258
|
-
assert decimal_to_precision('5001', ROUND, -4, DECIMAL_PLACES) == '10000'
|
259
|
-
assert decimal_to_precision('4999.999', ROUND, -4, DECIMAL_PLACES) == '0'
|
260
|
-
|
261
|
-
assert decimal_to_precision('69.3', TRUNCATE, -2, DECIMAL_PLACES) == '0'
|
262
|
-
assert decimal_to_precision('-69.3', TRUNCATE, -2, DECIMAL_PLACES) == '0'
|
263
|
-
assert decimal_to_precision('69.3', TRUNCATE, -1, SIGNIFICANT_DIGITS) == '60'
|
264
|
-
assert decimal_to_precision('-69.3', TRUNCATE, -1, SIGNIFICANT_DIGITS) == '-60'
|
265
|
-
assert decimal_to_precision('69.3', TRUNCATE, -2, SIGNIFICANT_DIGITS) == '0'
|
266
|
-
assert decimal_to_precision('1602000000000000000000', TRUNCATE, 3, SIGNIFICANT_DIGITS) == '1600000000000000000000'
|
267
|
-
|
268
|
-
# ----------------------------------------------------------------------------
|
269
|
-
# decimal_to_precision: stringified precision
|
270
|
-
assert decimal_to_precision('-0.000123456789', ROUND, '0.00000012', TICK_SIZE) == '-0.00012348'
|
271
|
-
assert decimal_to_precision('-0.000123456789', TRUNCATE, '0.00000012', TICK_SIZE) == '-0.00012336'
|
272
|
-
assert decimal_to_precision('-165', TRUNCATE, '110', TICK_SIZE) == '-110'
|
273
|
-
assert decimal_to_precision('-165', ROUND, '110', TICK_SIZE) == '-220'
|
274
|
-
|
275
|
-
# ----------------------------------------------------------------------------
|
276
|
-
# testDecimalToPrecisionErrorHandling(todo)
|
277
|
-
#
|
278
|
-
# throws(() =>
|
279
|
-
# decimal_to_precision('123456.789', TRUNCATE, -2, DECIMAL_PLACES),
|
280
|
-
# 'negative precision is not yet supported')
|
281
|
-
#
|
282
|
-
# throws(() =>
|
283
|
-
# decimal_to_precision('foo'),
|
284
|
-
# "invalid number(contains an illegal character 'f')")
|
285
|
-
#
|
286
|
-
# throws(() =>
|
287
|
-
# decimal_to_precision('0.01', TRUNCATE, -1, TICK_SIZE),
|
288
|
-
# "TICK_SIZE cant be used with negative numPrecisionDigits")
|
289
|
-
|
290
|
-
# ----------------------------------------------------------------------------
|
291
|
-
|
292
|
-
w = '-1.123e-6'
|
293
|
-
x = '0.00000002'
|
294
|
-
y = '69696900000'
|
295
|
-
z = '0'
|
296
|
-
a = '1e8'
|
297
|
-
|
298
|
-
assert Precise.string_mul(x, y) == '1393.938'
|
299
|
-
assert Precise.string_mul(y, x) == '1393.938'
|
300
|
-
assert Precise.string_add(x, y) == '69696900000.00000002'
|
301
|
-
assert Precise.string_add(y, x) == '69696900000.00000002'
|
302
|
-
assert Precise.string_sub(x, y) == '-69696899999.99999998'
|
303
|
-
assert Precise.string_sub(y, x) == '69696899999.99999998'
|
304
|
-
assert Precise.string_div(x, y, 1) == '0'
|
305
|
-
assert Precise.string_div(x, y) == '0'
|
306
|
-
assert Precise.string_div(x, y, 19) == '0.0000000000000000002'
|
307
|
-
assert Precise.string_div(x, y, 20) == '0.00000000000000000028'
|
308
|
-
assert Precise.string_div(x, y, 21) == '0.000000000000000000286'
|
309
|
-
assert Precise.string_div(x, y, 22) == '0.0000000000000000002869'
|
310
|
-
assert Precise.string_div(y, x) == '3484845000000000000'
|
311
|
-
|
312
|
-
assert Precise.string_mul(x, w) == '-0.00000000000002246'
|
313
|
-
assert Precise.string_mul(w, x) == '-0.00000000000002246'
|
314
|
-
assert Precise.string_add(x, w) == '-0.000001103'
|
315
|
-
assert Precise.string_add(w, x) == '-0.000001103'
|
316
|
-
assert Precise.string_sub(x, w) == '0.000001143'
|
317
|
-
assert Precise.string_sub(w, x) == '-0.000001143'
|
318
|
-
assert Precise.string_div(x, w) == '-0.017809439002671415'
|
319
|
-
assert Precise.string_div(w, x) == '-56.15'
|
320
|
-
|
321
|
-
assert Precise.string_mul(z, w) == '0'
|
322
|
-
assert Precise.string_mul(z, x) == '0'
|
323
|
-
assert Precise.string_mul(z, y) == '0'
|
324
|
-
assert Precise.string_mul(w, z) == '0'
|
325
|
-
assert Precise.string_mul(x, z) == '0'
|
326
|
-
assert Precise.string_mul(y, z) == '0'
|
327
|
-
assert Precise.string_add(z, w) == '-0.000001123'
|
328
|
-
assert Precise.string_add(z, x) == '0.00000002'
|
329
|
-
assert Precise.string_add(z, y) == '69696900000'
|
330
|
-
assert Precise.string_add(w, z) == '-0.000001123'
|
331
|
-
assert Precise.string_add(x, z) == '0.00000002'
|
332
|
-
assert Precise.string_add(y, z) == '69696900000'
|
333
|
-
|
334
|
-
assert Precise.string_mul(x, a) == '2'
|
335
|
-
assert Precise.string_mul(a, x) == '2'
|
336
|
-
assert Precise.string_mul(y, a) == '6969690000000000000'
|
337
|
-
assert Precise.string_mul(a, y) == '6969690000000000000'
|
338
|
-
assert Precise.string_div(y, a) == '696.969'
|
339
|
-
assert Precise.string_div(y, a, -1) == '690'
|
340
|
-
assert Precise.string_div(y, a, 0) == '696'
|
341
|
-
assert Precise.string_div(y, a, 1) == '696.9'
|
342
|
-
assert Precise.string_div(y, a, 2) == '696.96'
|
343
|
-
assert Precise.string_div(a, y) == '0.001434784043479695'
|
344
|
-
|
345
|
-
assert Precise.string_abs('0') == '0'
|
346
|
-
assert Precise.string_abs('-0') == '0'
|
347
|
-
assert Precise.string_abs('-500.1') == '500.1'
|
348
|
-
assert Precise.string_abs('213') == '213'
|
349
|
-
|
350
|
-
assert Precise.string_neg('0') == '0'
|
351
|
-
assert Precise.string_neg('-0') == '0'
|
352
|
-
assert Precise.string_neg('-500.1') == '500.1'
|
353
|
-
assert Precise.string_neg('213') == '-213'
|
354
|
-
|
355
|
-
assert Precise.string_mod('57.123', '10') == '7.123'
|
356
|
-
assert Precise.string_mod('18', '6') == '0'
|
357
|
-
assert Precise.string_mod('10.1', '0.5') == '0.1'
|
358
|
-
assert Precise.string_mod('10000000', '5555') == '1000'
|
359
|
-
assert Precise.string_mod('5550', '120') == '30'
|
360
|
-
|
361
|
-
assert Precise.string_equals('1.0000', '1')
|
362
|
-
assert Precise.string_equals('-0.0', '0')
|
363
|
-
assert Precise.string_equals('-0.0', '0.0')
|
364
|
-
assert Precise.string_equals('5.534000', '5.5340')
|
365
|
-
|
366
|
-
assert Precise.string_min('1.0000', '2') == '1'
|
367
|
-
assert Precise.string_min('2', '1.2345') == '1.2345'
|
368
|
-
assert Precise.string_min('3.1415', '-2') == '-2'
|
369
|
-
assert Precise.string_min('-3.1415', '-2') == '-3.1415'
|
370
|
-
assert Precise.string_min('0.000', '-0.0') == '0'
|
371
|
-
|
372
|
-
assert Precise.string_max('1.0000', '2') == '2'
|
373
|
-
assert Precise.string_max('2', '1.2345') == '2'
|
374
|
-
assert Precise.string_max('3.1415', '-2') == '3.1415'
|
375
|
-
assert Precise.string_max('-3.1415', '-2') == '-2'
|
376
|
-
assert Precise.string_max('0.000', '-0.0') == '0'
|
377
|
-
|
378
|
-
assert not Precise.string_gt('1.0000', '2')
|
379
|
-
assert Precise.string_gt('2', '1.2345')
|
380
|
-
assert Precise.string_gt('3.1415', '-2')
|
381
|
-
assert not Precise.string_gt('-3.1415', '-2')
|
382
|
-
assert not Precise.string_gt('3.1415', '3.1415')
|
383
|
-
assert Precise.string_gt('3.14150000000000000000001', '3.1415')
|
384
|
-
|
385
|
-
assert not Precise.string_ge('1.0000', '2')
|
386
|
-
assert Precise.string_ge('2', '1.2345')
|
387
|
-
assert Precise.string_ge('3.1415', '-2')
|
388
|
-
assert not Precise.string_ge('-3.1415', '-2')
|
389
|
-
assert Precise.string_ge('3.1415', '3.1415')
|
390
|
-
assert Precise.string_ge('3.14150000000000000000001', '3.1415')
|
391
|
-
|
392
|
-
assert Precise.string_lt('1.0000', '2')
|
393
|
-
assert not Precise.string_lt('2', '1.2345')
|
394
|
-
assert not Precise.string_lt('3.1415', '-2')
|
395
|
-
assert Precise.string_lt('-3.1415', '-2')
|
396
|
-
assert not Precise.string_lt('3.1415', '3.1415')
|
397
|
-
assert Precise.string_lt('3.1415', '3.14150000000000000000001')
|
398
|
-
|
399
|
-
assert Precise.string_le('1.0000', '2')
|
400
|
-
assert not Precise.string_le('2', '1.2345')
|
401
|
-
assert not Precise.string_le('3.1415', '-2')
|
402
|
-
assert Precise.string_le('-3.1415', '-2')
|
403
|
-
assert Precise.string_le('3.1415', '3.1415')
|
404
|
-
assert Precise.string_le('3.1415', '3.14150000000000000000001')
|
405
|
-
|
406
|
-
# todo
|
407
|
-
# $self->assertSame(0, Exchange::sum())
|
408
|
-
# $self->assertSame(2, Exchange::sum(2))
|
409
|
-
# $self->assertSame(432, Exchange::sum(2, 30, 400))
|
410
|
-
# eslint-disable-next-line eol-last
|
411
|
-
# $self->assertSame(439, Exchange::sum(2, null, [88], 30, '7', 400, null))
|
ccxt/test/base/test_ohlcv.py
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
import os
|
2
|
-
import sys
|
3
|
-
|
4
|
-
root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
5
|
-
sys.path.append(root)
|
6
|
-
|
7
|
-
# ----------------------------------------------------------------------------
|
8
|
-
|
9
|
-
# PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
|
10
|
-
# https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
|
11
|
-
|
12
|
-
# ----------------------------------------------------------------------------
|
13
|
-
# -*- coding: utf-8 -*-
|
14
|
-
|
15
|
-
from ccxt.test.base import test_shared_methods # noqa E402
|
16
|
-
|
17
|
-
def test_ohlcv(exchange, skipped_properties, method, entry, symbol, now):
|
18
|
-
format = [1638230400000, exchange.parse_number('0.123'), exchange.parse_number('0.125'), exchange.parse_number('0.121'), exchange.parse_number('0.122'), exchange.parse_number('123.456')]
|
19
|
-
empty_not_allowed_for = [0, 1, 2, 3, 4, 5]
|
20
|
-
test_shared_methods.assert_structure(exchange, skipped_properties, method, entry, format, empty_not_allowed_for)
|
21
|
-
test_shared_methods.assert_timestamp_and_datetime(exchange, skipped_properties, method, entry, now, 0)
|
22
|
-
log_text = test_shared_methods.log_template(exchange, method, entry)
|
23
|
-
#
|
24
|
-
length = len(entry)
|
25
|
-
assert length >= 6, 'ohlcv array length should be >= 6;' + log_text
|
26
|
-
high = exchange.safe_string(entry, 2)
|
27
|
-
low = exchange.safe_string(entry, 3)
|
28
|
-
test_shared_methods.assert_less_or_equal(exchange, skipped_properties, method, entry, '1', high)
|
29
|
-
test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, '1', low)
|
30
|
-
test_shared_methods.assert_less_or_equal(exchange, skipped_properties, method, entry, '4', high)
|
31
|
-
test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, '4', low)
|
32
|
-
assert (symbol is None) or (isinstance(symbol, str)), 'symbol ' + symbol + ' is incorrect' + log_text # todo: check with standard symbol check
|
@@ -1,32 +0,0 @@
|
|
1
|
-
import os
|
2
|
-
import sys
|
3
|
-
|
4
|
-
root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
5
|
-
sys.path.append(root)
|
6
|
-
|
7
|
-
# ----------------------------------------------------------------------------
|
8
|
-
|
9
|
-
# PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
|
10
|
-
# https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
|
11
|
-
|
12
|
-
# ----------------------------------------------------------------------------
|
13
|
-
# -*- coding: utf-8 -*-
|
14
|
-
|
15
|
-
from ccxt.test.base import test_shared_methods # noqa E402
|
16
|
-
|
17
|
-
def test_open_interest(exchange, skipped_properties, method, entry):
|
18
|
-
format = {
|
19
|
-
'symbol': 'BTC/USDT',
|
20
|
-
'openInterestAmount': exchange.parse_number('3544581864.598'),
|
21
|
-
'openInterestValue': exchange.parse_number('3544581864.598'),
|
22
|
-
'timestamp': 1649373600000,
|
23
|
-
'datetime': '2022-04-07T23:20:00.000Z',
|
24
|
-
'info': {},
|
25
|
-
}
|
26
|
-
empty_allowed_for = ['symbol', 'timestamp', 'openInterestAmount', 'openInterestValue', 'datetime']
|
27
|
-
test_shared_methods.assert_structure(exchange, skipped_properties, method, entry, format, empty_allowed_for)
|
28
|
-
test_shared_methods.assert_symbol(exchange, skipped_properties, method, entry, 'symbol')
|
29
|
-
test_shared_methods.assert_timestamp_and_datetime(exchange, skipped_properties, method, entry)
|
30
|
-
#
|
31
|
-
test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'openInterestAmount', '0')
|
32
|
-
test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'openInterestValue', '0')
|
ccxt/test/base/test_order.py
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
import os
|
2
|
-
import sys
|
3
|
-
|
4
|
-
root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
5
|
-
sys.path.append(root)
|
6
|
-
|
7
|
-
# ----------------------------------------------------------------------------
|
8
|
-
|
9
|
-
# PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
|
10
|
-
# https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
|
11
|
-
|
12
|
-
# ----------------------------------------------------------------------------
|
13
|
-
# -*- coding: utf-8 -*-
|
14
|
-
|
15
|
-
from ccxt.test.base import test_shared_methods # noqa E402
|
16
|
-
from ccxt.test.base.test_trade import test_trade # noqa E402
|
17
|
-
|
18
|
-
def test_order(exchange, skipped_properties, method, entry, symbol, now):
|
19
|
-
format = {
|
20
|
-
'info': {},
|
21
|
-
'id': '123',
|
22
|
-
'clientOrderId': '1234',
|
23
|
-
'timestamp': 1649373600000,
|
24
|
-
'datetime': '2022-04-07T23:20:00.000Z',
|
25
|
-
'lastTradeTimestamp': 1649373610000,
|
26
|
-
'symbol': 'XYZ/USDT',
|
27
|
-
'type': 'limit',
|
28
|
-
'timeInForce': 'GTC',
|
29
|
-
'postOnly': True,
|
30
|
-
'side': 'sell',
|
31
|
-
'price': exchange.parse_number('1.23456'),
|
32
|
-
'stopPrice': exchange.parse_number('1.1111'),
|
33
|
-
'amount': exchange.parse_number('1.23'),
|
34
|
-
'cost': exchange.parse_number('2.34'),
|
35
|
-
'average': exchange.parse_number('1.234'),
|
36
|
-
'filled': exchange.parse_number('1.23'),
|
37
|
-
'remaining': exchange.parse_number('0.123'),
|
38
|
-
'status': 'ok',
|
39
|
-
'fee': {},
|
40
|
-
'trades': [],
|
41
|
-
}
|
42
|
-
empty_allowed_for = ['clientOrderId', 'stopPrice', 'trades', 'timestamp', 'datetime', 'lastTradeTimestamp', 'average', 'type', 'timeInForce', 'postOnly', 'side', 'price', 'amount', 'cost', 'filled', 'remaining', 'status', 'fee'] # there are exchanges that return only order id, so we don't need to strictly requite all props to be set.
|
43
|
-
test_shared_methods.assert_structure(exchange, skipped_properties, method, entry, format, empty_allowed_for)
|
44
|
-
test_shared_methods.assert_timestamp_and_datetime(exchange, skipped_properties, method, entry, now)
|
45
|
-
#
|
46
|
-
test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'timeInForce', ['GTC', 'GTK', 'IOC', 'FOK', 'PO'])
|
47
|
-
test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'status', ['open', 'closed', 'canceled'])
|
48
|
-
test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'side', ['buy', 'sell'])
|
49
|
-
test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'postOnly', [True, False])
|
50
|
-
test_shared_methods.assert_symbol(exchange, skipped_properties, method, entry, 'symbol', symbol)
|
51
|
-
test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'price', '0')
|
52
|
-
test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'stopPrice', '0')
|
53
|
-
test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'cost', '0')
|
54
|
-
test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'average', '0')
|
55
|
-
test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'filled', '0')
|
56
|
-
test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'remaining', '0')
|
57
|
-
test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'amount', '0')
|
58
|
-
test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'amount', exchange.safe_string(entry, 'remaining'))
|
59
|
-
test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'amount', exchange.safe_string(entry, 'filled'))
|
60
|
-
if not ('trades' in skipped_properties):
|
61
|
-
if entry['trades'] is not None:
|
62
|
-
for i in range(0, len(entry['trades'])):
|
63
|
-
test_trade(exchange, skipped_properties, method, entry['trades'][i], symbol, now)
|
64
|
-
test_shared_methods.assert_fee_structure(exchange, skipped_properties, method, entry, 'fee')
|
@@ -1,63 +0,0 @@
|
|
1
|
-
import os
|
2
|
-
import sys
|
3
|
-
|
4
|
-
root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
5
|
-
sys.path.append(root)
|
6
|
-
|
7
|
-
# ----------------------------------------------------------------------------
|
8
|
-
|
9
|
-
# PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
|
10
|
-
# https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
|
11
|
-
|
12
|
-
# ----------------------------------------------------------------------------
|
13
|
-
# -*- coding: utf-8 -*-
|
14
|
-
|
15
|
-
from ccxt.base.precise import Precise # noqa E402
|
16
|
-
from ccxt.test.base import test_shared_methods # noqa E402
|
17
|
-
|
18
|
-
def test_order_book(exchange, skipped_properties, method, orderbook, symbol):
|
19
|
-
format = {
|
20
|
-
'symbol': 'ETH/BTC',
|
21
|
-
'asks': [[exchange.parse_number('1.24'), exchange.parse_number('0.453')], [exchange.parse_number('1.25'), exchange.parse_number('0.157')]],
|
22
|
-
'bids': [[exchange.parse_number('1.23'), exchange.parse_number('0.123')], [exchange.parse_number('1.22'), exchange.parse_number('0.543')]],
|
23
|
-
'timestamp': 1504224000000,
|
24
|
-
'datetime': '2017-09-01T00:00:00',
|
25
|
-
'nonce': 134234234,
|
26
|
-
}
|
27
|
-
empty_allowed_for = ['symbol', 'nonce', 'datetime', 'timestamp'] # todo: make timestamp required
|
28
|
-
test_shared_methods.assert_structure(exchange, skipped_properties, method, orderbook, format, empty_allowed_for)
|
29
|
-
test_shared_methods.assert_timestamp_and_datetime(exchange, skipped_properties, method, orderbook)
|
30
|
-
test_shared_methods.assert_symbol(exchange, skipped_properties, method, orderbook, 'symbol', symbol)
|
31
|
-
log_text = test_shared_methods.log_template(exchange, method, orderbook)
|
32
|
-
#
|
33
|
-
if ('bid' in skipped_properties) or ('ask' in skipped_properties):
|
34
|
-
return
|
35
|
-
# todo: check non-emtpy arrays for bids/asks for toptier exchanges
|
36
|
-
bids = orderbook['bids']
|
37
|
-
bids_length = len(bids)
|
38
|
-
for i in range(0, bids_length):
|
39
|
-
current_bid_string = exchange.safe_string(bids[i], 0)
|
40
|
-
next_i = i + 1
|
41
|
-
if bids_length > next_i:
|
42
|
-
next_bid_string = exchange.safe_string(bids[next_i], 0)
|
43
|
-
has_correct_order = Precise.string_gt(current_bid_string, next_bid_string)
|
44
|
-
assert has_correct_order, 'current bid should be > than the next one: ' + current_bid_string + '>' + next_bid_string + log_text
|
45
|
-
test_shared_methods.assert_greater(exchange, skipped_properties, method, bids[i], 0, '0')
|
46
|
-
test_shared_methods.assert_greater(exchange, skipped_properties, method, bids[i], 1, '0')
|
47
|
-
asks = orderbook['asks']
|
48
|
-
asks_length = len(asks)
|
49
|
-
for i in range(0, asks_length):
|
50
|
-
current_ask_string = exchange.safe_string(asks[i], 0)
|
51
|
-
next_i = i + 1
|
52
|
-
if asks_length > next_i:
|
53
|
-
next_ask_string = exchange.safe_string(asks[next_i], 0)
|
54
|
-
has_correct_order = Precise.string_lt(current_ask_string, next_ask_string)
|
55
|
-
assert has_correct_order, 'current ask should be < than the next one: ' + current_ask_string + '<' + next_ask_string + log_text
|
56
|
-
test_shared_methods.assert_greater(exchange, skipped_properties, method, asks[i], 0, '0')
|
57
|
-
test_shared_methods.assert_greater(exchange, skipped_properties, method, asks[i], 1, '0')
|
58
|
-
if not ('spread' in skipped_properties):
|
59
|
-
if bids_length and asks_length:
|
60
|
-
first_bid = exchange.safe_string(bids[0], 0)
|
61
|
-
first_ask = exchange.safe_string(asks[0], 0)
|
62
|
-
# check bid-ask spread
|
63
|
-
assert Precise.string_lt(first_bid, first_ask), 'bids[0][0] (' + first_ask + ') should be < than asks[0][0] (' + first_ask + ')' + log_text
|