Esempio n. 1
0
    def read_data_and_calc_indicators(self, code, start, end):
        if self.freq.is_minutes():
            data = SECURITY_DATA_READ_SERVICE.read_security_data_for_single(
                code, start, end, freq=self.freq, typ=SeType.Stock)
        else:
            data = SECURITY_DATA_READ_SERVICE.read_qfq_security_data_for_single(
                code, start, end)
        if data is None or data.shape[0] < 10:
            return

        data = self.indicator_func(data)
        if data is None or len(data) < 1:
            return None
        else:
            return self.pre_save(data)
    def update_for_single_code(self, code, start, end):
        data = SECURITY_DATA_READ_SERVICE.read_qfq_security_data_for_single(code, start, end)
        if data is not None and len(data) > 1:
            data = dummy_appender.append_dummy_rows(data, 1)
            data = self.indicator_func(data)
            if data is None or data.shape[0] < 1:
                pass
            else:
                df_without_dummy = dummy_appender.exclude_dummy_rows(data)
                DB_CLIENT.update_data_append_newer(df_without_dummy, self.repo_name_for_backtest())

                df_with_dummy_for_trade = data.tail(self.dummy_rows)
                min_start_date = date_time_utils.Date.from_str(end). \
                    get_before(days=MasterIndicatorDB.MAX_CALENDAR_DAYS_TO_KEEP)
                df_with_dummy_for_trade = df_with_dummy_for_trade.reset_index(level=0)
                df_with_dummy_for_trade = df_with_dummy_for_trade.loc[df_with_dummy_for_trade.date > min_start_date.as_str()]
                DB_CLIENT.replace_data_by_codes(df_with_dummy_for_trade, self.repo_name_for_trade())
Esempio n. 3
0
    def update_for_single_code(self, code, start, end):
        data = SECURITY_DATA_READ_SERVICE.read_qfq_security_data_for_single(
            code, start, end)
        if data is None or data.shape[0] < 10:
            return

        master_data = self.master_service.read_master([code], start, end)
        if master_data is None or len(master_data) < 1:
            return
        data = self.compute_indicator(data)
        if data is None or len(data) < 1:
            return
        master_key = self.master_service.get_key()
        data[master_key] = master_data[master_key]
        data = data.loc[data[master_key] == True]
        data.drop(columns=[master_key], inplace=True)
        if data is not None and data.shape[0] > 0:
            self.save(data)