From b51b2ae184fad5aaf37a78903987e064f192d430 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 26 五月 2025 11:35:20 +0800
Subject: [PATCH] 大单解析修改

---
 l2/l2_transaction_data_processor.py |   41 +++++++++++++++++++++--------------------
 1 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/l2/l2_transaction_data_processor.py b/l2/l2_transaction_data_processor.py
index 4a9ce1b..aac5019 100644
--- a/l2/l2_transaction_data_processor.py
+++ b/l2/l2_transaction_data_processor.py
@@ -33,6 +33,8 @@
 class HuaXinTransactionDatasProcessor:
     __statistic_thread_pool = concurrent.futures.ThreadPoolExecutor(max_workers=constant.HUAXIN_L2_MAX_CODES_COUNT + 2)
     __TradeBuyQueue = transaction_progress.TradeBuyQueue()
+    # 闈炴定鍋滄垚浜ゆ椂闂�
+    __not_limit_up_time_dict = {}
 
     # 璁$畻鎴愪氦杩涘害
     @classmethod
@@ -116,7 +118,7 @@
 
         limit_up_price = gpcode_manager.get_limit_up_price_as_num(code)
 
-        if len(fdatas) > 100:
+        if False and len(fdatas) > 100:
             # 骞惰澶勭悊涔板崟涓庡崠鍗�
             # 瓒呰繃100鏉℃暟鎹墠闇�瑕佸苟琛屽鐞�
             f1 = dask.delayed(statistic_big_buy_data)()
@@ -155,11 +157,19 @@
         try:
             current_price_process_manager.set_trade_price(code, fdatas[-1][0][1])
             if not fdatas[-1][2]:
-                # 娌℃湁娑ㄥ仠
-                EveryLimitupBigDealOrderManager.open_limit_up(code, f"鏈�鏂版垚浜や环锛歿fdatas[-1][0][1]}")
-                radical_buy_strategy.clear_data(code, msg=f"娌℃湁娑ㄥ仠锛歿fdatas[-1][0]}")
-        except:
-            pass
+                if code not in cls.__not_limit_up_time_dict:
+                    cls.__not_limit_up_time_dict[code] = fdatas[-1][5]
+                last_time = cls.__not_limit_up_time_dict[code]
+                # 鐐告澘鏃堕棿鎸佺画500ms浠ヤ笂绠楃偢鏉�
+                if tool.trade_time_sub_with_ms(fdatas[-1][5], last_time) > 500:
+                    # 娌℃湁娑ㄥ仠
+                    EveryLimitupBigDealOrderManager.open_limit_up(code, f"鏈�鏂版垚浜や环锛歿fdatas[-1][0][1]}")
+                    radical_buy_strategy.clear_data(code, msg=f"娌℃湁娑ㄥ仠锛歿fdatas[-1][0]}")
+            else:
+                if code in cls.__not_limit_up_time_dict:
+                    cls.__not_limit_up_time_dict.pop(code)
+        except Exception as e:
+            async_log_util.error(logger_debug, f"L2鎴愪氦寮�鏉胯绠楅敊璇細{str(e)}")
 
         total_datas = l2_data_util.local_today_datas.get(code)
         use_time_list = []
@@ -187,21 +197,12 @@
             _start_time = time.time()
 
             try:
+                last_data = fdatas[-1]
                 # 缁熻涓婃澘鏃堕棿
-                try:
-                    for d in fdatas:
-                        if d[1]:
-                            # 涓诲姩涔�
-                            if d[2]:
-                                # 娑ㄥ仠
-                                current_price_process_manager.set_latest_not_limit_up_time(code, d[5])
-                        else:
-                            # 涓诲姩鍗栵紙鏉夸笂锛�
-                            if d[2]:
-                                L2LimitUpSellDataManager.clear_data(code)
-                                break
-                except:
-                    pass
+                if last_data[1] and last_data[2]:
+                    current_price_process_manager.set_latest_not_limit_up_time(code, last_data[5])
+                if not last_data[1] and last_data[2]:
+                    L2LimitUpSellDataManager.clear_data(code)
                 big_sell_order_info = None
                 # 缁熻鍗栧崟
                 big_sell_order_info = HuaXinSellOrderStatisticManager.statistic_continue_limit_up_sell_transaction_datas(

--
Gitblit v1.8.0