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())
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)