Fix some tests
This commit is contained in:
parent
c3d7411668
commit
8f9b5095b5
@ -181,7 +181,7 @@ class Hyperopt:
|
|||||||
"""
|
"""
|
||||||
Display details of the hyperopt result
|
Display details of the hyperopt result
|
||||||
"""
|
"""
|
||||||
params = results['params_details']
|
params = results.get('params_details', {})
|
||||||
|
|
||||||
# Default header string
|
# Default header string
|
||||||
if header_str is None:
|
if header_str is None:
|
||||||
@ -335,6 +335,11 @@ class Hyperopt:
|
|||||||
'end_date': max_date,
|
'end_date': max_date,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
return self._get_results_dict(backtesting_results, min_date, max_date,
|
||||||
|
params_dict, params_details)
|
||||||
|
|
||||||
|
def _get_results_dict(self, backtesting_results, min_date, max_date,
|
||||||
|
params_dict, params_details):
|
||||||
results_metrics = self._calculate_results_metrics(backtesting_results)
|
results_metrics = self._calculate_results_metrics(backtesting_results)
|
||||||
results_explanation = self._format_results_explanation_string(results_metrics)
|
results_explanation = self._format_results_explanation_string(results_metrics)
|
||||||
|
|
||||||
|
@ -357,8 +357,9 @@ def test_onlyprofit_loss_prefers_higher_profits(default_conf, hyperopt_results)
|
|||||||
def test_log_results_if_loss_improves(hyperopt, capsys) -> None:
|
def test_log_results_if_loss_improves(hyperopt, capsys) -> None:
|
||||||
hyperopt.current_best_loss = 2
|
hyperopt.current_best_loss = 2
|
||||||
hyperopt.total_epochs = 2
|
hyperopt.total_epochs = 2
|
||||||
hyperopt.log_results(
|
hyperopt.print_results(
|
||||||
{
|
{
|
||||||
|
'is_best': False,
|
||||||
'loss': 1,
|
'loss': 1,
|
||||||
'current_epoch': 2, # This starts from 1 (in a human-friendly manner)
|
'current_epoch': 2, # This starts from 1 (in a human-friendly manner)
|
||||||
'results_explanation': 'foo.',
|
'results_explanation': 'foo.',
|
||||||
@ -371,8 +372,9 @@ def test_log_results_if_loss_improves(hyperopt, capsys) -> None:
|
|||||||
|
|
||||||
def test_no_log_if_loss_does_not_improve(hyperopt, caplog) -> None:
|
def test_no_log_if_loss_does_not_improve(hyperopt, caplog) -> None:
|
||||||
hyperopt.current_best_loss = 2
|
hyperopt.current_best_loss = 2
|
||||||
hyperopt.log_results(
|
hyperopt.print_results(
|
||||||
{
|
{
|
||||||
|
'is_best': False,
|
||||||
'loss': 3,
|
'loss': 3,
|
||||||
'current_epoch': 1,
|
'current_epoch': 1,
|
||||||
}
|
}
|
||||||
@ -400,8 +402,8 @@ def test_save_trials_saves_trials(mocker, hyperopt, testdatadir, caplog) -> None
|
|||||||
def test_read_trials_returns_trials_file(mocker, hyperopt, testdatadir, caplog) -> None:
|
def test_read_trials_returns_trials_file(mocker, hyperopt, testdatadir, caplog) -> None:
|
||||||
trials = create_trials(mocker, hyperopt, testdatadir)
|
trials = create_trials(mocker, hyperopt, testdatadir)
|
||||||
mock_load = mocker.patch('freqtrade.optimize.hyperopt.load', return_value=trials)
|
mock_load = mocker.patch('freqtrade.optimize.hyperopt.load', return_value=trials)
|
||||||
hyperopt_trial = hyperopt.read_trials()
|
|
||||||
trials_file = testdatadir / 'optimize' / 'ut_trials.pickle'
|
trials_file = testdatadir / 'optimize' / 'ut_trials.pickle'
|
||||||
|
hyperopt_trial = hyperopt._read_trials(trials_file)
|
||||||
assert log_has(f"Reading Trials from '{trials_file}'", caplog)
|
assert log_has(f"Reading Trials from '{trials_file}'", caplog)
|
||||||
assert hyperopt_trial == trials
|
assert hyperopt_trial == trials
|
||||||
mock_load.assert_called_once()
|
mock_load.assert_called_once()
|
||||||
@ -472,8 +474,8 @@ def test_format_results(hyperopt):
|
|||||||
]
|
]
|
||||||
labels = ['currency', 'profit_percent', 'profit_abs', 'trade_duration']
|
labels = ['currency', 'profit_percent', 'profit_abs', 'trade_duration']
|
||||||
df = pd.DataFrame.from_records(trades, columns=labels)
|
df = pd.DataFrame.from_records(trades, columns=labels)
|
||||||
|
results_metrics = hyperopt._calculate_results_metrics(df)
|
||||||
result = hyperopt.format_results(df)
|
result = hyperopt._format_explanation_string(results_metrics, 1)
|
||||||
assert result.find(' 66.67%')
|
assert result.find(' 66.67%')
|
||||||
assert result.find('Total profit 1.00000000 BTC')
|
assert result.find('Total profit 1.00000000 BTC')
|
||||||
assert result.find('2.0000Σ %')
|
assert result.find('2.0000Σ %')
|
||||||
@ -485,7 +487,8 @@ def test_format_results(hyperopt):
|
|||||||
('XPR/EUR', -1, -2, -246)
|
('XPR/EUR', -1, -2, -246)
|
||||||
]
|
]
|
||||||
df = pd.DataFrame.from_records(trades, columns=labels)
|
df = pd.DataFrame.from_records(trades, columns=labels)
|
||||||
result = hyperopt.format_results(df)
|
results_metrics = hyperopt._calculate_results_metrics(df)
|
||||||
|
result = hyperopt._format_explanation_string(results_metrics, 1)
|
||||||
assert result.find('Total profit 1.00000000 EUR')
|
assert result.find('Total profit 1.00000000 EUR')
|
||||||
|
|
||||||
|
|
||||||
@ -594,10 +597,38 @@ def test_generate_optimizer(mocker, default_conf) -> None:
|
|||||||
}
|
}
|
||||||
response_expected = {
|
response_expected = {
|
||||||
'loss': 1.9840569076926293,
|
'loss': 1.9840569076926293,
|
||||||
'results_explanation': (' 1 trades. Avg profit 2.31%. Total profit 0.00023300 BTC '
|
'results_explanation': (' 1 trades. Avg profit 2.31%. Total profit 0.00023300 BTC '
|
||||||
'( 2.31\N{GREEK CAPITAL LETTER SIGMA}%). Avg duration 100.0 mins.'
|
'( 2.31\N{GREEK CAPITAL LETTER SIGMA}%). Avg duration 100.0 mins.'
|
||||||
).encode(locale.getpreferredencoding(), 'replace').decode('utf-8'),
|
).encode(locale.getpreferredencoding(), 'replace').decode('utf-8'),
|
||||||
'params': optimizer_param,
|
'params_details': {'buy': {'adx-enabled': False,
|
||||||
|
'adx-value': 0,
|
||||||
|
'fastd-enabled': True,
|
||||||
|
'fastd-value': 35,
|
||||||
|
'mfi-enabled': False,
|
||||||
|
'mfi-value': 0,
|
||||||
|
'rsi-enabled': False,
|
||||||
|
'rsi-value': 0,
|
||||||
|
'trigger': 'macd_cross_signal'},
|
||||||
|
'roi': {0: 0.12000000000000001,
|
||||||
|
20.0: 0.02,
|
||||||
|
50.0: 0.01,
|
||||||
|
110.0: 0},
|
||||||
|
'sell': {'sell-adx-enabled': False,
|
||||||
|
'sell-adx-value': 0,
|
||||||
|
'sell-fastd-enabled': True,
|
||||||
|
'sell-fastd-value': 75,
|
||||||
|
'sell-mfi-enabled': False,
|
||||||
|
'sell-mfi-value': 0,
|
||||||
|
'sell-rsi-enabled': False,
|
||||||
|
'sell-rsi-value': 0,
|
||||||
|
'sell-trigger': 'macd_cross_signal'},
|
||||||
|
'stoploss': -0.4},
|
||||||
|
'params_dict': optimizer_param,
|
||||||
|
'results_metrics': {'avg_profit': 2.3117,
|
||||||
|
'duration': 100.0,
|
||||||
|
'profit': 2.3117,
|
||||||
|
'total_profit': 0.000233,
|
||||||
|
'trade_count': 1},
|
||||||
'total_profit': 0.00023300
|
'total_profit': 0.00023300
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -692,7 +723,8 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) ->
|
|||||||
|
|
||||||
parallel = mocker.patch(
|
parallel = mocker.patch(
|
||||||
'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel',
|
'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel',
|
||||||
MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}])
|
MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {},
|
||||||
|
'params_details': {'roi': {}, 'stoploss': None}}])
|
||||||
)
|
)
|
||||||
patch_exchange(mocker)
|
patch_exchange(mocker)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user