Administrator
2025-08-29 a1ecd205cc8ba08985a1ba88f9dbde3b124e5e0b
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,
@@ -283,6 +292,14 @@
                                                                          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)
# 卖单统计数据
class HuaXinSellOrderStatisticManager:
@@ -312,12 +329,21 @@
    __dealing_order_info_dict = {}
    @classmethod
    def get_dealing_order_info(cls, code):
        """
        获取正在成交的卖单
        @param code:
        @return: [订单号,总股数,成交金额]
        """
        return cls.__dealing_order_info_dict.get(code)
    @classmethod
    def statistic_big_sell_data(cls, code, fdatas):
        """
        统计大卖单(299w以上)
        @param code:
        @param fdatas: [(数据本身, 是否主动买, 是否涨停, 总成交额, 不含ms时间,含ms时间)]
        @return: 返回数据里面成交的大单
        @return: 返回数据里面成交的大单:[(订单号,总股数,成交金额)]
        """
        big_sell_datas = []
        # 正在成交的卖单
@@ -537,11 +563,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 +690,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)