def _params_pretty_print(params, space: str, header: str, non_optimized={}) -> None: if space in params or space in non_optimized: space_params = HyperoptTools._space_params(params, space, 5) no_params = HyperoptTools._space_params(non_optimized, space, 5) appendix = '' if not space_params and not no_params: # No parameters - don't print return if not space_params: # Not optimized parameters - append string appendix = NON_OPT_PARAM_APPENDIX result = f"\n# {header}\n" if space == "stoploss": stoploss = safe_value_fallback2(space_params, no_params, space, space) result += (f"stoploss = {stoploss}{appendix}") elif space == "roi": result = result[:-1] + f'{appendix}\n' minimal_roi_result = rapidjson.dumps({ str(k): v for k, v in (space_params or no_params).items() }, default=str, indent=4, number_mode=rapidjson.NM_NATIVE) result += f"minimal_roi = {minimal_roi_result}" elif space == "trailing": for k, v in (space_params or no_params).items(): result += f"{k} = {v}{appendix}\n" else: # Buy / sell parameters result += f"{space}_params = {HyperoptTools._pprint_dict(space_params, no_params)}" result = result.replace("\n", "\n ") print(result)
def test_safe_value_fallback2(): dict1 = {'keya': None, 'keyb': 2, 'keyc': 5, 'keyd': None} dict2 = {'keya': 20, 'keyb': None, 'keyc': 6, 'keyd': None} assert safe_value_fallback2(dict1, dict2, 'keya', 'keya') == 20 assert safe_value_fallback2(dict2, dict1, 'keya', 'keya') == 20 assert safe_value_fallback2(dict1, dict2, 'keyb', 'keyb') == 2 assert safe_value_fallback2(dict2, dict1, 'keyb', 'keyb') == 2 assert safe_value_fallback2(dict1, dict2, 'keyc', 'keyc') == 5 assert safe_value_fallback2(dict2, dict1, 'keyc', 'keyc') == 6 assert safe_value_fallback2(dict1, dict2, 'keyd', 'keyd') is None assert safe_value_fallback2(dict2, dict1, 'keyd', 'keyd') is None assert safe_value_fallback2(dict2, dict1, 'keyd', 'keyd', 1234) == 1234 assert safe_value_fallback2(dict1, dict2, 'keyNo', 'keyNo') is None assert safe_value_fallback2(dict2, dict1, 'keyNo', 'keyNo') is None assert safe_value_fallback2(dict2, dict1, 'keyNo', 'keyNo', 1234) == 1234
def get_order_id_conditional(self, order: Dict[str, Any]) -> str: if order['type'] == 'stop': return safe_value_fallback2(order['info'], order, 'orderId', 'id') return order['id']