feat: Update output for hyperopt to Rich

This commit is contained in:
Matthias
2024-07-07 16:15:09 +02:00
parent befefd449c
commit f05c019757
2 changed files with 25 additions and 25 deletions

View File

@@ -18,10 +18,10 @@ from colorama import init as colorama_init
from joblib import Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects
from joblib.externals import cloudpickle
from pandas import DataFrame
from rich.align import Align
from rich.progress import (
BarColumn,
MofNCompleteColumn,
Progress,
TaskProgressColumn,
TextColumn,
TimeElapsedColumn,
@@ -40,6 +40,7 @@ from freqtrade.optimize.backtesting import Backtesting
# Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules
from freqtrade.optimize.hyperopt_auto import HyperOptAuto
from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss
from freqtrade.optimize.hyperopt_output import HyperoptOutput
from freqtrade.optimize.hyperopt_tools import (
HyperoptStateContainer,
HyperoptTools,
@@ -47,6 +48,7 @@ from freqtrade.optimize.hyperopt_tools import (
)
from freqtrade.optimize.optimize_reports import generate_strategy_stats
from freqtrade.resolvers.hyperopt_resolver import HyperOptLossResolver
from freqtrade.util import CustomProgress
# Suppress scikit-learn FutureWarnings from skopt
@@ -86,6 +88,8 @@ class Hyperopt:
self.max_open_trades_space: List[Dimension] = []
self.dimensions: List[Dimension] = []
self._hyper_out: HyperoptOutput = HyperoptOutput()
self.config = config
self.min_date: datetime
self.max_date: datetime
@@ -268,17 +272,12 @@ class Hyperopt:
is_best = results["is_best"]
if self.print_all or is_best:
print(
HyperoptTools.get_result_table(
self.config,
[results],
self.total_epochs,
self.print_all,
self.print_colorized,
self.hyperopt_table_header,
)
self._hyper_out.add_data(
self.config,
[results],
self.total_epochs,
self.print_all,
)
self.hyperopt_table_header = 2
def init_spaces(self):
"""
@@ -635,7 +634,7 @@ class Hyperopt:
logger.info(f"Effective number of parallel workers used: {jobs}")
# Define progressbar
with Progress(
with CustomProgress(
TextColumn("[progress.description]{task.description}"),
BarColumn(bar_width=None),
MofNCompleteColumn(),
@@ -645,6 +644,7 @@ class Hyperopt:
"",
TimeRemainingColumn(),
expand=True,
cust_objs=[Align.center(self._hyper_out.table)],
) as pbar:
task = pbar.add_task("Epochs", total=self.total_epochs)

View File

@@ -12,25 +12,25 @@ from freqtrade.util import fmt_coin
class HyperoptOutput:
def __init__(self):
self._table = Table(
self.table = Table(
title="Hyperopt results",
)
# Headers
self._table.add_column("Best", justify="left")
self._table.add_column("Epoch", justify="right")
self._table.add_column("Trades", justify="right")
self._table.add_column("Win Draw Loss Win%", justify="right")
self._table.add_column("Avg profit", justify="right")
self._table.add_column("Profit", justify="right")
self._table.add_column("Avg duration", justify="right")
self._table.add_column("Objective", justify="right")
self._table.add_column("Max Drawdown (Acct)", justify="right")
self.table.add_column("Best", justify="left")
self.table.add_column("Epoch", justify="right")
self.table.add_column("Trades", justify="right")
self.table.add_column("Win Draw Loss Win%", justify="right")
self.table.add_column("Avg profit", justify="right")
self.table.add_column("Profit", justify="right")
self.table.add_column("Avg duration", justify="right")
self.table.add_column("Objective", justify="right")
self.table.add_column("Max Drawdown (Acct)", justify="right")
def _add_row(self, data: List[Union[str, Text]]):
"""Add single row"""
row_to_add: List[Union[str, Text]] = [r if isinstance(r, Text) else str(r) for r in data]
self._table.add_row(*row_to_add)
self.table.add_row(*row_to_add)
def _add_rows(self, data: List[List[Union[str, Text]]]):
"""add multiple rows"""
@@ -44,7 +44,7 @@ class HyperoptOutput:
width=200 if "pytest" in sys.modules else None,
)
console.print(self._table)
console.print(self.table)
def add_data(
self,
@@ -52,7 +52,7 @@ class HyperoptOutput:
results: list,
total_epochs: int,
highlight_best: bool,
) -> str:
) -> None:
"""Format one or multiple rows and add them"""
stake_currency = config["stake_currency"]