From a846b46f15ad309a62fe400cf78dd7fc888155d7 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 26 五月 2025 16:39:19 +0800
Subject: [PATCH] 完善大单够了加白机制

---
 l2/l2_data_manager_new.py |   73 +++++++++++++++++++++---------------
 1 files changed, 42 insertions(+), 31 deletions(-)

diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py
index 5d2488e..c1b0e7f 100644
--- a/l2/l2_data_manager_new.py
+++ b/l2/l2_data_manager_new.py
@@ -1522,32 +1522,35 @@
         _start_time = tool.get_now_timestamp()
         total_datas = local_today_datas[code]
 
-        if not HumanRadicalBuySingleManager.has_single(code):
-            # ---------璁$畻婵�杩涗拱鍏ョ殑淇″彿---------
-            radical_result = cls.__compute_radical_order_begin_pos(code, compute_start_index, compute_end_index)
-        else:
-            human_radical_result = cls.__compute_human_radical_order_begin_pos(code, compute_start_index,
-                                                                               compute_end_index)
-            l2_log.debug(code, f"澶у崟瓒冲锛屼汉涓轰笅鍗曡绠楃粨鏋�({compute_start_index}-{compute_end_index}):{human_radical_result}")
-            if human_radical_result[0]:
-                radical_result = list(human_radical_result[2])
-                # 鏀瑰彉鎵ц浣嶇疆
-                radical_result[1] = human_radical_result[1]["index"]
-            else:
-                radical_result = None
+        # 涓嶉渶瑕佹牴鎹汉涓轰笅鍗曟潵涓嬪崟
+        # if not HumanRadicalBuySingleManager.has_single(code):
+        #     # ---------璁$畻婵�杩涗拱鍏ョ殑淇″彿---------
+        #     radical_result = cls.__compute_radical_order_begin_pos(code, compute_start_index, compute_end_index)
+        # else:
+        #     human_radical_result = cls.__compute_human_radical_order_begin_pos(code, compute_start_index,
+        #                                                                        compute_end_index)
+        #     l2_log.debug(code, f"澶у崟瓒冲锛屼汉涓轰笅鍗曡绠楃粨鏋�({compute_start_index}-{compute_end_index}):{human_radical_result}")
+        #     if human_radical_result[0]:
+        #         radical_result = list(human_radical_result[2])
+        #         # 鏀瑰彉鎵ц浣嶇疆
+        #         radical_result[1] = human_radical_result[1]["index"]
+        #     else:
+        #         radical_result = None
+
+        radical_result = cls.__compute_radical_order_begin_pos(code, compute_start_index, compute_end_index)
         if radical_result and radical_result[0]:
 
-            if not HumanRadicalBuySingleManager.has_single(code):
-                big_order_deal_enough_result = radical_buy_data_manager.is_big_order_deal_enough(code,
-                                                                                                 code_volumn_manager.CodeVolumeManager().get_volume_rate_refer_in_5days(
-                                                                                                     code), 0)
-                if big_order_deal_enough_result[6] <= 0:
-                    HumanRadicalBuySingleManager.add_single(code, total_datas[-1], radical_result)
-                    async_log_util.info(logger_l2_not_buy_reasons, f"{code}#澶у崟瓒冲锛岄渶瑕佹牴鎹汉涓轰笅鍗�({compute_start_index}-{compute_end_index})锛歿radical_result[1]}")
-                    return
-            # 涓嬪崟鍓嶄竴姝ワ紝绉婚櫎浜轰负涓嬪崟淇″彿
-            is_human_radical_buy = HumanRadicalBuySingleManager.has_single(code)
-            HumanRadicalBuySingleManager.remove_single(code)
+            # if not HumanRadicalBuySingleManager.has_single(code):
+            #     big_order_deal_enough_result = radical_buy_data_manager.is_big_order_deal_enough(code,
+            #                                                                                      code_volumn_manager.CodeVolumeManager().get_volume_rate_refer_in_5days(
+            #                                                                                          code), 0)
+            #     if big_order_deal_enough_result[6] <= 0:
+            #         HumanRadicalBuySingleManager.add_single(code, total_datas[-1], radical_result)
+            #         async_log_util.info(logger_l2_not_buy_reasons, f"{code}#澶у崟瓒冲锛岄渶瑕佹牴鎹汉涓轰笅鍗�({compute_start_index}-{compute_end_index})锛歿radical_result[1]}")
+            #         return
+            # #涓嬪崟鍓嶄竴姝ワ紝绉婚櫎浜轰负涓嬪崟淇″彿
+            # is_human_radical_buy = HumanRadicalBuySingleManager.has_single(code)
+            # HumanRadicalBuySingleManager.remove_single(code)
 
             buy_single_index, buy_exec_index = radical_result[1], radical_result[1]
             buy_volume_rate = cls.volume_rate_info[code][0]
