Administrator
2024-11-12 f35eaf95bd774de6e6a5a79a5dcbd3cccb2748aa
l2/l2_transaction_data_manager.py
@@ -4,7 +4,7 @@
import json
import l2_data_util
from db import redis_manager
from db import redis_manager_delegate as redis_manager
from db.redis_manager_delegate import RedisUtils
from l2 import l2_log
from l2.huaxin import l2_huaxin_util
@@ -202,14 +202,15 @@
            #                   data['SellNo'], data['ExecType']))
            if code not in cls.__dealing_order_info_dict:
                # 数据格式[订单号,总股数,成交金额,成交开始时间,成交结束时间]
                cls.__dealing_order_info_dict[code] = [data[6], data[2], data[2] * data[1], data[3], data[3]]
                # 数据格式[订单号,总股数,成交金额,成交开始时间,成交结束时间, 最近的成交价格]
                cls.__dealing_order_info_dict[code] = [data[6], data[2], data[2] * data[1], data[3], data[3], data[1]]
            else:
                if cls.__dealing_order_info_dict[code][0] == data[6]:
                    # 成交同一个订单号
                    cls.__dealing_order_info_dict[code][1] += data[2]
                    cls.__dealing_order_info_dict[code][2] += data[2] * data[1]
                    cls.__dealing_order_info_dict[code][4] = data[3]
                    cls.__dealing_order_info_dict[code][5] = data[1]
                else:
                    # 保存上一条数据
                    async_log_util.info(hx_logger_l2_transaction_desc, f"{code}#{cls.__dealing_order_info_dict[code]}")
@@ -218,12 +219,15 @@
                    cls.__latest_deal_order_info_dict[code] = deal_info
                    # 是否为大买单
                    if deal_info[2] >= threshold_big_money:
                        big_buy_datas.append(deal_info)
                        # 如果最后一笔成交价格不是涨停价就不算
                        if abs(deal_info[5] - limit_up_price) < 0.0001:
                            big_buy_datas.append(deal_info)
                    if deal_info[2] >= 500000:
                        normal_buy_datas.append(deal_info)
                    # 初始化本条数据
                    cls.__dealing_order_info_dict[code] = [data[6], data[2], data[2] * data[1], data[3], data[3]]
                    cls.__dealing_order_info_dict[code] = [data[6], data[2], data[2] * data[1], data[3], data[3],
                                                           data[1]]
            # 统计主动买(买单号大于卖单号)
            try:
                if data[6] > data[7]:
@@ -308,11 +312,11 @@
    # 统计所有的成交量
    __deal_volume_list_dict = {}
    # 统计主动买的成交量
    # 统计涨停主动买的成交量
    __deal_active_buy_volume_list_dict = {}
    @classmethod
    def statistic_total_deal_volume(cls, code, datas):
    def statistic_total_deal_volume(cls, code, datas, limit_up_price):
        # 只统计被动买
        if code not in cls.__deal_volume_list_dict:
            cls.__deal_volume_list_dict[code] = []
@@ -348,6 +352,9 @@
            for d in datas:
                # 只统计主动买
                if d[7] > d[6]:
                    continue
                # 只统计涨停买
                if d[1] != limit_up_price:
                    continue
                if d[3] in time_dict:
                    time_str = time_dict[d[3]]
@@ -562,6 +569,7 @@
            total_sell_info[1] = big_sell_orders
        # ----------------统计涨停主动买-----------------
        try:
            limit_up_active_buy_datas = []
            for d in datas:
                if is_active_sell(d[7], d[6]):
                    # 被动买
@@ -569,8 +577,8 @@
                # 是否是涨停
                if d[1] == limit_up_price:
                    # 有涨停主动买
                    L2TradeSingleDataManager.set_limit_up_active_buy(code, datas[-1][3], datas[-1][6])
                    break
                    limit_up_active_buy_datas.append(d)
            L2TradeSingleDataManager.set_limit_up_active_buy(code, limit_up_active_buy_datas)
        except:
            pass