From 58b40f2f7de276662f2e1f967812066127e33d8d Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 20 三月 2025 16:33:08 +0800
Subject: [PATCH] 优化逐笔成交中的卖单统计

---
 l2/l2_transaction_data_manager.py |   45 ++++++++++++++++++++++++++-------------------
 1 files changed, 26 insertions(+), 19 deletions(-)

diff --git a/l2/l2_transaction_data_manager.py b/l2/l2_transaction_data_manager.py
index f8ecf3c..0b7b836 100644
--- a/l2/l2_transaction_data_manager.py
+++ b/l2/l2_transaction_data_manager.py
@@ -314,12 +314,14 @@
     @classmethod
     def statistic_big_sell_data(cls, code, fdatas):
         """
-        缁熻澶у崠鍗�
+        缁熻澶у崠鍗�(299w浠ヤ笂)
         @param code:
         @param fdatas: [(鏁版嵁鏈韩, 鏄惁涓诲姩涔�, 鏄惁娑ㄥ仠, 鎬绘垚浜ら, 涓嶅惈ms鏃堕棿锛屽惈ms鏃堕棿)]
         @return: 杩斿洖鏁版嵁閲岄潰鎴愪氦鐨勫ぇ鍗�
         """
         big_sell_datas = []
+        # 姝e湪鎴愪氦鐨勫崠鍗�
+        dealing_order_info = cls.__dealing_order_info_dict.get(code)
         for data in fdatas:
             if not data[2]:
                 # 鍙绠楁澘涓婃垚浜�
@@ -328,23 +330,28 @@
             # q.append((data['SecurityID'], data['TradePrice'], data['TradeVolume'],
             #                   data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'],
             #                   data['SellNo'], data['ExecType']))
-            if code not in cls.__dealing_order_info_dict:
+            if dealing_order_info is None:
                 # 鏁版嵁鏍煎紡[璁㈠崟鍙凤紝鎬昏偂鏁帮紝鎴愪氦閲戦]
-                cls.__dealing_order_info_dict[code] = [data[0][7], data[0][2], money]
-            if cls.__dealing_order_info_dict[code][0] == data[0][7]:
-                # 鎴愪氦鍚屼竴涓鍗曞彿
-                cls.__dealing_order_info_dict[code][1] += data[0][2]
-                cls.__dealing_order_info_dict[code][2] += money
+                dealing_order_info = [data[0][7], data[0][2], money]
             else:
-                # 淇濆瓨涓婁竴鏉℃暟鎹�
-                l2_log.info(code, hx_logger_l2_transaction_desc, f"{code}#{cls.__dealing_order_info_dict[code]}")
-                # 璁剧疆鏈�杩戞垚浜ゅ畬鎴愮殑涓�鏉℃暟鎹�
-                deal_info = cls.__dealing_order_info_dict[code]
-                # 鏄惁涓哄ぇ涔板崟
-                if deal_info[2] >= 2990000:
-                    big_sell_datas.append(deal_info)
-                # 鍒濆鍖栨湰鏉℃暟鎹�
-                cls.__dealing_order_info_dict[code] = [data[0][7], data[0][2], money]
+                if dealing_order_info[0] == data[0][7]:
+                    # 鎴愪氦鍚屼竴涓鍗曞彿
+                    dealing_order_info[1] += data[0][2]
+                    dealing_order_info[2] += money
+                else:
+                    # 淇濆瓨涓婁竴鏉℃暟鎹�
+                    # 璁剧疆鏈�杩戞垚浜ゅ畬鎴愮殑涓�鏉℃暟鎹�
+                    deal_info = dealing_order_info
+                    # 淇濆瓨涓婁竴鏉℃暟鎹�
+                    if deal_info[2] >= 2990000:
+                        # 鏄惁涓哄ぇ涔板崟
+                        l2_log.info(code, hx_logger_l2_transaction_desc,
+                                    f"{code}#{deal_info}")
+                        big_sell_datas.append(deal_info)
+                    # 鍒濆鍖栨湰鏉℃暟鎹�
+                    dealing_order_info = [data[0][7], data[0][2], money]
+        # 淇濆瓨鏈�鍚庝竴鏉℃暟鎹殑鐘舵��
+        cls.__dealing_order_info_dict[code] = dealing_order_info
         return big_sell_datas
 
     # 缁熻鎵�鏈夌殑鎴愪氦閲�
@@ -462,10 +469,10 @@
         use_time_list.append(("澶勭悊娑ㄥ仠鍗�", use_time))
         for d in fdatas:
             # 鑾峰彇褰撳墠鏄惁涓轰富鍔ㄤ拱
+            if d[1]:
+                # 涓诲姩涔�
+                continue
             try:
-                if d[1]:
-                    # 涓诲姩涔�
-                    continue
                 if d[2]:
                     # 娑ㄥ仠涓诲姩鍗�
                     L2TradeSingleDataProcessor.add_active_limit_up_sell_data(d[0])

--
Gitblit v1.8.0