parent
27bea580d4
commit
a790bad1e4
@ -804,17 +804,18 @@ For markets / exchanges that don't support leverage, this method is ignored.
|
|||||||
|
|
||||||
``` python
|
``` python
|
||||||
class AwesomeStrategy(IStrategy):
|
class AwesomeStrategy(IStrategy):
|
||||||
def leverage(self, pair: str, current_time: 'datetime', current_rate: float,
|
def leverage(self, pair: str, current_time: datetime, current_rate: float,
|
||||||
proposed_leverage: float, max_leverage: float, side: str,
|
proposed_leverage: float, max_leverage: float, entry_tag: Optional[str], side: str,
|
||||||
**kwargs) -> float:
|
**kwargs) -> float:
|
||||||
"""
|
"""
|
||||||
Customize leverage for each new trade.
|
Customize leverage for each new trade. This method is only called in futures mode.
|
||||||
|
|
||||||
:param pair: Pair that's currently analyzed
|
:param pair: Pair that's currently analyzed
|
||||||
:param current_time: datetime object, containing the current datetime
|
:param current_time: datetime object, containing the current datetime
|
||||||
:param current_rate: Rate, calculated based on pricing settings in exit_pricing.
|
:param current_rate: Rate, calculated based on pricing settings in exit_pricing.
|
||||||
:param proposed_leverage: A leverage proposed by the bot.
|
:param proposed_leverage: A leverage proposed by the bot.
|
||||||
:param max_leverage: Max leverage allowed on this pair
|
:param max_leverage: Max leverage allowed on this pair
|
||||||
|
:param entry_tag: Optional entry_tag (buy_tag) if provided with the buy signal.
|
||||||
: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.
|
||||||
"""
|
"""
|
||||||
|
@ -781,7 +781,7 @@ class FreqtradeBot(LoggingMixin):
|
|||||||
current_rate=enter_limit_requested,
|
current_rate=enter_limit_requested,
|
||||||
proposed_leverage=1.0,
|
proposed_leverage=1.0,
|
||||||
max_leverage=max_leverage,
|
max_leverage=max_leverage,
|
||||||
side=trade_side,
|
side=trade_side, entry_tag=entry_tag,
|
||||||
) if self.trading_mode != TradingMode.SPOT else 1.0
|
) 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, 1.0), max_leverage)
|
||||||
|
@ -704,7 +704,7 @@ class Backtesting:
|
|||||||
current_rate=row[OPEN_IDX],
|
current_rate=row[OPEN_IDX],
|
||||||
proposed_leverage=1.0,
|
proposed_leverage=1.0,
|
||||||
max_leverage=max_leverage,
|
max_leverage=max_leverage,
|
||||||
side=direction,
|
side=direction, entry_tag=entry_tag,
|
||||||
) if self._can_short else 1.0
|
) if self._can_short 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, 1.0), max_leverage)
|
||||||
|
@ -509,8 +509,8 @@ class IStrategy(ABC, HyperStrategyMixin):
|
|||||||
return current_order_rate
|
return current_order_rate
|
||||||
|
|
||||||
def leverage(self, pair: str, current_time: datetime, current_rate: float,
|
def leverage(self, pair: str, current_time: datetime, current_rate: float,
|
||||||
proposed_leverage: float, max_leverage: float, side: str,
|
proposed_leverage: float, max_leverage: float, entry_tag: Optional[str],
|
||||||
**kwargs) -> float:
|
side: str, **kwargs) -> float:
|
||||||
"""
|
"""
|
||||||
Customize leverage for each new trade. This method is only called in futures mode.
|
Customize leverage for each new trade. This method is only called in futures mode.
|
||||||
|
|
||||||
@ -519,6 +519,7 @@ class IStrategy(ABC, HyperStrategyMixin):
|
|||||||
:param current_rate: Rate, calculated based on pricing settings in exit_pricing.
|
:param current_rate: Rate, calculated based on pricing settings in exit_pricing.
|
||||||
:param proposed_leverage: A leverage proposed by the bot.
|
:param proposed_leverage: A leverage proposed by the bot.
|
||||||
:param max_leverage: Max leverage allowed on this pair
|
:param max_leverage: Max leverage allowed on this pair
|
||||||
|
:param entry_tag: Optional entry_tag (buy_tag) if provided with the buy signal.
|
||||||
: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.
|
||||||
"""
|
"""
|
||||||
|
@ -267,8 +267,8 @@ def adjust_trade_position(self, trade: 'Trade', current_time: 'datetime',
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def leverage(self, pair: str, current_time: datetime, current_rate: float,
|
def leverage(self, pair: str, current_time: datetime, current_rate: float,
|
||||||
proposed_leverage: float, max_leverage: float, side: str,
|
proposed_leverage: float, max_leverage: float, entry_tag: Optional[str],
|
||||||
**kwargs) -> float:
|
side: str, **kwargs) -> float:
|
||||||
"""
|
"""
|
||||||
Customize leverage for each new trade. This method is only called in futures mode.
|
Customize leverage for each new trade. This method is only called in futures mode.
|
||||||
|
|
||||||
@ -277,6 +277,7 @@ def leverage(self, pair: str, current_time: datetime, current_rate: float,
|
|||||||
:param current_rate: Rate, calculated based on pricing settings in exit_pricing.
|
:param current_rate: Rate, calculated based on pricing settings in exit_pricing.
|
||||||
:param proposed_leverage: A leverage proposed by the bot.
|
:param proposed_leverage: A leverage proposed by the bot.
|
||||||
:param max_leverage: Max leverage allowed on this pair
|
:param max_leverage: Max leverage allowed on this pair
|
||||||
|
:param entry_tag: Optional entry_tag (buy_tag) if provided with the buy signal.
|
||||||
: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.
|
||||||
"""
|
"""
|
||||||
|
@ -178,8 +178,8 @@ class StrategyTestV3(IStrategy):
|
|||||||
return dataframe
|
return dataframe
|
||||||
|
|
||||||
def leverage(self, pair: str, current_time: datetime, current_rate: float,
|
def leverage(self, pair: str, current_time: datetime, current_rate: float,
|
||||||
proposed_leverage: float, max_leverage: float, side: str,
|
proposed_leverage: float, max_leverage: float, entry_tag: Optional[str],
|
||||||
**kwargs) -> float:
|
side: str, **kwargs) -> float:
|
||||||
# Return 3.0 in all cases.
|
# Return 3.0 in all cases.
|
||||||
# Bot-logic must make sure it's an allowed leverage and eventually adjust accordingly.
|
# Bot-logic must make sure it's an allowed leverage and eventually adjust accordingly.
|
||||||
|
|
||||||
|
@ -615,6 +615,7 @@ def test_leverage_callback(default_conf, side) -> None:
|
|||||||
proposed_leverage=1.0,
|
proposed_leverage=1.0,
|
||||||
max_leverage=5.0,
|
max_leverage=5.0,
|
||||||
side=side,
|
side=side,
|
||||||
|
entry_tag=None,
|
||||||
) == 1
|
) == 1
|
||||||
|
|
||||||
default_conf['strategy'] = CURRENT_TEST_STRATEGY
|
default_conf['strategy'] = CURRENT_TEST_STRATEGY
|
||||||
@ -626,6 +627,7 @@ def test_leverage_callback(default_conf, side) -> None:
|
|||||||
proposed_leverage=1.0,
|
proposed_leverage=1.0,
|
||||||
max_leverage=5.0,
|
max_leverage=5.0,
|
||||||
side=side,
|
side=side,
|
||||||
|
entry_tag='entry_tag_test',
|
||||||
) == 3
|
) == 3
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user