From 0e68e24f54db11d340785b17570fff2bc5fc7ac6 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 24 七月 2023 13:05:16 +0800 Subject: [PATCH] bug修复 --- third_data/block_info.py | 86 +++++++++++++++++++++++++++++++++---------- 1 files changed, 66 insertions(+), 20 deletions(-) diff --git a/third_data/block_info.py b/third_data/block_info.py index c0885f0..786f055 100644 --- a/third_data/block_info.py +++ b/third_data/block_info.py @@ -3,10 +3,13 @@ """ import datetime -import juejin -import tool -from third_data import kpl_util, kpl_data_manager +import constant +from utils import tool +from third_data import kpl_util +from third_data.history_k_data_util import HistoryKDatasUtils from third_data.kpl_data_manager import KPLLimitUpDataRecordManager, KPLDataManager + +from third_data import kpl_data_manager __before_block_dict = {} @@ -23,20 +26,31 @@ return __before_block_dict.get(code) +# 鑾峰彇涔嬪墠鐨勬澘鍧� +def get_before_blocks(code): + return __before_block_dict.get(code) + + +# 鑾峰彇涔嬪墠鐨勪唬鐮�-鏉垮潡瀛楀吀 +def get_before_blocks_dict(): + return __before_block_dict + + def __get_code_from_code_info(code_info): code = code_info[0][1].split(".")[0] return code # (浠g爜, 鍚嶇О, 棣栨娑ㄥ仠鏃堕棿, 鏈�杩戞定鍋滄椂闂�, 鍑犳澘, 娑ㄥ仠鍘熷洜, 鏉垮潡, 瀹為檯娴侀��, 涓诲姏鍑�棰�) -def __get_blocks(code, limit_up_datas): +def __get_blocks(code, limit_up_datas, filter=True): blocks = [] - for data in limit_up_datas: - if data[0] == code: - block = data[5] - if block in kpl_data_manager.INVALID_BLOCKS: - continue - blocks.append(block) + if limit_up_datas: + for data in limit_up_datas: + if data[0] == code: + block = data[5] + if block in constant.KPL_INVALID_BLOCKS and filter: + continue + blocks.append(block) return blocks @@ -56,10 +70,10 @@ if now_day in __blocks_dict: return __blocks_dict[now_day] now_date = datetime.datetime.now() - end_date = juejin.JueJinManager.get_previous_trading_date(tool.get_now_date_str()) + end_date = HistoryKDatasUtils.get_previous_trading_date(tool.get_now_date_str()) start_date = now_date - datetime.timedelta(days=(day_count * 2 + 10)) start_date = start_date.strftime("%Y-%m-%d") - days = juejin.JueJinManager.get_trading_dates(start_date, end_date) + days = HistoryKDatasUtils.get_trading_dates(start_date, end_date) days = days[0 - day_count:] results = KPLLimitUpDataRecordManager.list_blocks_with_day(days) __blocks_dict[now_day] = results @@ -71,6 +85,24 @@ latest_datas = __kplDataManager.get_data(kpl_util.KPLDataType.LIMIT_UP) blocks = __get_blocks(code, latest_datas) return blocks + + +def get_target_block_info(code, filter=False): + latest_datas = __kplDataManager.get_data(kpl_util.KPLDataType.LIMIT_UP) + blocks = __get_blocks(code, latest_datas, filter) + if not blocks: + blocks = __load_before_block(code) + # 鑾峰彇鐩爣鏉垮潡 + target_block = None + if blocks: + for block in blocks: + if block in constant.KPL_INVALID_BLOCKS and filter: + continue + target_block = block + break + if not target_block: + return None + return target_block # 鑾峰彇浠g爜鎵�鍦ㄦ澘鍧椾俊鎭� @@ -86,7 +118,7 @@ target_block = None if blocks: for block in blocks: - if block in kpl_data_manager.INVALID_BLOCKS: + if block in constant.KPL_INVALID_BLOCKS: continue target_block = block break @@ -121,7 +153,7 @@ # 鏄惁鍑虹幇杩囬珮浣嶆澘 high_block_infos = [] for block in blocks: - if block in kpl_data_manager.INVALID_BLOCKS: + if block in constant.KPL_INVALID_BLOCKS: continue if latest_datas: has_high, high_code_info = __is_has_high_code(block, latest_datas) @@ -140,6 +172,8 @@ code_ = d[3] limit_up_codes_info_set.add((code_, d[5])) block_codes_set.add(code_) + elif d[3] == code: + limit_up_codes_info_set.add((d[3], d[5])) # 鑾峰彇娑ㄥ仠鐨勯『搴� limit_up_index = -1 limit_up_codes_info_list = list(limit_up_codes_info_set) @@ -163,12 +197,13 @@ re_limit_codes = set() # 鐐告澘锛� # (浠g爜,鍚嶇О,娑ㄥ箙,鏉垮潡,瀹為檯娴侀��) - for data in open_limit_up_datas: - blocks = set(data[3].split("銆�")) - if target_block not in blocks: - continue - code_ = data[0] - break_codes.add(code_) + if open_limit_up_datas: + for data in open_limit_up_datas: + blocks = set(data[3].split("銆�")) + if target_block not in blocks: + continue + code_ = data[0] + break_codes.add(code_) # 缁熻鍥炲皝 for data in latest_datas: if data[5] != target_block: @@ -206,5 +241,16 @@ return fresult +# 鍒濆鍖栨澘鍧楁暟鎹� +def init(): + # 鍔犺浇鏁版嵁鍒板唴瀛樹腑 + kpl_data_manager.get_current_limit_up_data_records(10) + + +def init_code(code): + # 鍔犺浇鍘嗗彶娑ㄥ仠鍘熷洜 + __load_before_block(code) + + if __name__ == "__main__": get_info("603133") -- Gitblit v1.8.0