From a12876da92e1f2db9c29cbdb91c30250de897cf5 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 20 Aug 2019 22:17:21 +0300 Subject: [PATCH] fine printing for floats in the roi tables (round to 5 digits after the decimal point) --- freqtrade/misc.py | 7 +++++++ freqtrade/optimize/hyperopt.py | 4 +++- freqtrade/optimize/hyperopt_interface.py | 7 ++++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 05946e008..ed9f5c1e9 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -113,3 +113,10 @@ def deep_merge_dicts(source, destination): destination[key] = value return destination + + +def round_dict(d, n): + """ + Rounds float values in the dict to n digits after the decimal point. + """ + return {k: (round(v, n) if isinstance(v, float) else v) for k, v in d.items()} diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 89e1accdd..d20134e0d 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -22,6 +22,7 @@ from skopt.space import Dimension from freqtrade.configuration import Arguments from freqtrade.data.history import load_data, get_timeframe +from freqtrade.misc import round_dict from freqtrade.optimize.backtesting import Backtesting # Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules from freqtrade.optimize.hyperopt_interface import IHyperOpt # noqa: F4 @@ -147,7 +148,8 @@ class Hyperopt(Backtesting): indent=4) if self.has_space('roi'): print("ROI table:") - pprint(self.custom_hyperopt.generate_roi_table(params), indent=4) + # Round printed values to 5 digits after the decimal point + pprint(round_dict(self.custom_hyperopt.generate_roi_table(params), 5), indent=4) if self.has_space('stoploss'): print(f"Stoploss: {params.get('stoploss')}") diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index b81dc25e3..4202e5325 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -12,6 +12,7 @@ from pandas import DataFrame from skopt.space import Dimension, Integer, Real from freqtrade.exchange import timeframe_to_minutes +from freqtrade.misc import round_dict logger = logging.getLogger(__name__) @@ -128,7 +129,7 @@ class IHyperOpt(ABC): 'roi_p3_min': 0.01 * roi_p_scale * roi_p_alpha, 'roi_p3_max': 0.20 * roi_p_scale * roi_p_alpha, } - logger.debug(f"Using roi space limits: {roi_limits}") + logger.debug(f"Using roi space limits: {round_dict(roi_limits, 5)}") p = { 'roi_t1': roi_limits['roi_t1_min'], 'roi_t2': roi_limits['roi_t2_min'], @@ -137,7 +138,7 @@ class IHyperOpt(ABC): 'roi_p2': roi_limits['roi_p2_min'], 'roi_p3': roi_limits['roi_p3_min'], } - logger.info(f"Min roi table: {IHyperOpt.generate_roi_table(p)}") + logger.info(f"Min roi table: {round_dict(IHyperOpt.generate_roi_table(p), 5)}") p = { 'roi_t1': roi_limits['roi_t1_max'], 'roi_t2': roi_limits['roi_t2_max'], @@ -146,7 +147,7 @@ class IHyperOpt(ABC): 'roi_p2': roi_limits['roi_p2_max'], 'roi_p3': roi_limits['roi_p3_max'], } - logger.info(f"Max roi table: {IHyperOpt.generate_roi_table(p)}") + logger.info(f"Max roi table: {round_dict(IHyperOpt.generate_roi_table(p), 5)}") return [ Integer(roi_limits['roi_t1_min'], roi_limits['roi_t1_max'], name='roi_t1'),