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