From 306f896df9ad1a51dd30b291284a22c12e16597f Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 11 六月 2024 23:32:01 +0800
Subject: [PATCH] 更改板上放量不足规则/L前囊括规则修改

---
 l2/l2_data_manager_new.py                |   21 ++++++++-------------
 cancel_strategy/s_l_h_cancel_strategy.py |    9 +++++++--
 l2/l2_transaction_data_manager.py        |   17 +++++++++++++++++
 3 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/cancel_strategy/s_l_h_cancel_strategy.py b/cancel_strategy/s_l_h_cancel_strategy.py
index 9cbae71..95436d6 100644
--- a/cancel_strategy/s_l_h_cancel_strategy.py
+++ b/cancel_strategy/s_l_h_cancel_strategy.py
@@ -1014,11 +1014,16 @@
                     break
 
         changed = True
-        if code in self.__last_l_up_compute_info:
-            if self.__last_l_up_compute_info[code] == watch_indexes:
+        __last_l_up_compute_info = self.__last_l_up_compute_info.get(code)
+        if __last_l_up_compute_info:
+            if __last_l_up_compute_info == watch_indexes:
                 changed = False
         # 淇濆瓨鏁版嵁
         if changed:
+            threshold_time = 1 if tool.is_sz_code(code) else 2
+            if  time.time() - __last_l_up_compute_info[0] < threshold_time:
+                l2_log.l_cancel_debug(code, f"L鍓嶇洃鎺ф洿鏂板お棰戠箒锛歿threshold_time}")
+                return
             l2_log.l_cancel_debug(code, f"L鍓嶇洃鎺ц寖鍥达細{watch_indexes} 璁$畻鑼冨洿锛歿start_index}-{end_index}")
             self.__set_near_by_trade_progress_indexes(code, buy_single_index, watch_indexes)
         self.__last_l_up_compute_info[code] = (time.time(), watch_indexes)
diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py
index ab046be..2327782 100644
--- a/l2/l2_data_manager_new.py
+++ b/l2/l2_data_manager_new.py
@@ -1022,19 +1022,14 @@
                 not_limit_up_info = current_price_process_manager.get_trade_not_limit_up_info(code)
                 if not not_limit_up_info or tool.trade_time_sub(total_data[-1]['val']['time'],
                                                                 not_limit_up_info[1]) > 10:
-                    # 闈炴定鍋滀环鎴愪氦10s鍚庢墠鏈夊彲鑳藉垽鏂负鏉夸笂鏀鹃噺
-                    sell_data = cls.__L2MarketSellManager.get_current_total_sell_data(code)
-                    if sell_data and sell_data[1] <= 0:
-                        # 鏉夸笂鏀鹃噺锛屽垽鏂槸鍚︽湁鏀鹃噺锛屾斁閲忔墠浼氫笅鍗�
-                        # 鑾峰彇鏈�杩�1s鐨勪富鍔ㄥ崠閲戦
-                        min_time = total_data[order_begin_pos.buy_single_index]['val']['time']
-                        min_time = tool.trade_time_add_second(min_time, -1)
-                        sell_orders = HuaXinSellOrderStatisticManager.get_latest_transaction_datas(code,
-                                                                                                   min_deal_time=min_time)
-                        sell_order_num = sum([x[1] for x in sell_orders])
-                        sell_money = int(float(limit_up_price) * sell_order_num)
-                        if sell_money < 200000:
-                            return False, True, f"鏉夸笂鏀鹃噺閲戦涓嶈冻锛岃繎1s鎬诲崠锛歿sell_money}灏忎簬20w"
+                    # 鑾峰彇鏈�杩�2s鐨勬垚浜�
+                    deal_list = HuaXinSellOrderStatisticManager.get_latest_2s_continue_deal_volumes(code)
+                    total_deal_volume = 0
+                    if deal_list:
+                        total_deal_volume = sum([x[1] for x in deal_list])
+                    total_deal_money = int(total_deal_volume * float(limit_up_price))
+                    if total_deal_money < 200000:
+                        return False, True, f"鏉夸笂鏀鹃噺鎴愪氦閲戦涓嶈冻锛岃繎2s鎬绘垚浜ら噾棰濓細{total_deal_money}灏忎簬20w"
             # 鍒ゆ柇鎴愪氦杩涘害鏄惁璺濈鎴戜滑鐨勪綅缃緢杩�
             trade_index, is_default = cls.__TradeBuyQueue.get_traded_index(code)
             if False and not is_default and trade_index:
diff --git a/l2/l2_transaction_data_manager.py b/l2/l2_transaction_data_manager.py
index 2cb04ca..2f4d1d1 100644
--- a/l2/l2_transaction_data_manager.py
+++ b/l2/l2_transaction_data_manager.py
@@ -316,6 +316,23 @@
         return fdatas
 
     @classmethod
+    def get_latest_2s_continue_deal_volumes(cls, code):
+        """
+        鑾峰彇鏈�杩�2s鐨勬垚浜ら噺鍒嗗竷
+        @param code:
+        @return: [(鏃堕棿,閲�)]
+        """
+        deal_list = cls.__deal_volume_list_dict.get(code)
+        if not deal_list:
+            return 0, None
+        fdatas = [deal_list[-1]]
+        # 浠庡�掓暟绗簩涓暟鎹绠�
+        for i in range(len(deal_list) - 1, -1, -1):
+            if tool.trade_time_sub(fdatas[0][0], deal_list[i][0]) < 2:
+                fdatas.append(deal_list[i])
+        return fdatas
+
+    @classmethod
     def clear_latest_deal_volume(cls, code):
         if code in cls.__deal_volume_list_dict:
             cls.__deal_volume_list_dict.pop(code)

--
Gitblit v1.8.0