diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 752a83d2d..acfe8392a 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -248,7 +248,7 @@ class Backtesting(object): fee_close=self.fee, is_open=True, ) - logger.debug(f"'{pair}' - Backtesting emulates creation of new trade: {trade}.") + logger.debug(f"{pair} - Backtesting emulates creation of new trade: {trade}.") # calculate win/lose forwards from buy point for sell_row in partial_ticker: if max_open_trades > 0: @@ -305,7 +305,7 @@ class Backtesting(object): close_rate=sell_row.open, sell_reason=SellType.FORCE_SELL ) - logger.debug(f"'{pair}' - Force selling still open trade, " + logger.debug(f"{pair} - Force selling still open trade, " f"profit percent: {bt_res.profit_percent}, " f"profit abs: {bt_res.profit_abs}") @@ -388,7 +388,7 @@ class Backtesting(object): max_open_trades) if trade_entry: - logger.debug(f"'{pair}' - Locking pair till " + logger.debug(f"{pair} - Locking pair till " f"close_time={trade_entry.close_time}") lock_pair_until[pair] = trade_entry.close_time trades.append(trade_entry) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index be9374ebe..ea5188e0c 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -260,7 +260,7 @@ class Trade(_DECL_BASE): # no stop loss assigned yet if not self.stop_loss: - logger.debug(f"'{self.pair}' - Assigning new stoploss...") + logger.debug(f"{self.pair} - Assigning new stoploss...") self.stop_loss = new_loss self.stop_loss_pct = -1 * abs(stoploss) self.initial_stop_loss = new_loss @@ -270,15 +270,15 @@ class Trade(_DECL_BASE): # evaluate if the stop loss needs to be updated else: if new_loss > self.stop_loss: # stop losses only walk up, never down! - logger.debug(f"'{self.pair}' - Adjusting stoploss...") + logger.debug(f"{self.pair} - Adjusting stoploss...") self.stop_loss = new_loss self.stop_loss_pct = -1 * abs(stoploss) self.stoploss_last_update = datetime.utcnow() else: - logger.debug(f"'{self.pair}' - Keeping current stoploss...") + logger.debug(f"{self.pair} - Keeping current stoploss...") logger.debug( - f"'{self.pair}' - Stoploss adjusted. Current price {current_price:.8f}, " + f"{self.pair} - Stoploss adjusted. Current price {current_price:.8f}, " f"bought at {self.open_rate:.8f} and calculated " f"stoploss is at: {self.initial_stop_loss:.8f}, " f"initial stop at {self.stop_loss:.8f}. " diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index d4b89a3ae..1c4b8e669 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -302,7 +302,7 @@ class IStrategy(ABC): force_stoploss=force_stoploss, high=high) if stoplossflag.sell_flag: - logger.debug(f"'{trade.pair}' - Stoploss hit. Selling " + logger.debug(f"{trade.pair} - Stoploss hit. Selling " f"(sell_type={stoplossflag.sell_type})...") return stoplossflag @@ -312,30 +312,30 @@ class IStrategy(ABC): experimental = self.config.get('experimental', {}) if buy and experimental.get('ignore_roi_if_buy_signal', False): - logger.debug(f"'{trade.pair}' - Buy signal still active. Not selling " + logger.debug(f"{trade.pair} - Buy signal still active. Not selling " f"(sell_type=SellType.NONE)...") return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE) # Check if minimal roi has been reached and no longer in buy conditions (avoiding a fee) if self.min_roi_reached(trade=trade, current_profit=current_profit, current_time=date): - logger.debug(f"'{trade.pair}' - Required profit reached. Selling " + logger.debug(f"{trade.pair} - Required profit reached. Selling " f"(sell_type=SellType.ROI)...") return SellCheckTuple(sell_flag=True, sell_type=SellType.ROI) if experimental.get('sell_profit_only', False): - logger.debug(f"'{trade.pair}' - Checking if trade is profitable...") + logger.debug(f"{trade.pair} - Checking if trade is profitable...") if trade.calc_profit(rate=rate) <= 0: - logger.debug(f"'{trade.pair}' - Trade is not profitable. Not selling " + logger.debug(f"{trade.pair} - Trade is not profitable. Not selling " f"(sell_type=SellType.NONE)...") return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE) if sell and not buy and experimental.get('use_sell_signal', False): - logger.debug(f"'{trade.pair}' - Sell signal received. Selling " + logger.debug(f"{trade.pair} - Sell signal received. Selling " f"(sell_type=SellType.SELL_SIGNAL)...") return SellCheckTuple(sell_flag=True, sell_type=SellType.SELL_SIGNAL) # This one is noisy, commented out... -# logger.debug(f"'{trade.pair}' - Not selling (sell_type=SellType.NONE)...") +# logger.debug(f"{trade.pair} - Not selling (sell_type=SellType.NONE)...") return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE) def stop_loss_reached(self, current_rate: float, trade: Trade, @@ -366,7 +366,7 @@ class IStrategy(ABC): if 'trailing_stop_positive' in self.config and high_profit > sl_offset: # Ignore mypy error check in configuration that this is a float stop_loss_value = self.config.get('trailing_stop_positive') # type: ignore - logger.debug(f"'{trade.pair}' - Using positive stoploss: {stop_loss_value} " + logger.debug(f"{trade.pair} - Using positive stoploss: {stop_loss_value} " f"offset: {sl_offset:.4g} profit: {current_profit:.4f}%") trade.adjust_stop_loss(high or current_rate, stop_loss_value) @@ -382,11 +382,11 @@ class IStrategy(ABC): if trade.initial_stop_loss != trade.stop_loss: sell_type = SellType.TRAILING_STOP_LOSS logger.debug( - f"'{trade.pair}' - HIT STOP: current price at {current_rate:.6f}, " + f"{trade.pair} - HIT STOP: current price at {current_rate:.6f}, " f"stoploss is {trade.stop_loss:.6f}, " f"initial stoploss was at {trade.initial_stop_loss:.6f}, " f"trade opened at {trade.open_rate:.6f}") - logger.debug(f"'{trade.pair}' - Trailing stop saved " + logger.debug(f"{trade.pair} - Trailing stop saved " f"{trade.stop_loss - trade.initial_stop_loss:.6f}") return SellCheckTuple(sell_flag=True, sell_type=sell_type) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index ac2014cd5..7a74fc333 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1823,7 +1823,7 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order, # if ROI is reached we must sell patch_get_signal(freqtrade, value=(False, True)) assert freqtrade.handle_trade(trade) - assert log_has("'ETH/BTC' - Required profit reached. Selling (sell_type=SellType.ROI)...", + assert log_has("ETH/BTC - Required profit reached. Selling (sell_type=SellType.ROI)...", caplog) @@ -1854,7 +1854,7 @@ def test_handle_trade_experimental( patch_get_signal(freqtrade, value=(False, True)) assert freqtrade.handle_trade(trade) - assert log_has("'ETH/BTC' - Sell signal received. Selling (sell_type=SellType.SELL_SIGNAL)...", + assert log_has("ETH/BTC - Sell signal received. Selling (sell_type=SellType.SELL_SIGNAL)...", caplog) @@ -2798,7 +2798,7 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, markets, caplog, # Sell as trailing-stop is reached assert freqtrade.handle_trade(trade) is True assert log_has( - f"'ETH/BTC' - HIT STOP: current price at 0.000012, " + f"ETH/BTC - HIT STOP: current price at 0.000012, " f"stoploss is 0.000015, " f"initial stoploss was at 0.000010, trade opened at 0.000011", caplog) assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value @@ -2842,8 +2842,8 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, markets })) # stop-loss not reached, adjusted stoploss assert freqtrade.handle_trade(trade) is False - assert log_has(f"'ETH/BTC' - Using positive stoploss: 0.01 offset: 0 profit: 0.2666%", caplog) - assert log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog) + assert log_has(f"ETH/BTC - Using positive stoploss: 0.01 offset: 0 profit: 0.2666%", caplog) + assert log_has(f"ETH/BTC - Adjusting stoploss...", caplog) assert trade.stop_loss == 0.0000138501 mocker.patch('freqtrade.exchange.Exchange.get_ticker', @@ -2855,7 +2855,7 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, markets # Lower price again (but still positive) assert freqtrade.handle_trade(trade) is True assert log_has( - f"'ETH/BTC' - HIT STOP: current price at {buy_price + 0.000002:.6f}, " + f"ETH/BTC - HIT STOP: current price at {buy_price + 0.000002:.6f}, " f"stoploss is {trade.stop_loss:.6f}, " f"initial stoploss was at 0.000010, trade opened at 0.000011", caplog) @@ -2900,9 +2900,9 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, })) # stop-loss not reached, adjusted stoploss assert freqtrade.handle_trade(trade) is False - assert log_has(f"'ETH/BTC' - Using positive stoploss: 0.01 offset: 0.011 profit: 0.2666%", + assert log_has(f"ETH/BTC - Using positive stoploss: 0.01 offset: 0.011 profit: 0.2666%", caplog) - assert log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog) + assert log_has(f"ETH/BTC - Adjusting stoploss...", caplog) assert trade.stop_loss == 0.0000138501 mocker.patch('freqtrade.exchange.Exchange.get_ticker', @@ -2914,7 +2914,7 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, # Lower price again (but still positive) assert freqtrade.handle_trade(trade) is True assert log_has( - f"'ETH/BTC' - HIT STOP: current price at {buy_price + 0.000002:.6f}, " + f"ETH/BTC - HIT STOP: current price at {buy_price + 0.000002:.6f}, " f"stoploss is {trade.stop_loss:.6f}, " f"initial stoploss was at 0.000010, trade opened at 0.000011", caplog) assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value @@ -2967,7 +2967,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, # stop-loss should not be adjusted as offset is not reached yet assert freqtrade.handle_trade(trade) is False - assert not log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog) + assert not log_has(f"ETH/BTC - Adjusting stoploss...", caplog) assert trade.stop_loss == 0.0000098910 # price rises above the offset (rises 12% when the offset is 5.5%) @@ -2979,9 +2979,9 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, })) assert freqtrade.handle_trade(trade) is False - assert log_has(f"'ETH/BTC' - Using positive stoploss: 0.05 offset: 0.055 profit: 0.1218%", + assert log_has(f"ETH/BTC - Using positive stoploss: 0.05 offset: 0.055 profit: 0.1218%", caplog) - assert log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog) + assert log_has(f"ETH/BTC - Adjusting stoploss...", caplog) assert trade.stop_loss == 0.0000117705 @@ -3350,8 +3350,8 @@ def test_order_book_bid_strategy2(mocker, default_conf, order_book_l2, markets) default_conf['telegram']['enabled'] = False freqtrade = FreqtradeBot(default_conf) - # ordrebook shall be used even if tickers would be lower. - assert freqtrade.get_target_bid('ETH/BTC', ) != 0.042 + # orderbook shall be used even if tickers would be lower. + assert freqtrade.get_target_bid('ETH/BTC') != 0.042 assert ticker_mock.call_count == 0