Added test cases and fixed a minor bug

This commit is contained in:
Fredrik Rydin 2020-02-09 14:18:56 +01:00
parent c96acd6ca0
commit c648ec7c0c
2 changed files with 64 additions and 1 deletions

View File

@ -120,24 +120,30 @@ def _hyperopt_filter_trials(trials: List, filteroptions: dict) -> List:
if filteroptions['only_profitable']: if filteroptions['only_profitable']:
trials = [x for x in trials if x['results_metrics']['profit'] > 0] trials = [x for x in trials if x['results_metrics']['profit'] > 0]
print(trials[0])
if not filteroptions['only_best']: if not filteroptions['only_best']:
if filteroptions['filter_min_avg_time'] > 0: if filteroptions['filter_min_avg_time'] > 0:
trials = [x for x in trials if x['results_metrics']['trade_count'] > 0]
trials = [ trials = [
x for x in trials x for x in trials
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'] > 0: if filteroptions['filter_max_avg_time'] > 0:
trials = [x for x in trials if x['results_metrics']['trade_count'] > 0]
trials = [ trials = [
x for x in trials x for x in trials
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'] > 0: if filteroptions['filter_min_avg_profit'] > 0:
trials = [x for x in trials if x['results_metrics']['trade_count'] > 0]
trials = [ trials = [
x for x in trials x for x in trials
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_min_total_profit'] > 0: if filteroptions['filter_min_total_profit'] > 0:
trials = [x for x in trials if x['results_metrics']['trade_count'] > 0]
trials = [ trials = [
x for x in trials x for x in trials
if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit'] if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit']

View File

@ -778,7 +778,64 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results):
assert all(x not in captured.out assert all(x not in captured.out
for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12",
" 11/12", " 12/12"]) " 11/12", " 12/12"])
args = [
"hyperopt-list",
"--profitable",
"--no-details",
"--min-avg-profit", "0.11"
]
pargs = get_args(args)
pargs['config'] = None
start_hyperopt_list(pargs)
captured = capsys.readouterr()
assert all(x in captured.out
for x in [" 2/12"])
assert all(x not in captured.out
for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12",
" 10/12", " 11/12", " 12/12"])
args = [
"hyperopt-list",
"--no-details",
"--min-total-profit", "0.4"
]
pargs = get_args(args)
pargs['config'] = None
start_hyperopt_list(pargs)
captured = capsys.readouterr()
assert all(x in captured.out
for x in [" 10/12"])
assert all(x not in captured.out
for x in [" 1/12", " 2/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12",
" 9/12", " 11/12", " 12/12"])
args = [
"hyperopt-list",
"--profitable",
"--no-details",
"--min-avg-time", "2000"
]
pargs = get_args(args)
pargs['config'] = None
start_hyperopt_list(pargs)
captured = capsys.readouterr()
assert all(x in captured.out
for x in [" 10/12"])
assert all(x not in captured.out
for x in [" 1/12", " 2/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12",
" 8/12", " 9/12", " 11/12", " 12/12"])
args = [
"hyperopt-list",
"--no-details",
"--max-avg-time", "1500"
]
pargs = get_args(args)
pargs['config'] = None
start_hyperopt_list(pargs)
captured = capsys.readouterr()
assert all(x in captured.out
for x in [" 2/12", " 6/12"])
assert all(x not in captured.out
for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 7/12", " 8/12"
" 9/12", " 10/12", " 11/12", " 12/12"])
def test_hyperopt_show(mocker, capsys, hyperopt_results): def test_hyperopt_show(mocker, capsys, hyperopt_results):
mocker.patch( mocker.patch(