ccxt-ir 4.3.46.0.2__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 +9 -9
- 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 +10 -10
- 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.2.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.2.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
- 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.2.dist-info/RECORD +0 -772
- /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
- {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
- {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
ccxt/async_support/deribit.py
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.deribit import ImplicitAPI
|
|
8
8
|
import hashlib
|
|
9
|
-
from ccxt.base.types import Account, Balances, Currencies, Currency, Greeks, Int, Market,
|
|
9
|
+
from ccxt.base.types import Account, Any, Balances, Currencies, Currency, DepositAddress, Greeks, Int, Market, Num, Option, OptionChain, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, Trade, TradingFees, Transaction, MarketInterface, TransferEntry
|
|
10
10
|
from typing import List
|
|
11
11
|
from ccxt.base.errors import ExchangeError
|
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
|
@@ -27,7 +27,7 @@ from ccxt.base.precise import Precise
|
|
|
27
27
|
|
|
28
28
|
class deribit(Exchange, ImplicitAPI):
|
|
29
29
|
|
|
30
|
-
def describe(self):
|
|
30
|
+
def describe(self) -> Any:
|
|
31
31
|
return self.deep_extend(super(deribit, self).describe(), {
|
|
32
32
|
'id': 'deribit',
|
|
33
33
|
'name': 'Deribit',
|
|
@@ -50,6 +50,7 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
50
50
|
'cancelOrders': False,
|
|
51
51
|
'createDepositAddress': True,
|
|
52
52
|
'createOrder': True,
|
|
53
|
+
'createReduceOnlyOrder': True,
|
|
53
54
|
'createStopLimitOrder': True,
|
|
54
55
|
'createStopMarketOrder': True,
|
|
55
56
|
'createStopOrder': True,
|
|
@@ -65,6 +66,8 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
65
66
|
'fetchCurrencies': True,
|
|
66
67
|
'fetchDeposit': False,
|
|
67
68
|
'fetchDepositAddress': True,
|
|
69
|
+
'fetchDepositAddresses': False,
|
|
70
|
+
'fetchDepositAddressesByNetwork': False,
|
|
68
71
|
'fetchDeposits': True,
|
|
69
72
|
'fetchDepositWithdrawFees': True,
|
|
70
73
|
'fetchFundingRate': True,
|
|
@@ -218,6 +221,7 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
218
221
|
'enable_api_key': 1,
|
|
219
222
|
'get_access_log': 1,
|
|
220
223
|
'get_account_summary': 1,
|
|
224
|
+
'get_account_summaries': 1,
|
|
221
225
|
'get_affiliate_program_info': 1,
|
|
222
226
|
'get_email_language': 1,
|
|
223
227
|
'get_new_announcements': 1,
|
|
@@ -288,6 +292,92 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
288
292
|
},
|
|
289
293
|
},
|
|
290
294
|
},
|
|
295
|
+
'features': {
|
|
296
|
+
'default': {
|
|
297
|
+
'sandbox': True,
|
|
298
|
+
'createOrder': {
|
|
299
|
+
'marginMode': False,
|
|
300
|
+
'triggerPrice': True, # todo
|
|
301
|
+
# todo implement
|
|
302
|
+
'triggerPriceType': {
|
|
303
|
+
'last': True,
|
|
304
|
+
'mark': True,
|
|
305
|
+
'index': True,
|
|
306
|
+
},
|
|
307
|
+
'triggerDirection': False,
|
|
308
|
+
'stopLossPrice': False, # todo
|
|
309
|
+
'takeProfitPrice': False, # todo
|
|
310
|
+
'attachedStopLossTakeProfit': None,
|
|
311
|
+
'timeInForce': {
|
|
312
|
+
'IOC': True,
|
|
313
|
+
'FOK': True,
|
|
314
|
+
'PO': True,
|
|
315
|
+
'GTD': True,
|
|
316
|
+
},
|
|
317
|
+
'hedged': False,
|
|
318
|
+
'selfTradePrevention': False,
|
|
319
|
+
'trailing': True, # todo
|
|
320
|
+
'leverage': False,
|
|
321
|
+
'marketBuyByCost': True, # todo
|
|
322
|
+
'marketBuyRequiresPrice': False,
|
|
323
|
+
'iceberg': True, # todo
|
|
324
|
+
},
|
|
325
|
+
'createOrders': None,
|
|
326
|
+
'fetchMyTrades': {
|
|
327
|
+
'marginMode': False,
|
|
328
|
+
'limit': 100, # todo: revise
|
|
329
|
+
'daysBack': 100000,
|
|
330
|
+
'untilDays': 100000,
|
|
331
|
+
'symbolRequired': True, # todo
|
|
332
|
+
},
|
|
333
|
+
'fetchOrder': {
|
|
334
|
+
'marginMode': False,
|
|
335
|
+
'trigger': False,
|
|
336
|
+
'trailing': False,
|
|
337
|
+
'symbolRequired': True, # todo
|
|
338
|
+
},
|
|
339
|
+
'fetchOpenOrders': {
|
|
340
|
+
'marginMode': False,
|
|
341
|
+
'limit': None,
|
|
342
|
+
'trigger': False,
|
|
343
|
+
'trailing': False,
|
|
344
|
+
'symbolRequired': True, # todo
|
|
345
|
+
},
|
|
346
|
+
'fetchOrders': None,
|
|
347
|
+
'fetchClosedOrders': {
|
|
348
|
+
'marginMode': False,
|
|
349
|
+
'limit': 100,
|
|
350
|
+
'daysBack': 100000,
|
|
351
|
+
'daysBackCanceled': 1,
|
|
352
|
+
'untilDays': 100000,
|
|
353
|
+
'trigger': False,
|
|
354
|
+
'trailing': False,
|
|
355
|
+
'symbolRequired': True, # todo
|
|
356
|
+
},
|
|
357
|
+
'fetchOHLCV': {
|
|
358
|
+
'limit': 1000, # todo: recheck
|
|
359
|
+
},
|
|
360
|
+
},
|
|
361
|
+
'spot': {
|
|
362
|
+
'extends': 'default',
|
|
363
|
+
},
|
|
364
|
+
'swap': {
|
|
365
|
+
'linear': {
|
|
366
|
+
'extends': 'default',
|
|
367
|
+
},
|
|
368
|
+
'inverse': {
|
|
369
|
+
'extends': 'default',
|
|
370
|
+
},
|
|
371
|
+
},
|
|
372
|
+
'future': {
|
|
373
|
+
'linear': {
|
|
374
|
+
'extends': 'default',
|
|
375
|
+
},
|
|
376
|
+
'inverse': {
|
|
377
|
+
'extends': 'default',
|
|
378
|
+
},
|
|
379
|
+
},
|
|
380
|
+
},
|
|
291
381
|
'exceptions': {
|
|
292
382
|
# 0 or absent Success, No error.
|
|
293
383
|
'9999': PermissionDenied, # 'api_not_enabled' User didn't enable API for the Account.
|
|
@@ -409,9 +499,6 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
409
499
|
'fetchBalance': {
|
|
410
500
|
'code': 'BTC',
|
|
411
501
|
},
|
|
412
|
-
'fetchPositions': {
|
|
413
|
-
'code': 'BTC',
|
|
414
|
-
},
|
|
415
502
|
'transfer': {
|
|
416
503
|
'method': 'privateGetSubmitTransferToSubaccount', # or 'privateGetSubmitTransferToUser'
|
|
417
504
|
},
|
|
@@ -499,10 +586,12 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
499
586
|
return self.create_expired_option_market(marketId)
|
|
500
587
|
return super(deribit, self).safe_market(marketId, market, delimiter, marketType)
|
|
501
588
|
|
|
502
|
-
async def fetch_time(self, params={}):
|
|
589
|
+
async def fetch_time(self, params={}) -> Int:
|
|
503
590
|
"""
|
|
504
591
|
fetches the current integer timestamp in milliseconds from the exchange server
|
|
505
|
-
|
|
592
|
+
|
|
593
|
+
https://docs.deribit.com/#public-get_time
|
|
594
|
+
|
|
506
595
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
507
596
|
:returns int: the current integer timestamp in milliseconds from the exchange server
|
|
508
597
|
"""
|
|
@@ -522,7 +611,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
522
611
|
async def fetch_currencies(self, params={}) -> Currencies:
|
|
523
612
|
"""
|
|
524
613
|
fetches all available currencies on an exchange
|
|
525
|
-
|
|
614
|
+
|
|
615
|
+
https://docs.deribit.com/#public-get_currencies
|
|
616
|
+
|
|
526
617
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
527
618
|
:returns dict: an associative dictionary of currencies
|
|
528
619
|
"""
|
|
@@ -549,21 +640,21 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
549
640
|
# "testnet": True
|
|
550
641
|
# }
|
|
551
642
|
#
|
|
552
|
-
data = self.
|
|
643
|
+
data = self.safe_list(response, 'result', [])
|
|
553
644
|
result: dict = {}
|
|
554
645
|
for i in range(0, len(data)):
|
|
555
646
|
currency = data[i]
|
|
556
647
|
currencyId = self.safe_string(currency, 'currency')
|
|
557
648
|
code = self.safe_currency_code(currencyId)
|
|
558
|
-
|
|
559
|
-
result[code] = {
|
|
649
|
+
result[code] = self.safe_currency_structure({
|
|
560
650
|
'info': currency,
|
|
561
651
|
'code': code,
|
|
562
652
|
'id': currencyId,
|
|
563
|
-
'name':
|
|
653
|
+
'name': self.safe_string(currency, 'currency_long'),
|
|
564
654
|
'active': None,
|
|
565
655
|
'deposit': None,
|
|
566
656
|
'withdraw': None,
|
|
657
|
+
'type': 'crypto',
|
|
567
658
|
'fee': self.safe_number(currency, 'withdrawal_fee'),
|
|
568
659
|
'precision': self.parse_number(self.parse_precision(self.safe_string(currency, 'fee_precision'))),
|
|
569
660
|
'limits': {
|
|
@@ -581,7 +672,7 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
581
672
|
},
|
|
582
673
|
},
|
|
583
674
|
'networks': None,
|
|
584
|
-
}
|
|
675
|
+
})
|
|
585
676
|
return result
|
|
586
677
|
|
|
587
678
|
def code_from_options(self, methodName, params={}):
|
|
@@ -593,7 +684,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
593
684
|
async def fetch_status(self, params={}):
|
|
594
685
|
"""
|
|
595
686
|
the latest known information on the availability of the exchange API
|
|
596
|
-
|
|
687
|
+
|
|
688
|
+
https://docs.deribit.com/#public-status
|
|
689
|
+
|
|
597
690
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
598
691
|
:returns dict: a `status structure <https://docs.ccxt.com/#/?id=exchange-status-structure>`
|
|
599
692
|
"""
|
|
@@ -624,7 +717,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
624
717
|
async def fetch_accounts(self, params={}) -> List[Account]:
|
|
625
718
|
"""
|
|
626
719
|
fetch all the accounts associated with a profile
|
|
627
|
-
|
|
720
|
+
|
|
721
|
+
https://docs.deribit.com/#private-get_subaccounts
|
|
722
|
+
|
|
628
723
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
629
724
|
:returns dict: a dictionary of `account structures <https://docs.ccxt.com/#/?id=account-structure>` indexed by the account type
|
|
630
725
|
"""
|
|
@@ -667,7 +762,7 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
667
762
|
result = self.safe_value(response, 'result', [])
|
|
668
763
|
return self.parse_accounts(result)
|
|
669
764
|
|
|
670
|
-
def parse_account(self, account
|
|
765
|
+
def parse_account(self, account):
|
|
671
766
|
#
|
|
672
767
|
# {
|
|
673
768
|
# "username": "someusername_1",
|
|
@@ -686,14 +781,16 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
686
781
|
'info': account,
|
|
687
782
|
'id': self.safe_string(account, 'id'),
|
|
688
783
|
'type': self.safe_string(account, 'type'),
|
|
689
|
-
'code':
|
|
784
|
+
'code': None,
|
|
690
785
|
}
|
|
691
786
|
|
|
692
787
|
async def fetch_markets(self, params={}) -> List[Market]:
|
|
693
788
|
"""
|
|
694
789
|
retrieves data on all markets for deribit
|
|
695
|
-
|
|
696
|
-
|
|
790
|
+
|
|
791
|
+
https://docs.deribit.com/#public-get_currencies
|
|
792
|
+
https://docs.deribit.com/#public-get_instruments
|
|
793
|
+
|
|
697
794
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
698
795
|
:returns dict[]: an array of objects representing market data
|
|
699
796
|
"""
|
|
@@ -841,6 +938,8 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
841
938
|
type = 'option'
|
|
842
939
|
elif isSpot:
|
|
843
940
|
type = 'spot'
|
|
941
|
+
inverse = None
|
|
942
|
+
linear = None
|
|
844
943
|
if isSpot:
|
|
845
944
|
symbol = base + '/' + quote
|
|
846
945
|
elif not isComboMarket:
|
|
@@ -852,6 +951,8 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
852
951
|
optionType = self.safe_string(market, 'option_type')
|
|
853
952
|
letter = 'C' if (optionType == 'call') else 'P'
|
|
854
953
|
symbol = symbol + '-' + self.number_to_string(strike) + '-' + letter
|
|
954
|
+
inverse = (quote != settle)
|
|
955
|
+
linear = (settle == quote)
|
|
855
956
|
parsedMarketValue = self.safe_value(parsedMarkets, symbol)
|
|
856
957
|
if parsedMarketValue:
|
|
857
958
|
continue
|
|
@@ -875,8 +976,8 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
875
976
|
'option': option,
|
|
876
977
|
'active': self.safe_value(market, 'is_active'),
|
|
877
978
|
'contract': not isSpot,
|
|
878
|
-
'linear':
|
|
879
|
-
'inverse':
|
|
979
|
+
'linear': linear,
|
|
980
|
+
'inverse': inverse,
|
|
880
981
|
'taker': self.safe_number(market, 'taker_commission'),
|
|
881
982
|
'maker': self.safe_number(market, 'maker_commission'),
|
|
882
983
|
'contractSize': self.safe_number(market, 'contract_size'),
|
|
@@ -915,29 +1016,45 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
915
1016
|
result: dict = {
|
|
916
1017
|
'info': balance,
|
|
917
1018
|
}
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
1019
|
+
summaries = []
|
|
1020
|
+
if 'summaries' in balance:
|
|
1021
|
+
summaries = self.safe_list(balance, 'summaries')
|
|
1022
|
+
else:
|
|
1023
|
+
summaries = [balance]
|
|
1024
|
+
for i in range(0, len(summaries)):
|
|
1025
|
+
data = summaries[i]
|
|
1026
|
+
currencyId = self.safe_string(data, 'currency')
|
|
1027
|
+
currencyCode = self.safe_currency_code(currencyId)
|
|
1028
|
+
account = self.account()
|
|
1029
|
+
account['free'] = self.safe_string(data, 'available_funds')
|
|
1030
|
+
account['used'] = self.safe_string(data, 'maintenance_margin')
|
|
1031
|
+
account['total'] = self.safe_string(data, 'equity')
|
|
1032
|
+
result[currencyCode] = account
|
|
925
1033
|
return self.safe_balance(result)
|
|
926
1034
|
|
|
927
1035
|
async def fetch_balance(self, params={}) -> Balances:
|
|
928
1036
|
"""
|
|
929
1037
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
|
930
|
-
|
|
1038
|
+
|
|
1039
|
+
https://docs.deribit.com/#private-get_account_summary
|
|
1040
|
+
https://docs.deribit.com/#private-get_account_summaries
|
|
1041
|
+
|
|
931
1042
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1043
|
+
:param str [params.code]: unified currency code of the currency for the balance, if defined 'privateGetGetAccountSummary' will be used, otherwise 'privateGetGetAccountSummaries' will be used
|
|
932
1044
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
|
933
1045
|
"""
|
|
934
1046
|
await self.load_markets()
|
|
935
|
-
code = self.
|
|
936
|
-
|
|
1047
|
+
code = self.safe_string(params, 'code')
|
|
1048
|
+
params = self.omit(params, 'code')
|
|
937
1049
|
request: dict = {
|
|
938
|
-
'currency': currency['id'],
|
|
939
1050
|
}
|
|
940
|
-
|
|
1051
|
+
if code is not None:
|
|
1052
|
+
request['currency'] = self.currency_id(code)
|
|
1053
|
+
response = None
|
|
1054
|
+
if code is None:
|
|
1055
|
+
response = await self.privateGetGetAccountSummaries(params)
|
|
1056
|
+
else:
|
|
1057
|
+
response = await self.privateGetGetAccountSummary(self.extend(request, params))
|
|
941
1058
|
#
|
|
942
1059
|
# {
|
|
943
1060
|
# "jsonrpc": "2.0",
|
|
@@ -980,13 +1097,15 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
980
1097
|
# "testnet": False
|
|
981
1098
|
# }
|
|
982
1099
|
#
|
|
983
|
-
result = self.
|
|
1100
|
+
result = self.safe_dict(response, 'result', {})
|
|
984
1101
|
return self.parse_balance(result)
|
|
985
1102
|
|
|
986
|
-
async def create_deposit_address(self, code: str, params={}):
|
|
1103
|
+
async def create_deposit_address(self, code: str, params={}) -> DepositAddress:
|
|
987
1104
|
"""
|
|
988
1105
|
create a currency deposit address
|
|
989
|
-
|
|
1106
|
+
|
|
1107
|
+
https://docs.deribit.com/#private-create_deposit_address
|
|
1108
|
+
|
|
990
1109
|
:param str code: unified currency code of the currency for the deposit address
|
|
991
1110
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
992
1111
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
|
@@ -1016,13 +1135,16 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1016
1135
|
'currency': code,
|
|
1017
1136
|
'address': address,
|
|
1018
1137
|
'tag': None,
|
|
1138
|
+
'network': None,
|
|
1019
1139
|
'info': response,
|
|
1020
1140
|
}
|
|
1021
1141
|
|
|
1022
|
-
async def fetch_deposit_address(self, code: str, params={}):
|
|
1142
|
+
async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
|
1023
1143
|
"""
|
|
1024
1144
|
fetch the deposit address for a currency associated with self account
|
|
1025
|
-
|
|
1145
|
+
|
|
1146
|
+
https://docs.deribit.com/#private-get_current_deposit_address
|
|
1147
|
+
|
|
1026
1148
|
:param str code: unified currency code
|
|
1027
1149
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1028
1150
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
|
@@ -1054,11 +1176,11 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1054
1176
|
address = self.safe_string(result, 'address')
|
|
1055
1177
|
self.check_address(address)
|
|
1056
1178
|
return {
|
|
1179
|
+
'info': response,
|
|
1057
1180
|
'currency': code,
|
|
1181
|
+
'network': None,
|
|
1058
1182
|
'address': address,
|
|
1059
1183
|
'tag': None,
|
|
1060
|
-
'network': None,
|
|
1061
|
-
'info': response,
|
|
1062
1184
|
}
|
|
1063
1185
|
|
|
1064
1186
|
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
|
@@ -1133,13 +1255,17 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1133
1255
|
'average': None,
|
|
1134
1256
|
'baseVolume': None,
|
|
1135
1257
|
'quoteVolume': self.safe_string(stats, 'volume'),
|
|
1258
|
+
'markPrice': self.safe_string(ticker, 'mark_price'),
|
|
1259
|
+
'indexPrice': self.safe_string(ticker, 'index_price'),
|
|
1136
1260
|
'info': ticker,
|
|
1137
1261
|
}, market)
|
|
1138
1262
|
|
|
1139
1263
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
|
1140
1264
|
"""
|
|
1141
1265
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
1142
|
-
|
|
1266
|
+
|
|
1267
|
+
https://docs.deribit.com/#public-ticker
|
|
1268
|
+
|
|
1143
1269
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
|
1144
1270
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1145
1271
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
|
@@ -1184,7 +1310,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1184
1310
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
|
1185
1311
|
"""
|
|
1186
1312
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
1187
|
-
|
|
1313
|
+
|
|
1314
|
+
https://docs.deribit.com/#public-get_book_summary_by_currency
|
|
1315
|
+
|
|
1188
1316
|
:param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
1189
1317
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1190
1318
|
:param str [params.code]: *required* the currency code to fetch the tickers for, eg. 'BTC', 'ETH'
|
|
@@ -1193,13 +1321,32 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1193
1321
|
await self.load_markets()
|
|
1194
1322
|
symbols = self.market_symbols(symbols)
|
|
1195
1323
|
code = self.safe_string_2(params, 'code', 'currency')
|
|
1324
|
+
type = None
|
|
1196
1325
|
params = self.omit(params, ['code'])
|
|
1326
|
+
if symbols is not None:
|
|
1327
|
+
for i in range(0, len(symbols)):
|
|
1328
|
+
market = self.market(symbols[i])
|
|
1329
|
+
if code is not None and code != market['base']:
|
|
1330
|
+
raise BadRequest(self.id + ' fetchTickers the base currency must be the same for all symbols, self endpoint only supports one base currency at a time. Read more about it here: https://docs.deribit.com/#public-get_book_summary_by_currency')
|
|
1331
|
+
if code is None:
|
|
1332
|
+
code = market['base']
|
|
1333
|
+
type = market['type']
|
|
1197
1334
|
if code is None:
|
|
1198
1335
|
raise ArgumentsRequired(self.id + ' fetchTickers requires a currency/code(eg: BTC/ETH/USDT) parameter to fetch tickers for')
|
|
1199
1336
|
currency = self.currency(code)
|
|
1200
1337
|
request: dict = {
|
|
1201
1338
|
'currency': currency['id'],
|
|
1202
1339
|
}
|
|
1340
|
+
if type is not None:
|
|
1341
|
+
requestType = None
|
|
1342
|
+
if type == 'spot':
|
|
1343
|
+
requestType = 'spot'
|
|
1344
|
+
elif type == 'future' or (type == 'contract'):
|
|
1345
|
+
requestType = 'future'
|
|
1346
|
+
elif type == 'option':
|
|
1347
|
+
requestType = 'option'
|
|
1348
|
+
if requestType is not None:
|
|
1349
|
+
request['kind'] = requestType
|
|
1203
1350
|
response = await self.publicGetGetBookSummaryByCurrency(self.extend(request, params))
|
|
1204
1351
|
#
|
|
1205
1352
|
# {
|
|
@@ -1242,7 +1389,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1242
1389
|
async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
|
1243
1390
|
"""
|
|
1244
1391
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
1245
|
-
|
|
1392
|
+
|
|
1393
|
+
https://docs.deribit.com/#public-get_tradingview_chart_data
|
|
1394
|
+
|
|
1246
1395
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
|
1247
1396
|
:param str timeframe: the length of time each candle represents
|
|
1248
1397
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
|
@@ -1392,8 +1541,10 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1392
1541
|
|
|
1393
1542
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
|
1394
1543
|
"""
|
|
1395
|
-
|
|
1396
|
-
|
|
1544
|
+
|
|
1545
|
+
https://docs.deribit.com/#public-get_last_trades_by_instrument
|
|
1546
|
+
https://docs.deribit.com/#public-get_last_trades_by_instrument_and_time
|
|
1547
|
+
|
|
1397
1548
|
get the list of most recent trades for a particular symbol.
|
|
1398
1549
|
:param str symbol: unified symbol of the market to fetch trades for
|
|
1399
1550
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
|
@@ -1453,7 +1604,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1453
1604
|
async def fetch_trading_fees(self, params={}) -> TradingFees:
|
|
1454
1605
|
"""
|
|
1455
1606
|
fetch the trading fees for multiple markets
|
|
1456
|
-
|
|
1607
|
+
|
|
1608
|
+
https://docs.deribit.com/#private-get_account_summary
|
|
1609
|
+
|
|
1457
1610
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1458
1611
|
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
|
|
1459
1612
|
"""
|
|
@@ -1564,7 +1717,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1564
1717
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
|
1565
1718
|
"""
|
|
1566
1719
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
|
1567
|
-
|
|
1720
|
+
|
|
1721
|
+
https://docs.deribit.com/#public-get_order_book
|
|
1722
|
+
|
|
1568
1723
|
:param str symbol: unified symbol of the market to fetch the order book for
|
|
1569
1724
|
:param int [limit]: the maximum amount of order book entries to return
|
|
1570
1725
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -1693,7 +1848,7 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1693
1848
|
filledString = self.safe_string(order, 'filled_amount')
|
|
1694
1849
|
amount = self.safe_string(order, 'amount')
|
|
1695
1850
|
cost = Precise.string_mul(filledString, averageString)
|
|
1696
|
-
if market
|
|
1851
|
+
if self.safe_bool(market, 'inverse'):
|
|
1697
1852
|
if averageString != '0':
|
|
1698
1853
|
cost = Precise.string_div(amount, averageString)
|
|
1699
1854
|
lastTradeTimestamp = None
|
|
@@ -1716,7 +1871,6 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1716
1871
|
# injected in createOrder
|
|
1717
1872
|
trades = self.safe_value(order, 'trades')
|
|
1718
1873
|
timeInForce = self.parse_time_in_force(self.safe_string(order, 'time_in_force'))
|
|
1719
|
-
stopPrice = self.safe_value(order, 'stop_price')
|
|
1720
1874
|
postOnly = self.safe_value(order, 'post_only')
|
|
1721
1875
|
return self.safe_order({
|
|
1722
1876
|
'info': order,
|
|
@@ -1731,8 +1885,7 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1731
1885
|
'postOnly': postOnly,
|
|
1732
1886
|
'side': side,
|
|
1733
1887
|
'price': priceString,
|
|
1734
|
-
'
|
|
1735
|
-
'triggerPrice': stopPrice,
|
|
1888
|
+
'triggerPrice': self.safe_value(order, 'stop_price'),
|
|
1736
1889
|
'amount': amount,
|
|
1737
1890
|
'cost': cost,
|
|
1738
1891
|
'average': averageString,
|
|
@@ -1746,7 +1899,10 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1746
1899
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
|
1747
1900
|
"""
|
|
1748
1901
|
fetches information on an order made by the user
|
|
1749
|
-
|
|
1902
|
+
|
|
1903
|
+
https://docs.deribit.com/#private-get_order_state
|
|
1904
|
+
|
|
1905
|
+
:param str id: order id
|
|
1750
1906
|
:param str symbol: unified symbol of the market the order was made in
|
|
1751
1907
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1752
1908
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
|
@@ -1793,13 +1949,15 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1793
1949
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
|
1794
1950
|
"""
|
|
1795
1951
|
create a trade order
|
|
1796
|
-
|
|
1797
|
-
|
|
1952
|
+
|
|
1953
|
+
https://docs.deribit.com/#private-buy
|
|
1954
|
+
https://docs.deribit.com/#private-sell
|
|
1955
|
+
|
|
1798
1956
|
:param str symbol: unified symbol of the market to create an order in
|
|
1799
1957
|
:param str type: 'market' or 'limit'
|
|
1800
1958
|
:param str side: 'buy' or 'sell'
|
|
1801
|
-
:param float amount: how much you want to trade in units of the base currency. For
|
|
1802
|
-
:param float [price]: the price at which the order is to be
|
|
1959
|
+
:param float amount: how much you want to trade in units of the base currency. For perpetual and inverse futures the amount is in USD units. For options it is in the underlying assets base currency.
|
|
1960
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
|
1803
1961
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1804
1962
|
:param str [params.trigger]: the trigger type 'index_price', 'mark_price', or 'last_price', default is 'last_price'
|
|
1805
1963
|
:param float [params.trailingAmount]: the quote amount to trail away from the current market price
|
|
@@ -1950,13 +2108,15 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1950
2108
|
async def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}):
|
|
1951
2109
|
"""
|
|
1952
2110
|
edit a trade order
|
|
1953
|
-
|
|
2111
|
+
|
|
2112
|
+
https://docs.deribit.com/#private-edit
|
|
2113
|
+
|
|
1954
2114
|
:param str id: edit order id
|
|
1955
2115
|
:param str [symbol]: unified symbol of the market to edit an order in
|
|
1956
2116
|
:param str [type]: 'market' or 'limit'
|
|
1957
2117
|
:param str [side]: 'buy' or 'sell'
|
|
1958
|
-
:param float amount: how much you want to trade in units of the base currency
|
|
1959
|
-
:param float [price]: the price at which the order is to be
|
|
2118
|
+
:param float amount: how much you want to trade in units of the base currency. For perpetual and inverse futures the amount is in USD units. For options it is in the underlying assets base currency.
|
|
2119
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
|
1960
2120
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
1961
2121
|
:param float [params.trailingAmount]: the quote amount to trail away from the current market price
|
|
1962
2122
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
|
@@ -1990,7 +2150,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
1990
2150
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
|
1991
2151
|
"""
|
|
1992
2152
|
cancels an open order
|
|
1993
|
-
|
|
2153
|
+
|
|
2154
|
+
https://docs.deribit.com/#private-cancel
|
|
2155
|
+
|
|
1994
2156
|
:param str id: order id
|
|
1995
2157
|
:param str symbol: not used by deribit cancelOrder()
|
|
1996
2158
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
@@ -2007,8 +2169,10 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2007
2169
|
async def cancel_all_orders(self, symbol: Str = None, params={}):
|
|
2008
2170
|
"""
|
|
2009
2171
|
cancel all open orders
|
|
2010
|
-
|
|
2011
|
-
|
|
2172
|
+
|
|
2173
|
+
https://docs.deribit.com/#private-cancel_all
|
|
2174
|
+
https://docs.deribit.com/#private-cancel_all_by_instrument
|
|
2175
|
+
|
|
2012
2176
|
:param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
|
|
2013
2177
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
2014
2178
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
|
@@ -2022,13 +2186,29 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2022
2186
|
market = self.market(symbol)
|
|
2023
2187
|
request['instrument_name'] = market['id']
|
|
2024
2188
|
response = await self.privateGetCancelAllByInstrument(self.extend(request, params))
|
|
2025
|
-
|
|
2189
|
+
#
|
|
2190
|
+
# {
|
|
2191
|
+
# jsonrpc: '2.0',
|
|
2192
|
+
# result: '1',
|
|
2193
|
+
# usIn: '1720508354127369',
|
|
2194
|
+
# usOut: '1720508354133603',
|
|
2195
|
+
# usDiff: '6234',
|
|
2196
|
+
# testnet: True
|
|
2197
|
+
# }
|
|
2198
|
+
#
|
|
2199
|
+
return [
|
|
2200
|
+
self.safe_order({
|
|
2201
|
+
'info': response,
|
|
2202
|
+
}),
|
|
2203
|
+
]
|
|
2026
2204
|
|
|
2027
2205
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
2028
2206
|
"""
|
|
2029
2207
|
fetch all unfilled currently open orders
|
|
2030
|
-
|
|
2031
|
-
|
|
2208
|
+
|
|
2209
|
+
https://docs.deribit.com/#private-get_open_orders_by_currency
|
|
2210
|
+
https://docs.deribit.com/#private-get_open_orders_by_instrument
|
|
2211
|
+
|
|
2032
2212
|
:param str symbol: unified market symbol
|
|
2033
2213
|
:param int [since]: the earliest time in ms to fetch open orders for
|
|
2034
2214
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
|
@@ -2054,8 +2234,10 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2054
2234
|
async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
|
2055
2235
|
"""
|
|
2056
2236
|
fetches information on multiple closed orders made by the user
|
|
2057
|
-
|
|
2058
|
-
|
|
2237
|
+
|
|
2238
|
+
https://docs.deribit.com/#private-get_order_history_by_currency
|
|
2239
|
+
https://docs.deribit.com/#private-get_order_history_by_instrument
|
|
2240
|
+
|
|
2059
2241
|
:param str symbol: unified market symbol of the market orders were made in
|
|
2060
2242
|
:param int [since]: the earliest time in ms to fetch orders for
|
|
2061
2243
|
:param int [limit]: the maximum number of order structures to retrieve
|
|
@@ -2081,7 +2263,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2081
2263
|
async def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
2082
2264
|
"""
|
|
2083
2265
|
fetch all the trades made from a single order
|
|
2084
|
-
|
|
2266
|
+
|
|
2267
|
+
https://docs.deribit.com/#private-get_user_trades_by_order
|
|
2268
|
+
|
|
2085
2269
|
:param str id: order id
|
|
2086
2270
|
:param str symbol: unified market symbol
|
|
2087
2271
|
:param int [since]: the earliest time in ms to fetch trades for
|
|
@@ -2133,10 +2317,12 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2133
2317
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
2134
2318
|
"""
|
|
2135
2319
|
fetch all trades made by the user
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2320
|
+
|
|
2321
|
+
https://docs.deribit.com/#private-get_user_trades_by_currency
|
|
2322
|
+
https://docs.deribit.com/#private-get_user_trades_by_currency_and_time
|
|
2323
|
+
https://docs.deribit.com/#private-get_user_trades_by_instrument
|
|
2324
|
+
https://docs.deribit.com/#private-get_user_trades_by_instrument_and_time
|
|
2325
|
+
|
|
2140
2326
|
:param str symbol: unified market symbol
|
|
2141
2327
|
:param int [since]: the earliest time in ms to fetch trades for
|
|
2142
2328
|
:param int [limit]: the maximum number of trades structures to retrieve
|
|
@@ -2208,7 +2394,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2208
2394
|
async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
|
2209
2395
|
"""
|
|
2210
2396
|
fetch all deposits made to an account
|
|
2211
|
-
|
|
2397
|
+
|
|
2398
|
+
https://docs.deribit.com/#private-get_deposits
|
|
2399
|
+
|
|
2212
2400
|
:param str code: unified currency code
|
|
2213
2401
|
:param int [since]: the earliest time in ms to fetch deposits for
|
|
2214
2402
|
:param int [limit]: the maximum number of deposits structures to retrieve
|
|
@@ -2252,7 +2440,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2252
2440
|
async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
|
2253
2441
|
"""
|
|
2254
2442
|
fetch all withdrawals made from an account
|
|
2255
|
-
|
|
2443
|
+
|
|
2444
|
+
https://docs.deribit.com/#private-get_withdrawals
|
|
2445
|
+
|
|
2256
2446
|
:param str code: unified currency code
|
|
2257
2447
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
|
2258
2448
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
|
@@ -2406,21 +2596,21 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2406
2596
|
unrealizedPnl = self.safe_string(position, 'floating_profit_loss')
|
|
2407
2597
|
initialMarginString = self.safe_string(position, 'initial_margin')
|
|
2408
2598
|
notionalString = self.safe_string(position, 'size_currency')
|
|
2599
|
+
notionalStringAbs = Precise.string_abs(notionalString)
|
|
2409
2600
|
maintenanceMarginString = self.safe_string(position, 'maintenance_margin')
|
|
2410
|
-
currentTime = self.milliseconds()
|
|
2411
2601
|
return self.safe_position({
|
|
2412
2602
|
'info': position,
|
|
2413
2603
|
'id': None,
|
|
2414
2604
|
'symbol': self.safe_string(market, 'symbol'),
|
|
2415
|
-
'timestamp':
|
|
2416
|
-
'datetime':
|
|
2605
|
+
'timestamp': None,
|
|
2606
|
+
'datetime': None,
|
|
2417
2607
|
'lastUpdateTimestamp': None,
|
|
2418
2608
|
'initialMargin': self.parse_number(initialMarginString),
|
|
2419
|
-
'initialMarginPercentage': self.parse_number(Precise.string_mul(Precise.string_div(initialMarginString,
|
|
2609
|
+
'initialMarginPercentage': self.parse_number(Precise.string_mul(Precise.string_div(initialMarginString, notionalStringAbs), '100')),
|
|
2420
2610
|
'maintenanceMargin': self.parse_number(maintenanceMarginString),
|
|
2421
|
-
'maintenanceMarginPercentage': self.parse_number(Precise.string_mul(Precise.string_div(maintenanceMarginString,
|
|
2611
|
+
'maintenanceMarginPercentage': self.parse_number(Precise.string_mul(Precise.string_div(maintenanceMarginString, notionalStringAbs), '100')),
|
|
2422
2612
|
'entryPrice': self.safe_number(position, 'average_price'),
|
|
2423
|
-
'notional': self.parse_number(
|
|
2613
|
+
'notional': self.parse_number(notionalStringAbs),
|
|
2424
2614
|
'leverage': self.safe_integer(position, 'leverage'),
|
|
2425
2615
|
'unrealizedPnl': self.parse_number(unrealizedPnl),
|
|
2426
2616
|
'contracts': None,
|
|
@@ -2441,7 +2631,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2441
2631
|
async def fetch_position(self, symbol: str, params={}):
|
|
2442
2632
|
"""
|
|
2443
2633
|
fetch data on a single open contract trade position
|
|
2444
|
-
|
|
2634
|
+
|
|
2635
|
+
https://docs.deribit.com/#private-get_position
|
|
2636
|
+
|
|
2445
2637
|
:param str symbol: unified market symbol of the market the position is held in, default is None
|
|
2446
2638
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
2447
2639
|
:returns dict: a `position structure <https://docs.ccxt.com/#/?id=position-structure>`
|
|
@@ -2481,38 +2673,26 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2481
2673
|
result = self.safe_dict(response, 'result')
|
|
2482
2674
|
return self.parse_position(result)
|
|
2483
2675
|
|
|
2484
|
-
async def fetch_positions(self, symbols: Strings = None, params={}):
|
|
2676
|
+
async def fetch_positions(self, symbols: Strings = None, params={}) -> List[Position]:
|
|
2485
2677
|
"""
|
|
2486
2678
|
fetch all open positions
|
|
2487
|
-
|
|
2679
|
+
|
|
2680
|
+
https://docs.deribit.com/#private-get_positions
|
|
2681
|
+
|
|
2488
2682
|
:param str[]|None symbols: list of unified market symbols
|
|
2489
2683
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
2684
|
+
:param str [params.currency]: currency code filter for positions
|
|
2490
2685
|
:param str [params.kind]: market type filter for positions 'future', 'option', 'spot', 'future_combo' or 'option_combo'
|
|
2686
|
+
:param int [params.subaccount_id]: the user id for the subaccount
|
|
2491
2687
|
:returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
|
|
2492
2688
|
"""
|
|
2493
2689
|
await self.load_markets()
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
if
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
symbols = None # fix https://github.com/ccxt/ccxt/issues/13961
|
|
2501
|
-
else:
|
|
2502
|
-
if isinstance(symbols, list):
|
|
2503
|
-
length = len(symbols)
|
|
2504
|
-
if length != 1:
|
|
2505
|
-
raise BadRequest(self.id + ' fetchPositions() symbols argument cannot contain more than 1 symbol')
|
|
2506
|
-
market = self.market(symbols[0])
|
|
2507
|
-
settle = market['settle']
|
|
2508
|
-
code = settle if (settle is not None) else market['base']
|
|
2509
|
-
kind = market['info']['kind']
|
|
2510
|
-
currency = self.currency(code)
|
|
2511
|
-
request: dict = {
|
|
2512
|
-
'currency': currency['id'],
|
|
2513
|
-
}
|
|
2514
|
-
if kind is not None:
|
|
2515
|
-
request['kind'] = kind
|
|
2690
|
+
code = self.safe_string(params, 'currency')
|
|
2691
|
+
request: dict = {}
|
|
2692
|
+
if code is not None:
|
|
2693
|
+
params = self.omit(params, 'currency')
|
|
2694
|
+
currency = self.currency(code)
|
|
2695
|
+
request['currency'] = currency['id']
|
|
2516
2696
|
response = await self.privateGetGetPositions(self.extend(request, params))
|
|
2517
2697
|
#
|
|
2518
2698
|
# {
|
|
@@ -2549,7 +2729,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2549
2729
|
async def fetch_volatility_history(self, code: str, params={}):
|
|
2550
2730
|
"""
|
|
2551
2731
|
fetch the historical volatility of an option market based on an underlying asset
|
|
2552
|
-
|
|
2732
|
+
|
|
2733
|
+
https://docs.deribit.com/#public-get_historical_volatility
|
|
2734
|
+
|
|
2553
2735
|
:param str code: unified currency code
|
|
2554
2736
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
2555
2737
|
:returns dict[]: a list of `volatility history objects <https://docs.ccxt.com/#/?id=volatility-structure>`
|
|
@@ -2604,10 +2786,12 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2604
2786
|
})
|
|
2605
2787
|
return result
|
|
2606
2788
|
|
|
2607
|
-
async def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}) ->
|
|
2789
|
+
async def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[TransferEntry]:
|
|
2608
2790
|
"""
|
|
2609
2791
|
fetch a history of internal transfers made on an account
|
|
2610
|
-
|
|
2792
|
+
|
|
2793
|
+
https://docs.deribit.com/#private-get_transfers
|
|
2794
|
+
|
|
2611
2795
|
:param str code: unified currency code of the currency transferred
|
|
2612
2796
|
:param int [since]: the earliest time in ms to fetch transfers for
|
|
2613
2797
|
:param int [limit]: the maximum number of transfers structures to retrieve
|
|
@@ -2664,8 +2848,10 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2664
2848
|
async def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
|
|
2665
2849
|
"""
|
|
2666
2850
|
transfer currency internally between wallets on the same account
|
|
2667
|
-
|
|
2668
|
-
|
|
2851
|
+
|
|
2852
|
+
https://docs.deribit.com/#private-submit_transfer_to_user
|
|
2853
|
+
https://docs.deribit.com/#private-submit_transfer_to_subaccount
|
|
2854
|
+
|
|
2669
2855
|
:param str code: unified currency code
|
|
2670
2856
|
:param float amount: amount to transfer
|
|
2671
2857
|
:param str fromAccount: account to transfer from
|
|
@@ -2750,10 +2936,12 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2750
2936
|
}
|
|
2751
2937
|
return self.safe_string(statuses, status, status)
|
|
2752
2938
|
|
|
2753
|
-
async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
|
|
2939
|
+
async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
|
|
2754
2940
|
"""
|
|
2755
2941
|
make a withdrawal
|
|
2756
|
-
|
|
2942
|
+
|
|
2943
|
+
https://docs.deribit.com/#private-withdraw
|
|
2944
|
+
|
|
2757
2945
|
:param str code: unified currency code
|
|
2758
2946
|
:param float amount: the amount to withdraw
|
|
2759
2947
|
:param str address: the address to withdraw to
|
|
@@ -2806,7 +2994,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2806
2994
|
async def fetch_deposit_withdraw_fees(self, codes: Strings = None, params={}):
|
|
2807
2995
|
"""
|
|
2808
2996
|
fetch deposit and withdraw fees
|
|
2809
|
-
|
|
2997
|
+
|
|
2998
|
+
https://docs.deribit.com/#public-get_currencies
|
|
2999
|
+
|
|
2810
3000
|
:param str[]|None codes: list of unified currency codes
|
|
2811
3001
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
2812
3002
|
:returns dict: a list of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>`
|
|
@@ -2838,10 +3028,12 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2838
3028
|
data = self.safe_list(response, 'result', [])
|
|
2839
3029
|
return self.parse_deposit_withdraw_fees(data, codes, 'currency')
|
|
2840
3030
|
|
|
2841
|
-
async def fetch_funding_rate(self, symbol: str, params={}):
|
|
3031
|
+
async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
|
|
2842
3032
|
"""
|
|
2843
3033
|
fetch the current funding rate
|
|
2844
|
-
|
|
3034
|
+
|
|
3035
|
+
https://docs.deribit.com/#public-get_funding_rate_value
|
|
3036
|
+
|
|
2845
3037
|
:param str symbol: unified market symbol
|
|
2846
3038
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
2847
3039
|
:param int [params.start_timestamp]: fetch funding rate starting from self timestamp
|
|
@@ -2872,10 +3064,14 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2872
3064
|
async def fetch_funding_rate_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
2873
3065
|
"""
|
|
2874
3066
|
fetch the current funding rate
|
|
2875
|
-
|
|
3067
|
+
|
|
3068
|
+
https://docs.deribit.com/#public-get_funding_rate_history
|
|
3069
|
+
|
|
2876
3070
|
:param str symbol: unified market symbol
|
|
3071
|
+
:param int [since]: the earliest time in ms to fetch funding rate history for
|
|
3072
|
+
:param int [limit]: the maximum number of entries to retrieve
|
|
2877
3073
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
2878
|
-
:param int [params.
|
|
3074
|
+
:param int [params.until]: fetch funding rate ending at self timestamp
|
|
2879
3075
|
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
2880
3076
|
:returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
|
|
2881
3077
|
"""
|
|
@@ -2883,17 +3079,32 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2883
3079
|
market = self.market(symbol)
|
|
2884
3080
|
paginate = False
|
|
2885
3081
|
paginate, params = self.handle_option_and_params(params, 'fetchFundingRateHistory', 'paginate')
|
|
3082
|
+
maxEntriesPerRequest = 744 # seems exchange returns max 744 items per request
|
|
3083
|
+
eachItemDuration = '1h'
|
|
2886
3084
|
if paginate:
|
|
2887
|
-
|
|
3085
|
+
# fix for: https://github.com/ccxt/ccxt/issues/25040
|
|
3086
|
+
return await self.fetch_paginated_call_deterministic('fetchFundingRateHistory', symbol, since, limit, eachItemDuration, self.extend(params, {'isDeribitPaginationCall': True}), maxEntriesPerRequest)
|
|
3087
|
+
duration = self.parse_timeframe(eachItemDuration) * 1000
|
|
2888
3088
|
time = self.milliseconds()
|
|
2889
3089
|
month = 30 * 24 * 60 * 60 * 1000
|
|
2890
3090
|
if since is None:
|
|
2891
3091
|
since = time - month
|
|
3092
|
+
else:
|
|
3093
|
+
time = since + month
|
|
2892
3094
|
request: dict = {
|
|
2893
3095
|
'instrument_name': market['id'],
|
|
2894
3096
|
'start_timestamp': since - 1,
|
|
2895
|
-
'end_timestamp': time,
|
|
2896
3097
|
}
|
|
3098
|
+
until = self.safe_integer_2(params, 'until', 'end_timestamp')
|
|
3099
|
+
if until is not None:
|
|
3100
|
+
params = self.omit(params, ['until'])
|
|
3101
|
+
request['end_timestamp'] = until
|
|
3102
|
+
else:
|
|
3103
|
+
request['end_timestamp'] = time
|
|
3104
|
+
if 'isDeribitPaginationCall' in params:
|
|
3105
|
+
params = self.omit(params, 'isDeribitPaginationCall')
|
|
3106
|
+
maxUntil = self.sum(since, limit * duration)
|
|
3107
|
+
request['end_timestamp'] = min(request['end_timestamp'], maxUntil)
|
|
2897
3108
|
response = await self.publicGetGetFundingRateHistory(self.extend(request, params))
|
|
2898
3109
|
#
|
|
2899
3110
|
# {
|
|
@@ -2918,7 +3129,7 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2918
3129
|
rates.append(rate)
|
|
2919
3130
|
return self.filter_by_symbol_since_limit(rates, symbol, since, limit)
|
|
2920
3131
|
|
|
2921
|
-
def parse_funding_rate(self, contract, market: Market = None):
|
|
3132
|
+
def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
|
|
2922
3133
|
#
|
|
2923
3134
|
# {
|
|
2924
3135
|
# "jsonrpc":"2.0",
|
|
@@ -2958,12 +3169,15 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
2958
3169
|
'previousFundingRate': None,
|
|
2959
3170
|
'previousFundingTimestamp': None,
|
|
2960
3171
|
'previousFundingDatetime': None,
|
|
3172
|
+
'interval': '8h',
|
|
2961
3173
|
}
|
|
2962
3174
|
|
|
2963
3175
|
async def fetch_liquidations(self, symbol: str, since: Int = None, limit: Int = None, params={}):
|
|
2964
3176
|
"""
|
|
2965
3177
|
retrieves the public liquidations of a trading pair
|
|
2966
|
-
|
|
3178
|
+
|
|
3179
|
+
https://docs.deribit.com/#public-get_last_settlements_by_currency
|
|
3180
|
+
|
|
2967
3181
|
:param str symbol: unified CCXT market symbol
|
|
2968
3182
|
:param int [since]: the earliest time in ms to fetch liquidations for
|
|
2969
3183
|
:param int [limit]: the maximum number of liquidation structures to retrieve
|
|
@@ -3033,7 +3247,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
3033
3247
|
async def fetch_my_liquidations(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
|
3034
3248
|
"""
|
|
3035
3249
|
retrieves the users liquidated positions
|
|
3036
|
-
|
|
3250
|
+
|
|
3251
|
+
https://docs.deribit.com/#private-get_settlement_history_by_instrument
|
|
3252
|
+
|
|
3037
3253
|
:param str symbol: unified CCXT market symbol
|
|
3038
3254
|
:param int [since]: the earliest time in ms to fetch liquidations for
|
|
3039
3255
|
:param int [limit]: the maximum number of liquidation structures to retrieve
|
|
@@ -3112,7 +3328,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
3112
3328
|
async def fetch_greeks(self, symbol: str, params={}) -> Greeks:
|
|
3113
3329
|
"""
|
|
3114
3330
|
fetches an option contracts greeks, financial metrics used to measure the factors that affect the price of an options contract
|
|
3115
|
-
|
|
3331
|
+
|
|
3332
|
+
https://docs.deribit.com/#public-ticker
|
|
3333
|
+
|
|
3116
3334
|
:param str symbol: unified symbol of the market to fetch greeks for
|
|
3117
3335
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
3118
3336
|
:returns dict: a `greeks structure <https://docs.ccxt.com/#/?id=greeks-structure>`
|
|
@@ -3241,7 +3459,9 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
3241
3459
|
async def fetch_option(self, symbol: str, params={}) -> Option:
|
|
3242
3460
|
"""
|
|
3243
3461
|
fetches option data that is commonly found in an option chain
|
|
3244
|
-
|
|
3462
|
+
|
|
3463
|
+
https://docs.deribit.com/#public-get_book_summary_by_instrument
|
|
3464
|
+
|
|
3245
3465
|
:param str symbol: unified market symbol
|
|
3246
3466
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
3247
3467
|
:returns dict: an `option chain structure <https://docs.ccxt.com/#/?id=option-chain-structure>`
|
|
@@ -3291,8 +3511,10 @@ class deribit(Exchange, ImplicitAPI):
|
|
|
3291
3511
|
async def fetch_option_chain(self, code: str, params={}) -> OptionChain:
|
|
3292
3512
|
"""
|
|
3293
3513
|
fetches data for an underlying asset that is commonly found in an option chain
|
|
3294
|
-
|
|
3295
|
-
|
|
3514
|
+
|
|
3515
|
+
https://docs.deribit.com/#public-get_book_summary_by_currency
|
|
3516
|
+
|
|
3517
|
+
:param str code: base currency to fetch an option chain for
|
|
3296
3518
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
|
3297
3519
|
:returns dict: a list of `option chain structures <https://docs.ccxt.com/#/?id=option-chain-structure>`
|
|
3298
3520
|
"""
|