Administrator
2024-07-12 936ac7f6a724cfd166f8fa6eee483a7e2a20d98f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
"""
涨停时间管理器
"""
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()