diff --git a/freqtrade/commands/strategy_utils_commands.py b/freqtrade/commands/strategy_utils_commands.py index 5aeac2266..4a7eacda0 100644 --- a/freqtrade/commands/strategy_utils_commands.py +++ b/freqtrade/commands/strategy_utils_commands.py @@ -26,17 +26,11 @@ def start_strategy_update(args: Dict[str, Any]) -> None: filtered_strategy_objs = [] for args_strategy in args['strategy_list']: - found = False for strategy_obj in strategy_objs: if strategy_obj['name'] == args_strategy and strategy_obj not in filtered_strategy_objs: filtered_strategy_objs.append(strategy_obj) - found = True break - if not found: - print(f"strategy {strategy_obj['name']} could not be loaded or found and is skipped.") - for filtered_strategy_obj in filtered_strategy_objs: - # Initialize backtesting object instance_strategy_updater = StrategyUpdater() - self.start(config, filtered_strategy_obj) + instance_strategy_updater.start(config, filtered_strategy_obj) diff --git a/freqtrade/strategy/strategyupdater.py b/freqtrade/strategy/strategyupdater.py index 8a55de1b6..d12d3eaaa 100644 --- a/freqtrade/strategy/strategyupdater.py +++ b/freqtrade/strategy/strategyupdater.py @@ -3,8 +3,6 @@ import os import shutil from pathlib import Path -import astor - class StrategyUpdater: name_mapping = { @@ -59,7 +57,7 @@ class StrategyUpdater: # read the file with open(source_file, 'r') as f: old_code = f.read() - if not os.path.exists(strategies_backup_folder): + if not strategies_backup_folder.is_dir(): os.makedirs(strategies_backup_folder) # backup original @@ -96,7 +94,7 @@ class StrategyUpdater: ast.increment_lineno(tree, n=1) # generate the new code from the updated AST - return astor.to_source(tree) + return ast.dump(tree) # Here we go through each respective node, slice, elt, key ... to replace outdated entries. @@ -187,9 +185,9 @@ class NameUpdater(ast.NodeTransformer): # if the attribute name is 'nr_of_successful_buys', # update it to 'nr_of_successful_entries' if ( - isinstance(node.value, ast.Name) - and node.value.id == 'trades' - and node.attr == 'nr_of_successful_buys' + isinstance(node.value, ast.Name) + and node.value.id == 'trades' + and node.attr == 'nr_of_successful_buys' ): node.attr = 'nr_of_successful_entries' return self.generic_visit(node) @@ -213,9 +211,9 @@ class NameUpdater(ast.NodeTransformer): else: for child in node.body: if ( - isinstance(child, ast.Assign) - and isinstance(child.targets[0], ast.Name) - and child.targets[0].id == 'INTERFACE_VERSION' + isinstance(child, ast.Assign) + and isinstance(child.targets[0], ast.Name) + and child.targets[0].id == 'INTERFACE_VERSION' ): child.value = ast.parse('3').body[0].value return self.generic_visit(node)