diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 58cc8f862..ac75d8411 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1731,14 +1731,12 @@ class FreqtradeBot(LoggingMixin): amount = order.safe_filled if fill else order.safe_amount order_rate: float = order.safe_price - profit = trade.calc_profit(rate=order_rate, amount=amount, open_rate=trade.open_rate) - profit_ratio = trade.calc_profit_ratio(order_rate, amount, trade.open_rate) + profit = trade.calc_profit_combined(order_rate, amount, trade.open_rate) else: order_rate = trade.safe_close_rate - profit = trade.calc_profit(rate=order_rate) + (0.0 if fill else trade.realized_profit) - profit_ratio = trade.calc_profit_ratio(order_rate) + profit = trade.calc_profit_combined(rate=order_rate) amount = trade.amount - gain = "profit" if profit_ratio > 0 else "loss" + gain = "profit" if profit.profit_ratio > 0 else "loss" msg: RPCSellMsg = { 'type': (RPCMessageType.EXIT_FILL if fill @@ -1756,8 +1754,8 @@ class FreqtradeBot(LoggingMixin): 'open_rate': trade.open_rate, 'close_rate': order_rate, 'current_rate': current_rate, - 'profit_amount': profit, - 'profit_ratio': profit_ratio, + 'profit_amount': profit.profit_abs if fill else profit.total_profit, + 'profit_ratio': profit.profit_ratio, 'buy_tag': trade.enter_tag, 'enter_tag': trade.enter_tag, 'sell_reason': trade.exit_reason, # Deprecated @@ -1789,11 +1787,10 @@ class FreqtradeBot(LoggingMixin): order = self.order_obj_or_raise(order_id, order_or_none) profit_rate: float = trade.safe_close_rate - profit_trade = trade.calc_profit(rate=profit_rate) + profit = trade.calc_profit_combined(rate=profit_rate) current_rate = self.exchange.get_rate( trade.pair, side='exit', is_short=trade.is_short, refresh=False) - profit_ratio = trade.calc_profit_ratio(profit_rate) - gain = "profit" if profit_ratio > 0 else "loss" + gain = "profit" if profit.profit_ratio > 0 else "loss" msg: RPCSellCancelMsg = { 'type': RPCMessageType.EXIT_CANCEL, @@ -1808,8 +1805,8 @@ class FreqtradeBot(LoggingMixin): 'amount': order.safe_amount_after_fee, 'open_rate': trade.open_rate, 'current_rate': current_rate, - 'profit_amount': profit_trade, - 'profit_ratio': profit_ratio, + 'profit_amount': profit.profit_abs, + 'profit_ratio': profit.profit_ratio, 'buy_tag': trade.enter_tag, 'enter_tag': trade.enter_tag, 'sell_reason': trade.exit_reason, # Deprecated diff --git a/freqtrade/persistence/trade_model.py b/freqtrade/persistence/trade_model.py index 817a8d06b..e199dded8 100644 --- a/freqtrade/persistence/trade_model.py +++ b/freqtrade/persistence/trade_model.py @@ -999,7 +999,6 @@ class LocalTrade: avg_price = FtPrecise(0.0) close_profit = 0.0 close_profit_abs = 0.0 - profit = None # Reset funding fees self.funding_fees = 0.0 funding_fees = 0.0 @@ -1029,11 +1028,9 @@ class LocalTrade: exit_rate = o.safe_price exit_amount = o.safe_amount_after_fee - profit = self.calc_profit(rate=exit_rate, amount=exit_amount, - open_rate=float(avg_price)) - close_profit_abs += profit - close_profit = self.calc_profit_ratio( - exit_rate, amount=exit_amount, open_rate=avg_price) + prof = self.calc_profit_combined(exit_rate, exit_amount, float(avg_price)) + close_profit_abs += prof.profit_abs + close_profit = prof.profit_ratio else: total_stake = total_stake + self._calc_open_trade_value(tmp_amount, price) max_stake_amount += (tmp_amount * price) @@ -1043,7 +1040,7 @@ class LocalTrade: if close_profit: self.close_profit = close_profit self.realized_profit = close_profit_abs - self.close_profit_abs = profit + self.close_profit_abs = prof.profit_abs current_amount_tr = amount_to_contract_precision( float(current_amount), self.amount_precision, self.precision_mode, self.contract_size)