async def run_independent_backtesting(data_files,
                                      timeout=10,
                                      use_loggers=True,
                                      run_on_common_part_only=True):
    independent_backtesting = None
    try:
        config_to_use = load_test_config()
        if use_loggers:
            init_logger()
        independent_backtesting = create_independent_backtesting(
            config_to_use,
            load_test_tentacles_config(),
            data_files,
            "",
            run_on_common_part_only=run_on_common_part_only)
        await initialize_and_run_independent_backtesting(
            independent_backtesting, log_errors=False)
        await independent_backtesting.join_backtesting_updater(timeout)
        return independent_backtesting
    except MissingTimeFrame:
        # ignore this exception: is due to missing of the only required time frame
        return independent_backtesting
    except asyncio.TimeoutError as e:
        get_logger().exception(
            e, True,
            f"Timeout after waiting for backtesting for {timeout} seconds.")
        # stop backtesting to prevent zombie tasks
        await stop_independent_backtesting(independent_backtesting)
        raise
    except Exception as e:
        get_logger().exception(e, True, str(e))
        # stop backtesting to prevent zombie tasks
        await stop_independent_backtesting(independent_backtesting)
        raise
Beispiel #2
0
async def _run_backtesting(config, tentacles_setup_config):
    backtesting = create_independent_backtesting(config,
                                                 tentacles_setup_config,
                                                 [DATA_FILES["ETH/USDT"]], "")
    await initialize_and_run_independent_backtesting(backtesting,
                                                     log_errors=False)
    await join_independent_backtesting(backtesting)
    return backtesting
 async def initialize(self):
     try:
         await self.initializer.create()
         self.independent_backtesting = octobot_backtesting_api.create_independent_backtesting(
             self.config,
             self.tentacles_setup_config,
             backtesting_api.get_backtesting_data_files(self.config),
             run_on_common_part_only=self.run_on_common_part_only)
         await octobot_backtesting_api.initialize_and_run_independent_backtesting(self.independent_backtesting,
                                                                                  log_errors=False)
         await octobot_backtesting_api.join_independent_backtesting(self.independent_backtesting)
         if self.log_report:
             octobot_backtesting_api.log_independent_backtesting_report(self.independent_backtesting)
         await octobot_backtesting_api.stop_independent_backtesting(self.independent_backtesting, memory_check=False)
     except Exception as e:
         self.logger.error(f"Error when starting backtesting: {e}")
     finally:
         self.task_manager.stop_tasks()
Beispiel #4
0
 async def _run_backtesting_with_current_config(self, data_file_to_use):
     independent_backtesting = None
     try:
         config_to_use = copy.deepcopy(self.config)
         independent_backtesting = octobot_backtesting_api.create_independent_backtesting(
             config_to_use, self.tentacles_setup_config, [data_file_to_use],
             "")
         await octobot_backtesting_api.initialize_and_run_independent_backtesting(
             independent_backtesting, log_errors=False)
         await octobot_backtesting_api.join_independent_backtesting(
             independent_backtesting)
         return independent_backtesting
     except backtesting_errors.MissingTimeFrame:
         # ignore this exception: is due to missing of the only required time frame
         return independent_backtesting
     except Exception as e:
         self.logger.exception(e, True, str(e))
         return independent_backtesting
 async def initialize(self):
     try:
         await self.initializer.create()
         join_backtesting_timeout = constants.BACKTESTING_DEFAULT_JOIN_TIMEOUT if self.enable_join_timeout else None
         self.independent_backtesting = octobot_backtesting_api.create_independent_backtesting(
             self.config,
             self.tentacles_setup_config,
             backtesting_api.get_backtesting_data_files(self.config),
             run_on_common_part_only=self.run_on_common_part_only,
             join_backtesting_timeout=join_backtesting_timeout)
         await octobot_backtesting_api.initialize_and_run_independent_backtesting(
             self.independent_backtesting, log_errors=False)
         await octobot_backtesting_api.join_independent_backtesting(
             self.independent_backtesting, timeout=join_backtesting_timeout)
         if self.log_report:
             octobot_backtesting_api.log_independent_backtesting_report(
                 self.independent_backtesting)
         await octobot_backtesting_api.stop_independent_backtesting(
             self.independent_backtesting, memory_check=False)
     except Exception as e:
         self.logger.error(
             f"Error when starting backtesting: {e.__class__.__name__}")
     finally:
         self.task_manager.stop_tasks()