""" 涨停时间管理器 """ from log_module import log_export, async_log_util from log_module.log import logger_first_limit_up_time from utils import tool, l2_huaxin_util class FirstLimitUpTimeManager: """ 首次涨停时间管理器 """ __instance = None __first_limit_up_price_dict = {} def __new__(cls, *args, **kwargs): if not cls.__instance: cls.__instance = super(FirstLimitUpTimeManager, cls).__new__(cls, *args, **kwargs) cls.__load_data() return cls.__instance def process(self, market_info): """ 处理Market数据 :param market_info: :return: """ # 只处理股票代码 if not tool.is_stock(market_info[0]): return if market_info[0] in self.__first_limit_up_price_dict: return limit_up_price = tool.get_limit_up_price(market_info[0], market_info[8]) if abs(float(limit_up_price) - market_info[1]) < 0.0001: # 涨停价 time_str = l2_huaxin_util.convert_time(market_info[9]) async_log_util.info(logger_first_limit_up_time, f"{(market_info[0], time_str)}") self.__first_limit_up_price_dict[market_info[0]] = time_str def get_first_limit_up_time(self, code): """ 获取首次涨停时间 :param code: :return: """ self.__first_limit_up_price_dict.get(code) @classmethod def __load_data(cls): cls.__first_limit_up_price_dict = log_export.load_first_limit_up_time()