diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 95b42155f..5323a5fc0 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -281,7 +281,7 @@ class FreqtradeBot(LoggingMixin): pair=trade.pair, amount=trade.amount, is_short=trade.is_short, - open_date=trade.open_date_utc + open_date=trade.date_last_filled_utc ) trade.funding_fees = funding_fees else: @@ -1485,7 +1485,7 @@ class FreqtradeBot(LoggingMixin): pair=trade.pair, amount=trade.amount, is_short=trade.is_short, - open_date=trade.open_date_utc, + open_date=trade.date_last_filled_utc, ) exit_type = 'exit' exit_reason = exit_tag or exit_check.exit_reason diff --git a/freqtrade/persistence/trade_model.py b/freqtrade/persistence/trade_model.py index 9c9c7f381..c2a87daaa 100644 --- a/freqtrade/persistence/trade_model.py +++ b/freqtrade/persistence/trade_model.py @@ -128,6 +128,10 @@ class Order(_DECL_BASE): self.ft_is_open = True if self.status in NON_OPEN_EXCHANGE_STATES: self.ft_is_open = False + if self.trade: + # Assign funding fee up to this point + # (represents the funding fee since the last order) + self.funding_fee = self.trade.funding_fees if (order.get('filled', 0.0) or 0.0) > 0: self.order_filled_date = datetime.now(timezone.utc) self.order_update_date = datetime.now(timezone.utc) @@ -360,10 +364,12 @@ class LocalTrade(): return self.amount @property - def date_last_filled_utc(self): + def date_last_filled_utc(self) -> datetime: """ Date of the last filled order""" - return max([self.open_date_utc, - max(o.order_filled_utc for o in self.orders if o.filled and not o.ft_is_open)]) + orders = self.select_filled_orders() + if not orders: + return self.open_date_utc + return max([self.open_date_utc, max(o.order_filled_utc for o in orders)]) @property def open_date_utc(self):