mirror of
https://github.com/freqtrade/freqtrade.git
synced 2026-02-07 23:00:24 +00:00
add order_filled callback to bot and backtest
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user