Updated set leverage to check trading mode
This commit is contained in:
parent
0c1e5afc91
commit
bc102d57c9
@ -151,3 +151,24 @@ class Binance(Exchange):
|
|||||||
if nominal_value >= min_amount:
|
if nominal_value >= min_amount:
|
||||||
max_lev = 1/margin_req
|
max_lev = 1/margin_req
|
||||||
return max_lev
|
return max_lev
|
||||||
|
|
||||||
|
@retrier
|
||||||
|
def _set_leverage(self, leverage: float, pair: Optional[str]):
|
||||||
|
"""
|
||||||
|
Set's the leverage before making a trade, in order to not
|
||||||
|
have the same leverage on every trade
|
||||||
|
"""
|
||||||
|
if not self.exchange_has("setLeverage"):
|
||||||
|
# Some exchanges only support one collateral type
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
if self.trading_mode == TradingMode.FUTURES:
|
||||||
|
self._api.set_leverage(symbol=pair, leverage=leverage)
|
||||||
|
except ccxt.DDoSProtection as e:
|
||||||
|
raise DDosProtection(e) from e
|
||||||
|
except (ccxt.NetworkError, ccxt.ExchangeError) as e:
|
||||||
|
raise TemporaryError(
|
||||||
|
f'Could not set leverage due to {e.__class__.__name__}. Message: {e}') from e
|
||||||
|
except ccxt.BaseError as e:
|
||||||
|
raise OperationalException(e) from e
|
||||||
|
@ -145,7 +145,7 @@ class Exchange:
|
|||||||
self._api_async = self._init_ccxt(
|
self._api_async = self._init_ccxt(
|
||||||
exchange_config, ccxt_async, ccxt_kwargs=ccxt_async_config)
|
exchange_config, ccxt_async, ccxt_kwargs=ccxt_async_config)
|
||||||
|
|
||||||
trading_mode: TradingMode = (
|
self.trading_mode: TradingMode = (
|
||||||
TradingMode(config.get('trading_mode'))
|
TradingMode(config.get('trading_mode'))
|
||||||
if config.get('trading_mode')
|
if config.get('trading_mode')
|
||||||
else TradingMode.SPOT
|
else TradingMode.SPOT
|
||||||
@ -156,7 +156,7 @@ class Exchange:
|
|||||||
else None
|
else None
|
||||||
)
|
)
|
||||||
|
|
||||||
if trading_mode != TradingMode.SPOT:
|
if self.trading_mode != TradingMode.SPOT:
|
||||||
self.fill_leverage_brackets()
|
self.fill_leverage_brackets()
|
||||||
|
|
||||||
logger.info('Using Exchange "%s"', self.name)
|
logger.info('Using Exchange "%s"', self.name)
|
||||||
@ -176,7 +176,7 @@ class Exchange:
|
|||||||
self.validate_order_time_in_force(config.get('order_time_in_force', {}))
|
self.validate_order_time_in_force(config.get('order_time_in_force', {}))
|
||||||
self.validate_required_startup_candles(config.get('startup_candle_count', 0),
|
self.validate_required_startup_candles(config.get('startup_candle_count', 0),
|
||||||
config.get('timeframe', ''))
|
config.get('timeframe', ''))
|
||||||
self.validate_trading_mode_and_collateral(trading_mode, collateral)
|
self.validate_trading_mode_and_collateral(self.trading_mode, collateral)
|
||||||
# Converts the interval provided in minutes in config to seconds
|
# Converts the interval provided in minutes in config to seconds
|
||||||
self.markets_refresh_interval: int = exchange_config.get(
|
self.markets_refresh_interval: int = exchange_config.get(
|
||||||
"markets_refresh_interval", 60) * 60
|
"markets_refresh_interval", 60) * 60
|
||||||
@ -777,6 +777,7 @@ class Exchange:
|
|||||||
dry_order = self.create_dry_run_order(pair, ordertype, side, amount, rate)
|
dry_order = self.create_dry_run_order(pair, ordertype, side, amount, rate)
|
||||||
return dry_order
|
return dry_order
|
||||||
|
|
||||||
|
if self.trading_mode != TradingMode.SPOT:
|
||||||
self._set_leverage(pair, leverage)
|
self._set_leverage(pair, leverage)
|
||||||
params = self._params.copy()
|
params = self._params.copy()
|
||||||
if time_in_force != 'gtc' and ordertype != 'market':
|
if time_in_force != 'gtc' and ordertype != 'market':
|
||||||
|
Loading…
Reference in New Issue
Block a user