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/async_support/onetrading.py
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.onetrading import ImplicitAPI
|
|
8
|
-
from ccxt.base.types import Balances, Currencies,
|
|
8
|
+
from ccxt.base.types import Any, Balances, Currencies, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees
|
|
9
9
|
from typing import List
|
|
10
10
|
from ccxt.base.errors import ExchangeError
|
|
11
11
|
from ccxt.base.errors import AuthenticationError
|
|
@@ -16,6 +16,7 @@ from ccxt.base.errors import InsufficientFunds
|
|
|
16
16
|
from ccxt.base.errors import InvalidAddress
|
|
17
17
|
from ccxt.base.errors import InvalidOrder
|
|
18
18
|
from ccxt.base.errors import OrderNotFound
|
|
19
|
+
from ccxt.base.errors import NotSupported
|
|
19
20
|
from ccxt.base.errors import DDoSProtection
|
|
20
21
|
from ccxt.base.errors import ExchangeNotAvailable
|
|
21
22
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
|
@@ -24,7 +25,7 @@ from ccxt.base.precise import Precise
|
|
|
24
25
|
|
|
25
26
|
class onetrading(Exchange, ImplicitAPI):
|
|
26
27
|
|
|
27
|
-
def describe(self):
|
|
28
|
+
def describe(self) -> Any:
|
|
28
29
|
return self.deep_extend(super(onetrading, self).describe(), {
|
|
29
30
|
'id': 'onetrading',
|
|
30
31
|
'name': 'One Trading',
|
|
@@ -41,46 +42,75 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
41
42
|
'future': False,
|
|
42
43
|
'option': False,
|
|
43
44
|
'addMargin': False,
|
|
45
|
+
'borrowCrossMargin': False,
|
|
46
|
+
'borrowIsolatedMargin': False,
|
|
47
|
+
'borrowMargin': False,
|
|
44
48
|
'cancelAllOrders': True,
|
|
45
49
|
'cancelOrder': True,
|
|
46
50
|
'cancelOrders': True,
|
|
47
51
|
'closeAllPositions': False,
|
|
48
52
|
'closePosition': False,
|
|
49
|
-
'createDepositAddress':
|
|
53
|
+
'createDepositAddress': False,
|
|
50
54
|
'createOrder': True,
|
|
51
55
|
'createReduceOnlyOrder': False,
|
|
52
56
|
'createStopLimitOrder': True,
|
|
53
57
|
'createStopMarketOrder': False,
|
|
54
58
|
'createStopOrder': True,
|
|
55
59
|
'fetchAccounts': False,
|
|
60
|
+
'fetchAllGreeks': False,
|
|
56
61
|
'fetchBalance': True,
|
|
62
|
+
'fetchBorrowInterest': False,
|
|
63
|
+
'fetchBorrowRate': False,
|
|
57
64
|
'fetchBorrowRateHistories': False,
|
|
58
65
|
'fetchBorrowRateHistory': False,
|
|
66
|
+
'fetchBorrowRates': False,
|
|
67
|
+
'fetchBorrowRatesPerSymbol': False,
|
|
59
68
|
'fetchClosedOrders': True,
|
|
60
69
|
'fetchCrossBorrowRate': False,
|
|
61
70
|
'fetchCrossBorrowRates': False,
|
|
62
71
|
'fetchCurrencies': True,
|
|
63
72
|
'fetchDeposit': False,
|
|
64
|
-
'fetchDepositAddress':
|
|
73
|
+
'fetchDepositAddress': False,
|
|
65
74
|
'fetchDepositAddresses': False,
|
|
66
|
-
'
|
|
75
|
+
'fetchDepositAddressesByNetwork': False,
|
|
76
|
+
'fetchDeposits': False,
|
|
67
77
|
'fetchDepositsWithdrawals': False,
|
|
68
78
|
'fetchFundingHistory': False,
|
|
79
|
+
'fetchFundingInterval': False,
|
|
80
|
+
'fetchFundingIntervals': False,
|
|
69
81
|
'fetchFundingRate': False,
|
|
70
82
|
'fetchFundingRateHistory': False,
|
|
71
83
|
'fetchFundingRates': False,
|
|
84
|
+
'fetchGreeks': False,
|
|
72
85
|
'fetchIndexOHLCV': False,
|
|
73
86
|
'fetchIsolatedBorrowRate': False,
|
|
74
87
|
'fetchIsolatedBorrowRates': False,
|
|
88
|
+
'fetchIsolatedPositions': False,
|
|
75
89
|
'fetchLedger': False,
|
|
76
90
|
'fetchLeverage': False,
|
|
91
|
+
'fetchLeverages': False,
|
|
92
|
+
'fetchLeverageTiers': False,
|
|
93
|
+
'fetchLiquidations': False,
|
|
94
|
+
'fetchLongShortRatio': False,
|
|
95
|
+
'fetchLongShortRatioHistory': False,
|
|
96
|
+
'fetchMarginAdjustmentHistory': False,
|
|
77
97
|
'fetchMarginMode': False,
|
|
98
|
+
'fetchMarginModes': False,
|
|
99
|
+
'fetchMarketLeverageTiers': False,
|
|
78
100
|
'fetchMarkets': True,
|
|
79
101
|
'fetchMarkOHLCV': False,
|
|
102
|
+
'fetchMarkPrice': False,
|
|
103
|
+
'fetchMarkPrices': False,
|
|
104
|
+
'fetchMyLiquidations': False,
|
|
105
|
+
'fetchMySettlementHistory': False,
|
|
80
106
|
'fetchMyTrades': True,
|
|
81
107
|
'fetchOHLCV': True,
|
|
108
|
+
'fetchOpenInterest': False,
|
|
82
109
|
'fetchOpenInterestHistory': False,
|
|
110
|
+
'fetchOpenInterests': False,
|
|
83
111
|
'fetchOpenOrders': True,
|
|
112
|
+
'fetchOption': False,
|
|
113
|
+
'fetchOptionChain': False,
|
|
84
114
|
'fetchOrder': True,
|
|
85
115
|
'fetchOrderBook': True,
|
|
86
116
|
'fetchOrders': False,
|
|
@@ -93,10 +123,11 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
93
123
|
'fetchPositionsHistory': False,
|
|
94
124
|
'fetchPositionsRisk': False,
|
|
95
125
|
'fetchPremiumIndexOHLCV': False,
|
|
126
|
+
'fetchSettlementHistory': False,
|
|
96
127
|
'fetchTicker': True,
|
|
97
128
|
'fetchTickers': True,
|
|
98
129
|
'fetchTime': True,
|
|
99
|
-
'fetchTrades':
|
|
130
|
+
'fetchTrades': False,
|
|
100
131
|
'fetchTradingFee': False,
|
|
101
132
|
'fetchTradingFees': True,
|
|
102
133
|
'fetchTransactionFee': False,
|
|
@@ -104,15 +135,19 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
104
135
|
'fetchTransactions': False,
|
|
105
136
|
'fetchTransfer': False,
|
|
106
137
|
'fetchTransfers': False,
|
|
138
|
+
'fetchUnderlyingAssets': False,
|
|
139
|
+
'fetchVolatilityHistory': False,
|
|
107
140
|
'fetchWithdrawal': False,
|
|
108
|
-
'fetchWithdrawals':
|
|
141
|
+
'fetchWithdrawals': False,
|
|
109
142
|
'reduceMargin': False,
|
|
143
|
+
'repayCrossMargin': False,
|
|
144
|
+
'repayIsolatedMargin': False,
|
|
110
145
|
'setLeverage': False,
|
|
111
146
|
'setMargin': False,
|
|
112
147
|
'setMarginMode': False,
|
|
113
148
|
'setPositionMode': False,
|
|
114
149
|
'transfer': False,
|
|
115
|
-
'withdraw':
|
|
150
|
+
'withdraw': False,
|
|
116
151
|
},
|
|
117
152
|
'timeframes': {
|
|
118
153
|
'1m': '1/MINUTES',
|
|
@@ -128,8 +163,8 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
128
163
|
'urls': {
|
|
129
164
|
'logo': 'https://github.com/ccxt/ccxt/assets/43336371/bdbc26fd-02f2-4ca7-9f1e-17333690bb1c',
|
|
130
165
|
'api': {
|
|
131
|
-
'public': 'https://api.onetrading.com/
|
|
132
|
-
'private': 'https://api.onetrading.com/
|
|
166
|
+
'public': 'https://api.onetrading.com/fast',
|
|
167
|
+
'private': 'https://api.onetrading.com/fast',
|
|
133
168
|
},
|
|
134
169
|
'www': 'https://onetrading.com/',
|
|
135
170
|
'doc': [
|
|
@@ -147,32 +182,20 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
147
182
|
'order-book/{instrument_code}',
|
|
148
183
|
'market-ticker',
|
|
149
184
|
'market-ticker/{instrument_code}',
|
|
150
|
-
'price-ticks/{instrument_code}',
|
|
151
185
|
'time',
|
|
152
186
|
],
|
|
153
187
|
},
|
|
154
188
|
'private': {
|
|
155
189
|
'get': [
|
|
156
190
|
'account/balances',
|
|
157
|
-
'account/deposit/crypto/{currency_code}',
|
|
158
|
-
'account/deposit/fiat/EUR',
|
|
159
|
-
'account/deposits',
|
|
160
|
-
'account/deposits/bitpanda',
|
|
161
|
-
'account/withdrawals',
|
|
162
|
-
'account/withdrawals/bitpanda',
|
|
163
191
|
'account/fees',
|
|
164
192
|
'account/orders',
|
|
165
193
|
'account/orders/{order_id}',
|
|
166
194
|
'account/orders/{order_id}/trades',
|
|
167
195
|
'account/trades',
|
|
168
196
|
'account/trades/{trade_id}',
|
|
169
|
-
'account/trading-volume',
|
|
170
197
|
],
|
|
171
198
|
'post': [
|
|
172
|
-
'account/deposit/crypto',
|
|
173
|
-
'account/withdraw/crypto',
|
|
174
|
-
'account/withdraw/fiat',
|
|
175
|
-
'account/fees',
|
|
176
199
|
'account/orders',
|
|
177
200
|
],
|
|
178
201
|
'delete': [
|
|
@@ -299,6 +322,7 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
299
322
|
'INTERNAL_SERVER_ERROR': ExchangeError,
|
|
300
323
|
},
|
|
301
324
|
'broad': {
|
|
325
|
+
'Order not found.': OrderNotFound,
|
|
302
326
|
},
|
|
303
327
|
},
|
|
304
328
|
'commonCurrencies': {
|
|
@@ -311,11 +335,84 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
311
335
|
},
|
|
312
336
|
'fiat': ['EUR', 'CHF'],
|
|
313
337
|
},
|
|
338
|
+
'features': {
|
|
339
|
+
'spot': {
|
|
340
|
+
'sandbox': False,
|
|
341
|
+
'createOrder': {
|
|
342
|
+
'marginMode': False,
|
|
343
|
+
'triggerPrice': False,
|
|
344
|
+
'triggerDirection': False,
|
|
345
|
+
'triggerPriceType': None,
|
|
346
|
+
'stopLossPrice': False,
|
|
347
|
+
'takeProfitPrice': False,
|
|
348
|
+
'attachedStopLossTakeProfit': None,
|
|
349
|
+
'timeInForce': {
|
|
350
|
+
'IOC': True,
|
|
351
|
+
'FOK': True,
|
|
352
|
+
'PO': True,
|
|
353
|
+
'GTD': False,
|
|
354
|
+
},
|
|
355
|
+
'hedged': False,
|
|
356
|
+
'trailing': False,
|
|
357
|
+
'leverage': False,
|
|
358
|
+
'marketBuyByCost': False,
|
|
359
|
+
'marketBuyRequiresPrice': False,
|
|
360
|
+
'selfTradePrevention': False,
|
|
361
|
+
'iceberg': False,
|
|
362
|
+
},
|
|
363
|
+
'createOrders': None,
|
|
364
|
+
'fetchMyTrades': {
|
|
365
|
+
'marginMode': False,
|
|
366
|
+
'limit': 100,
|
|
367
|
+
'daysBack': 100000, # todo
|
|
368
|
+
'untilDays': 100000, # todo
|
|
369
|
+
'symbolRequired': False,
|
|
370
|
+
},
|
|
371
|
+
'fetchOrder': {
|
|
372
|
+
'marginMode': False,
|
|
373
|
+
'trigger': False,
|
|
374
|
+
'trailing': False,
|
|
375
|
+
'symbolRequired': False,
|
|
376
|
+
},
|
|
377
|
+
'fetchOpenOrders': {
|
|
378
|
+
'marginMode': False,
|
|
379
|
+
'limit': 100,
|
|
380
|
+
'trigger': False,
|
|
381
|
+
'trailing': False,
|
|
382
|
+
'symbolRequired': False,
|
|
383
|
+
},
|
|
384
|
+
'fetchOrders': None, # todo
|
|
385
|
+
'fetchClosedOrders': {
|
|
386
|
+
'marginMode': False,
|
|
387
|
+
'limit': 100,
|
|
388
|
+
'daysBack': 100000, # todo
|
|
389
|
+
'daysBackCanceled': 1 / 12, # todo
|
|
390
|
+
'untilDays': 100000, # todo
|
|
391
|
+
'trigger': False,
|
|
392
|
+
'trailing': False,
|
|
393
|
+
'symbolRequired': False,
|
|
394
|
+
},
|
|
395
|
+
'fetchOHLCV': {
|
|
396
|
+
'limit': 5000,
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
'swap': {
|
|
400
|
+
'linear': None,
|
|
401
|
+
'inverse': None,
|
|
402
|
+
},
|
|
403
|
+
'future': {
|
|
404
|
+
'linear': None,
|
|
405
|
+
'inverse': None,
|
|
406
|
+
},
|
|
407
|
+
},
|
|
314
408
|
})
|
|
315
409
|
|
|
316
|
-
async def fetch_time(self, params={}):
|
|
410
|
+
async def fetch_time(self, params={}) -> Int:
|
|
317
411
|
"""
|
|
318
412
|
fetches the current integer timestamp in milliseconds from the exchange server
|
|
413
|
+
|
|
414
|
+
https://docs.onetrading.com/#time
|
|
415
|
+
|
|
319
416
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
320
417
|
:returns int: the current integer timestamp in milliseconds from the exchange server
|
|
321
418
|
"""
|
|
@@ -331,6 +428,9 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
331
428
|
async def fetch_currencies(self, params={}) -> Currencies:
|
|
332
429
|
"""
|
|
333
430
|
fetches all available currencies on an exchange
|
|
431
|
+
|
|
432
|
+
https://docs.onetrading.com/#currencies
|
|
433
|
+
|
|
334
434
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
335
435
|
:returns dict: an associative dictionary of currencies
|
|
336
436
|
"""
|
|
@@ -338,9 +438,12 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
338
438
|
#
|
|
339
439
|
# [
|
|
340
440
|
# {
|
|
341
|
-
# "code":"
|
|
342
|
-
# "precision":
|
|
343
|
-
#
|
|
441
|
+
# "code": "USDT",
|
|
442
|
+
# "precision": 6,
|
|
443
|
+
# "unified_cryptoasset_id": 825,
|
|
444
|
+
# "name": "Tether USDt",
|
|
445
|
+
# "collateral_percentage": 0
|
|
446
|
+
# },
|
|
344
447
|
# ]
|
|
345
448
|
#
|
|
346
449
|
result: dict = {}
|
|
@@ -348,11 +451,11 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
348
451
|
currency = response[i]
|
|
349
452
|
id = self.safe_string(currency, 'code')
|
|
350
453
|
code = self.safe_currency_code(id)
|
|
351
|
-
result[code] = {
|
|
454
|
+
result[code] = self.safe_currency_structure({
|
|
352
455
|
'id': id,
|
|
353
456
|
'code': code,
|
|
354
|
-
'name':
|
|
355
|
-
'info': currency,
|
|
457
|
+
'name': self.safe_string(currency, 'name'),
|
|
458
|
+
'info': currency,
|
|
356
459
|
'active': None,
|
|
357
460
|
'fee': None,
|
|
358
461
|
'precision': self.parse_number(self.parse_precision(self.safe_string(currency, 'precision'))),
|
|
@@ -363,12 +466,15 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
363
466
|
'withdraw': {'min': None, 'max': None},
|
|
364
467
|
},
|
|
365
468
|
'networks': {},
|
|
366
|
-
}
|
|
469
|
+
})
|
|
367
470
|
return result
|
|
368
471
|
|
|
369
472
|
async def fetch_markets(self, params={}) -> List[Market]:
|
|
370
473
|
"""
|
|
371
474
|
retrieves data on all markets for onetrading
|
|
475
|
+
|
|
476
|
+
https://docs.onetrading.com/#instruments
|
|
477
|
+
|
|
372
478
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
373
479
|
:returns dict[]: an array of objects representing market data
|
|
374
480
|
"""
|
|
@@ -449,6 +555,10 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
449
555
|
async def fetch_trading_fees(self, params={}) -> TradingFees:
|
|
450
556
|
"""
|
|
451
557
|
fetch the trading fees for multiple markets
|
|
558
|
+
|
|
559
|
+
https://docs.onetrading.com/#fee-groups
|
|
560
|
+
https://docs.onetrading.com/#fees
|
|
561
|
+
|
|
452
562
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
453
563
|
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
|
|
454
564
|
"""
|
|
@@ -457,7 +567,12 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
457
567
|
if method is None:
|
|
458
568
|
options = self.safe_value(self.options, 'fetchTradingFees', {})
|
|
459
569
|
method = self.safe_string(options, 'method', 'fetchPrivateTradingFees')
|
|
460
|
-
|
|
570
|
+
if method == 'fetchPrivateTradingFees':
|
|
571
|
+
return await self.fetch_private_trading_fees(params)
|
|
572
|
+
elif method == 'fetchPublicTradingFees':
|
|
573
|
+
return await self.fetch_public_trading_fees(params)
|
|
574
|
+
else:
|
|
575
|
+
raise NotSupported(self.id + ' fetchTradingFees() does not support ' + method + ', fetchPrivateTradingFees and fetchPublicTradingFees are supported')
|
|
461
576
|
|
|
462
577
|
async def fetch_public_trading_fees(self, params={}):
|
|
463
578
|
await self.load_markets()
|
|
@@ -616,6 +731,9 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
616
731
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
|
617
732
|
"""
|
|
618
733
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
734
|
+
|
|
735
|
+
https://docs.onetrading.com/#market-ticker-for-instrument
|
|
736
|
+
|
|
619
737
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
|
620
738
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
621
739
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
@@ -649,7 +767,10 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
649
767
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
|
650
768
|
"""
|
|
651
769
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
652
|
-
|
|
770
|
+
|
|
771
|
+
https://docs.onetrading.com/#market-ticker
|
|
772
|
+
|
|
773
|
+
:param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
653
774
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
654
775
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
655
776
|
"""
|
|
@@ -686,6 +807,9 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
686
807
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
|
687
808
|
"""
|
|
688
809
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
|
810
|
+
|
|
811
|
+
https://docs.onetrading.com/#order-book
|
|
812
|
+
|
|
689
813
|
:param str symbol: unified symbol of the market to fetch the order book for
|
|
690
814
|
:param int [limit]: the maximum amount of order book entries to return
|
|
691
815
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -808,6 +932,9 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
808
932
|
async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
|
809
933
|
"""
|
|
810
934
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
935
|
+
|
|
936
|
+
https://docs.onetrading.com/#candlesticks
|
|
937
|
+
|
|
811
938
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
|
812
939
|
:param str timeframe: the length of time each candle represents
|
|
813
940
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
|
@@ -845,7 +972,8 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
845
972
|
# {"instrument_code":"BTC_EUR","granularity":{"unit":"HOURS","period":1},"high":"9135.7","low":"9002.59","open":"9055.45","close":"9133.98","total_amount":"26.21919","volume":"238278.8724959","time":"2020-05-09T00:59:59.999Z","last_sequence":461521},
|
|
846
973
|
# ]
|
|
847
974
|
#
|
|
848
|
-
|
|
975
|
+
ohlcv = self.safe_list(response, 'candlesticks')
|
|
976
|
+
return self.parse_ohlcvs(ohlcv, market, timeframe, since, limit)
|
|
849
977
|
|
|
850
978
|
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
|
851
979
|
#
|
|
@@ -926,44 +1054,6 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
926
1054
|
'info': trade,
|
|
927
1055
|
}, market)
|
|
928
1056
|
|
|
929
|
-
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
930
|
-
"""
|
|
931
|
-
get the list of most recent trades for a particular symbol
|
|
932
|
-
:param str symbol: unified symbol of the market to fetch trades for
|
|
933
|
-
:param int [since]: timestamp in ms of the earliest trade to fetch
|
|
934
|
-
:param int [limit]: the maximum amount of trades to fetch
|
|
935
|
-
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
936
|
-
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
|
|
937
|
-
"""
|
|
938
|
-
await self.load_markets()
|
|
939
|
-
market = self.market(symbol)
|
|
940
|
-
request: dict = {
|
|
941
|
-
'instrument_code': market['id'],
|
|
942
|
-
# 'from': self.iso8601(since),
|
|
943
|
-
# 'to': self.iso8601(self.milliseconds()),
|
|
944
|
-
}
|
|
945
|
-
if since is not None:
|
|
946
|
-
# returns price ticks for a specific market with an interval of maximum of 4 hours
|
|
947
|
-
# sorted by latest first
|
|
948
|
-
request['from'] = self.iso8601(since)
|
|
949
|
-
request['to'] = self.iso8601(self.sum(since, 14400000))
|
|
950
|
-
response = await self.publicGetPriceTicksInstrumentCode(self.extend(request, params))
|
|
951
|
-
#
|
|
952
|
-
# [
|
|
953
|
-
# {
|
|
954
|
-
# "instrument_code":"BTC_EUR",
|
|
955
|
-
# "price":"8137.28",
|
|
956
|
-
# "amount":"0.22269",
|
|
957
|
-
# "taker_side":"BUY",
|
|
958
|
-
# "volume":"1812.0908832",
|
|
959
|
-
# "time":"2020-07-10T14:44:32.299Z",
|
|
960
|
-
# "trade_timestamp":1594392272299,
|
|
961
|
-
# "sequence":603047
|
|
962
|
-
# }
|
|
963
|
-
# ]
|
|
964
|
-
#
|
|
965
|
-
return self.parse_trades(response, market, since, limit)
|
|
966
|
-
|
|
967
1057
|
def parse_balance(self, response) -> Balances:
|
|
968
1058
|
balances = self.safe_value(response, 'balances', [])
|
|
969
1059
|
result: dict = {'info': response}
|
|
@@ -980,6 +1070,9 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
980
1070
|
async def fetch_balance(self, params={}) -> Balances:
|
|
981
1071
|
"""
|
|
982
1072
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
|
1073
|
+
|
|
1074
|
+
https://docs.onetrading.com/#balances
|
|
1075
|
+
|
|
983
1076
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
984
1077
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
|
985
1078
|
"""
|
|
@@ -1003,317 +1096,6 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1003
1096
|
#
|
|
1004
1097
|
return self.parse_balance(response)
|
|
1005
1098
|
|
|
1006
|
-
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
|
1007
|
-
code = None
|
|
1008
|
-
if currency is not None:
|
|
1009
|
-
code = currency['code']
|
|
1010
|
-
address = self.safe_string(depositAddress, 'address')
|
|
1011
|
-
tag = self.safe_string(depositAddress, 'destination_tag')
|
|
1012
|
-
self.check_address(address)
|
|
1013
|
-
return {
|
|
1014
|
-
'currency': code,
|
|
1015
|
-
'address': address,
|
|
1016
|
-
'tag': tag,
|
|
1017
|
-
'network': None,
|
|
1018
|
-
'info': depositAddress,
|
|
1019
|
-
}
|
|
1020
|
-
|
|
1021
|
-
async def create_deposit_address(self, code: str, params={}):
|
|
1022
|
-
"""
|
|
1023
|
-
create a currency deposit address
|
|
1024
|
-
:param str code: unified currency code of the currency for the deposit address
|
|
1025
|
-
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1026
|
-
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
|
1027
|
-
"""
|
|
1028
|
-
await self.load_markets()
|
|
1029
|
-
currency = self.currency(code)
|
|
1030
|
-
request: dict = {
|
|
1031
|
-
'currency': currency['id'],
|
|
1032
|
-
}
|
|
1033
|
-
response = await self.privatePostAccountDepositCrypto(self.extend(request, params))
|
|
1034
|
-
#
|
|
1035
|
-
# {
|
|
1036
|
-
# "address":"rBnNhk95FrdNisZtXcStzriFS8vEzz53DM",
|
|
1037
|
-
# "destination_tag":"865690307",
|
|
1038
|
-
# "enabled":true,
|
|
1039
|
-
# "is_smart_contract":false
|
|
1040
|
-
# }
|
|
1041
|
-
#
|
|
1042
|
-
return self.parse_deposit_address(response, currency)
|
|
1043
|
-
|
|
1044
|
-
async def fetch_deposit_address(self, code: str, params={}):
|
|
1045
|
-
"""
|
|
1046
|
-
fetch the deposit address for a currency associated with self account
|
|
1047
|
-
:param str code: unified currency code
|
|
1048
|
-
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1049
|
-
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
|
1050
|
-
"""
|
|
1051
|
-
await self.load_markets()
|
|
1052
|
-
currency = self.currency(code)
|
|
1053
|
-
request: dict = {
|
|
1054
|
-
'currency_code': currency['id'],
|
|
1055
|
-
}
|
|
1056
|
-
response = await self.privateGetAccountDepositCryptoCurrencyCode(self.extend(request, params))
|
|
1057
|
-
#
|
|
1058
|
-
# {
|
|
1059
|
-
# "address":"rBnNhk95FrdNisZtXcStzriFS8vEzz53DM",
|
|
1060
|
-
# "destination_tag":"865690307",
|
|
1061
|
-
# "enabled":true,
|
|
1062
|
-
# "is_smart_contract":false,
|
|
1063
|
-
# "can_create_more":false
|
|
1064
|
-
# }
|
|
1065
|
-
#
|
|
1066
|
-
return self.parse_deposit_address(response, currency)
|
|
1067
|
-
|
|
1068
|
-
async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
|
1069
|
-
"""
|
|
1070
|
-
fetch all deposits made to an account
|
|
1071
|
-
:param str code: unified currency code
|
|
1072
|
-
:param int [since]: the earliest time in ms to fetch deposits for
|
|
1073
|
-
:param int [limit]: the maximum number of deposits structures to retrieve
|
|
1074
|
-
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1075
|
-
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
|
1076
|
-
"""
|
|
1077
|
-
await self.load_markets()
|
|
1078
|
-
request: dict = {
|
|
1079
|
-
# 'cursor': 'string', # pointer specifying the position from which the next pages should be returned
|
|
1080
|
-
}
|
|
1081
|
-
currency = None
|
|
1082
|
-
if code is not None:
|
|
1083
|
-
currency = self.currency(code)
|
|
1084
|
-
request['currency_code'] = currency['id']
|
|
1085
|
-
if limit is not None:
|
|
1086
|
-
request['max_page_size'] = limit
|
|
1087
|
-
if since is not None:
|
|
1088
|
-
to = self.safe_string(params, 'to')
|
|
1089
|
-
if to is None:
|
|
1090
|
-
raise ArgumentsRequired(self.id + ' fetchDeposits() requires a "to" iso8601 string param with the since argument is specified')
|
|
1091
|
-
request['from'] = self.iso8601(since)
|
|
1092
|
-
response = await self.privateGetAccountDeposits(self.extend(request, params))
|
|
1093
|
-
#
|
|
1094
|
-
# {
|
|
1095
|
-
# "deposit_history": [
|
|
1096
|
-
# {
|
|
1097
|
-
# "transaction_id": "e5342efcd-d5b7-4a56-8e12-b69ffd68c5ef",
|
|
1098
|
-
# "account_id": "c2d0076a-c20d-41f8-9e9a-1a1d028b2b58",
|
|
1099
|
-
# "amount": "100",
|
|
1100
|
-
# "type": "CRYPTO",
|
|
1101
|
-
# "funds_source": "INTERNAL",
|
|
1102
|
-
# "time": "2020-04-22T09:57:47Z",
|
|
1103
|
-
# "currency": "BTC",
|
|
1104
|
-
# "fee_amount": "0.0",
|
|
1105
|
-
# "fee_currency": "BTC"
|
|
1106
|
-
# },
|
|
1107
|
-
# {
|
|
1108
|
-
# "transaction_id": "79793d00-2899-4a4d-95b7-73ae6b31384f",
|
|
1109
|
-
# "account_id": "c2d0076a-c20d-41f8-9e9a-1a1d028b2b58",
|
|
1110
|
-
# "time": "2020-05-05T11:22:07.925Z",
|
|
1111
|
-
# "currency": "EUR",
|
|
1112
|
-
# "funds_source": "EXTERNAL",
|
|
1113
|
-
# "type": "FIAT",
|
|
1114
|
-
# "amount": "50.0",
|
|
1115
|
-
# "fee_amount": "0.01",
|
|
1116
|
-
# "fee_currency": "EUR"
|
|
1117
|
-
# }
|
|
1118
|
-
# ],
|
|
1119
|
-
# "max_page_size": 2,
|
|
1120
|
-
# "cursor": "eyJhY2NvdW50X2lkIjp7InMiOiJlMzY5YWM4MC00NTc3LTExZTktYWUwOC05YmVkYzQ3OTBiODQiLCJzcyI6W10sIm5zIjpbXSwiYnMiOltdLCJtIjp7fSwibCI6W119LCJpdGVtX2tleSI6eyJzIjoiV0lUSERSQVdBTDo6MmFlMjYwY2ItOTk3MC00YmNiLTgxNmEtZGY4MDVmY2VhZTY1Iiwic3MiOltdLCJucyI6W10sImJzIjpbXSwibSI6e30sImwiOltdfSwiZ2xvYmFsX3dpdGhkcmF3YWxfaW5kZXhfaGFzaF9rZXkiOnsicyI6ImUzNjlhYzgwLTQ1NzctMTFlOS1hZTA4LTliZWRjNDc5MGI4NCIsInNzIjpbXSwibnMiOltdLCJicyI6W10sIm0iOnt9LCJsIjpbXX0sInRpbWVzdGFtcCI6eyJuIjoiMTU4ODA1ODc2Nzk0OCIsInNzIjpbXSwibnMiOltdLCJicyI6W10sIm0iOnt9LCJsIjpbXX19"
|
|
1121
|
-
# }
|
|
1122
|
-
#
|
|
1123
|
-
depositHistory = self.safe_list(response, 'deposit_history', [])
|
|
1124
|
-
return self.parse_transactions(depositHistory, currency, since, limit, {'type': 'deposit'})
|
|
1125
|
-
|
|
1126
|
-
async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
|
1127
|
-
"""
|
|
1128
|
-
fetch all withdrawals made from an account
|
|
1129
|
-
:param str code: unified currency code
|
|
1130
|
-
:param int [since]: the earliest time in ms to fetch withdrawals for
|
|
1131
|
-
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
|
1132
|
-
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1133
|
-
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
|
1134
|
-
"""
|
|
1135
|
-
await self.load_markets()
|
|
1136
|
-
request: dict = {
|
|
1137
|
-
# 'cursor': 'string', # pointer specifying the position from which the next pages should be returned
|
|
1138
|
-
}
|
|
1139
|
-
currency = None
|
|
1140
|
-
if code is not None:
|
|
1141
|
-
currency = self.currency(code)
|
|
1142
|
-
request['currency_code'] = currency['id']
|
|
1143
|
-
if limit is not None:
|
|
1144
|
-
request['max_page_size'] = limit
|
|
1145
|
-
if since is not None:
|
|
1146
|
-
to = self.safe_string(params, 'to')
|
|
1147
|
-
if to is None:
|
|
1148
|
-
raise ArgumentsRequired(self.id + ' fetchWithdrawals() requires a "to" iso8601 string param with the since argument is specified')
|
|
1149
|
-
request['from'] = self.iso8601(since)
|
|
1150
|
-
response = await self.privateGetAccountWithdrawals(self.extend(request, params))
|
|
1151
|
-
#
|
|
1152
|
-
# {
|
|
1153
|
-
# "withdrawal_history": [
|
|
1154
|
-
# {
|
|
1155
|
-
# "account_id": "e369ac80-4577-11e9-ae08-9bedc4790b84",
|
|
1156
|
-
# "amount": "0.1",
|
|
1157
|
-
# "currency": "BTC",
|
|
1158
|
-
# "fee_amount": "0.00002",
|
|
1159
|
-
# "fee_currency": "BTC",
|
|
1160
|
-
# "funds_source": "EXTERNAL",
|
|
1161
|
-
# "related_transaction_id": "e298341a-3855-405e-bce3-92db368a3157",
|
|
1162
|
-
# "time": "2020-05-05T11:11:32.110Z",
|
|
1163
|
-
# "transaction_id": "6693ff40-bb10-4dcf-ada7-3b287727c882",
|
|
1164
|
-
# "type": "CRYPTO"
|
|
1165
|
-
# },
|
|
1166
|
-
# {
|
|
1167
|
-
# "account_id": "e369ac80-4577-11e9-ae08-9bedc4790b84",
|
|
1168
|
-
# "amount": "0.1",
|
|
1169
|
-
# "currency": "BTC",
|
|
1170
|
-
# "fee_amount": "0.0",
|
|
1171
|
-
# "fee_currency": "BTC",
|
|
1172
|
-
# "funds_source": "INTERNAL",
|
|
1173
|
-
# "time": "2020-05-05T10:29:53.464Z",
|
|
1174
|
-
# "transaction_id": "ec9703b1-954b-4f76-adea-faac66eabc0b",
|
|
1175
|
-
# "type": "CRYPTO"
|
|
1176
|
-
# }
|
|
1177
|
-
# ],
|
|
1178
|
-
# "cursor": "eyJhY2NvdW50X2lkIjp7InMiOiJlMzY5YWM4MC00NTc3LTExZTktYWUwOC05YmVkYzQ3OTBiODQiLCJzcyI6W10sIm5zIjpbXSwiYnMiOltdLCJtIjp7fSwibCI6W119LCJpdGVtX2tleSI6eyJzIjoiV0lUSERSQVdBTDo6ZWM5NzAzYjEtOTU0Yi00Zjc2LWFkZWEtZmFhYzY2ZWFiYzBiIiwic3MiOltdLCJucyI6W10sImJzIjpbXSwibSI6e30sImwiOltdfSwiZ2xvYmFsX3dpdGhkcmF3YWxfaW5kZXhfaGFzaF9rZXkiOnsicyI6ImUzNjlhYzgwLTQ1NzctMTFlOS1hZTA4LTliZWRjNDc5MGI4NCIsInNzIjpbXSwibnMiOltdLCJicyI6W10sIm0iOnt9LCJsIjpbXX0sInRpbWVzdGFtcCI6eyJuIjoiMTU4ODY3NDU5MzQ2NCIsInNzIjpbXSwibnMiOltdLCJicyI6W10sIm0iOnt9LCJsIjpbXX19",
|
|
1179
|
-
# "max_page_size": 2
|
|
1180
|
-
# }
|
|
1181
|
-
#
|
|
1182
|
-
withdrawalHistory = self.safe_list(response, 'withdrawal_history', [])
|
|
1183
|
-
return self.parse_transactions(withdrawalHistory, currency, since, limit, {'type': 'withdrawal'})
|
|
1184
|
-
|
|
1185
|
-
async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
|
|
1186
|
-
"""
|
|
1187
|
-
make a withdrawal
|
|
1188
|
-
:param str code: unified currency code
|
|
1189
|
-
:param float amount: the amount to withdraw
|
|
1190
|
-
:param str address: the address to withdraw to
|
|
1191
|
-
:param str tag:
|
|
1192
|
-
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1193
|
-
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
|
1194
|
-
"""
|
|
1195
|
-
tag, params = self.handle_withdraw_tag_and_params(tag, params)
|
|
1196
|
-
self.check_address(address)
|
|
1197
|
-
await self.load_markets()
|
|
1198
|
-
currency = self.currency(code)
|
|
1199
|
-
request: dict = {
|
|
1200
|
-
'currency': code,
|
|
1201
|
-
'amount': self.currency_to_precision(code, amount),
|
|
1202
|
-
# 'payout_account_id': '66756a10-3e86-48f4-9678-b634c4b135b2', # fiat only
|
|
1203
|
-
# 'recipient': { # crypto only
|
|
1204
|
-
# 'address': address,
|
|
1205
|
-
# # 'destination_tag': '',
|
|
1206
|
-
# },
|
|
1207
|
-
}
|
|
1208
|
-
options = self.safe_value(self.options, 'fiat', [])
|
|
1209
|
-
isFiat = self.in_array(code, options)
|
|
1210
|
-
method = 'privatePostAccountWithdrawFiat' if isFiat else 'privatePostAccountWithdrawCrypto'
|
|
1211
|
-
if isFiat:
|
|
1212
|
-
payoutAccountId = self.safe_string(params, 'payout_account_id')
|
|
1213
|
-
if payoutAccountId is None:
|
|
1214
|
-
raise ArgumentsRequired(self.id + ' withdraw() requires a payout_account_id param for fiat ' + code + ' withdrawals')
|
|
1215
|
-
else:
|
|
1216
|
-
recipient: dict = {'address': address}
|
|
1217
|
-
if tag is not None:
|
|
1218
|
-
recipient['destination_tag'] = tag
|
|
1219
|
-
request['recipient'] = recipient
|
|
1220
|
-
response = await getattr(self, method)(self.extend(request, params))
|
|
1221
|
-
#
|
|
1222
|
-
# crypto
|
|
1223
|
-
#
|
|
1224
|
-
# {
|
|
1225
|
-
# "amount": "1234.5678",
|
|
1226
|
-
# "fee": "1234.5678",
|
|
1227
|
-
# "recipient": "3NacQ7rzZdhfyAtfJ5a11k8jFPdcMP2Bq7",
|
|
1228
|
-
# "destination_tag": "",
|
|
1229
|
-
# "transaction_id": "d0f8529f-f832-4e6a-9dc5-b8d5797badb2"
|
|
1230
|
-
# }
|
|
1231
|
-
#
|
|
1232
|
-
# fiat
|
|
1233
|
-
#
|
|
1234
|
-
# {
|
|
1235
|
-
# "transaction_id": "54236cd0-4413-11e9-93fb-5fea7e5b5df6"
|
|
1236
|
-
# }
|
|
1237
|
-
#
|
|
1238
|
-
return self.parse_transaction(response, currency)
|
|
1239
|
-
|
|
1240
|
-
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
|
1241
|
-
#
|
|
1242
|
-
# fetchDeposits, fetchWithdrawals
|
|
1243
|
-
#
|
|
1244
|
-
# {
|
|
1245
|
-
# "transaction_id": "C2b42efcd-d5b7-4a56-8e12-b69ffd68c5ef",
|
|
1246
|
-
# "type": "FIAT",
|
|
1247
|
-
# "account_id": "c2d0076a-c20d-41f8-9e9a-1a1d028b2b58",
|
|
1248
|
-
# "amount": "1234.5678",
|
|
1249
|
-
# "time": "2019-08-24T14:15:22Z",
|
|
1250
|
-
# "funds_source": "INTERNAL",
|
|
1251
|
-
# "currency": "BTC",
|
|
1252
|
-
# "fee_amount": "1234.5678",
|
|
1253
|
-
# "fee_currency": "BTC",
|
|
1254
|
-
# "blockchain_transaction_id": "f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16",
|
|
1255
|
-
# "related_transaction_id": "e298341a-3855-405e-bce3-92db368a3157"
|
|
1256
|
-
# }
|
|
1257
|
-
#
|
|
1258
|
-
# withdraw
|
|
1259
|
-
#
|
|
1260
|
-
#
|
|
1261
|
-
# crypto
|
|
1262
|
-
#
|
|
1263
|
-
# {
|
|
1264
|
-
# "amount": "1234.5678",
|
|
1265
|
-
# "fee": "1234.5678",
|
|
1266
|
-
# "recipient": "3NacQ7rzZdhfyAtfJ5a11k8jFPdcMP2Bq7",
|
|
1267
|
-
# "destination_tag": "",
|
|
1268
|
-
# "transaction_id": "d0f8529f-f832-4e6a-9dc5-b8d5797badb2"
|
|
1269
|
-
# }
|
|
1270
|
-
#
|
|
1271
|
-
# fiat
|
|
1272
|
-
#
|
|
1273
|
-
# {
|
|
1274
|
-
# "transaction_id": "54236cd0-4413-11e9-93fb-5fea7e5b5df6"
|
|
1275
|
-
# }
|
|
1276
|
-
#
|
|
1277
|
-
id = self.safe_string(transaction, 'transaction_id')
|
|
1278
|
-
amount = self.safe_number(transaction, 'amount')
|
|
1279
|
-
timestamp = self.parse8601(self.safe_string(transaction, 'time'))
|
|
1280
|
-
currencyId = self.safe_string(transaction, 'currency')
|
|
1281
|
-
currency = self.safe_currency(currencyId, currency)
|
|
1282
|
-
status = 'ok' # the exchange returns cleared transactions only
|
|
1283
|
-
feeCost = self.safe_number_2(transaction, 'fee_amount', 'fee')
|
|
1284
|
-
fee = None
|
|
1285
|
-
addressTo = self.safe_string(transaction, 'recipient')
|
|
1286
|
-
tagTo = self.safe_string(transaction, 'destination_tag')
|
|
1287
|
-
if feeCost is not None:
|
|
1288
|
-
feeCurrencyId = self.safe_string(transaction, 'fee_currency', currencyId)
|
|
1289
|
-
feeCurrencyCode = self.safe_currency_code(feeCurrencyId)
|
|
1290
|
-
fee = {
|
|
1291
|
-
'cost': feeCost,
|
|
1292
|
-
'currency': feeCurrencyCode,
|
|
1293
|
-
}
|
|
1294
|
-
return {
|
|
1295
|
-
'info': transaction,
|
|
1296
|
-
'id': id,
|
|
1297
|
-
'currency': currency['code'],
|
|
1298
|
-
'amount': amount,
|
|
1299
|
-
'network': None,
|
|
1300
|
-
'address': addressTo,
|
|
1301
|
-
'addressFrom': None,
|
|
1302
|
-
'addressTo': addressTo,
|
|
1303
|
-
'tag': tagTo,
|
|
1304
|
-
'tagFrom': None,
|
|
1305
|
-
'tagTo': tagTo,
|
|
1306
|
-
'status': status,
|
|
1307
|
-
'type': None,
|
|
1308
|
-
'updated': None,
|
|
1309
|
-
'txid': self.safe_string(transaction, 'blockchain_transaction_id'),
|
|
1310
|
-
'comment': None,
|
|
1311
|
-
'internal': None,
|
|
1312
|
-
'timestamp': timestamp,
|
|
1313
|
-
'datetime': self.iso8601(timestamp),
|
|
1314
|
-
'fee': fee,
|
|
1315
|
-
}
|
|
1316
|
-
|
|
1317
1099
|
def parse_order_status(self, status: Str):
|
|
1318
1100
|
statuses: dict = {
|
|
1319
1101
|
'FILLED': 'open',
|
|
@@ -1325,6 +1107,7 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1325
1107
|
'CLOSED': 'canceled',
|
|
1326
1108
|
'FAILED': 'failed',
|
|
1327
1109
|
'STOP_TRIGGERED': 'triggered',
|
|
1110
|
+
'DONE': 'closed',
|
|
1328
1111
|
}
|
|
1329
1112
|
return self.safe_string(statuses, status, status)
|
|
1330
1113
|
|
|
@@ -1409,7 +1192,6 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1409
1192
|
side = self.safe_string_lower(rawOrder, 'side')
|
|
1410
1193
|
type = self.safe_string_lower(rawOrder, 'type')
|
|
1411
1194
|
timeInForce = self.parse_time_in_force(self.safe_string(rawOrder, 'time_in_force'))
|
|
1412
|
-
stopPrice = self.safe_number(rawOrder, 'trigger_price')
|
|
1413
1195
|
postOnly = self.safe_value(rawOrder, 'is_post_only')
|
|
1414
1196
|
rawTrades = self.safe_value(order, 'trades', [])
|
|
1415
1197
|
return self.safe_order({
|
|
@@ -1420,13 +1202,12 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1420
1202
|
'datetime': self.iso8601(timestamp),
|
|
1421
1203
|
'lastTradeTimestamp': None,
|
|
1422
1204
|
'symbol': symbol,
|
|
1423
|
-
'type': type,
|
|
1205
|
+
'type': self.parse_order_type(type),
|
|
1424
1206
|
'timeInForce': timeInForce,
|
|
1425
1207
|
'postOnly': postOnly,
|
|
1426
1208
|
'side': side,
|
|
1427
1209
|
'price': price,
|
|
1428
|
-
'
|
|
1429
|
-
'triggerPrice': stopPrice,
|
|
1210
|
+
'triggerPrice': self.safe_number(rawOrder, 'trigger_price'),
|
|
1430
1211
|
'amount': amount,
|
|
1431
1212
|
'cost': None,
|
|
1432
1213
|
'average': None,
|
|
@@ -1437,6 +1218,12 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1437
1218
|
'trades': rawTrades,
|
|
1438
1219
|
}, market)
|
|
1439
1220
|
|
|
1221
|
+
def parse_order_type(self, type: Str):
|
|
1222
|
+
types: dict = {
|
|
1223
|
+
'booked': 'limit',
|
|
1224
|
+
}
|
|
1225
|
+
return self.safe_string(types, type, type)
|
|
1226
|
+
|
|
1440
1227
|
def parse_time_in_force(self, timeInForce: Str):
|
|
1441
1228
|
timeInForces: dict = {
|
|
1442
1229
|
'GOOD_TILL_CANCELLED': 'GTC',
|
|
@@ -1449,12 +1236,14 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1449
1236
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
|
1450
1237
|
"""
|
|
1451
1238
|
create a trade order
|
|
1452
|
-
|
|
1239
|
+
|
|
1240
|
+
https://docs.onetrading.com/#create-order
|
|
1241
|
+
|
|
1453
1242
|
:param str symbol: unified symbol of the market to create an order in
|
|
1454
|
-
:param str type: '
|
|
1243
|
+
:param str type: 'limit'
|
|
1455
1244
|
:param str side: 'buy' or 'sell'
|
|
1456
1245
|
:param float amount: how much of currency you want to trade in units of base currency
|
|
1457
|
-
:param float [price]: the price at which the order is to be
|
|
1246
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
|
1458
1247
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1459
1248
|
:param float [params.triggerPrice]: onetrading only does stop limit orders and does not do stop market
|
|
1460
1249
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
|
@@ -1492,6 +1281,9 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1492
1281
|
if clientOrderId is not None:
|
|
1493
1282
|
request['client_id'] = clientOrderId
|
|
1494
1283
|
params = self.omit(params, ['clientOrderId', 'client_id'])
|
|
1284
|
+
timeInForce = self.safe_string_2(params, 'timeInForce', 'time_in_force', 'GOOD_TILL_CANCELLED')
|
|
1285
|
+
params = self.omit(params, 'timeInForce')
|
|
1286
|
+
request['time_in_force'] = timeInForce
|
|
1495
1287
|
response = await self.privatePostAccountOrders(self.extend(request, params))
|
|
1496
1288
|
#
|
|
1497
1289
|
# {
|
|
@@ -1513,6 +1305,9 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1513
1305
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
|
1514
1306
|
"""
|
|
1515
1307
|
cancels an open order
|
|
1308
|
+
|
|
1309
|
+
https://docs.onetrading.com/#close-order-by-order-id
|
|
1310
|
+
|
|
1516
1311
|
:param str id: order id
|
|
1517
1312
|
:param str symbol: not used by bitmex cancelOrder()
|
|
1518
1313
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -1528,15 +1323,22 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1528
1323
|
request['client_id'] = clientOrderId
|
|
1529
1324
|
else:
|
|
1530
1325
|
request['order_id'] = id
|
|
1531
|
-
response =
|
|
1326
|
+
response = None
|
|
1327
|
+
if method == 'privateDeleteAccountOrdersOrderId':
|
|
1328
|
+
response = await self.privateDeleteAccountOrdersOrderId(self.extend(request, params))
|
|
1329
|
+
else:
|
|
1330
|
+
response = await self.privateDeleteAccountOrdersClientClientId(self.extend(request, params))
|
|
1532
1331
|
#
|
|
1533
1332
|
# responds with an empty body
|
|
1534
1333
|
#
|
|
1535
|
-
return response
|
|
1334
|
+
return self.parse_order(response)
|
|
1536
1335
|
|
|
1537
1336
|
async def cancel_all_orders(self, symbol: Str = None, params={}):
|
|
1538
1337
|
"""
|
|
1539
1338
|
cancel all open orders
|
|
1339
|
+
|
|
1340
|
+
https://docs.onetrading.com/#close-all-orders
|
|
1341
|
+
|
|
1540
1342
|
:param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
|
|
1541
1343
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1542
1344
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
|
@@ -1552,11 +1354,14 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1552
1354
|
# "a10e9bd1-8f72-4cfe-9f1b-7f1c8a9bd8ee"
|
|
1553
1355
|
# ]
|
|
1554
1356
|
#
|
|
1555
|
-
return response
|
|
1357
|
+
return [self.safe_order({'info': response})]
|
|
1556
1358
|
|
|
1557
1359
|
async def cancel_orders(self, ids, symbol: Str = None, params={}):
|
|
1558
1360
|
"""
|
|
1559
1361
|
cancel multiple orders
|
|
1362
|
+
|
|
1363
|
+
https://docs.onetrading.com/#close-all-orders
|
|
1364
|
+
|
|
1560
1365
|
:param str[] ids: order ids
|
|
1561
1366
|
:param str symbol: unified market symbol, default is None
|
|
1562
1367
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -1577,6 +1382,10 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1577
1382
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
|
1578
1383
|
"""
|
|
1579
1384
|
fetches information on an order made by the user
|
|
1385
|
+
|
|
1386
|
+
https://docs.onetrading.com/#get-order
|
|
1387
|
+
|
|
1388
|
+
:param str id: the order id
|
|
1580
1389
|
:param str symbol: not used by onetrading fetchOrder
|
|
1581
1390
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1582
1391
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
|
@@ -1632,6 +1441,9 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1632
1441
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
1633
1442
|
"""
|
|
1634
1443
|
fetch all unfilled currently open orders
|
|
1444
|
+
|
|
1445
|
+
https://docs.onetrading.com/#get-orders
|
|
1446
|
+
|
|
1635
1447
|
:param str symbol: unified market symbol
|
|
1636
1448
|
:param int [since]: the earliest time in ms to fetch open orders for
|
|
1637
1449
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
|
@@ -1746,6 +1558,9 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1746
1558
|
async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
1747
1559
|
"""
|
|
1748
1560
|
fetches information on multiple closed orders made by the user
|
|
1561
|
+
|
|
1562
|
+
https://docs.onetrading.com/#get-orders
|
|
1563
|
+
|
|
1749
1564
|
:param str symbol: unified market symbol of the market orders were made in
|
|
1750
1565
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
1751
1566
|
:param int [limit]: the maximum number of order structures to retrieve
|
|
@@ -1760,6 +1575,9 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1760
1575
|
async def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
1761
1576
|
"""
|
|
1762
1577
|
fetch all the trades made from a single order
|
|
1578
|
+
|
|
1579
|
+
https://docs.onetrading.com/#trades-for-order
|
|
1580
|
+
|
|
1763
1581
|
:param str id: order id
|
|
1764
1582
|
:param str symbol: unified market symbol
|
|
1765
1583
|
:param int [since]: the earliest time in ms to fetch trades for
|
|
@@ -1815,6 +1633,9 @@ class onetrading(Exchange, ImplicitAPI):
|
|
|
1815
1633
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
1816
1634
|
"""
|
|
1817
1635
|
fetch all trades made by the user
|
|
1636
|
+
|
|
1637
|
+
https://docs.onetrading.com/#all-trades
|
|
1638
|
+
|
|
1818
1639
|
:param str symbol: unified market symbol
|
|
1819
1640
|
:param int [since]: the earliest time in ms to fetch trades for
|
|
1820
1641
|
:param int [limit]: the maximum number of trades structures to retrieve
|