diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4c6c4c1d4..3f23f43ae 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -986,7 +986,7 @@ class FreqtradeBot(LoggingMixin): return enter_limit_requested, stake_amount, leverage - def _notify_enter(self, trade: Trade, order: Order, order_type: str, + def _notify_enter(self, trade: Trade, order: Order, order_type: Optional[str], fill: bool = False, sub_trade: bool = False) -> None: """ Sends rpc notification when a entry order occurred. @@ -1010,7 +1010,7 @@ class FreqtradeBot(LoggingMixin): 'direction': 'Short' if trade.is_short else 'Long', 'limit': open_rate, # Deprecated (?) 'open_rate': open_rate, - 'order_type': order_type, + 'order_type': order_type or 'unknown', 'stake_amount': trade.stake_amount, 'stake_currency': self.config['stake_currency'], 'base_currency': self.exchange.get_pair_base_currency(trade.pair), @@ -1775,7 +1775,7 @@ class FreqtradeBot(LoggingMixin): return True - def _notify_exit(self, trade: Trade, order_type: str, fill: bool = False, + def _notify_exit(self, trade: Trade, order_type: Optional[str], fill: bool = False, sub_trade: bool = False, order: Optional[Order] = None) -> None: """ Sends rpc notification when a sell occurred. @@ -1807,7 +1807,7 @@ class FreqtradeBot(LoggingMixin): 'gain': gain, 'limit': order_rate, # Deprecated 'order_rate': order_rate, - 'order_type': order_type, + 'order_type': order_type or 'unknown', 'amount': amount, 'open_rate': trade.open_rate, 'close_rate': order_rate, diff --git a/freqtrade/persistence/trade_model.py b/freqtrade/persistence/trade_model.py index b1330b83c..407affe72 100644 --- a/freqtrade/persistence/trade_model.py +++ b/freqtrade/persistence/trade_model.py @@ -73,8 +73,7 @@ class Order(ModelBase): order_id: Mapped[str] = mapped_column(String(255), nullable=False, index=True) status: Mapped[Optional[str]] = mapped_column(String(255), nullable=True) symbol: Mapped[Optional[str]] = mapped_column(String(25), nullable=True) - # TODO: type: order_type type is Optional[str] - order_type: Mapped[str] = mapped_column(String(50), nullable=True) + order_type: Mapped[Optional[str]] = mapped_column(String(50), nullable=True) side: Mapped[str] = mapped_column(String(25), nullable=True) price: Mapped[Optional[float]] = mapped_column(Float(), nullable=True) average: Mapped[Optional[float]] = mapped_column(Float(), nullable=True) @@ -815,6 +814,7 @@ class LocalTrade: order.funding_fee = self.funding_fee_running # Reset running funding fees self.funding_fee_running = 0.0 + order_type = order.order_type.upper() if order.order_type else None if order.ft_order_side == self.entry_side: # Update open rate and actual amount @@ -822,20 +822,20 @@ class LocalTrade: self.amount = order.safe_amount_after_fee if self.is_open: payment = "SELL" if self.is_short else "BUY" - logger.info(f'{order.order_type.upper()}_{payment} has been fulfilled for {self}.') + logger.info(f'{order_type}_{payment} has been fulfilled for {self}.') self.recalc_trade_from_orders() elif order.ft_order_side == self.exit_side: if self.is_open: payment = "BUY" if self.is_short else "SELL" # * On margin shorts, you buy a little bit more than the amount (amount + interest) - logger.info(f'{order.order_type.upper()}_{payment} has been fulfilled for {self}.') + logger.info(f'{order_type}_{payment} has been fulfilled for {self}.') elif order.ft_order_side == 'stoploss' and order.status not in ('open', ): self.close_rate_requested = self.stop_loss self.exit_reason = ExitType.STOPLOSS_ON_EXCHANGE.value if self.is_open and order.safe_filled > 0: - logger.info(f'{order.order_type.upper()} is hit for {self}.') + logger.info(f'{order_type} is hit for {self}.') else: raise ValueError(f'Unknown order type: {order.order_type}')