From 1299cff8948e8f0f49435ef85981b892c68bec07 Mon Sep 17 00:00:00 2001 From: Arunavo Ray Date: Fri, 27 Aug 2021 11:54:51 +0530 Subject: [PATCH] Added Margin Mode Check for Binance. --- freqtrade/leverage/liquidation_price.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/freqtrade/leverage/liquidation_price.py b/freqtrade/leverage/liquidation_price.py index 383d598b4..21a699d40 100644 --- a/freqtrade/leverage/liquidation_price.py +++ b/freqtrade/leverage/liquidation_price.py @@ -10,7 +10,8 @@ def liquidation_price( is_short: bool, leverage: float, trading_mode: TradingMode, - collateral: Optional[Collateral] + collateral: Optional[Collateral], + margin_mode: Optional[MarginMode] ) -> Optional[float]: if trading_mode == TradingMode.SPOT: return None @@ -22,7 +23,11 @@ def liquidation_price( ) if exchange_name.lower() == "binance": - return binance(open_rate, is_short, leverage, trading_mode, collateral) + if not margin_mode: + raise OperationalException( + f"Parameter margin_mode is required by liquidation_price when exchange is {trading_mode}") + + return binance(open_rate, is_short, leverage, margin_mode, trading_mode, collateral) elif exchange_name.lower() == "kraken": return kraken(open_rate, is_short, leverage, trading_mode, collateral) elif exchange_name.lower() == "ftx": @@ -36,7 +41,7 @@ def exception( exchange: str, trading_mode: TradingMode, collateral: Collateral, - margin_mode: Optional[MarginMode] + margin_mode: Optional[MarginMode] = None ): """ Raises an exception if exchange used doesn't support desired leverage mode @@ -183,7 +188,6 @@ def kraken( open_rate: float, is_short: bool, leverage: float, - margin_mode: MarginMode, trading_mode: TradingMode, collateral: Collateral ): @@ -192,7 +196,6 @@ def kraken( :param open_rate: open_rate :param is_short: true or false :param leverage: leverage in float - :param margin_mode: one-way or hedge :param trading_mode: spot, margin, futures :param collateral: cross, isolated """ @@ -204,17 +207,16 @@ def kraken( # TODO-lev: perform a calculation based on this formula # https://support.kraken.com/hc/en-us/articles/203325763-Margin-Call-Level-and-Margin-Liquidation-Level elif trading_mode == TradingMode.FUTURES: - exception("kraken", trading_mode, collateral, margin_mode) + exception("kraken", trading_mode, collateral) # If nothing was returned - exception("kraken", trading_mode, collateral, margin_mode) + exception("kraken", trading_mode, collateral) def ftx( open_rate: float, is_short: bool, leverage: float, - margin_mode: MarginMode, trading_mode: TradingMode, collateral: Collateral ): @@ -223,13 +225,12 @@ def ftx( :param open_rate: open_rate :param is_short: true or false :param leverage: leverage in float - :param margin_mode: one-way or hedge :param trading_mode: spot, margin, futures :param collateral: cross, isolated """ if collateral == Collateral.CROSS: # TODO-lev: Additional arguments, fill in formulas - exception("ftx", trading_mode, collateral, margin_mode) + exception("ftx", trading_mode, collateral) # If nothing was returned - exception("ftx", trading_mode, collateral, margin_mode) + exception("ftx", trading_mode, collateral)