def init_tdx_index_info(self, cdate=None, num=1): def _set_index_info(cdate, code_id): try: if code_id in self.index_objs: _obj = self.index_objs[code_id] else: _obj = CIndex(code_id) if code_id in list( ct.TDX_INDEX_DICT.keys()) else TdxFgIndex(code_id) return (code_id, _obj.set_k_data(cdate)) except Exception as e: self.logger.error(e) return (code_id, False) #index_code_list = self.get_concerned_index_codes() index_code_list = list(ct.TDX_INDEX_DICT.keys()) if cdate is None: cfunc = partial(_set_index_info, cdate) return concurrent_run(cfunc, index_code_list, num=5) else: succeed = True start_date = get_day_nday_ago(cdate, num=num, dformat="%Y-%m-%d") for mdate in get_dates_array(start_date, cdate, asending=True): if self.cal_client.is_trading_day(mdate): cfunc = partial(_set_index_info, mdate) if not concurrent_run(cfunc, index_code_list, num=5): succeed = False return succeed
def collect_combination_runtime_data(self): def _combination_run(code_id): self.combination_objs[code_id].run() return (code_id, True) todo_iplist = list(self.combination_objs.keys()) return concurrent_run(_combination_run, todo_iplist, num=10)
def update(self): if self.init(): df = self.get(redis=self.redis) return concurrent_run(self.create_stock_obj, df.code.tolist(), num=10) return False
def set_chip_distribution(self, df, zdate=None): if zdate is None: time2Market = self.get('timeToMarket') start_year = int(time2Market / 10000) end_year = int(datetime.now().strftime('%Y')) year_list = get_years_between(start_year, end_year) cfunc = partial(self.set_chip_table, df) return concurrent_run(cfunc, year_list, num=20) else: chip_table = self.get_chip_distribution_table(zdate) if not self.is_table_exists(chip_table): if not self.create_chip_table(chip_table): logger.error("create chip table:%s failed" % chip_table) return False if self.is_date_exists(chip_table, zdate): logger.debug("existed chip for code:%s, date:%s" % (self.code, zdate)) return True if is_df_has_unexpected_data(df): logger.error("data for %s is not clear" % self.code) return False if self.mysql_client.set(df, chip_table): if self.redis.sadd(chip_table, zdate): logger.debug("finish record chip:%s. table:%s" % (self.code, chip_table)) return True return False
def init_industry_info(self, cdate, num=1): def _set_industry_info(cdate, code_id): return (code_id, CIndex(code_id).set_k_data(cdate)) df = self.industry_info_client.get() if cdate is None: cfunc = partial(_set_industry_info, cdate) return concurrent_run(cfunc, df.code.tolist(), num=5) else: succeed = True start_date = get_day_nday_ago(cdate, num=num, dformat="%Y-%m-%d") for mdate in get_dates_array(start_date, cdate, asending=True): if self.cal_client.is_trading_day(mdate): cfunc = partial(_set_industry_info, mdate) if not concurrent_run(cfunc, df.code.tolist(), num=5): succeed = False return succeed
def init_index_components_info(self, cdate=None): if cdate is None: cdate = datetime.now().strftime('%Y-%m-%d') def _set_index_info(code_id): _obj = self.index_objs[ code_id] if code_id in self.index_objs else CIndex(code_id) return (code_id, _obj.set_components_data(cdate)) return concurrent_run(_set_index_info, list(ct.INDEX_DICT.keys()), num=10)
def init_index_components_info(self, cdate=None): if cdate is None: cdate = datetime.now().strftime('%Y-%m-%d') def _set_index_info(code_id): if code_id in self.index_objs: _obj = self.index_objs[code_id] else: _obj = CIndex(code_id) if code_id in list( ct.INDEX_DICT.keys()) else TdxFgIndex(code_id) return (code_id, _obj.set_components_data(cdate)) index_codes = self.get_concerned_index_codes() return concurrent_run(_set_index_info, index_codes, num=10)
def set_bull_stock_ratio(self, cdate, num=10): def _set_bull_stock_ratio(code_id): return (code_id, BullStockRatio(code_id).update(cdate, num)) index_codes = self.get_concerned_index_codes() return concurrent_run(_set_bull_stock_ratio, index_codes)
def update(self): return concurrent_run(self.create_obj, list(ct.TDX_INDEX_DICT.keys()), num=10)