Administrator
2025-04-06 d095fcfddce52be85db18f17b815c890deeb48ff
l2/l2_transaction_data_manager.py
@@ -150,6 +150,8 @@
    __dealing_active_buy_order_info_dict = {}
    # 最近成交的订单{"code":(订单号,是否成交完成)}
    __latest_deal_order_info_dict = {}
    # 成交的买单号集合:{"代码":set()}
    __deal_buy_order_nos_dict = {}
    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
@@ -164,15 +166,17 @@
    @classmethod
    def __load_datas(cls):
        __redis = cls.__get_redis()
        try:
            keys = RedisUtils.keys(__redis, "dealing_order_info-*")
            for k in keys:
                code = k.split("-")[-1]
                val = RedisUtils.get(__redis, k)
                val = json.loads(val)
                tool.CodeDataCacheUtil.set_cache(cls.__dealing_order_info_dict, code, val)
        finally:
            RedisUtils.realse(__redis)
        keys = RedisUtils.keys(__redis, "dealing_order_info-*")
        for k in keys:
            code = k.split("-")[-1]
            val = RedisUtils.get(__redis, k)
            val = json.loads(val)
            tool.CodeDataCacheUtil.set_cache(cls.__dealing_order_info_dict, code, val)
        # 读取已经成交的大单
        deal_data_list_dict = log_export.load_huaxin_deal_record_all()
        for code in deal_data_list_dict:
            cls.__deal_buy_order_nos_dict[code] = set([x[0] for x in deal_data_list_dict[code]])
    # 将数据持久化到数据库
    def sync_dealing_data_to_db(self):
@@ -213,6 +217,10 @@
        dealing_order_info = cls.__dealing_order_info_dict.get(code)
        if code not in cls.__deal_buy_order_nos_dict:
            cls.__deal_buy_order_nos_dict[code] = set()
        deal_buy_order_nos = cls.__deal_buy_order_nos_dict[code]
        for data in fdatas:
            # q.append((data['SecurityID'], data['TradePrice'], data['TradeVolume'],
            #                   data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'],
@@ -252,6 +260,7 @@
                        # if abs(deal_info[5] - limit_up_price) < 0.0001:
                        big_buy_datas.append(deal_info)
                    if deal_info[2] >= 500000:
                        deal_buy_order_nos.add(deal_info[0])
                        normal_buy_datas.append(deal_info)
                    # 初始化本条数据
                    dealing_order_info = [current_order_info[6], current_order_info[2], money,
@@ -282,6 +291,14 @@
                                                                          current_order_info[3],
                                                                          current_order_info[3]]
        return big_buy_datas, normal_buy_datas
    def get_deal_buy_order_nos(self, code):
        """
        获取成交大单集合
        @param code:
        @return:
        """
        return self.__deal_buy_order_nos_dict.get(code)
# 卖单统计数据
@@ -537,11 +554,11 @@
            cls.__latest_sell_order_dict[code] = latest_sell_order
        if big_sell_order_ids:
            cls.__big_sell_order_ids_dict[code] = big_sell_order_ids
        if  big_sell_order_info:
        if big_sell_order_info:
            cls.__big_sell_order_info_dict[code] = big_sell_order_info
        if  big_sell_order_info_list:
        if big_sell_order_info_list:
            cls.__big_sell_order_info_list_dict[code] = big_sell_order_info_list
        if  latest_all_sell_orders:
        if latest_all_sell_orders:
            cls.__latest_all_sell_orders_dict[code] = latest_all_sell_orders
        use_time = time.time() - __start_time
@@ -664,3 +681,9 @@
    @classmethod
    def get_latest_trade_price_info(cls, code):
        return cls.__latest_trade_price_dict.get(code)
if __name__ == "__main__":
    code = "603300"
    order_nos = HuaXinBuyOrderManager().get_deal_buy_order_nos(code)
    print(order_nos)