From b105a75eaa4fe0e6826a737f103692478f11baa1 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期三, 20 十一月 2024 16:23:55 +0800 Subject: [PATCH] bug修改 --- third_data/code_plate_key_manager.py | 58 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 43 insertions(+), 15 deletions(-) diff --git a/third_data/code_plate_key_manager.py b/third_data/code_plate_key_manager.py index c4a3814..ae2243a 100644 --- a/third_data/code_plate_key_manager.py +++ b/third_data/code_plate_key_manager.py @@ -18,7 +18,7 @@ from log_module import async_log_util from db import redis_manager_delegate as redis_manager -from log_module.log import logger_kpl_block_can_buy, logger_kpl_jx_out +from log_module.log import logger_kpl_block_can_buy, logger_kpl_jx_out, logger_kpl_jx_in from third_data.kpl_util import KPLPlatManager from trade import trade_manager, l2_trade_util, trade_constant @@ -330,8 +330,10 @@ # 瀹炴椂寮�鐩樺暒甯傚満鏁版嵁 class RealTimeKplMarketData: - # 绮鹃�夊墠5 - top_5_reason_list = [] + # 娴佸叆缂撳瓨 + top_in_list_cache = [] + # 娴佸嚭缂撳瓨 + top_out_list_cache = [] # 琛屼笟鍓�5 top_5_industry_list = [] # @@ -342,9 +344,11 @@ __LimitUpCodesPlateKeyManager = LimitUpCodesPlateKeyManager() __KPLPlatManager = KPLPlatManager() # 绮鹃�夋祦鍏ュ墠鍑� - __top_jx_blocks = set() + __top_jx_blocks = [] # 绮鹃�夋祦鍑哄墠鍑� - __top_jx_out_blocks = set() + __top_jx_out_blocks = [] + # 绮鹃�夋澘鍧楁祦鍏ラ噾棰� + __jx_blocks_in_money_dict = {} @classmethod def set_market_jingxuan_blocks(cls, datas): @@ -360,18 +364,31 @@ # break # blocks.add(data[1]) # cls.__top_jx_blocks = blocks + cls.top_in_list_cache = datas blocks = set() + count = 0 + fblock_money = {} for data in datas: + cls.__jx_blocks_in_money_dict[data[1]] = data[3] if data[1] in constant.KPL_INVALID_BLOCKS: continue - if data[3] < 1e8: + if data[3] < 5e7: continue - blocks.add(data[1]) - if len(blocks) >= 10: + # 杩囨护鍑烘潵涓哄悓涓�涓澘鍧楀氨鍙畻1涓暟閲� + fb = BlockMapManager().filter_blocks({data[1]}) + if blocks & fb: + continue + for b in fb: + fblock_money[b] = data[3] + blocks |= fb + count += 1 + if count >= 10: break - blocks.add(kpl_util.filter_block(data[1])) # 璁板綍绮鹃�夋祦鍑烘棩蹇� - cls.__top_jx_blocks = BlockMapManager().filter_blocks(blocks) + async_log_util.info(logger_kpl_jx_in, f"鍘熸暟鎹細{datas[:20]} 鏉垮潡锛歿blocks}") + blocks = list(blocks) + blocks.sort(key=lambda x: fblock_money.get(x), reverse=True) + cls.__top_jx_blocks = blocks @classmethod def set_market_jingxuan_out_blocks(cls, datas): @@ -380,20 +397,27 @@ @param datas: @return: """ + cls.top_out_list_cache = datas + count = 0 blocks = set() for data in datas: + cls.__jx_blocks_in_money_dict[data[1]] = data[3] if data[1] in constant.KPL_INVALID_BLOCKS: continue - if data[3] > -1e8: + if data[3] > -5e7: # 杩囨护5鍗冧竾浠ヤ笂鐨� break - blocks.add(data[1]) - if len(blocks) >= 10: + # 杩囨护鍑烘潵涓哄悓涓�涓澘鍧楀氨鍙畻1涓暟閲� + fb = BlockMapManager().filter_blocks({data[1]}) + if blocks & fb: + continue + blocks |= fb + count += 1 + if count >= 10: 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 = BlockMapManager().filter_blocks(blocks) + cls.__top_jx_out_blocks = list(blocks) @classmethod def get_top_market_jingxuan_blocks(cls): @@ -445,6 +469,10 @@ else: return False, None + @classmethod + def get_jx_block_in_money(cls, block): + return cls.__jx_blocks_in_money_dict.get(block) + # 浠g爜鍘嗗彶娑ㄥ仠鍘熷洜涓庢澘鍧楃鐞� class CodesHisReasonAndBlocksManager: -- Gitblit v1.8.0