| | |
| | | __instance = None |
| | | __today_volumn_cache = {} |
| | | __reference_volume_as_money_y_dict = {} |
| | | __max_volume_in_5days = {} |
| | | __max_volume_info_in_5days = {} |
| | | |
| | | def __new__(cls, *args, **kwargs): |
| | | if not cls.__instance: |
| | |
| | | for k in keys: |
| | | code = k.split("-")[1] |
| | | global_util.yesterday_volumn[code] = RedisUtils.get(redis, k, auto_free=False) |
| | | keys = RedisUtils.keys(redis, "volumn_max_5days-*", auto_free=False) |
| | | keys = RedisUtils.keys(redis, "volumn_max_5days_info-*", auto_free=False) |
| | | if keys is not None: |
| | | for k in keys: |
| | | code = k.split("-")[1] |
| | | val = RedisUtils.get(redis, k, auto_free=False) |
| | | cls.__max_volume_in_5days[code] = int(val) |
| | | cls.__max_volume_info_in_5days[code] = json.loads(val) |
| | | finally: |
| | | RedisUtils.realse(redis) |
| | | |
| | | # 设置历史量 |
| | | def set_histry_volumn(self, code, max60, yesterday, max60_day, max60_day_count, max5_volume): |
| | | def set_histry_volumn(self, code, max60, yesterday, max60_day, max60_day_count, max5_volume, max5_volume_day): |
| | | redis = self.__redis_manager.getRedis() |
| | | global_util.max60_volumn[code] = (max60, max60_day, max60_day_count) |
| | | global_util.yesterday_volumn[code] = yesterday |
| | | self.__save_max_volume_in_5days(code, max5_volume) |
| | | self.__save_max_volume_in_5days(code, max5_volume, max5_volume_day) |
| | | try: |
| | | RedisUtils.setex_async(self.__db, "volumn_max60-{}".format(code), tool.get_expire(), |
| | | json.dumps((max60, max60_day, max60_day_count)), |
| | |
| | | finally: |
| | | RedisUtils.realse(redis) |
| | | |
| | | def __save_max_volume_in_5days(self, code, volume): |
| | | self.__max_volume_in_5days[code] = volume |
| | | RedisUtils.setex_async(self.__db, "volumn_max_5days-{}".format(code), tool.get_expire(), volume, |
| | | def __save_max_volume_in_5days(self, code, volume, day): |
| | | self.__max_volume_info_in_5days[code] = (volume, day) |
| | | RedisUtils.setex_async(self.__db, "volumn_max_5days_info-{}".format(code), tool.get_expire(), json.dumps((volume, day)), |
| | | auto_free=False) |
| | | |
| | | def get_max_volume_in_5days(self, code): |
| | |
| | | @param code: |
| | | @return: |
| | | """ |
| | | return self.__max_volume_in_5days.get(code) |
| | | if code in self.__max_volume_info_in_5days: |
| | | return self.__max_volume_info_in_5days.get(code)[0] |
| | | return None |
| | | |
| | | def get_radical_buy_refer_volume(self, code, limit_up_price): |
| | | """ |
| | |
| | | return volume |
| | | return int(self.get_reference_volume_as_money_y(code) * 1e8 / limit_up_price) |
| | | |
| | | def get_radical_buy_refer_volume_info(self, code, limit_up_price): |
| | | """ |
| | | TODO 更改正确 |
| | | 获取扫入的参考量: |
| | | 参考额小于3.14亿就取90天参考量 |
| | | 否则就取最近5天的参考量 |
| | | @param code: |
| | | @param limit_up_price: |
| | | @return: |
| | | """ |
| | | # 60个交易日未涨停取 |
| | | k_format = code_nature_analyse.CodeNatureRecordManager().get_k_format_cache(code) |
| | | has_limit_up_in_60 = True |
| | | if k_format and not k_format[13]: |
| | | has_limit_up_in_60 = False |
| | | volume_info = self.__max_volume_info_in_5days.get(code, None) |
| | | if volume_info and volume_info[0] * limit_up_price >= 9e8 and has_limit_up_in_60: |
| | | return volume_info |
| | | return int(self.get_reference_volume_as_money_y(code) * 1e8 / limit_up_price) |
| | | |
| | | def get_volume_rate_refer_in_5days(self, code, total_sell_volume=0): |
| | | """ |
| | | 获取今日量与5日最大量的参考值 |