From 7a25ab250084c544d58c3c8dedc55dfd62241e1c Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 16 一月 2025 01:14:04 +0800
Subject: [PATCH] L后撤修改/不看板块流入优化

---
 cancel_strategy/s_l_h_cancel_strategy.py |   34 +++++++++++++++++++++++++++++-----
 1 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/cancel_strategy/s_l_h_cancel_strategy.py b/cancel_strategy/s_l_h_cancel_strategy.py
index 1cf1cd3..b73982b 100644
--- a/cancel_strategy/s_l_h_cancel_strategy.py
+++ b/cancel_strategy/s_l_h_cancel_strategy.py
@@ -566,7 +566,7 @@
 
     # 鑾峰彇鎾ゅ崟姣斾緥,杩斿洖锛堟挙鍗曟瘮渚�,鏄惁蹇呬拱锛�
     @classmethod
-    def get_cancel_rate(cls, code, buy_exec_time, is_up=False, is_l_down_recomputed=False, buy_mode = None):
+    def get_cancel_rate(cls, code, buy_exec_time, is_up=False, is_l_down_recomputed=False, buy_mode=None):
         try:
             must_buy = cls.__MustBuyCodesManager.is_in_cache(code)
             if buy_mode == OrderBeginPosInfo.MODE_RADICAL:
@@ -577,8 +577,8 @@
                     deal_big_order_info = radical_buy_data_manager.get_total_deal_big_order_info(code,
                                                                                                  gpcode_manager.get_limit_up_price_as_num(
                                                                                                      code))
-                    deal_rate = round(deal_big_order_info[1]/deal_big_order_info[2], 2)
-                    threshold_rate = 0.5*deal_rate+0.35
+                    deal_rate = round(deal_big_order_info[1] / deal_big_order_info[2], 2)
+                    threshold_rate = 0.5 * deal_rate + 0.35
                     threshold_rate = max(threshold_rate, 0.375)
                     threshold_rate = min(threshold_rate, 0.95)
                     return threshold_rate, False
@@ -980,8 +980,10 @@
                     ##鍒ゆ柇鐩戝惉鐨勬暟鎹腑鏄惁鏈夊ぇ鍗�##
                     # 涔嬪墠鐨勫ぇ鍗曚负100w锛岀幇鍦ㄦ敼涓烘甯稿ぇ鍗�
                     has_big_num = False
-                    BIG_ORDER_NUM_THRESHOLD = l2_data_util.get_big_money_val(gpcode_manager.get_limit_up_price_as_num(code), tool.is_ge_code(code))
-                    BIG_ORDER_NUM_THRESHOLD = int(round(BIG_ORDER_NUM_THRESHOLD/(gpcode_manager.get_limit_up_price_as_num(code)*100)))
+                    BIG_ORDER_NUM_THRESHOLD = l2_data_util.get_big_money_val(
+                        gpcode_manager.get_limit_up_price_as_num(code), tool.is_ge_code(code))
+                    BIG_ORDER_NUM_THRESHOLD = int(
+                        round(BIG_ORDER_NUM_THRESHOLD / (gpcode_manager.get_limit_up_price_as_num(code) * 100)))
                     for i in watch_indexes:
                         # 鏄惁鏈夊ぇ鍗�
                         data = total_datas[i]
@@ -1014,6 +1016,28 @@
                                                                                            cancel_data['val'])) <= 0:
                                 watch_indexes.add(i)
                                 break
+
+                    # 璁$畻鐪熷疄涓嬪崟浣嶇疆鍒版垚浜よ繘搴︿綅鐨勬渶澶ф湭鎾ゅぇ鍗曞墠2
+                    big_order_list = []
+                    for i in range(start_index, end_index):
+                        data = total_datas[i]
+                        val = data['val']
+                        # 娑ㄥ仠涔帮紝涓旀湭鎾ゅ崟
+                        if not L2DataUtil.is_limit_up_price_buy(val):
+                            continue
+                        # 灏忛噾棰濊繃婊�
+                        if val['num'] < BIG_ORDER_NUM_THRESHOLD:
+                            continue
+                        cancel_data = l2_data_source_util.L2DataSourceUtils.get_limit_up_buy_canceled_data_v2(code,
+                                                                                                              i,
+                                                                                                              total_datas,
+                                                                                                              local_today_canceled_buyno_map.get(
+                                                                                                                  code))
+                        if not cancel_data:
+                            big_order_list.append((i, val['num']))
+                    if big_order_list:
+                        big_order_list.sort(key=lambda x: x[1], reverse=True)
+                        watch_indexes |= set([x[0] for x in big_order_list[:2]])
                     # 鑾峰彇鐪熷疄涓嬪崟浣嶅悗闈�10绗斿ぇ鍗�
                     watch_indexes_after = self.__compute_l_down_watch_index_after_real_place_order_index(code)
                     if watch_indexes_after:

--
Gitblit v1.8.0