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)
Пример #3
0
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
Пример #4
0
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)
Пример #6
0
 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)
Пример #7
0
 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)
Пример #8
0
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={})