From 24483098305c456c37d0dab1bc7b6908e55af11b Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 29 八月 2025 16:52:05 +0800
Subject: [PATCH] D撤重新生效

---
 cancel_strategy/s_l_h_cancel_strategy.py |   61 +++++++++++++++++++++++++++++-
 1 files changed, 59 insertions(+), 2 deletions(-)

diff --git a/cancel_strategy/s_l_h_cancel_strategy.py b/cancel_strategy/s_l_h_cancel_strategy.py
index 8f19fa1..812e288 100644
--- a/cancel_strategy/s_l_h_cancel_strategy.py
+++ b/cancel_strategy/s_l_h_cancel_strategy.py
@@ -15,9 +15,9 @@
 from log_module import async_log_util
 from third_data import code_plate_key_manager
 from trade.buy_radical import radical_buy_data_manager
-from utils import tool
+from utils import tool, trade_util
 from l2.transaction_progress import TradeBuyQueue
-from trade import l2_trade_factor, trade_record_log_util, trade_constant
+from trade import l2_trade_factor, trade_record_log_util, trade_constant, trade_manager
 from l2 import l2_log, l2_data_source_util
 from l2.l2_data_util import L2DataUtil, local_today_datas, local_today_canceled_buyno_map, local_today_buyno_map
 from log_module.log import logger_l2_s_cancel, logger_debug, logger_l2_l_cancel, logger_l2_h_cancel
@@ -2886,5 +2886,62 @@
         self.__compute_watch_index(code, buy_single_index)
 
 
+
+# ---------------------------------D鎾�-------------------------------
+# 璁$畻 鎴愪氦浣�->鐪熷疄涓嬪崟浣嶇疆 鎬诲叡杩樺墿涓嬪灏戞墜娌℃湁鎾ゅ崟
+# 鎴愪氦浣嶅彉鍖栦箣鍚庨噸鏂拌绠�
+class DCancelBigNumComputer:
+    __db = 0
+    __redis_manager = redis_manager.RedisManager(0)
+    __instance = None
+
+    def __new__(cls, *args, **kwargs):
+        if not cls.__instance:
+            cls.__instance = super(DCancelBigNumComputer, cls).__new__(cls, *args, **kwargs)
+        return cls.__instance
+
+    def need_cancel(self, code, buy1_info, limit_up_price, time_str):
+        """
+        鏄惁闇�瑕佹挙鍗�
+        @param limit_up_price:
+        @param code:
+        @param buy1_info:(涔�1浠�, 涔�1閲�)
+        @param time_str: 鏃堕棿瀛楃涓�
+        @return:
+        """
+        # 鑾峰彇鏄惁澶勪簬涓嬪崟鐘舵��
+        trade_state = trade_manager.CodesTradeStateManager().get_trade_state_cache(code)
+        if not trade_util.is_delegated(trade_state):
+            return False, "灏氭湭涓嬪崟"
+
+        if abs(limit_up_price - buy1_info[0]) >= 0.001:
+            return False, "闈炴定鍋滀环"
+
+        # 鏄惁灏忎簬3000w
+        if buy1_info[0] * buy1_info[1] > 3000e4:
+            return False, "灏佸崟棰濆ぇ浜�3000w"
+
+        # 鑾峰彇涓嬪崟鏃堕棿
+        place_order_index = SCancelBigNumComputer().get_real_place_order_index_cache(code)
+        if not place_order_index:
+            return False, "娌¤幏鍙栧埌鐪熷疄涓嬪崟浣嶇疆"
+        total_datas = local_today_datas.get(code)
+        # 涔�1鏃堕棿瑕佸ぇ浜庝笅鍗曟椂闂�
+        if total_datas[place_order_index]['val']['time'] >= time_str:
+            return False, "L1鏃堕棿<=涓嬪崟鏃堕棿"
+        human_rate = CancelRateHumanSettingManager().get_l_down(code)
+        if human_rate and human_rate > 0.7:
+            return False, "浜轰负璁剧疆鎾ゅ崟姣斾緥澶т簬0.7"
+
+        volume_rate = code_volumn_manager.CodeVolumeManager().get_volume_rate(code)
+        if volume_rate <= 0.4 and tool.trade_time_sub(time_str, total_datas[place_order_index]['val']['time']) <= 6:
+            return True, f"閲忔瘮({volume_rate})<=40%涓斿湪鎸傚崟6s鍐咃紝灏佸崟棰濃墹3000涓�"
+
+        if 6 < tool.trade_time_sub(time_str, total_datas[place_order_index]['val']['time']) <= 10*60:
+            return True, f"涓嬪崟鍚�10鍒嗛挓鍐咃紝灏佸崟棰濃墹3000涓�"
+
+        return False, '鏃犳挙鍗曟潯浠�'
+
+
 if __name__ == "__main__":
     CancelRateHumanSettingManager()

--
Gitblit v1.8.0