def get_required_time_frames(cls, config): if CONFIG_FORCED_TIME_FRAME in config: return TimeFrameManager.parse_time_frames(config[CONFIG_FORCED_TIME_FRAME]) strategy_config = cls.get_specific_config() if STRATEGIES_REQUIRED_TIME_FRAME in strategy_config: return TimeFrameManager.parse_time_frames(strategy_config[STRATEGIES_REQUIRED_TIME_FRAME]) else: raise Exception(f"'{STRATEGIES_REQUIRED_TIME_FRAME}' is missing in {cls.get_config_file_name()}")
def get_required_time_frames(cls, config): if CONFIG_FORCED_TIME_FRAME in config: return TimeFrameManager.parse_time_frames( config[CONFIG_FORCED_TIME_FRAME]) strategy_config = cls.get_evaluator_config() if STRATEGIES_REQUIRED_TIME_FRAME in strategy_config: return TimeFrameManager.parse_time_frames( strategy_config[STRATEGIES_REQUIRED_TIME_FRAME]) else: raise Exception("'{0}' is missing in {1}".format( STRATEGIES_REQUIRED_TIME_FRAME, cls.get_config_file_name()))
def start_optimizer(strategy, time_frames, evaluators, risks): tools = get_bot().get_tools() tools[BOT_TOOLS_STRATEGY_OPTIMIZER] = StrategyOptimizer( get_bot().get_config(), strategy) optimizer = tools[BOT_TOOLS_STRATEGY_OPTIMIZER] backtester = tools[BOT_TOOLS_BACKTESTING] if optimizer.get_is_computing(): return False, "Optimizer already running" elif backtester and backtester.get_is_computing(): return False, "A backtesting is already running" else: formatted_time_frames = TimeFrameManager.parse_time_frames(time_frames) float_risks = [float(risk) for risk in risks] thread = threading.Thread(target=optimizer.find_optimal_configuration, args=(evaluators, formatted_time_frames, float_risks)) thread.start() return True, "Optimizer started"