add order_filled callback to bot and backtest

This commit is contained in:
Axel-CH
2024-03-18 15:46:47 -04:00
parent 60a62d933c
commit 18a3489a6f
3 changed files with 20 additions and 0 deletions

View File

@@ -476,6 +476,9 @@ class FreqtradeBot(LoggingMixin):
if not trade.is_open:
# Trade was just closed
trade.close_date = trade.date_last_filled_utc
strategy_safe_wrapper(
self.strategy.order_filled, default_retval=None)(
pair=trade.pair, trade=trade, current_time=datetime.now(timezone.utc))
self.order_close_notify(trade, order_obj,
order_obj.ft_order_side == 'stoploss',
send_msg=prev_trade_state != trade.is_open)
@@ -1939,6 +1942,10 @@ class FreqtradeBot(LoggingMixin):
trade = self._update_trade_after_fill(trade, order_obj)
Trade.commit()
strategy_safe_wrapper(
self.strategy.order_filled, default_retval=None)(
pair=trade.pair, trade=trade, current_time=datetime.now(timezone.utc))
self.order_close_notify(trade, order_obj, stoploss_order, send_msg)
return False

View File

@@ -603,6 +603,9 @@ class Backtesting:
if order and self._get_order_filled(order.ft_price, row):
order.close_bt_order(current_date, trade)
self._run_funding_fees(trade, current_date, force=True)
strategy_safe_wrapper(
self.strategy.order_filled, default_retval=None)(
pair=trade.pair, trade=trade, current_time=datetime.now(timezone.utc))
if not (order.ft_order_side == trade.exit_side and order.safe_amount == trade.amount):
# trade is still open

View File

@@ -372,6 +372,16 @@ class IStrategy(ABC, HyperStrategyMixin):
"""
return True
def order_filled(self, pair: str, trade: Trade, current_time: datetime, **kwargs) -> None:
"""
Called just ofter order filling
:param pair: Pair for trade that's just exited.
:param trade: trade object.
:param current_time: datetime object, containing the current datetime
:param **kwargs: Ensure to keep this here so updates to this won't break your strategy.
"""
pass
def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime, current_rate: float,
current_profit: float, after_fill: bool, **kwargs) -> Optional[float]:
"""