def _init_time_frames(self): # Init time frames using enabled strategies EvaluatorCreator.init_time_frames_from_strategies(self.octobot.get_config()) self.time_frames = copy.copy(TimeFrameManager.get_config_time_frame(self.octobot.get_config())) # Init display time frame config_time_frames = TimeFrameManager.get_config_time_frame(self.octobot.get_config()) if TimeFrames.ONE_HOUR not in config_time_frames and not backtesting_enabled(self.octobot.get_config()): config_time_frames.append(TimeFrames.ONE_HOUR) TimeFrameManager.sort_config_time_frames(self.octobot.get_config())
def __init__(self, config): self.start_time = time.time() self.config = config self.startup_config = copy.deepcopy(config) self.edited_config = copy.deepcopy(config) self.ready = False self.watcher = None # tools: used for alternative operations on a bot on the fly (ex: backtesting started from web interface) self.tools = { BOT_TOOLS_BACKTESTING: None, BOT_TOOLS_STRATEGY_OPTIMIZER: None, BOT_TOOLS_RECORDER: None, } # Logger self.logger = get_logger(self.__class__.__name__) # Advanced AdvancedManager.init_advanced_classes_if_necessary(self.config) # Debug tools self.performance_analyser = None if CONFIG_DEBUG_OPTION_PERF in self.config and self.config[ CONFIG_DEBUG_OPTION_PERF]: self.performance_analyser = PerformanceAnalyser() # Init time frames using enabled strategies EvaluatorCreator.init_time_frames_from_strategies(self.config) self.time_frames = TimeFrameManager.get_config_time_frame(self.config) # Init relevant evaluator names list using enabled strategies self.relevant_evaluators = EvaluatorCreator.get_relevant_evaluators_from_strategies( self.config) # Backtesting self.backtesting_enabled = Backtesting.enabled(self.config) # Add services to self.config[CONFIG_CATEGORY_SERVICES] ServiceCreator.create_services(self.config, self.backtesting_enabled) # Notifier self.config[CONFIG_NOTIFICATION_INSTANCE] = Notification(self.config) # Notify starting if self.config[CONFIG_NOTIFICATION_INSTANCE].enabled( CONFIG_NOTIFICATION_GLOBAL_INFO): self.config[CONFIG_NOTIFICATION_INSTANCE].notify_with_all( NOTIFICATION_STARTING_MESSAGE, False) self.symbol_threads_manager = {} self.exchange_traders = {} self.exchange_trader_simulators = {} self.trading_mode = None self.exchange_trading_modes = {} self.exchanges_list = {} self.symbol_evaluator_list = {} self.crypto_currency_evaluator_list = {} self.dispatchers_list = [] self.symbol_time_frame_updater_threads = []
def __init__(self, config, exchange_type): self.config = config if CONFIG_BACKTESTING not in self.config: raise Exception("Backtesting config not found") self.symbols = None self.data = None self._get_symbol_list() self.config_time_frames = TimeFrameManager.get_config_time_frame( config) self.time_frame_get_times = {} self.tickers = {} self.fetched_trades = {} self.fetched_trades_counter = {} self.DEFAULT_LIMIT = 100 self.MIN_LIMIT = 20 self.MIN_ENABLED_TIME_FRAME = TimeFrameManager.find_config_min_time_frame( self.config_time_frames) self.DEFAULT_TIME_FRAME_RECENT_TRADE_CREATOR = self.MIN_ENABLED_TIME_FRAME self.CREATED_TRADES_BY_TIME_FRAME = 50 self.DEFAULT_TIME_FRAME_TICKERS_CREATOR = self.MIN_ENABLED_TIME_FRAME self.CREATED_TICKER_BY_TIME_FRAME = 1 self.backtesting = Backtesting(config, self) self._prepare() super().__init__(config, exchange_type, connect_to_online_exchange=False)
def __init__(self, config, exchange_type): self.config = config if CONFIG_BACKTESTING not in self.config: raise Exception("Backtesting config not found") self.symbols = None self.data = None self._get_symbol_list() self.config_time_frames = TimeFrameManager.get_config_time_frame(config) self.time_frame_get_times = {} self.tickers = {} self.fetched_trades = {} self.fetched_trades_counter = {} self.DEFAULT_LIMIT = 100 self.MIN_LIMIT = 20 self.MIN_ENABLED_TIME_FRAME = TimeFrameManager.find_config_min_time_frame(self.config_time_frames) self.DEFAULT_TIME_FRAME_RECENT_TRADE_CREATOR = self.MIN_ENABLED_TIME_FRAME self.CREATED_TRADES_BY_TIME_FRAME = 50 self.DEFAULT_TIME_FRAME_TICKERS_CREATOR = self.MIN_ENABLED_TIME_FRAME self.CREATED_TICKER_BY_TIME_FRAME = 1 self.backtesting = Backtesting(config, self) self._prepare() super().__init__(config, exchange_type, connect_to_online_exchange=False)
def _set_config_time_frame(self): for time_frame in TimeFrameManager.get_config_time_frame(self.config): if self.time_frame_exists(time_frame.value): self.time_frames.append(time_frame) # add shortest timeframe for realtime evaluators client_shortest_time_frame = TimeFrameManager.find_min_time_frame(self.client_time_frames, MIN_EVAL_TIME_FRAME) if client_shortest_time_frame not in self.time_frames: self.time_frames.append(client_shortest_time_frame)
def __init__(self, config): self.start_time = time.time() self.config = config self.startup_config = copy.deepcopy(config) self.edited_config = copy.deepcopy(config) self.ready = False self.watcher = None self.current_loop_thread = None # tools: used for alternative operations on a bot on the fly (ex: backtesting started from web interface) self.tools = { BOT_TOOLS_BACKTESTING: None, BOT_TOOLS_STRATEGY_OPTIMIZER: None, BOT_TOOLS_RECORDER: None, } # Logger self.logger = get_logger(self.__class__.__name__) # Advanced AdvancedManager.init_advanced_classes_if_necessary(self.config) # Debug tools self.performance_analyser = None if CONFIG_DEBUG_OPTION_PERF in self.config and self.config[ CONFIG_DEBUG_OPTION_PERF]: self.performance_analyser = PerformanceAnalyser() # Init time frames using enabled strategies EvaluatorCreator.init_time_frames_from_strategies(self.config) self.time_frames = TimeFrameManager.get_config_time_frame(self.config) # Init relevant evaluator names list using enabled strategies self.relevant_evaluators = EvaluatorCreator.get_relevant_evaluators_from_strategies( self.config) # Backtesting self.backtesting_enabled = Backtesting.enabled(self.config) # Notifier self.config[CONFIG_NOTIFICATION_INSTANCE] = Notification(self.config) self.symbol_tasks_manager = {} self.exchange_traders = {} self.exchange_trader_simulators = {} self.trading_mode = None self.exchange_trading_modes = {} self.exchanges_list = {} self.symbol_evaluator_list = {} self.crypto_currency_evaluator_list = {} self.dispatchers_list = [] self.global_updaters_by_exchange = {} self.async_loop = None self.social_eval_tasks = [] self.real_time_eval_tasks = [] self.main_task_group = None
def __init__(self, config): self.start_time = time.time() self.config = config self.ready = False # Logger self.logger = logging.getLogger(self.__class__.__name__) # Advanced AdvancedManager.create_class_list(self.config) # Debug tools self.performance_analyser = None if CONFIG_DEBUG_OPTION_PERF in self.config and self.config[ CONFIG_DEBUG_OPTION_PERF]: self.performance_analyser = PerformanceAnalyser() # Init time frames using enabled strategies EvaluatorCreator.init_time_frames_from_strategies(self.config) self.time_frames = TimeFrameManager.get_config_time_frame(self.config) # Init relevant evaluator names list using enabled strategies self.relevant_evaluators = EvaluatorCreator.get_relevant_evaluators_from_strategies( self.config) # Add services to self.config[CONFIG_CATEGORY_SERVICES] ServiceCreator.create_services(self.config) # Notifier self.config[CONFIG_NOTIFICATION_INSTANCE] = Notification(self.config) # Notify starting if self.config[CONFIG_NOTIFICATION_INSTANCE].enabled( CONFIG_NOTIFICATION_GLOBAL_INFO): self.config[CONFIG_NOTIFICATION_INSTANCE].notify_with_all( NOTIFICATION_STARTING_MESSAGE) # Backtesting self.backtesting_enabled = None self.symbol_threads_manager = {} self.exchange_traders = {} self.exchange_trader_simulators = {} self.exchanges_list = {} self.symbol_evaluator_list = {} self.crypto_currency_evaluator_list = {} self.dispatchers_list = [] self.symbol_time_frame_updater_threads = []
def __init__(self, config, exchange_type, exchange_manager): super().__init__(config, exchange_type) self.initializing = True self.exchange_manager = exchange_manager if CONFIG_BACKTESTING not in self.config: raise Exception("Backtesting config not found") self.symbols = None self.data = None self._get_symbol_list() self.config_time_frames = TimeFrameManager.get_config_time_frame( self.config) # set exchange manager attributes self.exchange_manager.client_symbols = self.symbols self.exchange_manager.client_time_frames = self.get_available_timeframes( ) self.exchange_manager.time_frames = self.config_time_frames self.time_frame_get_times = {} self.time_frames_offset = {} self.min_time_frame_to_consider = {} self.min_time_frames_offset = None self.DEFAULT_LIMIT = 100 self.MIN_LIMIT = 30 # used to force price movement self.recent_trades_multiplier_factor = 1 self.MIN_ENABLED_TIME_FRAME = TimeFrameManager.find_min_time_frame( self.config_time_frames) self.DEFAULT_TIME_FRAME_RECENT_TRADE_CREATOR = self.MIN_ENABLED_TIME_FRAME self.DEFAULT_TIME_FRAME_TICKERS_CREATOR = self.MIN_ENABLED_TIME_FRAME self.RECENT_TRADES_TO_CREATE = max(SIMULATOR_LAST_PRICES_TO_CHECK, ORDER_CREATION_LAST_TRADES_TO_USE) self.backtesting = Backtesting(self.config, self) self._prepare() self.initializing = False
def __init__(self, config): self.start_time = time.time() self.config = config self.ready = False # Logger self.logger = logging.getLogger(self.__class__.__name__) # Advanced AdvancedManager.create_class_list(self.config) # Debug tools self.performance_analyser = None if CONFIG_DEBUG_OPTION_PERF in self.config and self.config[CONFIG_DEBUG_OPTION_PERF]: self.performance_analyser = PerformanceAnalyser() self.time_frames = TimeFrameManager.get_config_time_frame(self.config) # Add services to self.config[CONFIG_CATEGORY_SERVICES] ServiceCreator.create_services(self.config) # Notifier self.config[CONFIG_NOTIFICATION_INSTANCE] = Notification(self.config) # Notify starting self.config[CONFIG_NOTIFICATION_INSTANCE].notify_with_all(NOTIFICATION_STARTING_MESSAGE) # Backtesting self.backtesting_enabled = None self.symbol_threads_manager = {} self.exchange_traders = {} self.exchange_trader_simulators = {} self.exchanges_list = {} self.symbol_evaluator_list = {} self.crypto_currency_evaluator_list = {} self.dispatchers_list = [] self.symbol_time_frame_updater_threads = []
def _set_config_time_frame(self): for time_frame in TimeFrameManager.get_config_time_frame(self.config): if self.time_frame_exists(time_frame.value): self.time_frames.append(time_frame)