ccxt 4.2.76__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 +25 -0
- ccxt/abstract/kucoinfutures.py +35 -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 +3513 -1511
- 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 +3105 -881
- 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 +239 -50
- ccxt/async_support/bitget.py +1513 -563
- ccxt/async_support/bithumb.py +201 -67
- 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 +403 -150
- 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 +2326 -1255
- ccxt/async_support/cex.py +1409 -1329
- ccxt/async_support/coinbase.py +1455 -288
- 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 +467 -158
- ccxt/async_support/deribit.py +558 -324
- 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 +1473 -464
- 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 +1634 -269
- 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 +1050 -355
- 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 +1777 -455
- 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 +1155 -295
- 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 +1729 -482
- 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 +3513 -1511
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +12 -1
- ccxt/binanceusdm.py +3 -1
- ccxt/bingx.py +3105 -881
- 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 +239 -50
- ccxt/bitget.py +1513 -563
- ccxt/bithumb.py +200 -67
- 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 +403 -150
- ccxt/btcalpha.py +161 -55
- ccxt/btcbox.py +250 -34
- ccxt/btcmarkets.py +232 -85
- ccxt/btcturk.py +159 -60
- ccxt/bybit.py +2326 -1255
- ccxt/cex.py +1408 -1329
- ccxt/coinbase.py +1455 -288
- 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 +467 -158
- ccxt/deribit.py +558 -324
- ccxt/digifinex.py +340 -223
- ccxt/ellipx.py +1826 -0
- ccxt/exmo.py +259 -128
- ccxt/gate.py +1473 -464
- 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 +1633 -269
- 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 +1050 -355
- 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 +1777 -455
- 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 +63 -15
- 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 +204 -82
- 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 +967 -661
- 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 +168 -32
- ccxt/pro/exmo.py +253 -21
- 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 +93 -34
- ccxt/pro/poloniex.py +129 -50
- ccxt/pro/poloniexfutures.py +53 -32
- ccxt/pro/probit.py +93 -86
- 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 +486 -70
- 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} +465 -407
- ccxt/test/tests_helpers.py +285 -0
- ccxt/test/tests_init.py +39 -0
- ccxt/test/{test_sync.py → tests_sync.py} +465 -409
- 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 +1155 -295
- 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.76.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.76.dist-info/METADATA +0 -626
- ccxt-4.2.76.dist-info/RECORD +0 -534
- {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/coinsph.py
CHANGED
@@ -6,14 +6,14 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.coinsph import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
|
+
from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
|
+
from ccxt.base.errors import AuthenticationError
|
12
13
|
from ccxt.base.errors import PermissionDenied
|
13
14
|
from ccxt.base.errors import ArgumentsRequired
|
14
15
|
from ccxt.base.errors import BadRequest
|
15
16
|
from ccxt.base.errors import BadSymbol
|
16
|
-
from ccxt.base.errors import BadResponse
|
17
17
|
from ccxt.base.errors import InsufficientFunds
|
18
18
|
from ccxt.base.errors import InvalidAddress
|
19
19
|
from ccxt.base.errors import InvalidOrder
|
@@ -23,7 +23,7 @@ from ccxt.base.errors import DuplicateOrderId
|
|
23
23
|
from ccxt.base.errors import NotSupported
|
24
24
|
from ccxt.base.errors import RateLimitExceeded
|
25
25
|
from ccxt.base.errors import ExchangeNotAvailable
|
26
|
-
from ccxt.base.errors import
|
26
|
+
from ccxt.base.errors import BadResponse
|
27
27
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
28
28
|
from ccxt.base.precise import Precise
|
29
29
|
|
@@ -108,7 +108,11 @@ class coinsph(Exchange, ImplicitAPI):
|
|
108
108
|
'fetchOrders': False,
|
109
109
|
'fetchOrderTrades': True,
|
110
110
|
'fetchPosition': False,
|
111
|
+
'fetchPositionHistory': False,
|
112
|
+
'fetchPositionMode': False,
|
111
113
|
'fetchPositions': False,
|
114
|
+
'fetchPositionsForSymbol': False,
|
115
|
+
'fetchPositionsHistory': False,
|
112
116
|
'fetchPositionsRisk': False,
|
113
117
|
'fetchPremiumIndexOHLCV': False,
|
114
118
|
'fetchStatus': True,
|
@@ -309,6 +313,72 @@ class coinsph(Exchange, ImplicitAPI):
|
|
309
313
|
'ARB': 'ARBITRUM',
|
310
314
|
},
|
311
315
|
},
|
316
|
+
'features': {
|
317
|
+
'spot': {
|
318
|
+
'sandbox': False,
|
319
|
+
'createOrder': {
|
320
|
+
'marginMode': False,
|
321
|
+
'triggerPrice': True,
|
322
|
+
'triggerPriceType': None,
|
323
|
+
'triggerDirection': False,
|
324
|
+
'stopLossPrice': False, # todo
|
325
|
+
'takeProfitPrice': False, # todo
|
326
|
+
'attachedStopLossTakeProfit': None,
|
327
|
+
'timeInForce': {
|
328
|
+
'IOC': True,
|
329
|
+
'FOK': True,
|
330
|
+
'PO': False,
|
331
|
+
'GTD': False,
|
332
|
+
},
|
333
|
+
'hedged': False,
|
334
|
+
'trailing': False,
|
335
|
+
'leverage': False,
|
336
|
+
'marketBuyByCost': True,
|
337
|
+
'marketBuyRequiresPrice': False,
|
338
|
+
'selfTradePrevention': True, # todo implement
|
339
|
+
'iceberg': False,
|
340
|
+
},
|
341
|
+
'createOrders': None,
|
342
|
+
'fetchMyTrades': {
|
343
|
+
'marginMode': False,
|
344
|
+
'limit': 1000,
|
345
|
+
'daysBack': 100000,
|
346
|
+
'untilDays': 100000, # todo implement
|
347
|
+
},
|
348
|
+
'fetchOrder': {
|
349
|
+
'marginMode': False,
|
350
|
+
'trigger': False,
|
351
|
+
'trailing': False,
|
352
|
+
},
|
353
|
+
'fetchOpenOrders': {
|
354
|
+
'marginMode': False,
|
355
|
+
'limit': None,
|
356
|
+
'trigger': False,
|
357
|
+
'trailing': False,
|
358
|
+
},
|
359
|
+
'fetchOrders': None,
|
360
|
+
'fetchClosedOrders': {
|
361
|
+
'marginMode': False,
|
362
|
+
'limit': 1000,
|
363
|
+
'daysBack': 100000,
|
364
|
+
'daysBackCanceled': 1,
|
365
|
+
'untilDays': 100000,
|
366
|
+
'trigger': False,
|
367
|
+
'trailing': False,
|
368
|
+
},
|
369
|
+
'fetchOHLCV': {
|
370
|
+
'limit': 1000,
|
371
|
+
},
|
372
|
+
},
|
373
|
+
'swap': {
|
374
|
+
'linear': None,
|
375
|
+
'inverse': None,
|
376
|
+
},
|
377
|
+
'future': {
|
378
|
+
'linear': None,
|
379
|
+
'inverse': None,
|
380
|
+
},
|
381
|
+
},
|
312
382
|
# https://coins-docs.github.io/errors/
|
313
383
|
'exceptions': {
|
314
384
|
'exact': {
|
@@ -452,7 +522,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
452
522
|
def fetch_status(self, params={}):
|
453
523
|
"""
|
454
524
|
the latest known information on the availability of the exchange API
|
455
|
-
|
525
|
+
|
526
|
+
https://coins-docs.github.io/rest-api/#test-connectivity
|
527
|
+
|
456
528
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
457
529
|
:returns dict: a `status structure <https://docs.ccxt.com/#/?id=exchange-status-structure>`
|
458
530
|
"""
|
@@ -468,7 +540,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
468
540
|
def fetch_time(self, params={}):
|
469
541
|
"""
|
470
542
|
fetches the current integer timestamp in milliseconds from the exchange server
|
471
|
-
|
543
|
+
|
544
|
+
https://coins-docs.github.io/rest-api/#check-server-time
|
545
|
+
|
472
546
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
473
547
|
:returns int: the current integer timestamp in milliseconds from the exchange server
|
474
548
|
"""
|
@@ -478,10 +552,12 @@ class coinsph(Exchange, ImplicitAPI):
|
|
478
552
|
#
|
479
553
|
return self.safe_integer(response, 'serverTime')
|
480
554
|
|
481
|
-
def fetch_markets(self, params={}):
|
555
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
482
556
|
"""
|
483
557
|
retrieves data on all markets for coinsph
|
484
|
-
|
558
|
+
|
559
|
+
https://coins-docs.github.io/rest-api/#exchange-information
|
560
|
+
|
485
561
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
486
562
|
:returns dict[]: an array of objects representing market data
|
487
563
|
"""
|
@@ -545,7 +621,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
545
621
|
# ]
|
546
622
|
# }
|
547
623
|
#
|
548
|
-
markets = self.
|
624
|
+
markets = self.safe_list(response, 'symbols', [])
|
549
625
|
result = []
|
550
626
|
for i in range(0, len(markets)):
|
551
627
|
market = markets[i]
|
@@ -554,7 +630,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
554
630
|
quoteId = self.safe_string(market, 'quoteAsset')
|
555
631
|
base = self.safe_currency_code(baseId)
|
556
632
|
quote = self.safe_currency_code(quoteId)
|
557
|
-
limits = self.index_by(self.
|
633
|
+
limits = self.index_by(self.safe_list(market, 'filters', []), 'filterType')
|
558
634
|
amountLimits = self.safe_value(limits, 'LOT_SIZE', {})
|
559
635
|
priceLimits = self.safe_value(limits, 'PRICE_FILTER', {})
|
560
636
|
costLimits = self.safe_value(limits, 'NOTIONAL', {})
|
@@ -615,15 +691,17 @@ class coinsph(Exchange, ImplicitAPI):
|
|
615
691
|
def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
616
692
|
"""
|
617
693
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
618
|
-
|
619
|
-
|
620
|
-
|
694
|
+
|
695
|
+
https://coins-docs.github.io/rest-api/#24hr-ticker-price-change-statistics
|
696
|
+
https://coins-docs.github.io/rest-api/#symbol-price-ticker
|
697
|
+
https://coins-docs.github.io/rest-api/#symbol-order-book-ticker
|
698
|
+
|
621
699
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
622
700
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
623
701
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
624
702
|
"""
|
625
703
|
self.load_markets()
|
626
|
-
request = {}
|
704
|
+
request: dict = {}
|
627
705
|
if symbols is not None:
|
628
706
|
ids = []
|
629
707
|
for i in range(0, len(symbols)):
|
@@ -632,7 +710,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
632
710
|
ids.append(id)
|
633
711
|
request['symbols'] = ids
|
634
712
|
defaultMethod = 'publicGetOpenapiQuoteV1Ticker24hr'
|
635
|
-
options = self.
|
713
|
+
options = self.safe_dict(self.options, 'fetchTickers', {})
|
636
714
|
method = self.safe_string(options, 'method', defaultMethod)
|
637
715
|
tickers = None
|
638
716
|
if method == 'publicGetOpenapiQuoteV1TickerPrice':
|
@@ -646,20 +724,22 @@ class coinsph(Exchange, ImplicitAPI):
|
|
646
724
|
def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
647
725
|
"""
|
648
726
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
649
|
-
|
650
|
-
|
651
|
-
|
727
|
+
|
728
|
+
https://coins-docs.github.io/rest-api/#24hr-ticker-price-change-statistics
|
729
|
+
https://coins-docs.github.io/rest-api/#symbol-price-ticker
|
730
|
+
https://coins-docs.github.io/rest-api/#symbol-order-book-ticker
|
731
|
+
|
652
732
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
653
733
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
654
734
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
655
735
|
"""
|
656
736
|
self.load_markets()
|
657
737
|
market = self.market(symbol)
|
658
|
-
request = {
|
738
|
+
request: dict = {
|
659
739
|
'symbol': market['id'],
|
660
740
|
}
|
661
741
|
defaultMethod = 'publicGetOpenapiQuoteV1Ticker24hr'
|
662
|
-
options = self.
|
742
|
+
options = self.safe_dict(self.options, 'fetchTicker', {})
|
663
743
|
method = self.safe_string(options, 'method', defaultMethod)
|
664
744
|
ticker = None
|
665
745
|
if method == 'publicGetOpenapiQuoteV1TickerPrice':
|
@@ -670,7 +750,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
670
750
|
ticker = self.publicGetOpenapiQuoteV1Ticker24hr(self.extend(request, params))
|
671
751
|
return self.parse_ticker(ticker, market)
|
672
752
|
|
673
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
753
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
674
754
|
#
|
675
755
|
# publicGetOpenapiQuoteV1Ticker24hr
|
676
756
|
# {
|
@@ -751,7 +831,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
751
831
|
def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
752
832
|
"""
|
753
833
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
754
|
-
|
834
|
+
|
835
|
+
https://coins-docs.github.io/rest-api/#order-book
|
836
|
+
|
755
837
|
:param str symbol: unified symbol of the market to fetch the order book for
|
756
838
|
:param int [limit]: the maximum amount of order book entries to return(default 100, max 200)
|
757
839
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -759,7 +841,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
759
841
|
"""
|
760
842
|
self.load_markets()
|
761
843
|
market = self.market(symbol)
|
762
|
-
request = {
|
844
|
+
request: dict = {
|
763
845
|
'symbol': market['id'],
|
764
846
|
}
|
765
847
|
if limit is not None:
|
@@ -785,7 +867,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
785
867
|
def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
786
868
|
"""
|
787
869
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
788
|
-
|
870
|
+
|
871
|
+
https://coins-docs.github.io/rest-api/#klinecandlestick-data
|
872
|
+
|
789
873
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
790
874
|
:param str timeframe: the length of time each candle represents
|
791
875
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -796,7 +880,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
796
880
|
self.load_markets()
|
797
881
|
market = self.market(symbol)
|
798
882
|
interval = self.safe_string(self.timeframes, timeframe)
|
799
|
-
request = {
|
883
|
+
request: dict = {
|
800
884
|
'symbol': market['id'],
|
801
885
|
'interval': interval,
|
802
886
|
}
|
@@ -845,7 +929,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
845
929
|
def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
846
930
|
"""
|
847
931
|
get the list of most recent trades for a particular symbol
|
848
|
-
|
932
|
+
|
933
|
+
https://coins-docs.github.io/rest-api/#recent-trades-list
|
934
|
+
|
849
935
|
:param str symbol: unified symbol of the market to fetch trades for
|
850
936
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
851
937
|
:param int [limit]: the maximum amount of trades to fetch(default 500, max 1000)
|
@@ -854,7 +940,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
854
940
|
"""
|
855
941
|
self.load_markets()
|
856
942
|
market = self.market(symbol)
|
857
|
-
request = {
|
943
|
+
request: dict = {
|
858
944
|
'symbol': market['id'],
|
859
945
|
}
|
860
946
|
if since is not None:
|
@@ -882,7 +968,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
882
968
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
883
969
|
"""
|
884
970
|
fetch all trades made by the user
|
885
|
-
|
971
|
+
|
972
|
+
https://coins-docs.github.io/rest-api/#account-trade-list-user_data
|
973
|
+
|
886
974
|
:param str symbol: unified market symbol
|
887
975
|
:param int [since]: the earliest time in ms to fetch trades for
|
888
976
|
:param int [limit]: the maximum number of trades structures to retrieve(default 500, max 1000)
|
@@ -893,7 +981,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
893
981
|
raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol argument')
|
894
982
|
self.load_markets()
|
895
983
|
market = self.market(symbol)
|
896
|
-
request = {
|
984
|
+
request: dict = {
|
897
985
|
'symbol': market['id'],
|
898
986
|
}
|
899
987
|
if since is not None:
|
@@ -908,7 +996,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
908
996
|
def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
909
997
|
"""
|
910
998
|
fetch all the trades made from a single order
|
911
|
-
|
999
|
+
|
1000
|
+
https://coins-docs.github.io/rest-api/#account-trade-list-user_data
|
1001
|
+
|
912
1002
|
:param str id: order id
|
913
1003
|
:param str symbol: unified market symbol
|
914
1004
|
:param int [since]: the earliest time in ms to fetch trades for
|
@@ -918,12 +1008,12 @@ class coinsph(Exchange, ImplicitAPI):
|
|
918
1008
|
"""
|
919
1009
|
if symbol is None:
|
920
1010
|
raise ArgumentsRequired(self.id + ' fetchOrderTrades() requires a symbol argument')
|
921
|
-
request = {
|
1011
|
+
request: dict = {
|
922
1012
|
'orderId': id,
|
923
1013
|
}
|
924
1014
|
return self.fetch_my_trades(symbol, since, limit, self.extend(request, params))
|
925
1015
|
|
926
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
1016
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
927
1017
|
#
|
928
1018
|
# fetchTrades
|
929
1019
|
# {
|
@@ -978,7 +1068,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
978
1068
|
'cost': feeCost,
|
979
1069
|
'currency': self.safe_currency_code(feeCurrencyId),
|
980
1070
|
}
|
981
|
-
isBuyer = self.
|
1071
|
+
isBuyer = self.safe_bool_2(trade, 'isBuyer', 'isBuyerMaker', None)
|
982
1072
|
side = None
|
983
1073
|
if isBuyer is not None:
|
984
1074
|
side = 'buy' if (isBuyer is True) else 'sell'
|
@@ -1008,7 +1098,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1008
1098
|
def fetch_balance(self, params={}) -> Balances:
|
1009
1099
|
"""
|
1010
1100
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
1011
|
-
|
1101
|
+
|
1102
|
+
https://coins-docs.github.io/rest-api/#accept-the-quote
|
1103
|
+
|
1012
1104
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1013
1105
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
1014
1106
|
"""
|
@@ -1038,8 +1130,8 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1038
1130
|
return self.parse_balance(response)
|
1039
1131
|
|
1040
1132
|
def parse_balance(self, response) -> Balances:
|
1041
|
-
balances = self.
|
1042
|
-
result = {
|
1133
|
+
balances = self.safe_list(response, 'balances', [])
|
1134
|
+
result: dict = {
|
1043
1135
|
'info': response,
|
1044
1136
|
'timestamp': None,
|
1045
1137
|
'datetime': None,
|
@@ -1057,12 +1149,14 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1057
1149
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
1058
1150
|
"""
|
1059
1151
|
create a trade order
|
1060
|
-
|
1152
|
+
|
1153
|
+
https://coins-docs.github.io/rest-api/#new-order--trade
|
1154
|
+
|
1061
1155
|
:param str symbol: unified symbol of the market to create an order in
|
1062
1156
|
:param str type: 'market', 'limit', 'stop_loss', 'take_profit', 'stop_loss_limit', 'take_profit_limit' or 'limit_maker'
|
1063
1157
|
:param str side: 'buy' or 'sell'
|
1064
1158
|
:param float amount: how much of currency you want to trade in units of base currency
|
1065
|
-
:param float [price]: the price at which the order is to be
|
1159
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1066
1160
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1067
1161
|
:param float [params.cost]: the quote quantity that can be used alternative for the amount for market buy orders
|
1068
1162
|
:param bool [params.test]: set to True to test an order, no order will be created but the request will be validated
|
@@ -1077,7 +1171,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1077
1171
|
orderType = self.encode_order_type(orderType)
|
1078
1172
|
params = self.omit(params, 'type')
|
1079
1173
|
orderSide = self.encode_order_side(side)
|
1080
|
-
request = {
|
1174
|
+
request: dict = {
|
1081
1175
|
'symbol': market['id'],
|
1082
1176
|
'type': orderType,
|
1083
1177
|
'side': orderSide,
|
@@ -1118,10 +1212,10 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1118
1212
|
quoteAmount = self.cost_to_precision(symbol, amount)
|
1119
1213
|
request['quoteOrderQty'] = quoteAmount
|
1120
1214
|
if orderType == 'STOP_LOSS' or orderType == 'STOP_LOSS_LIMIT' or orderType == 'TAKE_PROFIT' or orderType == 'TAKE_PROFIT_LIMIT':
|
1121
|
-
|
1122
|
-
if
|
1215
|
+
triggerPrice = self.safe_string_2(params, 'triggerPrice', 'stopPrice')
|
1216
|
+
if triggerPrice is None:
|
1123
1217
|
raise InvalidOrder(self.id + ' createOrder() requires a triggerPrice or stopPrice param for stop_loss, take_profit, stop_loss_limit, and take_profit_limit orders')
|
1124
|
-
request['stopPrice'] = self.price_to_precision(symbol,
|
1218
|
+
request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
|
1125
1219
|
request['newOrderRespType'] = newOrderRespType
|
1126
1220
|
params = self.omit(params, 'price', 'stopPrice', 'triggerPrice', 'quantity', 'quoteOrderQty')
|
1127
1221
|
response = None
|
@@ -1161,14 +1255,16 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1161
1255
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1162
1256
|
"""
|
1163
1257
|
fetches information on an order made by the user
|
1164
|
-
|
1258
|
+
|
1259
|
+
https://coins-docs.github.io/rest-api/#query-order-user_data
|
1260
|
+
|
1165
1261
|
:param int|str id: order id
|
1166
1262
|
:param str symbol: not used by coinsph fetchOrder()
|
1167
1263
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1168
1264
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1169
1265
|
"""
|
1170
1266
|
self.load_markets()
|
1171
|
-
request = {}
|
1267
|
+
request: dict = {}
|
1172
1268
|
clientOrderId = self.safe_value_2(params, 'origClientOrderId', 'clientOrderId')
|
1173
1269
|
if clientOrderId is not None:
|
1174
1270
|
request['origClientOrderId'] = clientOrderId
|
@@ -1181,7 +1277,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1181
1277
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1182
1278
|
"""
|
1183
1279
|
fetch all unfilled currently open orders
|
1184
|
-
|
1280
|
+
|
1281
|
+
https://coins-docs.github.io/rest-api/#current-open-orders-user_data
|
1282
|
+
|
1185
1283
|
:param str symbol: unified market symbol
|
1186
1284
|
:param int [since]: the earliest time in ms to fetch open orders for
|
1187
1285
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
@@ -1190,7 +1288,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1190
1288
|
"""
|
1191
1289
|
self.load_markets()
|
1192
1290
|
market = None
|
1193
|
-
request = {}
|
1291
|
+
request: dict = {}
|
1194
1292
|
if symbol is not None:
|
1195
1293
|
market = self.market(symbol)
|
1196
1294
|
request['symbol'] = market['id']
|
@@ -1200,7 +1298,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1200
1298
|
def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1201
1299
|
"""
|
1202
1300
|
fetches information on multiple closed orders made by the user
|
1203
|
-
|
1301
|
+
|
1302
|
+
https://coins-docs.github.io/rest-api/#history-orders-user_data
|
1303
|
+
|
1204
1304
|
:param str symbol: unified market symbol of the market orders were made in
|
1205
1305
|
:param int [since]: the earliest time in ms to fetch orders for
|
1206
1306
|
:param int [limit]: the maximum number of order structures to retrieve(default 500, max 1000)
|
@@ -1211,7 +1311,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1211
1311
|
raise ArgumentsRequired(self.id + ' fetchClosedOrders() requires a symbol argument')
|
1212
1312
|
self.load_markets()
|
1213
1313
|
market = self.market(symbol)
|
1214
|
-
request = {
|
1314
|
+
request: dict = {
|
1215
1315
|
'symbol': market['id'],
|
1216
1316
|
}
|
1217
1317
|
if since is not None:
|
@@ -1226,14 +1326,16 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1226
1326
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
1227
1327
|
"""
|
1228
1328
|
cancels an open order
|
1229
|
-
|
1329
|
+
|
1330
|
+
https://coins-docs.github.io/rest-api/#cancel-order-trade
|
1331
|
+
|
1230
1332
|
:param str id: order id
|
1231
1333
|
:param str symbol: not used by coinsph cancelOrder()
|
1232
1334
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1233
1335
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1234
1336
|
"""
|
1235
1337
|
self.load_markets()
|
1236
|
-
request = {}
|
1338
|
+
request: dict = {}
|
1237
1339
|
clientOrderId = self.safe_value_2(params, 'origClientOrderId', 'clientOrderId')
|
1238
1340
|
if clientOrderId is not None:
|
1239
1341
|
request['origClientOrderId'] = clientOrderId
|
@@ -1246,7 +1348,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1246
1348
|
def cancel_all_orders(self, symbol: Str = None, params={}):
|
1247
1349
|
"""
|
1248
1350
|
cancel open orders of market
|
1249
|
-
|
1351
|
+
|
1352
|
+
https://coins-docs.github.io/rest-api/#cancel-all-open-orders-on-a-symbol-trade
|
1353
|
+
|
1250
1354
|
:param str symbol: unified market symbol
|
1251
1355
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1252
1356
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1255,14 +1359,14 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1255
1359
|
raise ArgumentsRequired(self.id + ' cancelAllOrders() requires a symbol argument')
|
1256
1360
|
self.load_markets()
|
1257
1361
|
market = None
|
1258
|
-
request = {}
|
1362
|
+
request: dict = {}
|
1259
1363
|
if symbol is not None:
|
1260
1364
|
market = self.market(symbol)
|
1261
1365
|
request['symbol'] = market['id']
|
1262
1366
|
response = self.privateDeleteOpenapiV1OpenOrders(self.extend(request, params))
|
1263
1367
|
return self.parse_orders(response, market)
|
1264
1368
|
|
1265
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
1369
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
1266
1370
|
#
|
1267
1371
|
# createOrder POST /openapi/v1/order
|
1268
1372
|
# {
|
@@ -1336,9 +1440,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1336
1440
|
market = self.safe_market(marketId, market)
|
1337
1441
|
timestamp = self.safe_integer_2(order, 'time', 'transactTime')
|
1338
1442
|
trades = self.safe_value(order, 'fills', None)
|
1339
|
-
|
1340
|
-
if Precise.string_eq(
|
1341
|
-
|
1443
|
+
triggerPrice = self.safe_string(order, 'stopPrice')
|
1444
|
+
if Precise.string_eq(triggerPrice, '0'):
|
1445
|
+
triggerPrice = None
|
1342
1446
|
return self.safe_order({
|
1343
1447
|
'id': id,
|
1344
1448
|
'clientOrderId': self.safe_string(order, 'clientOrderId'),
|
@@ -1351,8 +1455,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1351
1455
|
'timeInForce': self.parse_order_time_in_force(self.safe_string(order, 'timeInForce')),
|
1352
1456
|
'side': self.parse_order_side(self.safe_string(order, 'side')),
|
1353
1457
|
'price': self.safe_string(order, 'price'),
|
1354
|
-
'
|
1355
|
-
'triggerPrice': stopPrice,
|
1458
|
+
'triggerPrice': triggerPrice,
|
1356
1459
|
'average': None,
|
1357
1460
|
'amount': self.safe_string(order, 'origQty'),
|
1358
1461
|
'cost': self.safe_string(order, 'cummulativeQuoteQty'),
|
@@ -1365,21 +1468,21 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1365
1468
|
}, market)
|
1366
1469
|
|
1367
1470
|
def parse_order_side(self, status):
|
1368
|
-
statuses = {
|
1471
|
+
statuses: dict = {
|
1369
1472
|
'BUY': 'buy',
|
1370
1473
|
'SELL': 'sell',
|
1371
1474
|
}
|
1372
1475
|
return self.safe_string(statuses, status, status)
|
1373
1476
|
|
1374
1477
|
def encode_order_side(self, status):
|
1375
|
-
statuses = {
|
1478
|
+
statuses: dict = {
|
1376
1479
|
'buy': 'BUY',
|
1377
1480
|
'sell': 'SELL',
|
1378
1481
|
}
|
1379
1482
|
return self.safe_string(statuses, status, status)
|
1380
1483
|
|
1381
1484
|
def parse_order_type(self, status):
|
1382
|
-
statuses = {
|
1485
|
+
statuses: dict = {
|
1383
1486
|
'MARKET': 'market',
|
1384
1487
|
'LIMIT': 'limit',
|
1385
1488
|
'LIMIT_MAKER': 'limit',
|
@@ -1391,7 +1494,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1391
1494
|
return self.safe_string(statuses, status, status)
|
1392
1495
|
|
1393
1496
|
def encode_order_type(self, status):
|
1394
|
-
statuses = {
|
1497
|
+
statuses: dict = {
|
1395
1498
|
'market': 'MARKET',
|
1396
1499
|
'limit': 'LIMIT',
|
1397
1500
|
'limit_maker': 'LIMIT_MAKER',
|
@@ -1402,8 +1505,8 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1402
1505
|
}
|
1403
1506
|
return self.safe_string(statuses, status, status)
|
1404
1507
|
|
1405
|
-
def parse_order_status(self, status):
|
1406
|
-
statuses = {
|
1508
|
+
def parse_order_status(self, status: Str):
|
1509
|
+
statuses: dict = {
|
1407
1510
|
'NEW': 'open',
|
1408
1511
|
'FILLED': 'closed',
|
1409
1512
|
'CANCELED': 'canceled',
|
@@ -1414,24 +1517,26 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1414
1517
|
return self.safe_string(statuses, status, status)
|
1415
1518
|
|
1416
1519
|
def parse_order_time_in_force(self, status):
|
1417
|
-
statuses = {
|
1520
|
+
statuses: dict = {
|
1418
1521
|
'GTC': 'GTC',
|
1419
1522
|
'FOK': 'FOK',
|
1420
1523
|
'IOC': 'IOC',
|
1421
1524
|
}
|
1422
1525
|
return self.safe_string(statuses, status, status)
|
1423
1526
|
|
1424
|
-
def fetch_trading_fee(self, symbol: str, params={}):
|
1527
|
+
def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
1425
1528
|
"""
|
1426
1529
|
fetch the trading fees for a market
|
1427
|
-
|
1530
|
+
|
1531
|
+
https://coins-docs.github.io/rest-api/#trade-fee-user_data
|
1532
|
+
|
1428
1533
|
:param str symbol: unified market symbol
|
1429
1534
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1430
1535
|
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
|
1431
1536
|
"""
|
1432
1537
|
self.load_markets()
|
1433
1538
|
market = self.market(symbol)
|
1434
|
-
request = {
|
1539
|
+
request: dict = {
|
1435
1540
|
'symbol': market['id'],
|
1436
1541
|
}
|
1437
1542
|
response = self.privateGetOpenapiV1AssetTradeFee(self.extend(request, params))
|
@@ -1444,13 +1549,15 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1444
1549
|
# }
|
1445
1550
|
# ]
|
1446
1551
|
#
|
1447
|
-
tradingFee = self.
|
1552
|
+
tradingFee = self.safe_dict(response, 0, {})
|
1448
1553
|
return self.parse_trading_fee(tradingFee, market)
|
1449
1554
|
|
1450
|
-
def fetch_trading_fees(self, params={}):
|
1555
|
+
def fetch_trading_fees(self, params={}) -> TradingFees:
|
1451
1556
|
"""
|
1452
1557
|
fetch the trading fees for multiple markets
|
1453
|
-
|
1558
|
+
|
1559
|
+
https://coins-docs.github.io/rest-api/#trade-fee-user_data
|
1560
|
+
|
1454
1561
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1455
1562
|
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
|
1456
1563
|
"""
|
@@ -1470,14 +1577,14 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1470
1577
|
# },
|
1471
1578
|
# ]
|
1472
1579
|
#
|
1473
|
-
result = {}
|
1580
|
+
result: dict = {}
|
1474
1581
|
for i in range(0, len(response)):
|
1475
1582
|
fee = self.parse_trading_fee(response[i])
|
1476
1583
|
symbol = fee['symbol']
|
1477
1584
|
result[symbol] = fee
|
1478
1585
|
return result
|
1479
1586
|
|
1480
|
-
def parse_trading_fee(self, fee, market: Market = None):
|
1587
|
+
def parse_trading_fee(self, fee: dict, market: Market = None) -> TradingFeeInterface:
|
1481
1588
|
#
|
1482
1589
|
# {
|
1483
1590
|
# "symbol": "ETHUSDT",
|
@@ -1493,12 +1600,16 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1493
1600
|
'symbol': symbol,
|
1494
1601
|
'maker': self.safe_number(fee, 'makerCommission'),
|
1495
1602
|
'taker': self.safe_number(fee, 'takerCommission'),
|
1603
|
+
'percentage': None,
|
1604
|
+
'tierBased': None,
|
1496
1605
|
}
|
1497
1606
|
|
1498
|
-
def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
1607
|
+
def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
1499
1608
|
"""
|
1500
1609
|
make a withdrawal to coins_ph account
|
1501
|
-
|
1610
|
+
|
1611
|
+
https://coins-docs.github.io/rest-api/#withdrawuser_data
|
1612
|
+
|
1502
1613
|
:param str code: unified currency code
|
1503
1614
|
:param float amount: the amount to withdraw
|
1504
1615
|
:param str address: not used by coinsph withdraw()
|
@@ -1516,7 +1627,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1516
1627
|
raise BadRequest(self.id + ' withdraw() require network parameter')
|
1517
1628
|
self.load_markets()
|
1518
1629
|
currency = self.currency(code)
|
1519
|
-
request = {
|
1630
|
+
request: dict = {
|
1520
1631
|
'coin': currency['id'],
|
1521
1632
|
'amount': self.number_to_string(amount),
|
1522
1633
|
'network': networkId,
|
@@ -1531,7 +1642,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1531
1642
|
def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1532
1643
|
"""
|
1533
1644
|
fetch all deposits made to an account
|
1534
|
-
|
1645
|
+
|
1646
|
+
https://coins-docs.github.io/rest-api/#deposit-history-user_data
|
1647
|
+
|
1535
1648
|
:param str code: unified currency code
|
1536
1649
|
:param int [since]: the earliest time in ms to fetch deposits for
|
1537
1650
|
:param int [limit]: the maximum number of deposits structures to retrieve
|
@@ -1541,7 +1654,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1541
1654
|
# todo: returns an empty array - find out why
|
1542
1655
|
self.load_markets()
|
1543
1656
|
currency = None
|
1544
|
-
request = {}
|
1657
|
+
request: dict = {}
|
1545
1658
|
if code is not None:
|
1546
1659
|
currency = self.currency(code)
|
1547
1660
|
request['coin'] = currency['id']
|
@@ -1583,7 +1696,9 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1583
1696
|
def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1584
1697
|
"""
|
1585
1698
|
fetch all withdrawals made from an account
|
1586
|
-
|
1699
|
+
|
1700
|
+
https://coins-docs.github.io/rest-api/#withdraw-history-user_data
|
1701
|
+
|
1587
1702
|
:param str code: unified currency code
|
1588
1703
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
1589
1704
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
@@ -1593,7 +1708,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1593
1708
|
# todo: returns an empty array - find out why
|
1594
1709
|
self.load_markets()
|
1595
1710
|
currency = None
|
1596
|
-
request = {}
|
1711
|
+
request: dict = {}
|
1597
1712
|
if code is not None:
|
1598
1713
|
currency = self.currency(code)
|
1599
1714
|
request['coin'] = currency['id']
|
@@ -1638,7 +1753,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1638
1753
|
#
|
1639
1754
|
return self.parse_transactions(response, currency, since, limit)
|
1640
1755
|
|
1641
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
1756
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1642
1757
|
#
|
1643
1758
|
# fetchDeposits
|
1644
1759
|
# {
|
@@ -1725,8 +1840,8 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1725
1840
|
'fee': fee,
|
1726
1841
|
}
|
1727
1842
|
|
1728
|
-
def parse_transaction_status(self, status):
|
1729
|
-
statuses = {
|
1843
|
+
def parse_transaction_status(self, status: Str):
|
1844
|
+
statuses: dict = {
|
1730
1845
|
'0': 'pending',
|
1731
1846
|
'1': 'ok',
|
1732
1847
|
'2': 'failed',
|
@@ -1734,10 +1849,12 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1734
1849
|
}
|
1735
1850
|
return self.safe_string(statuses, status, status)
|
1736
1851
|
|
1737
|
-
def fetch_deposit_address(self, code: str, params={}):
|
1852
|
+
def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
1738
1853
|
"""
|
1739
1854
|
fetch the deposit address for a currency associated with self account
|
1740
|
-
|
1855
|
+
|
1856
|
+
https://coins-docs.github.io/rest-api/#deposit-address-user_data
|
1857
|
+
|
1741
1858
|
:param str code: unified currency code
|
1742
1859
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1743
1860
|
:param str [params.network]: network for fetch deposit address
|
@@ -1749,7 +1866,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1749
1866
|
raise BadRequest(self.id + ' fetchDepositAddress() require network parameter')
|
1750
1867
|
self.load_markets()
|
1751
1868
|
currency = self.currency(code)
|
1752
|
-
request = {
|
1869
|
+
request: dict = {
|
1753
1870
|
'coin': currency['id'],
|
1754
1871
|
'network': networkId,
|
1755
1872
|
}
|
@@ -1764,7 +1881,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1764
1881
|
#
|
1765
1882
|
return self.parse_deposit_address(response, currency)
|
1766
1883
|
|
1767
|
-
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
1884
|
+
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
1768
1885
|
#
|
1769
1886
|
# {
|
1770
1887
|
# "coin": "ETH",
|
@@ -1775,11 +1892,11 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1775
1892
|
currencyId = self.safe_string(depositAddress, 'coin')
|
1776
1893
|
parsedCurrency = self.safe_currency_code(currencyId, currency)
|
1777
1894
|
return {
|
1895
|
+
'info': depositAddress,
|
1778
1896
|
'currency': parsedCurrency,
|
1897
|
+
'network': None,
|
1779
1898
|
'address': self.safe_string(depositAddress, 'address'),
|
1780
1899
|
'tag': self.safe_string(depositAddress, 'addressTag'),
|
1781
|
-
'network': None,
|
1782
|
-
'info': depositAddress,
|
1783
1900
|
}
|
1784
1901
|
|
1785
1902
|
def url_encode_query(self, query={}):
|
@@ -1832,7 +1949,7 @@ class coinsph(Exchange, ImplicitAPI):
|
|
1832
1949
|
url += '?' + query
|
1833
1950
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1834
1951
|
|
1835
|
-
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1952
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1836
1953
|
if response is None:
|
1837
1954
|
return None
|
1838
1955
|
responseCode = self.safe_string(response, 'code', None)
|