Merge pull request #154 from gcarq/hyperopt/simplify-logging

Hyperopt/simplify logging
This commit is contained in:
Janne Sinivirta 2017-12-03 09:39:45 +02:00 committed by GitHub
commit e8c31142ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 37 additions and 1 deletions

View File

@ -3,6 +3,7 @@
import json import json
import logging import logging
import sys
from functools import reduce from functools import reduce
from math import exp from math import exp
from operator import itemgetter from operator import itemgetter
@ -18,6 +19,7 @@ from freqtrade.vendor.qtpylib.indicators import crossed_above
# Remove noisy log messages # Remove noisy log messages
logging.getLogger('hyperopt.mongoexp').setLevel(logging.WARNING) logging.getLogger('hyperopt.mongoexp').setLevel(logging.WARNING)
logging.getLogger('hyperopt.tpe').setLevel(logging.WARNING)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -27,6 +29,10 @@ TARGET_TRADES = 1100
TOTAL_TRIES = None TOTAL_TRIES = None
_CURRENT_TRIES = 0 _CURRENT_TRIES = 0
TOTAL_PROFIT_TO_BEAT = 3
AVG_PROFIT_TO_BEAT = 0.2
AVG_DURATION_TO_BEAT = 50
# Configuration and data used by hyperopt # Configuration and data used by hyperopt
PROCESSED = optimize.preprocess(optimize.load_data()) PROCESSED = optimize.preprocess(optimize.load_data())
OPTIMIZE_CONFIG = { OPTIMIZE_CONFIG = {
@ -96,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): def optimizer(params):
global _CURRENT_TRIES global _CURRENT_TRIES
@ -114,7 +135,22 @@ def optimizer(params):
profit_loss = max(0, 1 - total_profit / 10000) # max profit 10000 profit_loss = max(0, 1 - total_profit / 10000) # max profit 10000
_CURRENT_TRIES += 1 _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 { return {
'loss': trade_loss + profit_loss, 'loss': trade_loss + profit_loss,