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 | 74 +++++++++++++++++++++++++++++-------- 1 files changed, 58 insertions(+), 16 deletions(-) diff --git a/third_data/code_plate_key_manager.py b/third_data/code_plate_key_manager.py index 0ea4094..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): @@ -353,11 +357,37 @@ @param datas: @return: """ + # blocks = set() + # 鑰佺増鏈疄鐜版柟寮� + # for data in datas: + # if data[3] <= 0: + # 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: - if data[3] <= 0: + cls.__jx_blocks_in_money_dict[data[1]] = data[3] + if data[1] in constant.KPL_INVALID_BLOCKS: + continue + if data[3] < 5e7: + continue + # 杩囨护鍑烘潵涓哄悓涓�涓澘鍧楀氨鍙畻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(data[1]) + # 璁板綍绮鹃�夋祦鍑烘棩蹇� + 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 @@ -367,20 +397,27 @@ @param datas: @return: """ + cls.top_out_list_cache = datas + count = 0 blocks = set() - for i in range(0, len(datas)): - if i >= 10 and int(tool.get_now_time_str().replace(":", "")) < int("100000"): - # 10鐐瑰墠鐪嬪墠10锛屽崄鐐瑰悗涓嶇湅鍓�10 - break - data = datas[i] - if data[3] > 0 - 5e7: + 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] > -5e7: # 杩囨护5鍗冧竾浠ヤ笂鐨� break - blocks.add(kpl_util.filter_block(data[1])) - + # 杩囨护鍑烘潵涓哄悓涓�涓澘鍧楀氨鍙畻1涓暟閲� + fb = BlockMapManager().filter_blocks({data[1]}) + if blocks & fb: + continue + blocks |= fb + count += 1 + if count >= 10: + break # 璁板綍绮鹃�夋祦鍑烘棩蹇� async_log_util.info(logger_kpl_jx_out, f"鍘熸暟鎹細{datas[:10]} 鏉垮潡锛歿blocks}") - cls.__top_jx_out_blocks = blocks + cls.__top_jx_out_blocks = list(blocks) @classmethod def get_top_market_jingxuan_blocks(cls): @@ -431,6 +468,10 @@ return True, temp_set else: return False, None + + @classmethod + def get_jx_block_in_money(cls, block): + return cls.__jx_blocks_in_money_dict.get(block) # 浠g爜鍘嗗彶娑ㄥ仠鍘熷洜涓庢澘鍧楃鐞� @@ -1103,5 +1144,6 @@ cls.__can_buy_compute_result_dict[code] = ( can_buy_blocks, unique, msg, can_buy_strong_blocks, keys, active_buy_blocks) + if __name__ == "__main__": pass -- Gitblit v1.8.0