diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index e00e3d78d..f2d8e4151 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -16,12 +16,12 @@ If you're just getting started, please be familiar with the methods described in A stoploss can only ever move upwards - so if you set it to an absolute profit of 2%, you can never move it below this price. Also, the traditional `stoploss` value serves as an absolute lower level and will be instated as the initial stoploss. -The usage of the custom stoploss method must be enabled by setting `custom_stoploss=True` on the strategy object. +The usage of the custom stoploss method must be enabled by setting `use_custom_stoploss=True` on the strategy object. The method must return a stoploss value (float / number) with a relative ratio below the current price. E.g. `current_profit = 0.05` (5% profit) - stoploss returns `0.02` - then you "locked in" a profit of 3% (`0.05 - 0.02 = 0.03`). ``` python - custom_stoploss = True + use_custom_stoploss = True def stoploss_value(self, pair: str, trade: Trade, current_time: datetime, current_rate: float, current_profit: float, **kwargs) -> float: @@ -45,7 +45,7 @@ Of course, many more things are possible, and all examples can be combined at wi Use the initial stoploss for the first 60 minutes, after this change to 10% trailing stoploss, and after 2 hours (120 minutes) we use a 5% trailing stoploss. ``` python - custom_stoploss = True + use_custom_stoploss = True def stoploss_value(self, pair: str, trade: Trade, current_time: datetime, current_rate: float, current_profit: float, **kwargs) -> float: @@ -65,7 +65,7 @@ Use a different stoploss depending on the pair. In this example, we'll trail the highest price with 10% trailing stoploss for `ETH/BTC` and `XRP/BTC`, with 5% trailing stoploss for `LTC/BTC` and with 15% for all other pairs. ``` python - custom_stoploss = True + use_custom_stoploss = True def stoploss_value(self, pair: str, trade: Trade, current_time: datetime, current_rate: float, current_profit: float, **kwargs) -> float: @@ -88,7 +88,7 @@ The below example sets absolute profit levels based on the current profit. * Once profit is > 20% - stoploss will be set to 7%. ``` python - custom_stoploss = True + use_custom_stoploss = True def stoploss_value(self, pair: str, trade: Trade, current_time: datetime, current_rate: float, current_profit: float, **kwargs) -> float: diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 9378f1996..d93dda849 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -89,7 +89,7 @@ class IStrategy(ABC): trailing_stop_positive: Optional[float] = None trailing_stop_positive_offset: float = 0.0 trailing_only_offset_is_reached = False - custom_stoploss: bool = False + use_custom_stoploss: bool = False # associated timeframe ticker_interval: str # DEPRECATED @@ -265,7 +265,7 @@ class IStrategy(ABC): For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ When not implemented by a strategy, returns the initial stoploss value - Only called when custom_stoploss is set to True. + Only called when use_custom_stoploss is set to True. :param pair: Pair that's about to be sold. :param trade: trade object. @@ -554,7 +554,7 @@ class IStrategy(ABC): # Initiate stoploss with open_rate. Does nothing if stoploss is already set. trade.adjust_stop_loss(trade.open_rate, stop_loss_value, initial=True) - if self.custom_stoploss: + if self.use_custom_stoploss: stop_loss_value = strategy_safe_wrapper(self.stoploss_value, default_retval=None )(pair=trade.pair, trade=trade, current_time=current_time, diff --git a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 index e6ae477b9..0ae3e077c 100644 --- a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 +++ b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 @@ -12,7 +12,7 @@ def bot_loop_start(self, **kwargs) -> None: """ pass -custom_stoploss = True +use_custom_stoploss = True def stoploss_value(self, pair: str, trade: 'Trade', current_time: 'datetime', current_rate: float, current_profit: float, **kwargs) -> float: @@ -24,7 +24,7 @@ def stoploss_value(self, pair: str, trade: 'Trade', current_time: 'datetime', cu For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ When not implemented by a strategy, returns the initial stoploss value - Only called when custom_stoploss is set to True. + Only called when use_custom_stoploss is set to True. :param pair: Pair that's about to be sold. :param trade: trade object. diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index e8a3ee8de..5922ad9b2 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -328,7 +328,7 @@ def test_stop_loss_reached(default_conf, fee, profit, adjusted, expected, traili trade.adjust_min_max_rates(trade.open_rate) strategy.trailing_stop = trailing strategy.trailing_stop_positive = -0.05 - strategy.custom_stoploss = custom + strategy.use_custom_stoploss = custom original_stopvalue = strategy.stoploss_value if custom_stop: strategy.stoploss_value = custom_stop