Skip to content

Commit 6b250f9

Browse files
committed
feat: reduce log verbosity of recursive and lookahead bias commands
1 parent 3d24ef6 commit 6b250f9

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

freqtrade/optimize/backtesting.py

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ def __init__(self, config: Config, exchange: Exchange | None = None) -> None:
137137
self.rejected_dict: dict[str, list] = {}
138138

139139
self._exchange_name = self.config["exchange"]["name"]
140+
self.__initial_backtest = exchange is None
140141
if not exchange:
141142
exchange = ExchangeResolver.load_exchange(self.config, load_leverage_tiers=True)
142143
self.exchange = exchange
@@ -179,20 +180,7 @@ def __init__(self, config: Config, exchange: Exchange | None = None) -> None:
179180

180181
if len(self.pairlists.whitelist) == 0:
181182
raise OperationalException("No pair in whitelist.")
182-
183-
if self.config.get("fee", None) is not None:
184-
self.fee = self.config["fee"]
185-
logger.info(f"Using fee {self.fee:.4%} from config.")
186-
else:
187-
fees = [
188-
self.exchange.get_fee(
189-
symbol=self.pairlists.whitelist[0],
190-
taker_or_maker=mt, # type: ignore
191-
)
192-
for mt in ("taker", "maker")
193-
]
194-
self.fee = max(fee for fee in fees if fee is not None)
195-
logger.info(f"Using fee {self.fee:.4%} - worst case fee from exchange (lowest tier).")
183+
self.set_fee()
196184
self.precision_mode = self.exchange.precisionMode
197185
self.precision_mode_price = self.exchange.precision_mode_price
198186

@@ -238,6 +226,30 @@ def _validate_pairlists_for_backtesting(self):
238226
"PrecisionFilter not allowed for backtesting multiple strategies."
239227
)
240228

229+
def log_once(self, msg: str) -> None:
230+
"""
231+
Partial reimplementation of log_once from the Login mixin.
232+
only used by recursive, as __initial_backtest is false in all other cases.
233+
234+
"""
235+
if self.__initial_backtest:
236+
logger.info(msg)
237+
238+
def set_fee(self):
239+
if self.config.get("fee", None) is not None:
240+
self.fee = self.config["fee"]
241+
self.log_once(f"Using fee {self.fee:.4%} from config.")
242+
else:
243+
fees = [
244+
self.exchange.get_fee(
245+
symbol=self.pairlists.whitelist[0],
246+
taker_or_maker=mt, # type: ignore
247+
)
248+
for mt in ("taker", "maker")
249+
]
250+
self.fee = max(fee for fee in fees if fee is not None)
251+
self.log_once(f"Using fee {self.fee:.4%} - worst case fee from exchange (lowest tier).")
252+
241253
@staticmethod
242254
def cleanup():
243255
LoggingMixin.show_output = True

0 commit comments

Comments
 (0)