From bea977458173f2e60971bad2d6f1e3183070c5ca Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 21 十月 2024 10:21:56 +0800 Subject: [PATCH] bug修改 --- third_data/code_plate_key_manager.py | 64 +++++++++++++++++++++++++++++++- 1 files changed, 62 insertions(+), 2 deletions(-) diff --git a/third_data/code_plate_key_manager.py b/third_data/code_plate_key_manager.py index 92e7b3a..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): @@ -416,6 +448,14 @@ __history_limit_up_reason_dict = {} # 鏉垮潡 __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() @@ -499,6 +539,14 @@ except: pass return set() + + def get_history_blocks_cache(self, code): + """ + 鑾峰彇180澶╃殑鍘嗗彶娑ㄥ仠鍘熷洜缂撳瓨 + @param code: + @return: + """ + return self.__history_blocks_dict_cache.get(code) # 鐩爣浠g爜鏉垮潡鍏抽敭璇嶇鐞� @@ -887,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: @@ -1487,6 +1540,13 @@ if match_blocks_3: match_blocks_3 -= constant.KPL_INVALID_BLOCKS fblocks |= match_blocks_3 + # 鑾峰彇寮�鐩樺暒鍘嗗彶娑ㄥ仠鍘熷洜 + 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 -- Gitblit v1.8.0