From cbb47fc396a73d39dc2e5c403fd8d6eef9dc72aa Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 19 七月 2024 11:04:47 +0800
Subject: [PATCH] bug修复

---
 l2_data_util.py                          |    2 +-
 cancel_strategy/s_l_h_cancel_strategy.py |   54 ++++++++++++++++++++++++++++++++++++------------------
 2 files changed, 37 insertions(+), 19 deletions(-)

diff --git a/cancel_strategy/s_l_h_cancel_strategy.py b/cancel_strategy/s_l_h_cancel_strategy.py
index 7de946b..af87bcc 100644
--- a/cancel_strategy/s_l_h_cancel_strategy.py
+++ b/cancel_strategy/s_l_h_cancel_strategy.py
@@ -1132,9 +1132,6 @@
             if val["num"] < min_num:
                 continue
 
-            if val["num"] < bigger_num:
-                continue
-
             left_count = l2_data_source_util.L2DataSourceUtils.get_limit_up_buy_no_canceled_count_v2(code, i,
                                                                                                      total_datas,
                                                                                                      local_today_canceled_buyno_map.get(
@@ -1153,6 +1150,18 @@
                         break
         self.__l_down_after_by_big_order_dict[code] = watch_indexes
         l2_log.l_cancel_debug(code, f"L鍚庡悗鍗婃澶у崟澶囩敤鍥婃嫭鑼冨洿锛歿watch_indexes}")
+
+        try:
+            watch_indexes_info = self.get_l_down_watch_indexes_cache(code)
+            if watch_indexes_info:
+                total_watch_indexes = set(watch_indexes) | set(watch_indexes_info[2])
+                trade_record_log_util.add_cancel_watch_indexes_log(code,
+                                                                   trade_record_log_util.CancelWatchIndexesInfo(
+                                                                       trade_record_log_util.CancelWatchIndexesInfo.CANCEL_TYPE_L_DOWN,
+                                                                       watch_indexes_info[0],
+                                                                       list(total_watch_indexes)))
+        except:
+            pass
 
     # 璁剧疆鐪熷疄涓嬪崟浣嶇疆
     def set_real_place_order_index(self, code, index, buy_single_index=None, is_default=False):
@@ -1642,6 +1651,10 @@
         # 瀹堟姢S鎾や互澶栫殑鏁版嵁
         if int(tool.get_now_time_str().replace(":", "")) > int("145700") and not constant.TEST:
             return False, None, ""
+        try:
+            LCancelOutOfDateWatchIndexesManager().process(code, start_index, end_index)
+        except Exception as e:
+            l2_log.l_cancel_debug("L鍚庣ǔ瀹氭洿鏂板嚭閿欙細{}",str(e))
         # 涓嬪崟浣嶄复杩戞挙
         can_cancel, cancel_data = False, None
         try:
@@ -1703,6 +1716,13 @@
     """
     __latest_cancel_time_dict = {}
 
+    __instance = None
+
+    def __new__(cls, *args, **kwargs):
+        if not cls.__instance:
+            cls.__instance = super(LCancelOutOfDateWatchIndexesManager, cls).__new__(cls, *args, **kwargs)
+        return cls.__instance
+
     @classmethod
     def compute_latest_canceled_watch_index_time(cls, code, watch_indexes):
         """
@@ -1725,7 +1745,8 @@
         return total_datas[max_cancel_index]["val"]["time"]
 
     @classmethod
-    def compute_l_down_common_watch_indexes(cls, code, start_index, end_index, max_count, min_num, exclude_watch_indexes):
+    def compute_l_down_common_watch_indexes(cls, code, start_index, end_index, max_count, min_num,
+                                            exclude_watch_indexes):
         """
         鑾峰彇L鍚庣洃鍚暟鎹�
         @param code:
@@ -1808,16 +1829,17 @@
         if tool.trade_time_sub(total_datas[-1]["val"]["time"], self.__latest_cancel_time_dict.get(code)) < 10 * 60:
             # 鏈�杩戠殑鎾ゅ崟鏃堕棿灏忎簬10鍒嗛挓
             return
-        # TODO 鏌ユ壘鏄惁鏈夌浉鍚屾椂闂寸殑鎾ゅ崟涓旀挙鍗曟椂闂村湪10鍒嗛挓涔嬪墠
+        l2_log.l_cancel_debug(code, f"L鍚庣ǔ瀹�")
         canceled_buyno_map = local_today_canceled_buyno_map.get(code)
-        cancel_time_dict={}
+        cancel_time_dict = {}
         for index in watch_indexes:
             if index > real_place_order_index:
                 continue
             orderNo = str(total_datas[index]["val"]["orderNo"])
             if orderNo not in canceled_buyno_map:
                 continue
-            if tool.trade_time_sub(total_datas[-1]["val"]["time"], canceled_buyno_map[orderNo]["val"]["time"]) < 10 * 60:
+            if tool.trade_time_sub(total_datas[-1]["val"]["time"],
+                                   canceled_buyno_map[orderNo]["val"]["time"]) < 10 * 60:
                 continue
             val = total_datas[index]["val"]
             time_str = L2DataUtil.get_time_with_ms(val)
@@ -1825,28 +1847,24 @@
                 cancel_time_dict[time_str] = set()
             cancel_time_dict[time_str].add(index)
         remove_indexes = set()
-        for t in  cancel_time_dict:
-            if len(cancel_time_dict[t])>1:
-                remove_indexes|=cancel_time_dict[t]
+        for t in cancel_time_dict:
+            if len(cancel_time_dict[t]) > 1:
+                remove_indexes |= cancel_time_dict[t]
         if remove_indexes:
             # 绉婚櫎绱㈠紩
             add_count = len(remove_indexes)
             limit_up_price = gpcode_manager.get_limit_up_price_as_num(code)
-            min_num = int(5000/limit_up_price)
+            min_num = int(5000 / limit_up_price)
             trade_index, is_default = TradeBuyQueue().get_traded_index(code)
             if trade_index is None:
                 trade_index = 0
-            add_watch_index = self.compute_l_down_common_watch_indexes(code,trade_index ,real_place_order_index, add_count, min_num, watch_indexes)
+            add_watch_index = self.compute_l_down_common_watch_indexes(code, trade_index, real_place_order_index,
+                                                                       add_count, min_num, watch_indexes)
             watch_indexes -= remove_indexes
-            watch_indexes|=add_watch_index
+            watch_indexes |= add_watch_index
             # 淇濆瓨鏁版嵁 /
             LCancelBigNumComputer().set_l_down_watch_index_info(code, watch_indexes_info[0], True, watch_indexes)
             l2_log.l_cancel_debug(code, f"L鍚庣ǔ瀹氬悗鏇存柊鐩戞帶鑼冨洿锛氬垹闄�-{remove_indexes} 澧炲姞-{add_watch_index}")
-
-
-
-
-
 
 
 # --------------------------------H鎾�-------------------------------
diff --git a/l2_data_util.py b/l2_data_util.py
index af7c6c4..f3fe5b0 100644
--- a/l2_data_util.py
+++ b/l2_data_util.py
@@ -36,7 +36,7 @@
     @return:
     """
     price = float(val["price"])
-    money = price * val["num"]
+    money = round(price * val["num"], 2)
     if is_ge:
         if money >= 29900 or val["num"] >= 2999:
             return True

--
Gitblit v1.8.0