diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 2be264cbe..a3b2c953d 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1348,7 +1348,7 @@ class FreqtradeBot(LoggingMixin): trade.orders.append(order_obj) trade.open_order_id = order['id'] - trade.sell_order_status = '' + trade.exit_order_status = '' trade.close_rate_requested = limit trade.sell_reason = exit_tag or sell_reason.sell_reason @@ -1414,10 +1414,10 @@ class FreqtradeBot(LoggingMixin): """ Sends rpc notification when a sell cancel occurred. """ - if trade.sell_order_status == reason: + if trade.exit_order_status == reason: return else: - trade.sell_order_status = reason + trade.exit_order_status = reason profit_rate = trade.close_rate if trade.close_rate else trade.close_rate_requested profit_trade = trade.calc_profit(rate=profit_rate) diff --git a/freqtrade/persistence/migrations.py b/freqtrade/persistence/migrations.py index 99b8f0925..bf6d4c256 100644 --- a/freqtrade/persistence/migrations.py +++ b/freqtrade/persistence/migrations.py @@ -75,7 +75,7 @@ def migrate_trades_table(decl_base, inspector, engine, table_back_name: str, col cols, 'close_profit_abs', f"(amount * close_rate * (1 - {fee_close})) - {open_trade_value}") # TODO-lev: update to exit order status - sell_order_status = get_column_def(cols, 'sell_order_status', 'null') + exit_order_status = get_column_def(cols, 'exit_order_status', 'null') amount_requested = get_column_def(cols, 'amount_requested', 'amount') # Schema migration necessary @@ -98,7 +98,7 @@ def migrate_trades_table(decl_base, inspector, engine, table_back_name: str, col stake_amount, amount, amount_requested, open_date, close_date, open_order_id, stop_loss, stop_loss_pct, initial_stop_loss, initial_stop_loss_pct, stoploss_order_id, stoploss_last_update, - max_rate, min_rate, sell_reason, sell_order_status, strategy, enter_tag, + max_rate, min_rate, sell_reason, exit_order_status, strategy, enter_tag, timeframe, open_trade_value, close_profit_abs, trading_mode, leverage, isolated_liq, is_short, interest_rate, funding_fees @@ -115,7 +115,7 @@ def migrate_trades_table(decl_base, inspector, engine, table_back_name: str, col {initial_stop_loss_pct} initial_stop_loss_pct, {stoploss_order_id} stoploss_order_id, {stoploss_last_update} stoploss_last_update, {max_rate} max_rate, {min_rate} min_rate, {sell_reason} sell_reason, - {sell_order_status} sell_order_status, + {exit_order_status} exit_order_status, {strategy} strategy, {enter_tag} enter_tag, {timeframe} timeframe, {open_trade_value} open_trade_value, {close_profit_abs} close_profit_abs, {trading_mode} trading_mode, {leverage} leverage, {isolated_liq} isolated_liq, diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 609a8c18c..2c153a108 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -262,7 +262,7 @@ class LocalTrade(): # Lowest price reached min_rate: float = 0.0 sell_reason: str = '' - sell_order_status: str = '' + exit_order_status: str = '' strategy: str = '' enter_tag: Optional[str] = None timeframe: Optional[int] = None @@ -436,7 +436,7 @@ class LocalTrade(): 'profit_abs': self.close_profit_abs, 'sell_reason': self.sell_reason, - 'sell_order_status': self.sell_order_status, + 'exit_order_status': self.exit_order_status, 'stop_loss_abs': self.stop_loss, 'stop_loss_ratio': self.stop_loss_pct if self.stop_loss_pct else None, 'stop_loss_pct': (self.stop_loss_pct * 100) if self.stop_loss_pct else None, @@ -593,7 +593,7 @@ class LocalTrade(): self.close_profit = self.calc_profit_ratio() self.close_profit_abs = self.calc_profit() self.is_open = False - self.sell_order_status = 'closed' + self.exit_order_status = 'closed' self.open_order_id = None if show_msg: logger.info( @@ -937,7 +937,7 @@ class Trade(_DECL_BASE, LocalTrade): # Lowest price reached min_rate = Column(Float, nullable=True) sell_reason = Column(String(100), nullable=True) - sell_order_status = Column(String(100), nullable=True) + exit_order_status = Column(String(100), nullable=True) strategy = Column(String(100), nullable=True) enter_tag = Column(String(100), nullable=True) timeframe = Column(Integer, nullable=True) diff --git a/freqtrade/rpc/api_server/api_schemas.py b/freqtrade/rpc/api_server/api_schemas.py index e476a6bc1..6331f14f0 100644 --- a/freqtrade/rpc/api_server/api_schemas.py +++ b/freqtrade/rpc/api_server/api_schemas.py @@ -213,7 +213,7 @@ class TradeSchema(BaseModel): profit_abs: Optional[float] profit_fiat: Optional[float] sell_reason: Optional[str] - sell_order_status: Optional[str] + exit_order_status: Optional[str] stop_loss_abs: Optional[float] stop_loss_ratio: Optional[float] stop_loss_pct: Optional[float] diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 66e9c2c92..86e6bfbdf 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -233,7 +233,7 @@ class Telegram(RPCHandler): f"{emoji} *{msg['exchange']}:*" f" {enter_side['entered'] if is_fill else enter_side['enter']} {msg['pair']}" f" (#{msg['trade_id']})\n" - ) + ) message += f"*Enter Tag:* `{msg['enter_tag']}`\n" if msg.get('enter_tag', None) else "" message += f"*Amount:* `{msg['amount']:.8f}`\n" if msg.get('leverage') and msg.get('leverage', 1.0) != 1.0: @@ -435,8 +435,8 @@ class Telegram(RPCHandler): lines.append("*Stoploss distance:* `{stoploss_current_dist:.8f}` " "`({stoploss_current_dist_ratio:.2%})`") if r['open_order']: - if r['sell_order_status']: - lines.append("*Open Order:* `{open_order}` - `{sell_order_status}`") + if r['exit_order_status']: + lines.append("*Open Order:* `{open_order}` - `{exit_order_status}`") else: lines.append("*Open Order:* `{open_order}`") @@ -1318,7 +1318,7 @@ class Telegram(RPCHandler): "Avg. holding durationsfor buys and sells.`\n" "*/help:* `This help message`\n" "*/version:* `Show version`" - ) + ) self._send_msg(message, parse_mode=ParseMode.MARKDOWN) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 40757c724..af041d202 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -65,7 +65,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_trade_value': 0.0010025, 'close_rate_requested': ANY, 'sell_reason': ANY, - 'sell_order_status': ANY, + 'exit_order_status': ANY, 'min_rate': ANY, 'max_rate': ANY, 'strategy': ANY, @@ -139,7 +139,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_trade_value': ANY, 'close_rate_requested': ANY, 'sell_reason': ANY, - 'sell_order_status': ANY, + 'exit_order_status': ANY, 'min_rate': ANY, 'max_rate': ANY, 'strategy': ANY, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index ef45d559e..61f08448f 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -956,7 +956,7 @@ def test_api_status(botclient, mocker, ticker, fee, markets, is_short, 'open_rate_requested': ANY, 'open_trade_value': open_trade_value, 'sell_reason': None, - 'sell_order_status': None, + 'exit_order_status': None, 'strategy': CURRENT_TEST_STRATEGY, 'buy_tag': None, 'enter_tag': None, @@ -1035,8 +1035,8 @@ def test_api_blacklist(botclient, mocker): "NOTHING/BTC": { "error_msg": "Pair NOTHING/BTC is not in the current blacklist." } - }, - } + }, + } rc = client_delete( client, f"{BASE_URI}/blacklist?pairs_to_delete=HOT/BTC&pairs_to_delete=ETH/BTC") @@ -1147,7 +1147,7 @@ def test_api_forcebuy(botclient, mocker, fee): 'open_rate_requested': None, 'open_trade_value': 0.24605460, 'sell_reason': None, - 'sell_order_status': None, + 'exit_order_status': None, 'strategy': CURRENT_TEST_STRATEGY, 'buy_tag': None, 'enter_tag': None, diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index da4bb7c8e..7c9e4e64a 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -196,7 +196,7 @@ def test_telegram_status(default_conf, update, mocker) -> None: 'profit_ratio': -0.0059, 'initial_stop_loss_abs': 1.098e-05, 'stop_loss_abs': 1.099e-05, - 'sell_order_status': None, + 'exit_order_status': None, 'initial_stop_loss_ratio': -0.0005, 'stoploss_current_dist': 1e-08, 'stoploss_current_dist_ratio': -0.0002, @@ -544,7 +544,7 @@ def test_weekly_wrong_input(default_conf, update, ticker, mocker) -> None: context.args = ["this week"] telegram._weekly(update=update, context=context) assert str('Weekly Profit over the last 8 weeks (starting from Monday):') \ - in msg_mock.call_args_list[0][0][0] + in msg_mock.call_args_list[0][0][0] def test_monthly_handle(default_conf, update, ticker, limit_buy_order, fee, @@ -1769,7 +1769,7 @@ def test_send_msg_protection_notification(default_conf, mocker, time_machine) -> (RPCMessageType.BUY_FILL, 'Longed', 'long_signal_01', 1.0), (RPCMessageType.BUY_FILL, 'Longed', 'long_signal_02', 2.0), (RPCMessageType.SHORT_FILL, 'Shorted', 'short_signal_01', 2.0), - ]) +]) def test_send_msg_buy_fill_notification(default_conf, mocker, message_type, entered, enter_signal, leverage) -> None: @@ -1799,7 +1799,7 @@ def test_send_msg_buy_fill_notification(default_conf, mocker, message_type, ente f"{leverage_text}" '*Open Rate:* `0.00001099`\n' '*Total:* `(0.00100000 BTC, 12.345 USD)`' - ) + ) def test_send_msg_sell_notification(default_conf, mocker) -> None: @@ -1841,7 +1841,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: '*Open Rate:* `0.00007500`\n' '*Current Rate:* `0.00003201`\n' '*Close Rate:* `0.00003201`' - ) + ) msg_mock.reset_mock() telegram.send_msg({ @@ -1875,7 +1875,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: '*Open Rate:* `0.00007500`\n' '*Current Rate:* `0.00003201`\n' '*Close Rate:* `0.00003201`' - ) + ) # Reset singleton function to avoid random breaks telegram._rpc._fiat_converter.convert_amount = old_convamount @@ -2039,7 +2039,7 @@ def test_send_msg_buy_notification_no_fiat( ('Long', 'long_signal_01', 1.0), ('Long', 'long_signal_01', 5.0), ('Short', 'short_signal_01', 2.0), - ]) +]) def test_send_msg_sell_notification_no_fiat( default_conf, mocker, direction, enter_signal, leverage) -> None: del default_conf['fiat_display_currency'] @@ -2081,7 +2081,7 @@ def test_send_msg_sell_notification_no_fiat( '*Open Rate:* `0.00007500`\n' '*Current Rate:* `0.00003201`\n' '*Close Rate:* `0.00003201`' - ) + ) @pytest.mark.parametrize('msg,expected', [ diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 33c0e11d0..6c057f184 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2798,7 +2798,7 @@ def test_handle_cancel_exit_limit(mocker, default_conf_usdt, fee) -> None: assert freqtrade.handle_cancel_exit(trade, order, reason ) == CANCEL_REASON['PARTIALLY_FILLED_KEEP_OPEN'] # Message should not be iterated again - assert trade.sell_order_status == CANCEL_REASON['PARTIALLY_FILLED_KEEP_OPEN'] + assert trade.exit_order_status == CANCEL_REASON['PARTIALLY_FILLED_KEEP_OPEN'] assert send_msg_mock.call_count == 1 diff --git a/tests/test_persistence.py b/tests/test_persistence.py index e1dc8cfeb..f49764360 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -1588,7 +1588,7 @@ def test_to_json(default_conf, fee): 'profit_pct': None, 'profit_abs': None, 'sell_reason': None, - 'sell_order_status': None, + 'exit_order_status': None, 'stop_loss_abs': None, 'stop_loss_ratio': None, 'stop_loss_pct': None, @@ -1673,7 +1673,7 @@ def test_to_json(default_conf, fee): 'open_rate_requested': None, 'open_trade_value': 12.33075, 'sell_reason': None, - 'sell_order_status': None, + 'exit_order_status': None, 'strategy': None, 'buy_tag': 'buys_signal_001', 'enter_tag': 'buys_signal_001',