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

---
 third_data/code_plate_key_manager.py |   52 +++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 37 insertions(+), 15 deletions(-)

diff --git a/third_data/code_plate_key_manager.py b/third_data/code_plate_key_manager.py
index 4827e82..aeba8a5 100644
--- a/third_data/code_plate_key_manager.py
+++ b/third_data/code_plate_key_manager.py
@@ -12,12 +12,11 @@
 from db.redis_manager_delegate import RedisUtils
 from third_data import kpl_block_util, kpl_api, kpl_util, kpl_data_constant, huaxin_l1_data_manager
 from settings.trade_setting import MarketSituationManager
-from third_data.history_k_data_manager import HistoryKDataManager
-from third_data.history_k_data_util import HistoryKDatasUtils
 from third_data.kpl_data_constant import LimitUpDataConstant
 from third_data.third_blocks_manager import BlockMapManager, CodeThirdBlocksManager
+from trade.order_statistic import DealAndDelegateWithBuyModeDataManager
 from trade.radical_buy_data_manager import RedicalBuyDataManager
-from utils import global_util, tool, buy_condition_util, init_data_util
+from utils import global_util, tool, buy_condition_util
 from log_module import log, async_log_util
 from db import redis_manager_delegate as redis_manager
 
@@ -1301,7 +1300,7 @@
             return False, f"寮�1鏁伴噺锛歿count}锛岄潪寮�1棣栨澘韬綅涓嶅尮閰嶏細鍘嗗彶-{history_index + 1} 瀹炴椂-{current_index + 1}"
         if history_index == 1:
             # 褰撳墠浠g爜涓鸿��2锛岃鍒ゆ柇鑰佸ぇ鏄惁鍙拱
-            if RedicalBuyDataManager.can_buy(history_before_codes_info[0][0])[0]:
+            if RedicalBuyDataManager.can_buy(history_before_codes_info[0][0], DealAndDelegateWithBuyModeDataManager().get_deal_codes())[0]:
                 return False, f"寮�1鏁伴噺锛歿count}锛屽墠鎺掍唬鐮佸彲涔帮細{history_before_codes_info[0]}"
             return True, f"寮�1鏁伴噺锛歿count}锛屽墠鎺掍唬鐮佷笉鍙拱锛歿history_before_codes_info[0]}"
         return True, f"寮�1鏁伴噺锛歿count}锛屽巻鍙�-{history_index + 1} 瀹炴椂-{current_index + 1}"
@@ -1350,7 +1349,7 @@
         # 涓嶈绠楀墠2鐨勪唬鐮�
 
         exclude_codes = set()
-        for x in current_before_codes:
+        for x in current_before_codes_info:
             if x[1] < kpl_block_util.open_limit_up_time_range[1]:
                 exclude_codes.add(x[0])
         # 闄ゅ幓鍓嶄簩浠g爜涓庡紑1浠g爜涔嬪悗鏄惁涓洪鏉胯�佸ぇ锛氭墍鏈夊紑1鐨勮涓�1涓�
@@ -1372,7 +1371,7 @@
             # 棣栨澘鑰�2锛屽垽鏂墠闈㈢殑鑰佸ぇ鏄惁鏄睘浜庝笉鑳戒拱鐨勮寖鐣�
             pre_code = history_before_codes_info[0][0]
             # pre_code涓嶈兘涔帮紝鎵嶈兘涔�
-            if RedicalBuyDataManager.can_buy(pre_code)[0]:
+            if RedicalBuyDataManager.can_buy(pre_code, DealAndDelegateWithBuyModeDataManager().get_deal_codes())[0]:
                 return False, f"鍓嶆帓浠g爜鍙拱锛歿pre_code}"
             # 璺濈鍓嶄竴涓槸鍚﹀湪10鍒嗛挓鍐�
             if tool.trade_time_sub(tool.timestamp_format(limit_up_timestamp, '%H:%M:%S'),
@@ -1424,6 +1423,37 @@
         return True, ""
 
     @classmethod
+    def get_code_kpl_blocks(cls, code):
+        blocks = KPLCodeJXBlockManager().get_jx_blocks_radical(code)
+        if blocks is None:
+            blocks = set()
+        # 灏嗚幏鍙栨定鍋滃師鍥犱笌娑ㄥ仠鎺ㄨ崘
+        keys = TargetCodePlateKeyManager().get_plate_keys(code, contains_today=False)
+        if keys and keys[0]:
+            blocks |= set(keys[0])
+        return blocks
+
+    @classmethod
+    def get_code_blocks(cls, code):
+        """
+        鑾峰彇鐩爣浠g爜鐨勬澘鍧�
+        @param code:
+        @return: 杩囨护鍚庣殑鏉垮潡,杩囨护鍓嶇殑鏉垮潡
+        """
+        blocks = cls.get_code_kpl_blocks(code)
+        match_blocks, info = CodeThirdBlocksManager().get_intersection_blocks_info(code, blocks)
+        match_blocks -= constant.KPL_INVALID_BLOCKS
+        fblocks = match_blocks & RealTimeKplMarketData.get_top_market_jingxuan_blocks()
+        if not fblocks:
+            fblocks = set()
+        match_blocks_3, info = CodeThirdBlocksManager().get_intersection_blocks_info(code, blocks, same_count=3)
+        if match_blocks_3:
+            match_blocks_3 -= constant.KPL_INVALID_BLOCKS
+            fblocks |= match_blocks_3
+
+        return fblocks, match_blocks
+
+    @classmethod
     def is_radical_buy(cls, code, yesterday_limit_up_codes):
         """
         鏄惁鏄縺杩涗拱
@@ -1438,15 +1468,7 @@
             for c in open_limit_up_code_dict:
                 open_limit_up_blocks |= open_limit_up_code_dict[c][1]
         # 鑾峰彇浠g爜鐨勬澘鍧�
-        keys_ = KPLCodeJXBlockManager().get_jx_blocks_radical(code)
-        keys_ &= RealTimeKplMarketData.get_top_market_jingxuan_blocks()
-        if not keys_:
-            return set(), "娌¤幏鍙栧埌鏉垮潡"
-        keys_ = BlockMapManager().filter_blocks(keys_)
-        if not keys_:
-            return set(), "杩囨护鍚庢病鑾峰彇鍒版澘鍧�"
-        # 鑾峰彇浜ら泦
-        keys_, info = CodeThirdBlocksManager().get_intersection_blocks_info(code, keys_)
+        keys_, info = cls.get_code_blocks(code)
         if not keys_:
             return set(), "娌¤幏鍙栧埌鏉垮潡浜ら泦"
 

--
Gitblit v1.8.0