def get_standalone_backtesting_bot(config, data_files): config_to_use = create_blank_config_using_loaded_one(config) config_to_use[CONFIG_CRYPTO_CURRENCIES] = {} config_to_use[CONFIG_BACKTESTING][CONFIG_BACKTESTING_DATA_FILES] = [] # do not activate web interface on standalone backtesting bot WebService.enable(config_to_use, False) ignored_files = [] reference_market = _get_reference_market(data_files) if DEFAULT_REFERENCE_MARKET != reference_market: _switch_reference_market(config_to_use, reference_market) if data_files: for data_file_to_use in data_files: _, file_symbol, _, _ = interpret_file_name(data_file_to_use) currency, _ = split_symbol(file_symbol) full_file_path = CONFIG_DATA_COLLECTOR_PATH + data_file_to_use ending = f".{full_file_path.split('.')[-1]}" full_file_path += full_file_path if not is_valid_ending( ending) else "" if currency not in config_to_use[CONFIG_CRYPTO_CURRENCIES]: config_to_use[CONFIG_CRYPTO_CURRENCIES][currency] = { CONFIG_CRYPTO_PAIRS: [] } if file_symbol not in config_to_use[CONFIG_CRYPTO_CURRENCIES][ currency][CONFIG_CRYPTO_PAIRS]: config_to_use[CONFIG_CRYPTO_CURRENCIES][currency][ CONFIG_CRYPTO_PAIRS].append(file_symbol) config_to_use[CONFIG_BACKTESTING][ CONFIG_BACKTESTING_DATA_FILES].append(full_file_path) else: ignored_files.append(data_file_to_use) return create_backtesting_bot(config_to_use), ignored_files
async def _run_backtesting_with_current_config(self, symbol, data_file_to_use=None): config_to_use = copy.deepcopy(self.config) config_to_use[CONFIG_BACKTESTING][ CONFIG_BACKTESTING_DATA_FILES] = copy.copy(DATA_FILES) # remove unused symbols symbols = {} for currency, details in copy.deepcopy(SYMBOLS).items(): if symbol in details[CONFIG_CRYPTO_PAIRS]: symbols[currency] = details config_to_use[CONFIG_CRYPTO_CURRENCIES] = symbols if data_file_to_use is not None: for index, datafile in enumerate(DATA_FILES): _, file_symbol, _, _ = interpret_file_name(datafile) if symbol == file_symbol: config_to_use[CONFIG_BACKTESTING][CONFIG_BACKTESTING_DATA_FILES][index] = \ DATA_FILE_PATH + data_file_to_use + DATA_FILE_EXT # do not activate web interface on standalone backtesting bot WebService.enable(config_to_use, False) filter_wanted_symbols(config_to_use, [symbol]) bot = create_backtesting_bot(config_to_use) # debug set to False to improve performances return await start_backtesting_bot(bot), bot
def _run_backtesting_with_current_config(self, symbol, data_file_to_use=None): config_to_use = copy.deepcopy(self.config) if data_file_to_use is not None: for index, datafile in enumerate(config_to_use[CONFIG_BACKTESTING][CONFIG_BACKTESTING_DATA_FILES]): _, file_symbol, _ = interpret_file_name(datafile) if symbol == file_symbol: config_to_use[CONFIG_BACKTESTING][CONFIG_BACKTESTING_DATA_FILES][index] = \ DATA_FILE_PATH + data_file_to_use + DATA_FILE_EXT # do not activate web interface on standalone backtesting bot WebService.enable(config_to_use, False) filter_wanted_symbols(config_to_use, [symbol]) bot = create_backtesting_bot(config_to_use) return start_backtesting_bot(bot), bot