From 41aa49d2bb3530846b204736c13551d35a68d069 Mon Sep 17 00:00:00 2001 From: Davide Casale Date: Wed, 16 Nov 2022 18:45:25 +0100 Subject: [PATCH] Add derivatives_status_update event in handlers.py. Add DerivativesStatus in serializers.py and typings.py. --- bfxapi/websocket/handlers.py | 11 +++++++++++ bfxapi/websocket/serializers.py | 26 ++++++++++++++++++++++++++ bfxapi/websocket/typings.py | 15 +++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/bfxapi/websocket/handlers.py b/bfxapi/websocket/handlers.py index c4331b8..34817af 100644 --- a/bfxapi/websocket/handlers.py +++ b/bfxapi/websocket/handlers.py @@ -29,6 +29,7 @@ class PublicChannelsHandler(object): Channels.TRADES: self.__trades_channel_handler, Channels.BOOK: self.__book_channel_handler, Channels.CANDLES: self.__candles_channel_handler, + Channels.STATUS: self.__status_channel_handler } def handle(self, subscription, *stream): @@ -116,6 +117,16 @@ class PublicChannelsHandler(object): serializers.Candle(*stream[0]) ) + def __status_channel_handler(self, subscription, *stream): + subscription = _get_sub_dictionary(subscription, [ "chanId", "key" ]) + + if subscription["key"].startswith("deriv:"): + return self.event_emitter.emit( + "derivatives_status_update", + subscription, + serializers.DerivativesStatus(*stream[0]) + ) + class AuthenticatedChannelsHandler(object): def __init__(self, event_emitter, strict = False): self.event_emitter, self.strict = event_emitter, strict diff --git a/bfxapi/websocket/serializers.py b/bfxapi/websocket/serializers.py index 448e17f..f5fcb64 100644 --- a/bfxapi/websocket/serializers.py +++ b/bfxapi/websocket/serializers.py @@ -95,4 +95,30 @@ Candle = _Serializer("Candle", labels=[ "HIGH", "LOW", "VOLUME" +]) + +DerivativesStatus = _Serializer("DerivativesStatus", labels=[ + "TIME_MS", + "_PLACEHOLDER", + "DERIV_PRICE", + "SPOT_PRICE", + "_PLACEHOLDER", + "INSURANCE_FUND_BALANCE", + "_PLACEHOLDER", + "NEXT_FUNDING_EVT_TIMESTAMP_MS", + "NEXT_FUNDING_ACCRUED", + "NEXT_FUNDING_STEP", + "_PLACEHOLDER", + "CURRENT_FUNDING" + "_PLACEHOLDER", + "_PLACEHOLDER", + "MARK_PRICE", + "_PLACEHOLDER", + "_PLACEHOLDER", + "OPEN_INTEREST", + "_PLACEHOLDER", + "_PLACEHOLDER", + "_PLACEHOLDER", + "CLAMP_MIN", + "CLAMP_MAX" ]) \ No newline at end of file diff --git a/bfxapi/websocket/typings.py b/bfxapi/websocket/typings.py index bf432fb..5d4f53d 100644 --- a/bfxapi/websocket/typings.py +++ b/bfxapi/websocket/typings.py @@ -117,6 +117,21 @@ Candle = TypedDict("Candle", { Candles = List[Candle] +DerivativesStatus = TypedDict("DerivativesStatus", { + "TIME_MS": int, + "DERIV_PRICE": float, + "SPOT_PRICE": float, + "INSURANCE_FUND_BALANCE": float, + "NEXT_FUNDING_EVT_TIMESTAMP_MS": int, + "NEXT_FUNDING_ACCRUED": float, + "NEXT_FUNDING_STEP": int, + "CURRENT_FUNDING": float, + "MARK_PRICE": float, + "OPEN_INTEREST": float, + "CLAMP_MIN": float, + "CLAMP_MAX": float +}) + #endregion #region Type hinting for Websocket Authenticated Channels