Merge pull request #6729 from rokups/rk/exit_tag
Add 'exit_tag' parameter to 'custom_exit_price' callback.
This commit is contained in:
		| @@ -376,7 +376,7 @@ class AwesomeStrategy(IStrategy): | ||||
|  | ||||
|     def custom_exit_price(self, pair: str, trade: Trade, | ||||
|                           current_time: datetime, proposed_rate: float, | ||||
|                           current_profit: float, **kwargs) -> float: | ||||
|                           current_profit: float, exit_tag: Optional[str], **kwargs) -> float: | ||||
|  | ||||
|         dataframe, last_updated = self.dp.get_analyzed_dataframe(pair=pair, | ||||
|                                                                 timeframe=self.timeframe) | ||||
|   | ||||
| @@ -1373,7 +1373,8 @@ class FreqtradeBot(LoggingMixin): | ||||
|                                                   default_retval=proposed_limit_rate)( | ||||
|             pair=trade.pair, trade=trade, | ||||
|             current_time=datetime.now(timezone.utc), | ||||
|             proposed_rate=proposed_limit_rate, current_profit=current_profit) | ||||
|             proposed_rate=proposed_limit_rate, current_profit=current_profit, | ||||
|             exit_tag=exit_check.exit_reason) | ||||
|  | ||||
|         limit = self.get_valid_price(custom_exit_price, proposed_limit_rate) | ||||
|  | ||||
|   | ||||
| @@ -540,7 +540,8 @@ class Backtesting: | ||||
|                                                       default_retval=closerate)( | ||||
|                         pair=trade.pair, trade=trade, | ||||
|                         current_time=exit_candle_time, | ||||
|                         proposed_rate=closerate, current_profit=current_profit) | ||||
|                         proposed_rate=closerate, current_profit=current_profit, | ||||
|                         exit_tag=exit_.exit_reason) | ||||
|                     # We can't place orders lower than current low. | ||||
|                     # freqtrade does not support this in live, and the order would fill immediately | ||||
|                     if trade.is_short: | ||||
|   | ||||
| @@ -355,7 +355,7 @@ class IStrategy(ABC, HyperStrategyMixin): | ||||
|  | ||||
|     def custom_exit_price(self, pair: str, trade: Trade, | ||||
|                           current_time: datetime, proposed_rate: float, | ||||
|                           current_profit: float, **kwargs) -> float: | ||||
|                           current_profit: float, exit_tag: Optional[str], **kwargs) -> float: | ||||
|         """ | ||||
|         Custom exit price logic, returning the new exit price. | ||||
|  | ||||
| @@ -368,6 +368,7 @@ class IStrategy(ABC, HyperStrategyMixin): | ||||
|         :param current_time: datetime object, containing the current datetime | ||||
|         :param proposed_rate: Rate, calculated based on pricing settings in exit_pricing. | ||||
|         :param current_profit: Current profit (as ratio), calculated based on current_rate. | ||||
|         :param exit_tag: Exit reason. | ||||
|         :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. | ||||
|         :return float: New exit price value if provided | ||||
|         """ | ||||
|   | ||||
| @@ -32,7 +32,7 @@ def custom_entry_price(self, pair: str, current_time: 'datetime', proposed_rate: | ||||
|  | ||||
| def custom_exit_price(self, pair: str, trade: 'Trade', | ||||
|                       current_time: 'datetime', proposed_rate: float, | ||||
|                       current_profit: float, **kwargs) -> float: | ||||
|                       current_profit: float, exit_tag: Optional[str], **kwargs) -> float: | ||||
|     """ | ||||
|     Custom exit price logic, returning the new exit price. | ||||
|  | ||||
| @@ -45,6 +45,7 @@ def custom_exit_price(self, pair: str, trade: 'Trade', | ||||
|     :param current_time: datetime object, containing the current datetime | ||||
|     :param proposed_rate: Rate, calculated based on pricing settings in exit_pricing. | ||||
|     :param current_profit: Current profit (as ratio), calculated based on current_rate. | ||||
|     :param exit_tag: Exit reason. | ||||
|     :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. | ||||
|     :return float: New exit price value if provided | ||||
|     """ | ||||
|   | ||||
| @@ -3221,7 +3221,7 @@ def test_execute_trade_exit_custom_exit_price( | ||||
|     freqtrade.execute_trade_exit( | ||||
|         trade=trade, | ||||
|         limit=ticker_usdt_sell_up()['ask' if is_short else 'bid'], | ||||
|         exit_check=ExitCheckTuple(exit_type=ExitType.EXIT_SIGNAL) | ||||
|         exit_check=ExitCheckTuple(exit_type=ExitType.EXIT_SIGNAL, exit_reason='foo') | ||||
|     ) | ||||
|  | ||||
|     # Sell price must be different to default bid price | ||||
| @@ -3249,8 +3249,8 @@ def test_execute_trade_exit_custom_exit_price( | ||||
|         'profit_ratio': profit_ratio, | ||||
|         'stake_currency': 'USDT', | ||||
|         'fiat_currency': 'USD', | ||||
|         'sell_reason': ExitType.EXIT_SIGNAL.value, | ||||
|         'exit_reason': ExitType.EXIT_SIGNAL.value, | ||||
|         'sell_reason': 'foo', | ||||
|         'exit_reason': 'foo', | ||||
|         'open_date': ANY, | ||||
|         'close_date': ANY, | ||||
|         'close_rate': ANY, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user