Administrator
2025-03-11 46f51dfb83f6e6a2784676bde64577e5f6f28cf0
l2/l2_transaction_data_manager.py
@@ -2,6 +2,7 @@
L2成交数据处理器
"""
import json
import time
import l2_data_util
from db import redis_manager_delegate as redis_manager
@@ -13,7 +14,7 @@
from log_module import async_log_util, log_export
from log_module.log import hx_logger_l2_transaction_desc, hx_logger_l2_transaction_sell_order, hx_logger_l2_active_sell, \
    hx_logger_l2_transaction_big_buy_order, hx_logger_l2_transaction_big_sell_order
    hx_logger_l2_transaction_big_buy_order, hx_logger_l2_transaction_big_sell_order, hx_logger_l2_upload
from utils import tool
@@ -465,7 +466,8 @@
        # 是否为主动卖
        def is_active_sell(sell_no, buy_no):
            return sell_no > buy_no
        f_start_time = time.time()
        use_time_list = []
        # q.append((data['SecurityID'], data['TradePrice'], data['TradeVolume'],
        #           data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'],
        #           data['SellNo'], data['ExecType']))
@@ -482,16 +484,20 @@
        if code not in cls.__latest_all_sell_orders_dict:
            cls.__latest_all_sell_orders_dict[code] = []
        sell_no_map = local_today_sellno_map.get(code)
        total_datas = local_today_datas.get(code)
        if not sell_no_map:
            sell_no_map = {}
        # 保存最近的成交价格:(价格,成交时间)
        cls.__latest_trade_price_dict[code] = (datas[-1][1], datas[-1][3])
        __start_time = time.time()
        # 是否还有涨停卖剩下
        no_left_limit_up_sell = L2TradeSingleDataProcessor.process_passive_limit_up_sell_data(code, datas, limit_up_price)
        use_time = time.time() - __start_time
        __start_time = time.time()
        use_time_list.append(("处理涨停卖", use_time))
        async_log_util.info(hx_logger_l2_upload,
                            f"{code}处理涨停卖:{use_time} 数据数量:{len(datas)}  详情:{use_time_list}")
        for d in datas:
            # 获取当前是否为主动买
@@ -544,6 +550,10 @@
            finally:
                cls.__last_trade_data_dict[code] = d
        use_time = time.time() - __start_time
        __start_time = time.time()
        use_time_list.append(("大单统计", use_time))
        latest_time = l2_huaxin_util.convert_time(datas[-1][3], with_ms=True)
        min_time = tool.trade_time_add_millionsecond(latest_time, -1000)
        min_time_int = int(min_time.replace(":", "").replace(".", ""))
@@ -592,6 +602,11 @@
                    total_sell_info[0] += int(latest_sell_order_info[1] * latest_sell_order_info[2])
            big_sell_orders.reverse()
            total_sell_info[1] = big_sell_orders
        use_time = time.time() - __start_time
        __start_time = time.time()
        use_time_list.append(("最近大单统计", use_time))
        # ----------------统计涨停主动买-----------------
        try:
            limit_up_active_buy_datas = []
@@ -604,9 +619,17 @@
                    # 有涨停主动买
                    limit_up_active_buy_datas.append(d)
            L2TradeSingleDataManager.set_limit_up_active_buy(code, limit_up_active_buy_datas, no_left_limit_up_sell)
            use_time = time.time() - __start_time
            __start_time = time.time()
            use_time_list.append(("涨停主动买成交", use_time))
        except:
            pass
        use_time = time.time() - f_start_time
        if use_time > 0.01:
            async_log_util.info(hx_logger_l2_upload,
                                f"{code}处理成交详细用时:{use_time} 数据数量:{len(datas)}  详情:{use_time_list}")
        return total_sell_info
    # 获取最近成交数据