Administrator
2025-01-22 f2dfe1818b6286e4ff25e97c4d72a17bae4eea42
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
@@ -84,6 +84,16 @@
            return 0
        return int(sum([x[2] for x in self.__total_buy_datas_dict[code]]))
    def get_total_buy_order_ids(self, code):
        """
        获取成交大单的订单号
        @param code:
        @return:
        """
        if code not in self.__total_buy_datas_dict:
            return set()
        return set([x[0] for x in self.__total_buy_datas_dict[code]])
    def get_total_buy_count(self, code):
        """
        获取大单成交的笔数
@@ -112,15 +122,19 @@
        """
        return self.__total_buy_datas_dict.get(code)
    def get_total_sell_money(self, code):
    def get_total_sell_money(self, code, threshold_money=None):
        """
        获取总共的大单卖金额
        @param threshold_money: 大单阈值
        @param code:
        @return:
        """
        if code not in self.__total_sell_datas_dict:
            return 0
        return int(sum([x[2] for x in self.__total_sell_datas_dict[code]]))
        if threshold_money:
            return int(sum([x[2] if x[2] >= threshold_money else 0 for x in self.__total_sell_datas_dict[code]]))
        else:
            return int(sum([x[2] for x in self.__total_sell_datas_dict[code]]))
# 成交数据统计
@@ -200,16 +214,24 @@
            # q.append((data['SecurityID'], data['TradePrice'], data['TradeVolume'],
            #                   data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'],
            #                   data['SellNo'], data['ExecType']))
            is_limit_up = abs(data[1] - limit_up_price) < 0.0001
            money = data[2] * data[1]
            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], money, data[3], data[3], data[1],
                                                       data[7], 0]
                if is_limit_up:
                    cls.__dealing_order_info_dict[code][7] += money
            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][2] += money
                    cls.__dealing_order_info_dict[code][4] = data[3]
                    cls.__dealing_order_info_dict[code][5] = data[1]
                    cls.__dealing_order_info_dict[code][6] = data[7]
                    if is_limit_up:
                        cls.__dealing_order_info_dict[code][7] += money
                else:
                    # 保存上一条数据
                    async_log_util.info(hx_logger_l2_transaction_desc, f"{code}#{cls.__dealing_order_info_dict[code]}")
@@ -217,13 +239,19 @@
                    deal_info = cls.__dealing_order_info_dict[code]
                    cls.__latest_deal_order_info_dict[code] = deal_info
                    # 是否为大买单
                    if deal_info[2] >= threshold_big_money:
                    if deal_info[7] >= threshold_big_money:
                        # # 如果最后一笔成交价格不是涨停价就不算
                        # 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], money, data[3], data[3],
                                                           data[1], data[7], 0]
                    if is_limit_up:
                        cls.__dealing_order_info_dict[code][7] += money
            # 统计主动买(买单号大于卖单号)
            try:
                if data[6] > data[7]: