add proposed leverage

This commit is contained in:
adriance 2022-03-19 11:34:30 +08:00
parent 12948aade6
commit 28d8cd5d4c
2 changed files with 11 additions and 8 deletions

View File

@ -600,8 +600,9 @@ class FreqtradeBot(LoggingMixin):
trade_side = 'short' if is_short else 'long' trade_side = 'short' if is_short else 'long'
pos_adjust = trade is not None pos_adjust = trade is not None
proposed_leverage = self.config.get('leverage', 1.0)
enter_limit_requested, stake_amount = self.get_valid_enter_price_and_stake( enter_limit_requested, stake_amount = self.get_valid_enter_price_and_stake(
pair, price, stake_amount, side, trade_side, enter_tag, trade) pair, price, stake_amount, side, trade_side, enter_tag, trade, proposed_leverage)
if not stake_amount: if not stake_amount:
return False return False
@ -611,12 +612,12 @@ class FreqtradeBot(LoggingMixin):
pair=pair, pair=pair,
current_time=datetime.now(timezone.utc), current_time=datetime.now(timezone.utc),
current_rate=enter_limit_requested, current_rate=enter_limit_requested,
proposed_leverage=1.0, proposed_leverage=proposed_leverage,
max_leverage=max_leverage, max_leverage=max_leverage,
side=trade_side, side=trade_side,
) if self.trading_mode != TradingMode.SPOT else 1.0 )
# Cap leverage between 1.0 and max_leverage. # Cap leverage between 1.0 and max_leverage.
leverage = min(max(leverage, 1.0), max_leverage) leverage = min(max(leverage, proposed_leverage), max_leverage)
else: else:
# Changing leverage currently not possible # Changing leverage currently not possible
leverage = trade.leverage if trade else 1.0 leverage = trade.leverage if trade else 1.0
@ -774,7 +775,8 @@ class FreqtradeBot(LoggingMixin):
self, pair: str, price: Optional[float], stake_amount: float, self, pair: str, price: Optional[float], stake_amount: float,
side: str, trade_side: str, side: str, trade_side: str,
entry_tag: Optional[str], entry_tag: Optional[str],
trade: Optional[Trade] trade: Optional[Trade],
leverage: Optional[float] = 1.0
) -> Tuple[float, float]: ) -> Tuple[float, float]:
if price: if price:
@ -797,8 +799,9 @@ class FreqtradeBot(LoggingMixin):
# We do however also need min-stake to determine leverage, therefore this is ignored as # We do however also need min-stake to determine leverage, therefore this is ignored as
# edge-case for now. # edge-case for now.
min_stake_amount = self.exchange.get_min_pair_stake_amount( min_stake_amount = self.exchange.get_min_pair_stake_amount(
pair, enter_limit_requested, self.strategy.stoploss) pair, enter_limit_requested, self.strategy.stoploss, leverage)
max_stake_amount = self.exchange.get_max_pair_stake_amount(pair, enter_limit_requested) max_stake_amount = self.exchange.get_max_pair_stake_amount(
pair, enter_limit_requested, leverage)
if not self.edge and trade is None: if not self.edge and trade is None:
stake_available = self.wallets.get_available_stake_amount() stake_available = self.wallets.get_available_stake_amount()

View File

@ -481,7 +481,7 @@ class IStrategy(ABC, HyperStrategyMixin):
:param side: 'long' or 'short' - indicating the direction of the proposed trade :param side: 'long' or 'short' - indicating the direction of the proposed trade
:return: A leverage amount, which is between 1.0 and max_leverage. :return: A leverage amount, which is between 1.0 and max_leverage.
""" """
return 1.0 return proposed_leverage
def informative_pairs(self) -> ListPairsWithTimeframes: def informative_pairs(self) -> ListPairsWithTimeframes:
""" """