Added Margin Mode Check for Binance.
This commit is contained in:
		| @@ -10,7 +10,8 @@ def liquidation_price( | |||||||
|     is_short: bool, |     is_short: bool, | ||||||
|     leverage: float, |     leverage: float, | ||||||
|     trading_mode: TradingMode, |     trading_mode: TradingMode, | ||||||
|     collateral: Optional[Collateral] |     collateral: Optional[Collateral], | ||||||
|  |     margin_mode: Optional[MarginMode] | ||||||
| ) -> Optional[float]: | ) -> Optional[float]: | ||||||
|     if trading_mode == TradingMode.SPOT: |     if trading_mode == TradingMode.SPOT: | ||||||
|         return None |         return None | ||||||
| @@ -22,7 +23,11 @@ def liquidation_price( | |||||||
|         ) |         ) | ||||||
|  |  | ||||||
|     if exchange_name.lower() == "binance": |     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": |     elif exchange_name.lower() == "kraken": | ||||||
|         return kraken(open_rate, is_short, leverage, trading_mode, collateral) |         return kraken(open_rate, is_short, leverage, trading_mode, collateral) | ||||||
|     elif exchange_name.lower() == "ftx": |     elif exchange_name.lower() == "ftx": | ||||||
| @@ -36,7 +41,7 @@ def exception( | |||||||
|     exchange: str, |     exchange: str, | ||||||
|     trading_mode: TradingMode, |     trading_mode: TradingMode, | ||||||
|     collateral: Collateral, |     collateral: Collateral, | ||||||
|     margin_mode: Optional[MarginMode] |     margin_mode: Optional[MarginMode] = None | ||||||
| ): | ): | ||||||
|     """ |     """ | ||||||
|         Raises an exception if exchange used doesn't support desired leverage mode |         Raises an exception if exchange used doesn't support desired leverage mode | ||||||
| @@ -183,7 +188,6 @@ def kraken( | |||||||
|     open_rate: float, |     open_rate: float, | ||||||
|     is_short: bool, |     is_short: bool, | ||||||
|     leverage: float, |     leverage: float, | ||||||
|     margin_mode: MarginMode, |  | ||||||
|     trading_mode: TradingMode, |     trading_mode: TradingMode, | ||||||
|     collateral: Collateral |     collateral: Collateral | ||||||
| ): | ): | ||||||
| @@ -192,7 +196,6 @@ def kraken( | |||||||
|         :param open_rate: open_rate |         :param open_rate: open_rate | ||||||
|         :param is_short: true or false |         :param is_short: true or false | ||||||
|         :param leverage: leverage in float |         :param leverage: leverage in float | ||||||
|         :param margin_mode: one-way or hedge |  | ||||||
|         :param trading_mode: spot, margin, futures |         :param trading_mode: spot, margin, futures | ||||||
|         :param collateral: cross, isolated |         :param collateral: cross, isolated | ||||||
|     """ |     """ | ||||||
| @@ -204,17 +207,16 @@ def kraken( | |||||||
|             # TODO-lev: perform a calculation based on this formula |             # 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 |             # https://support.kraken.com/hc/en-us/articles/203325763-Margin-Call-Level-and-Margin-Liquidation-Level | ||||||
|         elif trading_mode == TradingMode.FUTURES: |         elif trading_mode == TradingMode.FUTURES: | ||||||
|             exception("kraken",  trading_mode, collateral, margin_mode) |             exception("kraken",  trading_mode, collateral) | ||||||
|  |  | ||||||
|     # If nothing was returned |     # If nothing was returned | ||||||
|     exception("kraken",  trading_mode, collateral, margin_mode) |     exception("kraken",  trading_mode, collateral) | ||||||
|  |  | ||||||
|  |  | ||||||
| def ftx( | def ftx( | ||||||
|     open_rate: float, |     open_rate: float, | ||||||
|     is_short: bool, |     is_short: bool, | ||||||
|     leverage: float, |     leverage: float, | ||||||
|     margin_mode: MarginMode, |  | ||||||
|     trading_mode: TradingMode, |     trading_mode: TradingMode, | ||||||
|     collateral: Collateral |     collateral: Collateral | ||||||
| ): | ): | ||||||
| @@ -223,13 +225,12 @@ def ftx( | |||||||
|         :param open_rate: open_rate |         :param open_rate: open_rate | ||||||
|         :param is_short: true or false |         :param is_short: true or false | ||||||
|         :param leverage: leverage in float |         :param leverage: leverage in float | ||||||
|         :param margin_mode: one-way or hedge |  | ||||||
|         :param trading_mode: spot, margin, futures |         :param trading_mode: spot, margin, futures | ||||||
|         :param collateral: cross, isolated |         :param collateral: cross, isolated | ||||||
|     """ |     """ | ||||||
|     if collateral == Collateral.CROSS: |     if collateral == Collateral.CROSS: | ||||||
|         # TODO-lev: Additional arguments, fill in formulas |         # TODO-lev: Additional arguments, fill in formulas | ||||||
|         exception("ftx",  trading_mode, collateral, margin_mode) |         exception("ftx",  trading_mode, collateral) | ||||||
|  |  | ||||||
|     # If nothing was returned |     # If nothing was returned | ||||||
|     exception("ftx",  trading_mode, collateral, margin_mode) |     exception("ftx",  trading_mode, collateral) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user