From 965c07536242845c0aac8673f31e8161f3c0d906 Mon Sep 17 00:00:00 2001 From: Samuel Husso Date: Sat, 2 Dec 2017 00:21:46 +0200 Subject: [PATCH 1/2] disable info logging on hyperopt.tpe --- freqtrade/optimize/hyperopt.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 36eb0d275..fccdfde03 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -18,6 +18,7 @@ from freqtrade.vendor.qtpylib.indicators import crossed_above # Remove noisy log messages logging.getLogger('hyperopt.mongoexp').setLevel(logging.WARNING) +logging.getLogger('hyperopt.tpe').setLevel(logging.WARNING) logger = logging.getLogger(__name__) @@ -27,6 +28,10 @@ TARGET_TRADES = 1100 TOTAL_TRIES = None _CURRENT_TRIES = 0 +TOTAL_PROFIT_TO_BEAT = 4 +AVG_PROFIT_TO_BEAT = 0.2 +AVG_DURATION_TO_BEAT = 70 + # Configuration and data used by hyperopt PROCESSED = optimize.preprocess(optimize.load_data()) OPTIMIZE_CONFIG = { From a7cca4985e10654b0ee1bdf3ac397251fcfb2f6d Mon Sep 17 00:00:00 2001 From: Samuel Husso Date: Sat, 2 Dec 2017 01:32:23 +0200 Subject: [PATCH 2/2] omit hyperopt output if total_profit doesn't go pass threashold (3) --- freqtrade/optimize/hyperopt.py | 37 +++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index fccdfde03..78e5a3fb1 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -3,6 +3,7 @@ import json import logging +import sys from functools import reduce from math import exp from operator import itemgetter @@ -28,9 +29,9 @@ TARGET_TRADES = 1100 TOTAL_TRIES = None _CURRENT_TRIES = 0 -TOTAL_PROFIT_TO_BEAT = 4 +TOTAL_PROFIT_TO_BEAT = 3 AVG_PROFIT_TO_BEAT = 0.2 -AVG_DURATION_TO_BEAT = 70 +AVG_DURATION_TO_BEAT = 50 # Configuration and data used by hyperopt PROCESSED = optimize.preprocess(optimize.load_data()) @@ -101,6 +102,21 @@ SPACE = { ]), } +def log_results(results): + "if results is better than _TO_BEAT show it" + + current_try = results['current_tries'] + total_tries = results['total_tries'] + result = results['result'] + profit = results['total_profit'] / 1000 + + outcome = '{:5d}/{}: {}'.format(current_try, total_tries, result) + + if profit >= TOTAL_PROFIT_TO_BEAT: + logger.info(outcome) + else: + print('.', end='') + sys.stdout.flush() def optimizer(params): global _CURRENT_TRIES @@ -119,7 +135,22 @@ def optimizer(params): profit_loss = max(0, 1 - total_profit / 10000) # max profit 10000 _CURRENT_TRIES += 1 - logger.info('{:5d}/{}: {}'.format(_CURRENT_TRIES, TOTAL_TRIES, result)) + + result_data = { + 'trade_count': trade_count, + 'total_profit': total_profit, + 'trade_loss': trade_loss, + 'profit_loss': profit_loss, + 'avg_profit': results.profit.mean() * 100.0, + 'avg_duration': results.duration.mean() * 5, + 'current_tries': _CURRENT_TRIES, + 'total_tries': TOTAL_TRIES, + 'result': result, + 'results': results + } + + # logger.info('{:5d}/{}: {}'.format(_CURRENT_TRIES, TOTAL_TRIES, result)) + log_results(result_data) return { 'loss': trade_loss + profit_loss,