From 2f4bf81b042d24d5fbbd2fa7ec3672a06b211264 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期五, 21 三月 2025 15:41:17 +0800 Subject: [PATCH] 根据板块成分股来获取新题材的成分股/成交数据处理优化 --- servers/data_server.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 44 insertions(+), 0 deletions(-) diff --git a/servers/data_server.py b/servers/data_server.py index 9276e38..818b8e0 100644 --- a/servers/data_server.py +++ b/servers/data_server.py @@ -62,6 +62,8 @@ __industry_cache_dict = {} __latest_limit_up_codes_set = set() __data_process_thread_pool = concurrent.futures.ThreadPoolExecutor(max_workers=10) + # 鏂伴鏉愯姹� + __new_blocks_codes_request_thread_pool = concurrent.futures.ThreadPoolExecutor(max_workers=5) # 浠g爜鐨勬定骞� __code_limit_rate_dict = {} @@ -1017,7 +1019,37 @@ self.__send_response(result_str) def __process_kpl_data(self, data_origin): + def do_limit_up(result_list_): + + def request_new_blocks_codes(blocks_info): + """ + 璇锋眰鏂版澘鍧楃殑浠g爜 + @param blocks_info:[(鏉垮潡鍚嶇О,鏉垮潡浠g爜)] + @return: + """ + yesterday_codes = kpl_data_manager.get_yesterday_limit_up_codes() + for bi in blocks_info: + result = kpl_api.getCodesByPlate(bi[1]) + result = json.loads(result) + code_info_list = [] + for d in result["list"]: + if d[0] in yesterday_codes: + continue + # 娑ㄥ箙瑕佸ぇ浜�5% + rate = d[6] / int(round((tool.get_limit_up_rate(d[0]) - 1) * 10)) + if rate < 5: + continue + # 鏍煎紡锛�(浠g爜,娑ㄥ箙) + code_info_list.append((d[0], d[6])) + if code_info_list: + # 灏嗕唬鐮佸姞鍏ユ柊棰樻潗 + for x in code_info_list: + add_result = LimitUpCodesBlockRecordManager().add_new_blocks(x[0], bi[0]) + if add_result: + # 澧炲姞鏂伴鏉愭槸鍚︽垚鍔燂紝 涓存椂灏嗙エ鍔犲叆杈ㄨ瘑搴� + BlockSpecialCodesManager().add_code_block_for_temp(x[0], bi[0]) + try: if result_list_: # 淇濆瓨娑ㄥ仠鏃堕棿 @@ -1094,8 +1126,11 @@ records = KPLLimitUpDataRecordManager.total_datas # 璁$畻浠婃棩鏂板鐨勯鏉愭蹇� block_codes = {} + # 缁熻鏉垮潡鐨勪唬鐮� + block_plate_code_dict = {} for x in records: bs = {kpl_util.filter_block(x[2])} + block_plate_code_dict[kpl_util.filter_block(x[2])] = x[15] if x[6]: bs |= set(x[6].split("銆�")) for b in bs: @@ -1106,6 +1141,8 @@ reasons -= constant.KPL_INVALID_BLOCKS reasons -= LimitUpCodesBlockRecordManager().get_total_before_blocks() if reasons: + # 鏂版澘鍧� + update_new_block_plates = [] for r in reasons: for c in block_codes[r]: add_result = LimitUpCodesBlockRecordManager().add_new_blocks(c, r) @@ -1113,6 +1150,13 @@ # 澧炲姞鏂伴鏉愭槸鍚︽垚鍔燂紝 涓存椂灏嗙エ鍔犲叆杈ㄨ瘑搴� BlockSpecialCodesManager().add_code_block_for_temp(c, r) + for r in reasons: + if r in block_plate_code_dict: + update_new_block_plates.append((r, block_plate_code_dict[r])) + if update_new_block_plates: + # 闇�瑕佽幏鍙栨澘鍧椾笅鐨勪唬鐮� + self.__new_blocks_codes_request_thread_pool.submit( + lambda: request_new_blocks_codes(update_new_block_plates)) except: pass self.__kplDataManager.save_data(type_, result_list_) -- Gitblit v1.8.0