Do not use 'trials' in commands

This commit is contained in:
hroff-1902 2020-04-28 23:14:02 +03:00
parent c26835048c
commit c6787d7e9f
1 changed files with 52 additions and 54 deletions

View File

@ -38,33 +38,33 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None:
'filter_max_total_profit': config.get('hyperopt_list_max_total_profit', None) 'filter_max_total_profit': config.get('hyperopt_list_max_total_profit', None)
} }
trials_file = (config['user_data_dir'] / results_file = (config['user_data_dir'] /
'hyperopt_results' / 'hyperopt_results.pickle') 'hyperopt_results' / 'hyperopt_results.pickle')
# Previous evaluations # Previous evaluations
trials = Hyperopt.load_previous_results(trials_file) epochs = Hyperopt.load_previous_results(results_file)
total_epochs = len(trials) total_epochs = len(epochs)
trials = _hyperopt_filter_trials(trials, filteroptions) epochs = _hyperopt_filter_epochs(epochs, filteroptions)
if print_colorized: if print_colorized:
colorama_init(autoreset=True) colorama_init(autoreset=True)
if not export_csv: if not export_csv:
try: try:
print(Hyperopt.get_result_table(config, trials, total_epochs, print(Hyperopt.get_result_table(config, epochs, total_epochs,
not filteroptions['only_best'], print_colorized, 0)) not filteroptions['only_best'], print_colorized, 0))
except KeyboardInterrupt: except KeyboardInterrupt:
print('User interrupted..') print('User interrupted..')
if trials and not no_details: if epochs and not no_details:
sorted_trials = sorted(trials, key=itemgetter('loss')) sorted_epochs = sorted(epochs, key=itemgetter('loss'))
results = sorted_trials[0] results = sorted_epochs[0]
Hyperopt.print_epoch_details(results, total_epochs, print_json, no_header) Hyperopt.print_epoch_details(results, total_epochs, print_json, no_header)
if trials and export_csv: if epochs and export_csv:
Hyperopt.export_csv_file( Hyperopt.export_csv_file(
config, trials, total_epochs, not filteroptions['only_best'], export_csv config, epochs, total_epochs, not filteroptions['only_best'], export_csv
) )
@ -78,7 +78,7 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None:
print_json = config.get('print_json', False) print_json = config.get('print_json', False)
no_header = config.get('hyperopt_show_no_header', False) no_header = config.get('hyperopt_show_no_header', False)
trials_file = (config['user_data_dir'] / results_file = (config['user_data_dir'] /
'hyperopt_results' / 'hyperopt_results.pickle') 'hyperopt_results' / 'hyperopt_results.pickle')
n = config.get('hyperopt_show_index', -1) n = config.get('hyperopt_show_index', -1)
@ -96,89 +96,87 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None:
} }
# Previous evaluations # Previous evaluations
trials = Hyperopt.load_previous_results(trials_file) epochs = Hyperopt.load_previous_results(results_file)
total_epochs = len(trials) total_epochs = len(epochs)
trials = _hyperopt_filter_trials(trials, filteroptions) epochs = _hyperopt_filter_epochs(epochs, filteroptions)
trials_epochs = len(trials) filtered_epochs = len(epochs)
if n > trials_epochs: if n > filtered_epochs:
raise OperationalException( raise OperationalException(
f"The index of the epoch to show should be less than {trials_epochs + 1}.") f"The index of the epoch to show should be less than {filtered_epochs + 1}.")
if n < -trials_epochs: if n < -filtered_epochs:
raise OperationalException( raise OperationalException(
f"The index of the epoch to show should be greater than {-trials_epochs - 1}.") f"The index of the epoch to show should be greater than {-filtered_epochs - 1}.")
# Translate epoch index from human-readable format to pythonic # Translate epoch index from human-readable format to pythonic
if n > 0: if n > 0:
n -= 1 n -= 1
if trials: if epochs:
val = trials[n] val = epochs[n]
Hyperopt.print_epoch_details(val, total_epochs, print_json, no_header, Hyperopt.print_epoch_details(val, total_epochs, print_json, no_header,
header_str="Epoch details") header_str="Epoch details")
def _hyperopt_filter_trials(trials: List, filteroptions: dict) -> List: def _hyperopt_filter_epochs(epochs: List, filteroptions: dict) -> List:
""" """
Filter our items from the list of hyperopt results Filter our items from the list of hyperopt results
""" """
if filteroptions['only_best']: if filteroptions['only_best']:
trials = [x for x in trials if x['is_best']] epochs = [x for x in epochs if x['is_best']]
if filteroptions['only_profitable']: if filteroptions['only_profitable']:
trials = [x for x in trials if x['results_metrics']['profit'] > 0] epochs = [x for x in epochs if x['results_metrics']['profit'] > 0]
if filteroptions['filter_min_trades'] > 0: if filteroptions['filter_min_trades'] > 0:
trials = [ epochs = [
x for x in trials x for x in epochs
if x['results_metrics']['trade_count'] > filteroptions['filter_min_trades'] if x['results_metrics']['trade_count'] > filteroptions['filter_min_trades']
] ]
if filteroptions['filter_max_trades'] > 0: if filteroptions['filter_max_trades'] > 0:
trials = [ epochs = [
x for x in trials x for x in epochs
if x['results_metrics']['trade_count'] < filteroptions['filter_max_trades'] if x['results_metrics']['trade_count'] < filteroptions['filter_max_trades']
] ]
if filteroptions['filter_min_avg_time'] is not None: if filteroptions['filter_min_avg_time'] is not None:
trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
trials = [ epochs = [
x for x in trials x for x in epochs
if x['results_metrics']['duration'] > filteroptions['filter_min_avg_time'] if x['results_metrics']['duration'] > filteroptions['filter_min_avg_time']
] ]
if filteroptions['filter_max_avg_time'] is not None: if filteroptions['filter_max_avg_time'] is not None:
trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
trials = [ epochs = [
x for x in trials x for x in epochs
if x['results_metrics']['duration'] < filteroptions['filter_max_avg_time'] if x['results_metrics']['duration'] < filteroptions['filter_max_avg_time']
] ]
if filteroptions['filter_min_avg_profit'] is not None: if filteroptions['filter_min_avg_profit'] is not None:
trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
trials = [ epochs = [
x for x in trials x for x in epochs
if x['results_metrics']['avg_profit'] if x['results_metrics']['avg_profit'] > filteroptions['filter_min_avg_profit']
> filteroptions['filter_min_avg_profit']
] ]
if filteroptions['filter_max_avg_profit'] is not None: if filteroptions['filter_max_avg_profit'] is not None:
trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
trials = [ epochs = [
x for x in trials x for x in epochs
if x['results_metrics']['avg_profit'] if x['results_metrics']['avg_profit'] < filteroptions['filter_max_avg_profit']
< filteroptions['filter_max_avg_profit']
] ]
if filteroptions['filter_min_total_profit'] is not None: if filteroptions['filter_min_total_profit'] is not None:
trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
trials = [ epochs = [
x for x in trials x for x in epochs
if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit'] if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit']
] ]
if filteroptions['filter_max_total_profit'] is not None: if filteroptions['filter_max_total_profit'] is not None:
trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
trials = [ epochs = [
x for x in trials x for x in epochs
if x['results_metrics']['profit'] < filteroptions['filter_max_total_profit'] if x['results_metrics']['profit'] < filteroptions['filter_max_total_profit']
] ]
logger.info(f"{len(trials)} " + logger.info(f"{len(epochs)} " +
("best " if filteroptions['only_best'] else "") + ("best " if filteroptions['only_best'] else "") +
("profitable " if filteroptions['only_profitable'] else "") + ("profitable " if filteroptions['only_profitable'] else "") +
"epochs found.") "epochs found.")
return trials return epochs