ccxt-ir 4.3.46.0.3__py2.py3-none-any.whl → 4.5.0__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 +39 -35
- ccxt/abantether.py +8 -8
- ccxt/abstract/alpaca.py +4 -0
- ccxt/abstract/apex.py +31 -0
- ccxt/abstract/bigone.py +1 -1
- ccxt/abstract/binance.py +106 -48
- ccxt/abstract/binancecoinm.py +106 -48
- ccxt/abstract/binanceus.py +141 -83
- ccxt/abstract/binanceusdm.py +106 -48
- ccxt/abstract/bingx.py +50 -1
- ccxt/abstract/bitbank.py +5 -0
- ccxt/abstract/bitfinex.py +136 -65
- ccxt/abstract/bitflyer.py +1 -0
- ccxt/abstract/bitget.py +67 -0
- ccxt/abstract/bitmart.py +19 -1
- ccxt/abstract/bitopro.py +1 -0
- ccxt/abstract/bitrue.py +68 -68
- ccxt/abstract/bitstamp.py +1 -0
- ccxt/abstract/blofin.py +30 -0
- ccxt/abstract/btcbox.py +2 -0
- ccxt/abstract/bybit.py +28 -13
- ccxt/abstract/cex.py +28 -29
- ccxt/abstract/coinbaseexchange.py +1 -0
- ccxt/abstract/coinbaseinternational.py +1 -1
- ccxt/abstract/cryptocom.py +16 -0
- ccxt/abstract/cryptomus.py +20 -0
- ccxt/abstract/defx.py +69 -0
- ccxt/abstract/deribit.py +1 -0
- ccxt/abstract/derive.py +117 -0
- ccxt/abstract/digifinex.py +1 -0
- ccxt/abstract/ellipx.py +25 -0
- ccxt/abstract/foxbit.py +26 -0
- ccxt/abstract/gate.py +19 -0
- ccxt/abstract/gateio.py +19 -0
- ccxt/abstract/gemini.py +1 -0
- ccxt/abstract/hibachi.py +26 -0
- ccxt/abstract/hyperliquid.py +1 -1
- ccxt/abstract/independentreserve.py +6 -0
- ccxt/abstract/kraken.py +1 -0
- ccxt/abstract/krakenfutures.py +4 -0
- ccxt/abstract/kucoin.py +10 -0
- ccxt/abstract/kucoinfutures.py +18 -0
- ccxt/abstract/lbank.py +2 -1
- ccxt/abstract/luno.py +1 -0
- ccxt/abstract/mexc.py +2 -0
- ccxt/abstract/modetrade.py +119 -0
- ccxt/abstract/myokx.py +349 -0
- ccxt/abstract/oceanex.py +5 -0
- ccxt/abstract/okx.py +25 -0
- ccxt/abstract/okxus.py +349 -0
- ccxt/abstract/onetrading.py +0 -12
- ccxt/abstract/paradex.py +23 -0
- ccxt/abstract/phemex.py +2 -0
- ccxt/abstract/poloniex.py +36 -0
- ccxt/abstract/tradeogre.py +3 -1
- ccxt/abstract/upbit.py +51 -34
- ccxt/abstract/whitebit.py +16 -0
- ccxt/abstract/woo.py +64 -6
- ccxt/abstract/xt.py +10 -5
- ccxt/afratether.py +7 -7
- ccxt/alpaca.py +828 -51
- ccxt/apex.py +1875 -0
- ccxt/arzinja.py +7 -7
- ccxt/arzplus.py +9 -9
- ccxt/ascendex.py +501 -306
- ccxt/async_support/__init__.py +39 -35
- ccxt/async_support/abantether.py +8 -8
- ccxt/async_support/afratether.py +9 -9
- ccxt/async_support/alpaca.py +828 -51
- ccxt/async_support/apex.py +1875 -0
- ccxt/async_support/arzinja.py +10 -10
- ccxt/async_support/arzplus.py +12 -12
- ccxt/async_support/ascendex.py +502 -306
- ccxt/async_support/base/exchange.py +303 -89
- ccxt/async_support/base/ws/cache.py +9 -3
- ccxt/async_support/base/ws/client.py +173 -38
- ccxt/async_support/base/ws/future.py +25 -37
- ccxt/async_support/bequant.py +5 -3
- ccxt/async_support/bigone.py +279 -144
- ccxt/async_support/binance.py +2347 -1158
- ccxt/async_support/binancecoinm.py +9 -3
- ccxt/async_support/binanceus.py +17 -3
- ccxt/async_support/binanceusdm.py +9 -4
- ccxt/async_support/bingx.py +2962 -920
- ccxt/async_support/bit2c.py +147 -27
- ccxt/async_support/bitbank.py +151 -23
- ccxt/async_support/bitbns.py +104 -30
- ccxt/async_support/bitfinex.py +3291 -1113
- ccxt/async_support/bitflyer.py +202 -27
- ccxt/async_support/bitget.py +3683 -1538
- ccxt/async_support/bithumb.py +195 -38
- ccxt/async_support/bitimen.py +12 -12
- ccxt/async_support/bitir.py +38 -38
- ccxt/async_support/bitmart.py +1288 -350
- ccxt/async_support/bitmex.py +260 -75
- ccxt/async_support/bitopro.py +262 -62
- ccxt/async_support/bitpin.py +17 -16
- ccxt/async_support/bitrue.py +459 -290
- ccxt/async_support/bitso.py +199 -54
- ccxt/async_support/bitstamp.py +230 -96
- ccxt/async_support/bitteam.py +167 -25
- ccxt/async_support/{huobijp.py → bittrade.py} +158 -30
- ccxt/async_support/bitvavo.py +213 -49
- ccxt/async_support/blockchaincom.py +160 -46
- ccxt/async_support/blofin.py +502 -120
- ccxt/async_support/btcalpha.py +169 -31
- ccxt/async_support/btcbox.py +292 -23
- ccxt/async_support/btcmarkets.py +211 -58
- ccxt/async_support/btcturk.py +161 -38
- ccxt/async_support/bybit.py +1775 -1030
- ccxt/async_support/cex.py +1440 -1303
- ccxt/async_support/coinbase.py +724 -212
- ccxt/async_support/coinbaseadvanced.py +2 -1
- ccxt/async_support/coinbaseexchange.py +388 -89
- ccxt/async_support/coinbaseinternational.py +412 -57
- ccxt/async_support/coincatch.py +177 -78
- ccxt/async_support/coincheck.py +135 -19
- ccxt/async_support/coinex.py +606 -232
- ccxt/async_support/coinmate.py +189 -63
- ccxt/async_support/coinmetro.py +195 -54
- ccxt/async_support/coinone.py +158 -51
- ccxt/async_support/coinsph.py +336 -61
- ccxt/async_support/coinspot.py +151 -52
- ccxt/async_support/cryptocom.py +661 -111
- ccxt/async_support/cryptomus.py +1137 -0
- ccxt/async_support/defx.py +2071 -0
- ccxt/async_support/delta.py +299 -99
- ccxt/async_support/deribit.py +348 -126
- ccxt/async_support/derive.py +2572 -0
- ccxt/async_support/digifinex.py +430 -214
- ccxt/async_support/ellipx.py +2029 -0
- ccxt/async_support/eterex.py +10 -10
- ccxt/async_support/excoino.py +31 -31
- ccxt/async_support/exir.py +14 -14
- ccxt/async_support/exmo.py +344 -131
- ccxt/async_support/exnovin.py +10 -10
- ccxt/async_support/farhadexchange.py +12 -12
- ccxt/async_support/fmfwio.py +2 -1
- ccxt/async_support/foxbit.py +1935 -0
- ccxt/async_support/gate.py +1351 -529
- ccxt/async_support/gateio.py +2 -1
- ccxt/async_support/gemini.py +144 -39
- ccxt/async_support/hashkey.py +152 -109
- ccxt/async_support/hibachi.py +2080 -0
- ccxt/async_support/hitbtc.py +395 -167
- ccxt/async_support/hitobit.py +12 -12
- ccxt/async_support/hollaex.py +307 -119
- ccxt/async_support/htx.py +851 -383
- ccxt/async_support/huobi.py +2 -1
- ccxt/async_support/hyperliquid.py +1848 -536
- ccxt/async_support/independentreserve.py +288 -15
- ccxt/async_support/indodax.py +190 -33
- ccxt/async_support/jibitex.py +12 -12
- ccxt/async_support/kraken.py +795 -351
- ccxt/async_support/krakenfutures.py +214 -62
- ccxt/async_support/kucoin.py +715 -396
- ccxt/async_support/kucoinfutures.py +652 -89
- ccxt/async_support/latoken.py +217 -113
- ccxt/async_support/lbank.py +425 -97
- ccxt/async_support/luno.py +382 -35
- ccxt/async_support/mercado.py +113 -6
- ccxt/async_support/mexc.py +874 -437
- ccxt/async_support/modetrade.py +2818 -0
- ccxt/async_support/myokx.py +54 -0
- ccxt/async_support/ndax.py +221 -64
- ccxt/async_support/nobitex.py +31 -37
- ccxt/async_support/novadax.py +190 -34
- ccxt/async_support/oceanex.py +217 -28
- ccxt/async_support/okcoin.py +253 -145
- ccxt/async_support/okexchange.py +11 -11
- ccxt/async_support/okx.py +1088 -351
- ccxt/async_support/okxus.py +54 -0
- ccxt/async_support/ompfinex.py +25 -24
- ccxt/async_support/onetrading.py +213 -392
- ccxt/async_support/oxfun.py +245 -166
- ccxt/async_support/p2b.py +151 -29
- ccxt/async_support/paradex.py +562 -49
- ccxt/async_support/paymium.py +82 -19
- ccxt/async_support/phemex.py +713 -172
- ccxt/async_support/poloniex.py +1602 -283
- ccxt/async_support/probit.py +224 -95
- ccxt/async_support/ramzinex.py +30 -27
- ccxt/async_support/sarmayex.py +9 -9
- ccxt/async_support/sarrafex.py +13 -13
- ccxt/async_support/tabdeal.py +14 -13
- ccxt/async_support/tetherland.py +9 -9
- ccxt/async_support/timex.py +210 -51
- ccxt/async_support/tokocrypto.py +167 -47
- ccxt/async_support/tradeogre.py +266 -31
- ccxt/async_support/twox.py +9 -9
- ccxt/async_support/ubitex.py +12 -12
- ccxt/async_support/upbit.py +568 -165
- ccxt/async_support/vertex.py +160 -32
- ccxt/async_support/wallex.py +12 -12
- ccxt/async_support/wavesexchange.py +165 -30
- ccxt/async_support/whitebit.py +975 -127
- ccxt/async_support/woo.py +1918 -1016
- ccxt/async_support/woofipro.py +433 -141
- ccxt/async_support/xt.py +649 -193
- ccxt/async_support/yobit.py +195 -70
- ccxt/async_support/zaif.py +91 -15
- ccxt/async_support/zonda.py +151 -36
- ccxt/base/decimal_to_precision.py +14 -10
- ccxt/base/errors.py +49 -18
- ccxt/base/exchange.py +1556 -450
- ccxt/base/precise.py +10 -0
- ccxt/base/types.py +114 -6
- ccxt/bequant.py +5 -3
- ccxt/bigone.py +279 -144
- ccxt/binance.py +2347 -1158
- ccxt/binancecoinm.py +9 -3
- ccxt/binanceus.py +17 -3
- ccxt/binanceusdm.py +9 -4
- ccxt/bingx.py +2962 -920
- ccxt/bit2c.py +147 -27
- ccxt/bitbank.py +151 -23
- ccxt/bitbns.py +104 -30
- ccxt/bitfinex.py +3290 -1113
- ccxt/bitflyer.py +202 -27
- ccxt/bitget.py +3683 -1538
- ccxt/bithumb.py +194 -38
- ccxt/bitimen.py +9 -9
- ccxt/bitir.py +35 -35
- ccxt/bitmart.py +1288 -350
- ccxt/bitmex.py +260 -75
- ccxt/bitopro.py +262 -62
- ccxt/bitpin.py +15 -14
- ccxt/bitrue.py +459 -290
- ccxt/bitso.py +199 -54
- ccxt/bitstamp.py +230 -96
- ccxt/bitteam.py +167 -25
- ccxt/{huobijp.py → bittrade.py} +158 -30
- ccxt/bitvavo.py +213 -49
- ccxt/blockchaincom.py +160 -46
- ccxt/blofin.py +502 -120
- ccxt/btcalpha.py +169 -31
- ccxt/btcbox.py +291 -23
- ccxt/btcmarkets.py +211 -58
- ccxt/btcturk.py +161 -38
- ccxt/bybit.py +1775 -1030
- ccxt/cex.py +1439 -1303
- ccxt/coinbase.py +724 -212
- ccxt/coinbaseadvanced.py +2 -1
- ccxt/coinbaseexchange.py +388 -89
- ccxt/coinbaseinternational.py +412 -57
- ccxt/coincatch.py +177 -78
- ccxt/coincheck.py +135 -19
- ccxt/coinex.py +606 -232
- ccxt/coinmate.py +189 -63
- ccxt/coinmetro.py +194 -54
- ccxt/coinone.py +158 -51
- ccxt/coinsph.py +336 -61
- ccxt/coinspot.py +151 -52
- ccxt/cryptocom.py +661 -111
- ccxt/cryptomus.py +1137 -0
- ccxt/defx.py +2070 -0
- ccxt/delta.py +299 -99
- ccxt/deribit.py +348 -126
- ccxt/derive.py +2571 -0
- ccxt/digifinex.py +430 -214
- ccxt/ellipx.py +2029 -0
- ccxt/eterex.py +7 -7
- ccxt/excoino.py +29 -29
- ccxt/exir.py +11 -11
- ccxt/exmo.py +343 -131
- ccxt/exnovin.py +8 -8
- ccxt/farhadexchange.py +10 -10
- ccxt/fmfwio.py +2 -1
- ccxt/foxbit.py +1935 -0
- ccxt/gate.py +1351 -529
- ccxt/gateio.py +2 -1
- ccxt/gemini.py +144 -39
- ccxt/hashkey.py +152 -109
- ccxt/hibachi.py +2079 -0
- ccxt/hitbtc.py +395 -167
- ccxt/hitobit.py +9 -9
- ccxt/hollaex.py +307 -119
- ccxt/htx.py +851 -383
- ccxt/huobi.py +2 -1
- ccxt/hyperliquid.py +1848 -536
- ccxt/independentreserve.py +287 -15
- ccxt/indodax.py +190 -33
- ccxt/jibitex.py +9 -9
- ccxt/kraken.py +794 -351
- ccxt/krakenfutures.py +214 -62
- ccxt/kucoin.py +715 -396
- ccxt/kucoinfutures.py +652 -89
- ccxt/latoken.py +217 -113
- ccxt/lbank.py +425 -97
- ccxt/luno.py +382 -35
- ccxt/mercado.py +113 -6
- ccxt/mexc.py +873 -437
- ccxt/modetrade.py +2818 -0
- ccxt/myokx.py +54 -0
- ccxt/ndax.py +221 -64
- ccxt/nobitex.py +29 -35
- ccxt/novadax.py +190 -34
- ccxt/oceanex.py +217 -28
- ccxt/okcoin.py +253 -145
- ccxt/okexchange.py +9 -9
- ccxt/okx.py +1088 -351
- ccxt/okxus.py +54 -0
- ccxt/ompfinex.py +22 -21
- ccxt/onetrading.py +213 -392
- ccxt/oxfun.py +245 -166
- ccxt/p2b.py +151 -29
- ccxt/paradex.py +562 -49
- ccxt/paymium.py +82 -19
- ccxt/phemex.py +712 -172
- ccxt/poloniex.py +1601 -283
- ccxt/pro/__init__.py +76 -17
- ccxt/pro/alpaca.py +21 -6
- ccxt/pro/apex.py +984 -0
- ccxt/pro/ascendex.py +58 -10
- ccxt/pro/bequant.py +6 -1
- ccxt/pro/binance.py +728 -156
- ccxt/pro/binancecoinm.py +6 -2
- ccxt/pro/binanceus.py +8 -4
- ccxt/pro/binanceusdm.py +7 -2
- ccxt/pro/bingx.py +333 -142
- ccxt/pro/bitfinex.py +727 -262
- ccxt/pro/bitget.py +570 -79
- ccxt/pro/bithumb.py +20 -6
- ccxt/pro/bitmart.py +216 -87
- ccxt/pro/bitmex.py +47 -9
- ccxt/pro/bitopro.py +26 -14
- ccxt/pro/bitrue.py +22 -22
- ccxt/pro/bitstamp.py +54 -21
- ccxt/pro/{huobijp.py → bittrade.py} +7 -6
- ccxt/pro/bitvavo.py +191 -67
- ccxt/pro/blockchaincom.py +21 -8
- ccxt/pro/blofin.py +9 -1
- ccxt/pro/bybit.py +632 -245
- ccxt/pro/cex.py +59 -24
- ccxt/pro/coinbase.py +102 -73
- ccxt/pro/coinbaseadvanced.py +2 -1
- ccxt/pro/coinbaseexchange.py +8 -8
- ccxt/pro/coinbaseinternational.py +181 -25
- ccxt/pro/coincatch.py +6 -7
- ccxt/pro/coincheck.py +11 -6
- ccxt/pro/coinex.py +967 -665
- ccxt/pro/coinone.py +16 -9
- ccxt/pro/cryptocom.py +448 -45
- ccxt/pro/defx.py +831 -0
- ccxt/pro/deribit.py +150 -14
- ccxt/pro/derive.py +704 -0
- ccxt/pro/exmo.py +239 -6
- ccxt/pro/gate.py +623 -65
- ccxt/pro/gateio.py +2 -1
- ccxt/pro/gemini.py +27 -11
- ccxt/pro/hashkey.py +2 -2
- ccxt/pro/hitbtc.py +196 -91
- ccxt/pro/hollaex.py +23 -7
- ccxt/pro/htx.py +51 -14
- ccxt/pro/huobi.py +2 -1
- ccxt/pro/hyperliquid.py +591 -27
- ccxt/pro/independentreserve.py +9 -6
- ccxt/pro/kraken.py +640 -320
- ccxt/pro/krakenfutures.py +62 -35
- ccxt/pro/kucoin.py +267 -46
- ccxt/pro/kucoinfutures.py +165 -21
- ccxt/pro/lbank.py +102 -21
- ccxt/pro/luno.py +12 -8
- ccxt/pro/mexc.py +877 -111
- ccxt/pro/modetrade.py +1271 -0
- ccxt/pro/myokx.py +38 -0
- ccxt/pro/ndax.py +15 -2
- ccxt/pro/okcoin.py +23 -4
- ccxt/pro/okx.py +573 -98
- ccxt/pro/okxus.py +38 -0
- ccxt/pro/onetrading.py +30 -13
- ccxt/pro/oxfun.py +131 -27
- ccxt/pro/p2b.py +88 -22
- ccxt/pro/paradex.py +3 -3
- ccxt/pro/phemex.py +75 -21
- ccxt/pro/poloniex.py +124 -41
- ccxt/pro/probit.py +87 -80
- ccxt/pro/tradeogre.py +272 -0
- ccxt/pro/upbit.py +152 -12
- ccxt/pro/vertex.py +8 -3
- ccxt/pro/whitebit.py +58 -5
- ccxt/pro/woo.py +228 -37
- ccxt/pro/woofipro.py +106 -18
- ccxt/pro/xt.py +111 -5
- ccxt/probit.py +224 -95
- ccxt/protobuf/__init__.py +0 -0
- ccxt/protobuf/mexc/PrivateAccountV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PrivateDealsV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PrivateOrdersV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PublicAggreBookTickerV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PublicAggreDealsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicAggreDepthsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicBookTickerBatchV3Api_pb2.py +38 -0
- ccxt/protobuf/mexc/PublicBookTickerV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PublicDealsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
- ccxt/protobuf/mexc/PublicIncreaseDepthsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicLimitDepthsV3Api_pb2.py +39 -0
- ccxt/protobuf/mexc/PublicMiniTickerV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PublicMiniTickersV3Api_pb2.py +38 -0
- ccxt/protobuf/mexc/PublicSpotKlineV3Api_pb2.py +37 -0
- ccxt/protobuf/mexc/PushDataV3ApiWrapper_pb2.py +52 -0
- ccxt/protobuf/mexc/__init__.py +0 -0
- ccxt/ramzinex.py +28 -25
- ccxt/sarmayex.py +7 -7
- ccxt/sarrafex.py +10 -10
- ccxt/static_dependencies/__init__.py +1 -1
- ccxt/static_dependencies/lark/py.typed +0 -0
- ccxt/static_dependencies/marshmallow/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- ccxt/tabdeal.py +12 -11
- ccxt/test/tests_async.py +261 -57
- ccxt/test/tests_helpers.py +1 -3
- ccxt/test/tests_init.py +4 -3
- ccxt/test/tests_sync.py +261 -57
- ccxt/tetherland.py +7 -7
- ccxt/timex.py +210 -51
- ccxt/tokocrypto.py +167 -47
- ccxt/tradeogre.py +266 -31
- ccxt/twox.py +7 -7
- ccxt/ubitex.py +9 -9
- ccxt/upbit.py +568 -165
- ccxt/vertex.py +160 -32
- ccxt/wallex.py +9 -9
- ccxt/wavesexchange.py +165 -30
- ccxt/whitebit.py +975 -127
- ccxt/woo.py +1917 -1016
- ccxt/woofipro.py +432 -141
- ccxt/xt.py +649 -193
- ccxt/yobit.py +194 -70
- ccxt/zaif.py +91 -15
- ccxt/zonda.py +151 -36
- {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/METADATA +225 -73
- ccxt_ir-4.5.0.dist-info/RECORD +743 -0
- {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
- ccxt/__test__.py +0 -7
- ccxt/abstract/ace.py +0 -15
- ccxt/abstract/bitbay.py +0 -53
- ccxt/abstract/bitcoincom.py +0 -115
- ccxt/abstract/bitfinex2.py +0 -139
- ccxt/abstract/bitpanda.py +0 -35
- ccxt/abstract/bl3p.py +0 -19
- ccxt/abstract/coinlist.py +0 -54
- ccxt/abstract/currencycom.py +0 -68
- ccxt/abstract/hitbtc3.py +0 -115
- ccxt/abstract/idex.py +0 -26
- ccxt/abstract/kuna.py +0 -182
- ccxt/abstract/lykke.py +0 -29
- ccxt/abstract/poloniexfutures.py +0 -48
- ccxt/abstract/wazirx.py +0 -30
- ccxt/ace.py +0 -1012
- ccxt/async_support/ace.py +0 -1012
- ccxt/async_support/base/ws/aiohttp_client.py +0 -125
- ccxt/async_support/base/ws/fast_client.py +0 -96
- ccxt/async_support/bitbay.py +0 -17
- ccxt/async_support/bitcoincom.py +0 -17
- ccxt/async_support/bitfinex2.py +0 -3552
- ccxt/async_support/bitpanda.py +0 -16
- ccxt/async_support/bl3p.py +0 -485
- ccxt/async_support/coinlist.py +0 -2243
- ccxt/async_support/currencycom.py +0 -1950
- ccxt/async_support/hitbtc3.py +0 -16
- ccxt/async_support/idex.py +0 -1766
- ccxt/async_support/kuna.py +0 -1841
- ccxt/async_support/lykke.py +0 -1270
- ccxt/async_support/poloniexfutures.py +0 -1717
- ccxt/async_support/wazirx.py +0 -1224
- ccxt/bitbay.py +0 -17
- ccxt/bitcoincom.py +0 -17
- ccxt/bitfinex2.py +0 -3552
- ccxt/bitpanda.py +0 -16
- ccxt/bl3p.py +0 -485
- ccxt/coinlist.py +0 -2243
- ccxt/currencycom.py +0 -1950
- ccxt/hitbtc3.py +0 -16
- ccxt/idex.py +0 -1766
- ccxt/kuna.py +0 -1841
- ccxt/lykke.py +0 -1270
- ccxt/poloniexfutures.py +0 -1717
- ccxt/pro/bitcoincom.py +0 -34
- ccxt/pro/bitfinex2.py +0 -1083
- ccxt/pro/bitpanda.py +0 -15
- ccxt/pro/currencycom.py +0 -536
- ccxt/pro/idex.py +0 -672
- ccxt/pro/poloniexfutures.py +0 -990
- ccxt/pro/wazirx.py +0 -749
- ccxt/test/base/__init__.py +0 -29
- 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 -109
- 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 -31
- 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_liquidation.py +0 -50
- 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 -193
- ccxt/test/base/test_number.py +0 -411
- ccxt/test/base/test_ohlcv.py +0 -33
- 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 -69
- ccxt/test/base/test_position.py +0 -60
- ccxt/test/base/test_shared_methods.py +0 -353
- ccxt/test/base/test_status.py +0 -24
- ccxt/test/base/test_throttle.py +0 -126
- ccxt/test/base/test_ticker.py +0 -92
- 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/test/test_async.py +0 -1649
- ccxt/test/test_sync.py +0 -1648
- ccxt/wazirx.py +0 -1224
- ccxt_ir-4.3.46.0.3.dist-info/RECORD +0 -773
- /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
- {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
- {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
ccxt/bitopro.py
CHANGED
|
@@ -7,7 +7,7 @@ from ccxt.base.exchange import Exchange
|
|
|
7
7
|
from ccxt.abstract.bitopro import ImplicitAPI
|
|
8
8
|
import hashlib
|
|
9
9
|
import math
|
|
10
|
-
from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
|
|
10
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
|
|
11
11
|
from typing import List
|
|
12
12
|
from ccxt.base.errors import ExchangeError
|
|
13
13
|
from ccxt.base.errors import AuthenticationError
|
|
@@ -21,7 +21,7 @@ from ccxt.base.precise import Precise
|
|
|
21
21
|
|
|
22
22
|
class bitopro(Exchange, ImplicitAPI):
|
|
23
23
|
|
|
24
|
-
def describe(self):
|
|
24
|
+
def describe(self) -> Any:
|
|
25
25
|
return self.deep_extend(super(bitopro, self).describe(), {
|
|
26
26
|
'id': 'bitopro',
|
|
27
27
|
'name': 'BitoPro',
|
|
@@ -36,16 +36,29 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
36
36
|
'swap': False,
|
|
37
37
|
'future': False,
|
|
38
38
|
'option': False,
|
|
39
|
+
'addMargin': False,
|
|
40
|
+
'borrowCrossMargin': False,
|
|
41
|
+
'borrowIsolatedMargin': False,
|
|
42
|
+
'borrowMargin': False,
|
|
39
43
|
'cancelAllOrders': True,
|
|
40
44
|
'cancelOrder': True,
|
|
41
45
|
'cancelOrders': True,
|
|
42
46
|
'closeAllPositions': False,
|
|
43
47
|
'closePosition': False,
|
|
44
48
|
'createOrder': True,
|
|
49
|
+
'createOrderWithTakeProfitAndStopLoss': False,
|
|
50
|
+
'createOrderWithTakeProfitAndStopLossWs': False,
|
|
51
|
+
'createReduceOnlyOrder': False,
|
|
52
|
+
'createStopOrder': True,
|
|
53
|
+
'createTriggerOrder': True,
|
|
45
54
|
'editOrder': False,
|
|
46
55
|
'fetchBalance': True,
|
|
56
|
+
'fetchBorrowInterest': False,
|
|
57
|
+
'fetchBorrowRate': False,
|
|
47
58
|
'fetchBorrowRateHistories': False,
|
|
48
59
|
'fetchBorrowRateHistory': False,
|
|
60
|
+
'fetchBorrowRates': False,
|
|
61
|
+
'fetchBorrowRatesPerSymbol': False,
|
|
49
62
|
'fetchClosedOrders': True,
|
|
50
63
|
'fetchCrossBorrowRate': False,
|
|
51
64
|
'fetchCrossBorrowRates': False,
|
|
@@ -56,19 +69,39 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
56
69
|
'fetchDepositWithdrawFee': 'emulated',
|
|
57
70
|
'fetchDepositWithdrawFees': True,
|
|
58
71
|
'fetchFundingHistory': False,
|
|
72
|
+
'fetchFundingInterval': False,
|
|
73
|
+
'fetchFundingIntervals': False,
|
|
59
74
|
'fetchFundingRate': False,
|
|
60
75
|
'fetchFundingRateHistory': False,
|
|
61
76
|
'fetchFundingRates': False,
|
|
77
|
+
'fetchGreeks': False,
|
|
62
78
|
'fetchIndexOHLCV': False,
|
|
63
79
|
'fetchIsolatedBorrowRate': False,
|
|
64
80
|
'fetchIsolatedBorrowRates': False,
|
|
81
|
+
'fetchIsolatedPositions': False,
|
|
82
|
+
'fetchLeverage': False,
|
|
83
|
+
'fetchLeverages': False,
|
|
84
|
+
'fetchLeverageTiers': False,
|
|
85
|
+
'fetchLiquidations': False,
|
|
86
|
+
'fetchLongShortRatio': False,
|
|
87
|
+
'fetchLongShortRatioHistory': False,
|
|
88
|
+
'fetchMarginAdjustmentHistory': False,
|
|
65
89
|
'fetchMarginMode': False,
|
|
90
|
+
'fetchMarginModes': False,
|
|
91
|
+
'fetchMarketLeverageTiers': False,
|
|
66
92
|
'fetchMarkets': True,
|
|
67
93
|
'fetchMarkOHLCV': False,
|
|
94
|
+
'fetchMarkPrices': False,
|
|
95
|
+
'fetchMyLiquidations': False,
|
|
96
|
+
'fetchMySettlementHistory': False,
|
|
68
97
|
'fetchMyTrades': True,
|
|
69
98
|
'fetchOHLCV': True,
|
|
99
|
+
'fetchOpenInterest': False,
|
|
70
100
|
'fetchOpenInterestHistory': False,
|
|
101
|
+
'fetchOpenInterests': False,
|
|
71
102
|
'fetchOpenOrders': True,
|
|
103
|
+
'fetchOption': False,
|
|
104
|
+
'fetchOptionChain': False,
|
|
72
105
|
'fetchOrder': True,
|
|
73
106
|
'fetchOrderBook': True,
|
|
74
107
|
'fetchOrders': False,
|
|
@@ -81,6 +114,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
81
114
|
'fetchPositionsHistory': False,
|
|
82
115
|
'fetchPositionsRisk': False,
|
|
83
116
|
'fetchPremiumIndexOHLCV': False,
|
|
117
|
+
'fetchSettlementHistory': False,
|
|
84
118
|
'fetchTicker': True,
|
|
85
119
|
'fetchTickers': True,
|
|
86
120
|
'fetchTime': False,
|
|
@@ -91,10 +125,16 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
91
125
|
'fetchTransactions': False,
|
|
92
126
|
'fetchTransfer': False,
|
|
93
127
|
'fetchTransfers': False,
|
|
128
|
+
'fetchVolatilityHistory': False,
|
|
94
129
|
'fetchWithdrawal': True,
|
|
95
130
|
'fetchWithdrawals': True,
|
|
131
|
+
'reduceMargin': False,
|
|
132
|
+
'repayCrossMargin': False,
|
|
133
|
+
'repayIsolatedMargin': False,
|
|
96
134
|
'setLeverage': False,
|
|
135
|
+
'setMargin': False,
|
|
97
136
|
'setMarginMode': False,
|
|
137
|
+
'setPositionMode': False,
|
|
98
138
|
'transfer': False,
|
|
99
139
|
'withdraw': True,
|
|
100
140
|
},
|
|
@@ -112,7 +152,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
112
152
|
'1M': '1M',
|
|
113
153
|
},
|
|
114
154
|
'urls': {
|
|
115
|
-
'logo': 'https://
|
|
155
|
+
'logo': 'https://github.com/user-attachments/assets/affc6337-b95a-44bf-aacd-04f9722364f6',
|
|
116
156
|
'api': {
|
|
117
157
|
'rest': 'https://api.bitopro.com/v3',
|
|
118
158
|
},
|
|
@@ -151,6 +191,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
151
191
|
'wallet/withdraw/{currency}/id/{id}': 1,
|
|
152
192
|
'wallet/depositHistory/{currency}': 1,
|
|
153
193
|
'wallet/withdrawHistory/{currency}': 1,
|
|
194
|
+
'orders/open': 1,
|
|
154
195
|
},
|
|
155
196
|
'post': {
|
|
156
197
|
'orders/{pair}': 1 / 2, # 1200/m => 20/s => 10/20 = 1/2
|
|
@@ -204,6 +245,86 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
204
245
|
'BEP20': 'BSC',
|
|
205
246
|
'BSC': 'BSC',
|
|
206
247
|
},
|
|
248
|
+
'fiatCurrencies': ['TWD'], # the only fiat currency for exchange
|
|
249
|
+
},
|
|
250
|
+
'features': {
|
|
251
|
+
'spot': {
|
|
252
|
+
'sandbox': False,
|
|
253
|
+
'createOrder': {
|
|
254
|
+
'marginMode': False,
|
|
255
|
+
'triggerPrice': True,
|
|
256
|
+
'triggerPriceType': None,
|
|
257
|
+
'triggerDirection': True, # todo implement
|
|
258
|
+
'stopLossPrice': False,
|
|
259
|
+
'takeProfitPrice': False,
|
|
260
|
+
'attachedStopLossTakeProfit': None,
|
|
261
|
+
'timeInForce': {
|
|
262
|
+
'IOC': False,
|
|
263
|
+
'FOK': False,
|
|
264
|
+
'PO': True,
|
|
265
|
+
'GTD': False,
|
|
266
|
+
},
|
|
267
|
+
'hedged': False,
|
|
268
|
+
'trailing': False,
|
|
269
|
+
'leverage': False,
|
|
270
|
+
'marketBuyRequiresPrice': False,
|
|
271
|
+
'marketBuyByCost': False,
|
|
272
|
+
'selfTradePrevention': False,
|
|
273
|
+
'iceberg': False,
|
|
274
|
+
},
|
|
275
|
+
'createOrders': None,
|
|
276
|
+
'fetchMyTrades': {
|
|
277
|
+
'marginMode': False,
|
|
278
|
+
'limit': 1000,
|
|
279
|
+
'daysBack': 100000,
|
|
280
|
+
'untilDays': 100000,
|
|
281
|
+
'symbolRequired': True,
|
|
282
|
+
},
|
|
283
|
+
'fetchOrder': {
|
|
284
|
+
'marginMode': False,
|
|
285
|
+
'trigger': False,
|
|
286
|
+
'trailing': False,
|
|
287
|
+
'symbolRequired': True,
|
|
288
|
+
},
|
|
289
|
+
# todo: implement through fetchOrders
|
|
290
|
+
'fetchOpenOrders': {
|
|
291
|
+
'marginMode': False,
|
|
292
|
+
'limit': None,
|
|
293
|
+
'trigger': False,
|
|
294
|
+
'trailing': False,
|
|
295
|
+
'symbolRequired': False,
|
|
296
|
+
},
|
|
297
|
+
'fetchOrders': {
|
|
298
|
+
'marginMode': False,
|
|
299
|
+
'limit': 1000,
|
|
300
|
+
'daysBack': 100000,
|
|
301
|
+
'untilDays': 100000,
|
|
302
|
+
'trigger': False,
|
|
303
|
+
'trailing': False,
|
|
304
|
+
'symbolRequired': True,
|
|
305
|
+
},
|
|
306
|
+
'fetchClosedOrders': {
|
|
307
|
+
'marginMode': False,
|
|
308
|
+
'limit': 1000,
|
|
309
|
+
'daysBack': 100000,
|
|
310
|
+
'daysBackCanceled': 1,
|
|
311
|
+
'untilDays': 10000,
|
|
312
|
+
'trigger': False,
|
|
313
|
+
'trailing': False,
|
|
314
|
+
'symbolRequired': True,
|
|
315
|
+
},
|
|
316
|
+
'fetchOHLCV': {
|
|
317
|
+
'limit': 1000,
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
'swap': {
|
|
321
|
+
'linear': None,
|
|
322
|
+
'inverse': None,
|
|
323
|
+
},
|
|
324
|
+
'future': {
|
|
325
|
+
'linear': None,
|
|
326
|
+
'inverse': None,
|
|
327
|
+
},
|
|
207
328
|
},
|
|
208
329
|
'precisionMode': TICK_SIZE,
|
|
209
330
|
'exceptions': {
|
|
@@ -228,12 +349,14 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
228
349
|
def fetch_currencies(self, params={}) -> Currencies:
|
|
229
350
|
"""
|
|
230
351
|
fetches all available currencies on an exchange
|
|
231
|
-
|
|
352
|
+
|
|
353
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_currency_info.md
|
|
354
|
+
|
|
232
355
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
233
356
|
:returns dict: an associative dictionary of currencies
|
|
234
357
|
"""
|
|
235
358
|
response = self.publicGetProvisioningCurrencies(params)
|
|
236
|
-
currencies = self.
|
|
359
|
+
currencies = self.safe_list(response, 'data', [])
|
|
237
360
|
#
|
|
238
361
|
# {
|
|
239
362
|
# "data":[
|
|
@@ -251,12 +374,13 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
251
374
|
# }
|
|
252
375
|
#
|
|
253
376
|
result: dict = {}
|
|
377
|
+
fiatCurrencies = self.safe_list(self.options, 'fiatCurrencies', [])
|
|
254
378
|
for i in range(0, len(currencies)):
|
|
255
379
|
currency = currencies[i]
|
|
256
380
|
currencyId = self.safe_string(currency, 'currency')
|
|
257
381
|
code = self.safe_currency_code(currencyId)
|
|
258
|
-
deposit = self.
|
|
259
|
-
withdraw = self.
|
|
382
|
+
deposit = self.safe_bool(currency, 'deposit')
|
|
383
|
+
withdraw = self.safe_bool(currency, 'withdraw')
|
|
260
384
|
fee = self.safe_number(currency, 'withdrawFee')
|
|
261
385
|
withdrawMin = self.safe_number(currency, 'minWithdraw')
|
|
262
386
|
withdrawMax = self.safe_number(currency, 'maxWithdraw')
|
|
@@ -270,11 +394,12 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
270
394
|
'max': None,
|
|
271
395
|
},
|
|
272
396
|
}
|
|
397
|
+
isFiat = self.in_array(code, fiatCurrencies)
|
|
273
398
|
result[code] = {
|
|
274
399
|
'id': currencyId,
|
|
275
400
|
'code': code,
|
|
276
401
|
'info': currency,
|
|
277
|
-
'type':
|
|
402
|
+
'type': 'fiat' if isFiat else 'crypto',
|
|
278
403
|
'name': None,
|
|
279
404
|
'active': deposit and withdraw,
|
|
280
405
|
'deposit': deposit,
|
|
@@ -282,18 +407,21 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
282
407
|
'fee': fee,
|
|
283
408
|
'precision': None,
|
|
284
409
|
'limits': limits,
|
|
410
|
+
'networks': None,
|
|
285
411
|
}
|
|
286
412
|
return result
|
|
287
413
|
|
|
288
414
|
def fetch_markets(self, params={}) -> List[Market]:
|
|
289
415
|
"""
|
|
290
416
|
retrieves data on all markets for bitopro
|
|
291
|
-
|
|
417
|
+
|
|
418
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_trading_pair_info.md
|
|
419
|
+
|
|
292
420
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
293
421
|
:returns dict[]: an array of objects representing market data
|
|
294
422
|
"""
|
|
295
423
|
response = self.publicGetProvisioningTradingPairs()
|
|
296
|
-
markets = self.
|
|
424
|
+
markets = self.safe_list(response, 'data', [])
|
|
297
425
|
#
|
|
298
426
|
# {
|
|
299
427
|
# "data":[
|
|
@@ -317,7 +445,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
317
445
|
return self.parse_markets(markets)
|
|
318
446
|
|
|
319
447
|
def parse_market(self, market: dict) -> Market:
|
|
320
|
-
active = not self.
|
|
448
|
+
active = not self.safe_bool(market, 'maintain')
|
|
321
449
|
id = self.safe_string(market, 'pair')
|
|
322
450
|
uppercaseId = id.upper()
|
|
323
451
|
baseId = self.safe_string(market, 'base')
|
|
@@ -418,7 +546,9 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
418
546
|
def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
|
419
547
|
"""
|
|
420
548
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
421
|
-
|
|
549
|
+
|
|
550
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_ticker_data.md
|
|
551
|
+
|
|
422
552
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
|
423
553
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
424
554
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
@@ -429,7 +559,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
429
559
|
'pair': market['id'],
|
|
430
560
|
}
|
|
431
561
|
response = self.publicGetTickersPair(self.extend(request, params))
|
|
432
|
-
ticker = self.
|
|
562
|
+
ticker = self.safe_dict(response, 'data', {})
|
|
433
563
|
#
|
|
434
564
|
# {
|
|
435
565
|
# "data":{
|
|
@@ -448,14 +578,16 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
448
578
|
def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
|
449
579
|
"""
|
|
450
580
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
451
|
-
|
|
581
|
+
|
|
582
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_ticker_data.md
|
|
583
|
+
|
|
452
584
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
453
585
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
454
586
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
455
587
|
"""
|
|
456
588
|
self.load_markets()
|
|
457
589
|
response = self.publicGetTickers()
|
|
458
|
-
tickers = self.
|
|
590
|
+
tickers = self.safe_list(response, 'data', [])
|
|
459
591
|
#
|
|
460
592
|
# {
|
|
461
593
|
# "data":[
|
|
@@ -476,7 +608,9 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
476
608
|
def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
|
477
609
|
"""
|
|
478
610
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
|
479
|
-
|
|
611
|
+
|
|
612
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_orderbook_data.md
|
|
613
|
+
|
|
480
614
|
:param str symbol: unified symbol of the market to fetch the order book for
|
|
481
615
|
:param int [limit]: the maximum amount of order book entries to return
|
|
482
616
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -551,7 +685,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
551
685
|
type = self.safe_string_lower(trade, 'type')
|
|
552
686
|
side = self.safe_string_lower(trade, 'action')
|
|
553
687
|
if side is None:
|
|
554
|
-
isBuyer = self.
|
|
688
|
+
isBuyer = self.safe_bool(trade, 'isBuyer')
|
|
555
689
|
if isBuyer:
|
|
556
690
|
side = 'buy'
|
|
557
691
|
else:
|
|
@@ -568,7 +702,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
568
702
|
'currency': feeSymbol,
|
|
569
703
|
'rate': None,
|
|
570
704
|
}
|
|
571
|
-
isTaker = self.
|
|
705
|
+
isTaker = self.safe_bool(trade, 'isTaker')
|
|
572
706
|
takerOrMaker = None
|
|
573
707
|
if isTaker is not None:
|
|
574
708
|
if isTaker:
|
|
@@ -594,7 +728,9 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
594
728
|
def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
595
729
|
"""
|
|
596
730
|
get the list of most recent trades for a particular symbol
|
|
597
|
-
|
|
731
|
+
|
|
732
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_trades_data.md
|
|
733
|
+
|
|
598
734
|
:param str symbol: unified symbol of the market to fetch trades for
|
|
599
735
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
|
600
736
|
:param int [limit]: the maximum amount of trades to fetch
|
|
@@ -607,7 +743,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
607
743
|
'pair': market['id'],
|
|
608
744
|
}
|
|
609
745
|
response = self.publicGetTradesPair(self.extend(request, params))
|
|
610
|
-
trades = self.
|
|
746
|
+
trades = self.safe_list(response, 'data', [])
|
|
611
747
|
#
|
|
612
748
|
# {
|
|
613
749
|
# "data":[
|
|
@@ -625,13 +761,15 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
625
761
|
def fetch_trading_fees(self, params={}) -> TradingFees:
|
|
626
762
|
"""
|
|
627
763
|
fetch the trading fees for multiple markets
|
|
628
|
-
|
|
764
|
+
|
|
765
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_limitations_and_fees.md
|
|
766
|
+
|
|
629
767
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
630
768
|
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
|
|
631
769
|
"""
|
|
632
770
|
self.load_markets()
|
|
633
771
|
response = self.publicGetProvisioningLimitationsAndFees(params)
|
|
634
|
-
tradingFeeRate = self.
|
|
772
|
+
tradingFeeRate = self.safe_dict(response, 'tradingFeeRate', {})
|
|
635
773
|
first = self.safe_value(tradingFeeRate, 0)
|
|
636
774
|
#
|
|
637
775
|
# {
|
|
@@ -722,7 +860,9 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
722
860
|
def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
|
723
861
|
"""
|
|
724
862
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
725
|
-
|
|
863
|
+
|
|
864
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_ohlc_data.md
|
|
865
|
+
|
|
726
866
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
|
727
867
|
:param str timeframe: the length of time each candle represents
|
|
728
868
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
|
@@ -753,7 +893,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
753
893
|
request['from'] = int(math.floor(since / 1000))
|
|
754
894
|
request['to'] = self.sum(request['from'], limit * timeframeInSeconds)
|
|
755
895
|
response = self.publicGetTradingHistoryPair(self.extend(request, params))
|
|
756
|
-
data = self.
|
|
896
|
+
data = self.safe_list(response, 'data', [])
|
|
757
897
|
#
|
|
758
898
|
# {
|
|
759
899
|
# "data":[
|
|
@@ -835,13 +975,15 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
835
975
|
def fetch_balance(self, params={}) -> Balances:
|
|
836
976
|
"""
|
|
837
977
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
|
838
|
-
|
|
978
|
+
|
|
979
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_account_balance.md
|
|
980
|
+
|
|
839
981
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
840
982
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
|
841
983
|
"""
|
|
842
984
|
self.load_markets()
|
|
843
985
|
response = self.privateGetAccountsBalance(params)
|
|
844
|
-
balances = self.
|
|
986
|
+
balances = self.safe_list(response, 'data', [])
|
|
845
987
|
#
|
|
846
988
|
# {
|
|
847
989
|
# "data":[
|
|
@@ -943,7 +1085,6 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
943
1085
|
'postOnly': postOnly,
|
|
944
1086
|
'side': side,
|
|
945
1087
|
'price': price,
|
|
946
|
-
'stopPrice': None,
|
|
947
1088
|
'triggerPrice': None,
|
|
948
1089
|
'amount': amount,
|
|
949
1090
|
'cost': None,
|
|
@@ -959,13 +1100,16 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
959
1100
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
|
960
1101
|
"""
|
|
961
1102
|
create a trade order
|
|
962
|
-
|
|
1103
|
+
|
|
1104
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/create_an_order.md
|
|
1105
|
+
|
|
963
1106
|
:param str symbol: unified symbol of the market to create an order in
|
|
964
1107
|
:param str type: 'market' or 'limit'
|
|
965
1108
|
:param str side: 'buy' or 'sell'
|
|
966
1109
|
:param float amount: how much of currency you want to trade in units of base currency
|
|
967
|
-
:param float [price]: the price at which the order is to be
|
|
1110
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
|
968
1111
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1112
|
+
:param dict [params.triggerPrice]: the price at which a trigger order is triggered at
|
|
969
1113
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
|
970
1114
|
"""
|
|
971
1115
|
self.load_markets()
|
|
@@ -982,12 +1126,12 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
982
1126
|
request['price'] = self.price_to_precision(symbol, price)
|
|
983
1127
|
if orderType == 'STOP_LIMIT':
|
|
984
1128
|
request['price'] = self.price_to_precision(symbol, price)
|
|
985
|
-
|
|
1129
|
+
triggerPrice = self.safe_value_2(params, 'triggerPrice', 'stopPrice')
|
|
986
1130
|
params = self.omit(params, ['triggerPrice', 'stopPrice'])
|
|
987
|
-
if
|
|
988
|
-
raise InvalidOrder(self.id + ' createOrder() requires a
|
|
1131
|
+
if triggerPrice is None:
|
|
1132
|
+
raise InvalidOrder(self.id + ' createOrder() requires a triggerPrice parameter for ' + orderType + ' orders')
|
|
989
1133
|
else:
|
|
990
|
-
request['stopPrice'] = self.price_to_precision(symbol,
|
|
1134
|
+
request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
|
|
991
1135
|
condition = self.safe_string(params, 'condition')
|
|
992
1136
|
if condition is None:
|
|
993
1137
|
raise InvalidOrder(self.id + ' createOrder() requires a condition parameter for ' + orderType + ' orders')
|
|
@@ -1012,7 +1156,9 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1012
1156
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
|
1013
1157
|
"""
|
|
1014
1158
|
cancels an open order
|
|
1015
|
-
|
|
1159
|
+
|
|
1160
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/cancel_an_order.md
|
|
1161
|
+
|
|
1016
1162
|
:param str id: order id
|
|
1017
1163
|
:param str symbol: unified symbol of the market the order was made in
|
|
1018
1164
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -1038,10 +1184,26 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1038
1184
|
#
|
|
1039
1185
|
return self.parse_order(response, market)
|
|
1040
1186
|
|
|
1041
|
-
def
|
|
1187
|
+
def parse_cancel_orders(self, data):
|
|
1188
|
+
dataKeys = list(data.keys())
|
|
1189
|
+
orders = []
|
|
1190
|
+
for i in range(0, len(dataKeys)):
|
|
1191
|
+
marketId = dataKeys[i]
|
|
1192
|
+
orderIds = data[marketId]
|
|
1193
|
+
for j in range(0, len(orderIds)):
|
|
1194
|
+
orders.append(self.safe_order({
|
|
1195
|
+
'info': orderIds[j],
|
|
1196
|
+
'id': orderIds[j],
|
|
1197
|
+
'symbol': self.safe_symbol(marketId),
|
|
1198
|
+
}))
|
|
1199
|
+
return orders
|
|
1200
|
+
|
|
1201
|
+
def cancel_orders(self, ids, symbol: Str = None, params={}) -> List[Order]:
|
|
1042
1202
|
"""
|
|
1043
1203
|
cancel multiple orders
|
|
1044
|
-
|
|
1204
|
+
|
|
1205
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/cancel_batch_orders.md
|
|
1206
|
+
|
|
1045
1207
|
:param str[] ids: order ids
|
|
1046
1208
|
:param str symbol: unified market symbol
|
|
1047
1209
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -1065,12 +1227,15 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1065
1227
|
# }
|
|
1066
1228
|
# }
|
|
1067
1229
|
#
|
|
1068
|
-
|
|
1230
|
+
data = self.safe_dict(response, 'data')
|
|
1231
|
+
return self.parse_cancel_orders(data)
|
|
1069
1232
|
|
|
1070
|
-
def cancel_all_orders(self, symbol: Str = None, params={}):
|
|
1233
|
+
def cancel_all_orders(self, symbol: Str = None, params={}) -> List[Order]:
|
|
1071
1234
|
"""
|
|
1072
1235
|
cancel all open orders
|
|
1073
|
-
|
|
1236
|
+
|
|
1237
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/cancel_all_orders.md
|
|
1238
|
+
|
|
1074
1239
|
:param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
|
|
1075
1240
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1076
1241
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
|
@@ -1086,7 +1251,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1086
1251
|
response = self.privateDeleteOrdersPair(self.extend(request, params))
|
|
1087
1252
|
else:
|
|
1088
1253
|
response = self.privateDeleteOrdersAll(self.extend(request, params))
|
|
1089
|
-
|
|
1254
|
+
data = self.safe_dict(response, 'data', {})
|
|
1090
1255
|
#
|
|
1091
1256
|
# {
|
|
1092
1257
|
# "data":{
|
|
@@ -1097,12 +1262,15 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1097
1262
|
# }
|
|
1098
1263
|
# }
|
|
1099
1264
|
#
|
|
1100
|
-
return
|
|
1265
|
+
return self.parse_cancel_orders(data)
|
|
1101
1266
|
|
|
1102
1267
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
|
1103
1268
|
"""
|
|
1104
1269
|
fetches information on an order made by the user
|
|
1105
|
-
|
|
1270
|
+
|
|
1271
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_an_order_data.md
|
|
1272
|
+
|
|
1273
|
+
:param str id: the order id
|
|
1106
1274
|
:param str symbol: unified symbol of the market the order was made in
|
|
1107
1275
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1108
1276
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
|
@@ -1144,7 +1312,9 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1144
1312
|
def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
1145
1313
|
"""
|
|
1146
1314
|
fetches information on multiple orders made by the user
|
|
1147
|
-
|
|
1315
|
+
|
|
1316
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_orders_data.md
|
|
1317
|
+
|
|
1148
1318
|
:param str symbol: unified market symbol of the market orders were made in
|
|
1149
1319
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
1150
1320
|
:param int [limit]: the maximum number of order structures to retrieve
|
|
@@ -1167,7 +1337,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1167
1337
|
if limit is not None:
|
|
1168
1338
|
request['limit'] = limit
|
|
1169
1339
|
response = self.privateGetOrdersAllPair(self.extend(request, params))
|
|
1170
|
-
orders = self.
|
|
1340
|
+
orders = self.safe_list(response, 'data', [])
|
|
1171
1341
|
if orders is None:
|
|
1172
1342
|
orders = []
|
|
1173
1343
|
#
|
|
@@ -1199,15 +1369,33 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1199
1369
|
return self.parse_orders(orders, market, since, limit)
|
|
1200
1370
|
|
|
1201
1371
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1372
|
+
"""
|
|
1373
|
+
fetch all unfilled currently open orders
|
|
1374
|
+
|
|
1375
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_open_orders_data.md
|
|
1376
|
+
|
|
1377
|
+
:param str symbol: unified market symbol
|
|
1378
|
+
:param int [since]: the earliest time in ms to fetch open orders for
|
|
1379
|
+
:param int [limit]: the maximum number of open orders structures to retrieve
|
|
1380
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1381
|
+
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
|
1382
|
+
"""
|
|
1383
|
+
self.load_markets()
|
|
1384
|
+
request: dict = {}
|
|
1385
|
+
market = None
|
|
1386
|
+
if symbol is not None:
|
|
1387
|
+
market = self.market(symbol)
|
|
1388
|
+
request['pair'] = market['id']
|
|
1389
|
+
response = self.privateGetOrdersOpen(self.extend(request, params))
|
|
1390
|
+
orders = self.safe_list(response, 'data', [])
|
|
1391
|
+
return self.parse_orders(orders, market, since, limit)
|
|
1206
1392
|
|
|
1207
1393
|
def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
1208
1394
|
"""
|
|
1209
1395
|
fetches information on multiple closed orders made by the user
|
|
1210
|
-
|
|
1396
|
+
|
|
1397
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_orders_data.md
|
|
1398
|
+
|
|
1211
1399
|
:param str symbol: unified market symbol of the market orders were made in
|
|
1212
1400
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
1213
1401
|
:param int [limit]: the maximum number of order structures to retrieve
|
|
@@ -1222,7 +1410,9 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1222
1410
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
1223
1411
|
"""
|
|
1224
1412
|
fetch all trades made by the user
|
|
1225
|
-
|
|
1413
|
+
|
|
1414
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_trades_data.md
|
|
1415
|
+
|
|
1226
1416
|
:param str symbol: unified market symbol
|
|
1227
1417
|
:param int [since]: the earliest time in ms to fetch trades for
|
|
1228
1418
|
:param int [limit]: the maximum number of trades structures to retrieve
|
|
@@ -1237,7 +1427,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1237
1427
|
'pair': market['id'],
|
|
1238
1428
|
}
|
|
1239
1429
|
response = self.privateGetOrdersTradesPair(self.extend(request, params))
|
|
1240
|
-
trades = self.
|
|
1430
|
+
trades = self.safe_list(response, 'data', [])
|
|
1241
1431
|
#
|
|
1242
1432
|
# {
|
|
1243
1433
|
# "data":[
|
|
@@ -1357,7 +1547,9 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1357
1547
|
def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
|
1358
1548
|
"""
|
|
1359
1549
|
fetch all deposits made to an account
|
|
1360
|
-
|
|
1550
|
+
|
|
1551
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_deposit_invoices_data.md
|
|
1552
|
+
|
|
1361
1553
|
:param str code: unified currency code
|
|
1362
1554
|
:param int [since]: the earliest time in ms to fetch deposits for
|
|
1363
1555
|
:param int [limit]: the maximum number of deposits structures to retrieve
|
|
@@ -1379,7 +1571,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1379
1571
|
if limit is not None:
|
|
1380
1572
|
request['limit'] = limit
|
|
1381
1573
|
response = self.privateGetWalletDepositHistoryCurrency(self.extend(request, params))
|
|
1382
|
-
result = self.
|
|
1574
|
+
result = self.safe_list(response, 'data', [])
|
|
1383
1575
|
#
|
|
1384
1576
|
# {
|
|
1385
1577
|
# "data":[
|
|
@@ -1404,7 +1596,9 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1404
1596
|
def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
|
1405
1597
|
"""
|
|
1406
1598
|
fetch all withdrawals made from an account
|
|
1407
|
-
|
|
1599
|
+
|
|
1600
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_withdraw_invoices_data.md
|
|
1601
|
+
|
|
1408
1602
|
:param str code: unified currency code
|
|
1409
1603
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
|
1410
1604
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
|
@@ -1426,7 +1620,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1426
1620
|
if limit is not None:
|
|
1427
1621
|
request['limit'] = limit
|
|
1428
1622
|
response = self.privateGetWalletWithdrawHistoryCurrency(self.extend(request, params))
|
|
1429
|
-
result = self.
|
|
1623
|
+
result = self.safe_list(response, 'data', [])
|
|
1430
1624
|
#
|
|
1431
1625
|
# {
|
|
1432
1626
|
# "data":[
|
|
@@ -1450,7 +1644,9 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1450
1644
|
def fetch_withdrawal(self, id: str, code: Str = None, params={}):
|
|
1451
1645
|
"""
|
|
1452
1646
|
fetch data on a currency withdrawal via the withdrawal id
|
|
1453
|
-
|
|
1647
|
+
|
|
1648
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_an_withdraw_invoice_data.md
|
|
1649
|
+
|
|
1454
1650
|
:param str id: withdrawal id
|
|
1455
1651
|
:param str code: unified currency code of the currency withdrawn, default is None
|
|
1456
1652
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -1465,7 +1661,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1465
1661
|
'currency': currency['id'],
|
|
1466
1662
|
}
|
|
1467
1663
|
response = self.privateGetWalletWithdrawCurrencySerial(self.extend(request, params))
|
|
1468
|
-
result = self.
|
|
1664
|
+
result = self.safe_dict(response, 'data', {})
|
|
1469
1665
|
#
|
|
1470
1666
|
# {
|
|
1471
1667
|
# "data":{
|
|
@@ -1484,10 +1680,12 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1484
1680
|
#
|
|
1485
1681
|
return self.parse_transaction(result, currency)
|
|
1486
1682
|
|
|
1487
|
-
def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
|
|
1683
|
+
def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
|
|
1488
1684
|
"""
|
|
1489
1685
|
make a withdrawal
|
|
1490
|
-
|
|
1686
|
+
|
|
1687
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/create_an_withdraw_invoice.md
|
|
1688
|
+
|
|
1491
1689
|
:param str code: unified currency code
|
|
1492
1690
|
:param float amount: the amount to withdraw
|
|
1493
1691
|
:param str address: the address to withdraw to
|
|
@@ -1505,7 +1703,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1505
1703
|
'address': address,
|
|
1506
1704
|
}
|
|
1507
1705
|
if 'network' in params:
|
|
1508
|
-
networks = self.
|
|
1706
|
+
networks = self.safe_dict(self.options, 'networks', {})
|
|
1509
1707
|
requestedNetwork = self.safe_string_upper(params, 'network')
|
|
1510
1708
|
params = self.omit(params, ['network'])
|
|
1511
1709
|
networkId = self.safe_string(networks, requestedNetwork)
|
|
@@ -1515,7 +1713,7 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1515
1713
|
if tag is not None:
|
|
1516
1714
|
request['message'] = tag
|
|
1517
1715
|
response = self.privatePostWalletWithdrawCurrency(self.extend(request, params))
|
|
1518
|
-
result = self.
|
|
1716
|
+
result = self.safe_dict(response, 'data', {})
|
|
1519
1717
|
#
|
|
1520
1718
|
# {
|
|
1521
1719
|
# "data":{
|
|
@@ -1558,7 +1756,9 @@ class bitopro(Exchange, ImplicitAPI):
|
|
|
1558
1756
|
def fetch_deposit_withdraw_fees(self, codes: Strings = None, params={}):
|
|
1559
1757
|
"""
|
|
1560
1758
|
fetch deposit and withdraw fees
|
|
1561
|
-
|
|
1759
|
+
|
|
1760
|
+
https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_currency_info.md
|
|
1761
|
+
|
|
1562
1762
|
:param str[]|None codes: list of unified currency codes
|
|
1563
1763
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1564
1764
|
:returns dict: a list of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>`
|