Administrator
6 天以前 ae8d76a456b64c1c6c4ebf11b6ec33b7df217b1a
code_attribute/code_volumn_manager.py
@@ -21,7 +21,7 @@
    __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:
@@ -47,21 +47,21 @@
                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)),
@@ -71,9 +71,9 @@
        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):
@@ -82,7 +82,9 @@
        @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):
        """
@@ -99,8 +101,28 @@
        if k_format and not k_format[13]:
            has_limit_up_in_60 = False
        volume = self.get_max_volume_in_5days(code)
        if volume * limit_up_price >= 3.14e8 and has_limit_up_in_60:
        if volume and volume * limit_up_price >= 9e8 and has_limit_up_in_60:
            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):
@@ -161,7 +183,7 @@
        _volumn = global_util.today_volumn.get(code)
        if _volumn is None:
            _volumn = RedisUtils.get(self.__redis_manager.getRedis(), "volumn_today-{}".format(code))
        return _volumn
        return int(_volumn)
    # 获取今日量
    def get_today_volumn_cache(self, code):