@@ -1566,9 +1569,11 @@
                                                      max_num_set=set(),
                                                      buy_volume_rate=buy_volume_rate,
                                                      mode=OrderBeginPosInfo.MODE_RADICAL,
-                                                     mode_desc=f"澶у崟涓嶈冻鎵叆:{radical_result[2]} 鏄惁璺熶汉涔板叆-{is_human_radical_buy}",
+                                                     mode_desc=f"澶у崟涓嶈冻鎵叆:{radical_result[2]}",
                                                      sell_info=sell_info,
-                                                     threshold_money=threshold_money)
+                                                     threshold_money=threshold_money,
+                                                     min_order_no=radical_result[5]
+                                                     )
             order_begin_pos_info.at_limit_up = cls.__is_at_limit_up_buy(code)
             ordered = cls.__process_with_find_exec_index(code, order_begin_pos_info, compute_end_index,
                                                          block_info=radical_result[3])
@@ -2021,11 +2026,10 @@
         @param code:
         @param start_index:
         @param end_index:
-        @return: (鏄惁鑾峰彇鍒颁俊鍙�, 淇″彿浣嶇疆, 鎵叆鏉垮潡/娑堟伅, 鎵叆鏉垮潡澶у崟娴佸叆淇℃伅, 闇�瑕佺洃鍚殑澶у崟)
+        @return: (鏄惁鑾峰彇鍒颁俊鍙�, 淇″彿浣嶇疆, 鎵叆鏉垮潡/娑堟伅, 鎵叆鏉垮潡澶у崟娴佸叆淇℃伅, 闇�瑕佺洃鍚殑澶у崟, 缁熻涓婃澘澶у崟鎴愪氦鐨勬渶灏忚鍗曞彿)
         """
 
         # 婵�杩涗拱淇″彿鐨勬椂闂�
-
         def __can_order():
             # 鍒ゆ柇鏄惁鏄澘涓婃斁閲�
             # if cls.__is_at_limit_up_buy(code, start_index):
@@ -2126,8 +2130,13 @@
                     single_index = i
                     break
             if single_index is not None:
-                return True, single_index, f"鏈夊ぇ鍗�,澶у崟鎯呭喌锛歿big_order_deal_enough_result[1]}", watch_indexes
-            return False, None, f"澶у崟涓嶈冻锛歿trade_index}-{end_index}  缂哄皯鐨勫ぇ鍗�-{max(current_lack_money, total_lack_money)}  澶у崟鎯呭喌锛歿big_order_deal_enough_result[1]}", watch_indexes
+                every_time_big_orders = EveryLimitupBigDealOrderManager.list_big_buy_deal_orders(code)
+                if every_time_big_orders:
+                    min_order_no = min(min(every_time_big_orders, key=lambda e: e[0])[0], radical_data[1])
+                else:
+                    min_order_no = radical_data[1]
+                return True, single_index, f"鏈夊ぇ鍗�,澶у崟鎯呭喌锛歿big_order_deal_enough_result[1]}", watch_indexes, min_order_no
+            return False, None, f"澶у崟涓嶈冻锛歿trade_index}-{end_index}  缂哄皯鐨勫ぇ鍗�-{max(current_lack_money, total_lack_money)}  澶у崟鎯呭喌锛歿big_order_deal_enough_result[1]}", watch_indexes, None
 
         radical_data = RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict.get(code)
         record_codes = radical_buy_data_manager.BlockPlaceOrderRecordManager().get_codes()
@@ -2171,7 +2180,7 @@
             # 濡傛灉鏉夸笂鏀鹃噺涓嶅彲涔板叆灏遍渶瑕佸垹闄や俊鍙�
             if not constant.CAN_RADICAL_BUY_AT_LIMIT_UP and code in RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict:
                 RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict.pop(code)
-            return True, result[1], radical_data[2], radical_data[4], result[3]
+            return True, result[1], radical_data[2], radical_data[4], result[3], result[4]
         else:
             async_log_util.info(logger_l2_not_buy_reasons, f"{code}#{result[2]}")
         return result
@@ -2245,6 +2254,8 @@
         @param end_index:
         @return: 淇″彿淇℃伅锛堜俊鍙蜂綅,鎵ц浣嶏級, 娑堟伅, 鍙拱鍏ョ殑鏉垮潡
         """
+        if True:
+            return None, "姝ゆ潯涓嶇敓鏁�", None
         if not tool.is_sz_code(code):
             return None, "闈炴繁璇佺殑绁�", None
         # 鍒ゆ柇鎶涘帇鏄惁澶т簬5000w

--
Gitblit v1.8.0