diff --git a/freqtrade/optimize/hyperopt_tools.py b/freqtrade/optimize/hyperopt_tools.py old mode 100644 new mode 100755 index fb1a0f56a..9eee42a8d --- a/freqtrade/optimize/hyperopt_tools.py +++ b/freqtrade/optimize/hyperopt_tools.py @@ -91,7 +91,7 @@ class HyperoptTools(): if print_json: result_dict: Dict = {} for s in ['buy', 'sell', 'roi', 'stoploss', 'trailing']: - HyperoptTools._params_update_for_json(result_dict, params, s) + HyperoptTools._params_update_for_json(result_dict, params, non_optimized, s) print(rapidjson.dumps(result_dict, default=str, number_mode=rapidjson.NM_NATIVE)) else: @@ -104,17 +104,24 @@ class HyperoptTools(): HyperoptTools._params_pretty_print(params, 'trailing', "Trailing stop:") @staticmethod - def _params_update_for_json(result_dict, params, space: str) -> None: - if space in params: + def _params_update_for_json(result_dict, params, non_optimized, space: str) -> None: + if (space in params) or (space in non_optimized): space_params = HyperoptTools._space_params(params, space) + space_non_optimized = HyperoptTools._space_params(non_optimized, space) + all_space_params = space_params + + # Merge non optimized params if there are any + if len(space_non_optimized) > 0: + all_space_params = {**space_params, **space_non_optimized} + if space in ['buy', 'sell']: - result_dict.setdefault('params', {}).update(space_params) + result_dict.setdefault('params', {}).update(all_space_params) elif space == 'roi': # Convert keys in min_roi dict to strings because # rapidjson cannot dump dicts with integer keys... - result_dict['minimal_roi'] = {str(k): v for k, v in space_params.items()} + result_dict['minimal_roi'] = {str(k): v for k, v in all_space_params.items()} else: # 'stoploss', 'trailing' - result_dict.update(space_params) + result_dict.update(all_space_params) @staticmethod def _params_pretty_print(params, space: str, header: str, non_optimized={}) -> None: