From 9e5b50a69a64aad3d396e1808344645ad2c25efc Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 17 十月 2024 17:32:18 +0800
Subject: [PATCH] 引入精选流出到买入策略

---
 third_data/code_plate_key_manager.py |   47 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/third_data/code_plate_key_manager.py b/third_data/code_plate_key_manager.py
index ae44198..7735ff8 100644
--- a/third_data/code_plate_key_manager.py
+++ b/third_data/code_plate_key_manager.py
@@ -21,7 +21,7 @@
 from log_module import log, async_log_util
 from db import redis_manager_delegate as redis_manager
 
-from log_module.log import logger_kpl_block_can_buy, logger_debug
+from log_module.log import logger_kpl_block_can_buy, logger_debug, logger_kpl_jx_out
 from third_data.kpl_util import KPLPlatManager
 from trade import trade_manager, l2_trade_util, trade_constant
 
@@ -350,11 +350,18 @@
     __KPLPlateForbiddenManager = KPLPlateForbiddenManager()
     __LimitUpCodesPlateKeyManager = LimitUpCodesPlateKeyManager()
     __KPLPlatManager = KPLPlatManager()
-    # 绮鹃�夊墠鍑�
+    # 绮鹃�夋祦鍏ュ墠鍑�
     __top_jx_blocks = set()
+    # 绮鹃�夋祦鍑哄墠鍑�
+    __top_jx_out_blocks = set()
 
     @classmethod
     def set_market_jingxuan_blocks(cls, datas):
+        """
+        璁剧疆绮鹃�夋祦鍏ユ暟鎹�
+        @param datas:
+        @return:
+        """
         blocks = set()
         for data in datas:
             if data[3] <= 0:
@@ -363,8 +370,33 @@
         cls.__top_jx_blocks = blocks
 
     @classmethod
+    def set_market_jingxuan_out_blocks(cls, datas):
+        """
+        璁剧疆绮鹃�夋祦鍑烘暟鎹�
+        @param datas:
+        @return:
+        """
+        blocks = set()
+        for i in range(0, len(datas)):
+            if i >= 10:
+                break
+            data = datas[i]
+            if data[3] > 0 - 5e7:
+                # 杩囨护5鍗冧竾浠ヤ笂鐨�
+                break
+            blocks.add(kpl_util.filter_block(data[1]))
+
+        # 璁板綍绮鹃�夋祦鍑烘棩蹇�
+        async_log_util.info(logger_kpl_jx_out, f"鍘熸暟鎹細{datas[:10]} 鏉垮潡锛歿blocks}")
+        cls.__top_jx_out_blocks = blocks
+
+    @classmethod
     def get_top_market_jingxuan_blocks(cls):
         return cls.__top_jx_blocks
+
+    @classmethod
+    def get_top_market_jingxuan_out_blocks(cls):
+        return cls.__top_jx_out_blocks
 
     @classmethod
     def set_top_5_industry(cls, datas):
@@ -418,12 +450,12 @@
     __blocks_dict = {}
 
     __instance = None
+
     def __new__(cls, *args, **kwargs):
         if not cls.__instance:
             cls.__instance = super(CodesHisReasonAndBlocksManager, cls).__new__(cls, *args, **kwargs)
 
         return cls.__instance
-
 
     def __get_redis(self):
         return self.__redisManager.getRedis()
@@ -903,6 +935,11 @@
         fresults = []
         if not keys:
             return fresults, set()
+        # 鑾峰彇绮鹃�夋祦鍑烘澘鍧�
+        jx_out_blocks = RealTimeKplMarketData.get_top_market_jingxuan_out_blocks()
+        if jx_out_blocks:
+            keys -= jx_out_blocks
+
         code_limit_up_reasons_dict = {}
         load_code_block()
         for block in keys:
@@ -1507,6 +1544,10 @@
         kpl_history_blocks = CodesHisReasonAndBlocksManager().get_history_blocks_cache(code)
         if kpl_history_blocks:
             fblocks |= BlockMapManager().filter_blocks(kpl_history_blocks)
+        jx_out_blocks = RealTimeKplMarketData.get_top_market_jingxuan_out_blocks()
+        if jx_out_blocks:
+            fblocks-=jx_out_blocks
+
         return fblocks, match_blocks
 
     @classmethod

--
Gitblit v1.8.0