def get_shortest_time_frame(ideal_time_frame, preferred_available_time_frames, others): if ideal_time_frame in preferred_available_time_frames: return ideal_time_frame if preferred_available_time_frames: return time_frame_manager.sort_time_frames(preferred_available_time_frames)[0] else: return time_frame_manager.sort_time_frames(others)[0]
def _set_config_time_frame(self): for time_frame in time_frame_manager.get_config_time_frame( self.config): if self.exchange_manager.time_frame_exists(time_frame.value): self.available_required_time_frames.append(time_frame) if not self.exchange_manager.is_backtesting or not self.available_required_time_frames: # add shortest time frame for realtime evaluators or if no time frame at all has # been registered in backtesting client_shortest_time_frame = time_frame_manager.find_min_time_frame( self.exchange_manager.client_time_frames, constants.MIN_EVAL_TIME_FRAME) self.real_time_time_frames.append(client_shortest_time_frame) self.available_required_time_frames = time_frame_manager.sort_time_frames( self.available_required_time_frames, reverse=True) self.traded_time_frames = list(set().union( self.available_required_time_frames, self.real_time_time_frames)) self.traded_time_frames = time_frame_manager.sort_time_frames( self.traded_time_frames, reverse=True)
def init_time_frames_from_strategies(config, tentacles_setup_config) -> None: time_frame_list = set() for strategies_eval_class in get_activated_strategies_classes( tentacles_setup_config): for time_frame in strategies_eval_class.get_required_time_frames( config, tentacles_setup_config): time_frame_list.add(time_frame) time_frame_list = time_frame_manager.sort_time_frames( list(time_frame_list)) config[common_constants.CONFIG_TIME_FRAME] = time_frame_list
def init_time_frames_from_strategies(config): time_frame_list = set() for strategies_eval_class in create_advanced_types_list( StrategyEvaluator, config): if strategies_eval_class.is_enabled(config, False): for time_frame in strategies_eval_class.get_required_time_frames( config): time_frame_list.add(time_frame) time_frame_list = sort_time_frames(time_frame_list) config[CONFIG_TIME_FRAME] = time_frame_list
def _set_config_time_frame(self): for time_frame in get_config_time_frame(self.config): if self.exchange_manager.time_frame_exists(time_frame.value): self.traded_time_frames.append(time_frame) # add shortest timeframe for realtime evaluators client_shortest_time_frame = find_min_time_frame( self.exchange_manager.client_time_frames[CONFIG_WILDCARD], MIN_EVAL_TIME_FRAME) if client_shortest_time_frame not in self.traded_time_frames: self.traded_time_frames.append(client_shortest_time_frame) self.traded_time_frames = sort_time_frames(self.traded_time_frames, reverse=True)
def _set_config_time_frame(self): for time_frame in get_config_time_frame(self.config): if self.exchange_manager.time_frame_exists(time_frame.value): self.traded_time_frames.append(time_frame) if not self.exchange_manager.is_backtesting: # add shortest timeframe for realtime evaluators client_shortest_time_frame = find_min_time_frame( self.exchange_manager.client_time_frames, MIN_EVAL_TIME_FRAME) self.real_time_time_frames.append(client_shortest_time_frame) self.traded_time_frames = list(set().union(self.traded_time_frames, self.real_time_time_frames)) self.traded_time_frames = sort_time_frames(self.traded_time_frames, reverse=True)
def get_time_frames(self, importer): return time_frame_manager.sort_time_frames(list(set(backtesting_api.get_available_time_frames(importer)) & set(self.exchange_manager.exchange_config.traded_time_frames)), reverse=True)
def data_collector(): if flask.request.method == 'POST': action_type = flask.request.args["action_type"] success = False reply = "Action failed" if action_type == "delete_data_file": file = flask.request.get_json() success, reply = models.get_delete_data_file(file) elif action_type == "start_collector": details = flask.request.get_json() success, reply = models.collect_data_file( details["exchange"], details["symbols"], details["time_frames"], details["startTimestamp"], details["endTimestamp"]) if success: web_interface.send_data_collector_status() elif action_type == "stop_collector": success, reply = models.stop_data_collector() elif action_type == "import_data_file": if flask.request.files: file = flask.request.files['file'] name = werkzeug.utils.secure_filename( flask.request.files['file'].filename) success, reply = models.save_data_file(name, file) alert = {"success": success, "message": reply} else: alert = {} current_exchange = models.get_current_exchange() # here return template to force page reload because of file upload via input form return flask.render_template( 'data_collector.html', data_files=models.get_data_files_with_description(), other_ccxt_exchanges=sorted( models.get_other_history_exchange_list()), full_candle_history_ccxt_exchanges=models. full_candle_history_ccxt_exchanges(), current_exchange=models.get_current_exchange(), full_symbol_list=sorted( models.get_symbol_list([current_exchange])), available_timeframes_list=[ timeframe.value for timeframe in time_frame_manager.sort_time_frames( models.get_timeframes_list([current_exchange])) ], alert=alert) if success: return util.get_rest_reply(flask.jsonify(reply)) else: return util.get_rest_reply(reply, 500) elif flask.request.method == 'GET': origin_page = None if flask.request.args: action_type_key = "action_type" if action_type_key in flask.request.args: target = flask.request.args[action_type_key] if target == "symbol_list": exchange = flask.request.args.get('exchange') return flask.jsonify( sorted(models.get_symbol_list([exchange]))) elif target == "available_timeframes_list": exchange = flask.request.args.get('exchange') return flask.jsonify([ timeframe.value for timeframe in time_frame_manager.sort_time_frames( models.get_timeframes_list([exchange])) ]) from_key = "from" if from_key in flask.request.args: origin_page = flask.request.args[from_key] current_exchange = models.get_current_exchange() return flask.render_template( 'data_collector.html', data_files=models.get_data_files_with_description(), other_ccxt_exchanges=sorted( models.get_other_history_exchange_list()), full_candle_history_ccxt_exchanges=models. get_full_candle_history_exchange_list(), current_exchange=models.get_current_exchange(), full_symbol_list=sorted(models.get_symbol_list([current_exchange ])), available_timeframes_list=[ timeframe.value for timeframe in time_frame_manager.sort_time_frames( models.get_timeframes_list([current_exchange])) ], origin_page=origin_page, alert={})