From 3af02884a1f2e98c899cc2f21ab434fd6062c34f Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期日, 28 四月 2024 17:32:43 +0800 Subject: [PATCH] 板块调整 --- third_data/code_plate_key_manager.py | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 107 insertions(+), 10 deletions(-) diff --git a/third_data/code_plate_key_manager.py b/third_data/code_plate_key_manager.py index d61a502..d49f38a 100644 --- a/third_data/code_plate_key_manager.py +++ b/third_data/code_plate_key_manager.py @@ -515,6 +515,15 @@ @classmethod def __is_need_active_buy(cls, code, block, current_limit_up_datas, limit_up_record_datas, yesterday_current_limit_up_codes): + """ + 婵�杩涗拱鍏ヨ鍒欙細涓绘澘鑰佸ぇ涓斿墠闈㈡湁楂樹綅鏉�/20cm + @param code: + @param block: + @param current_limit_up_datas: + @param limit_up_record_datas: + @param yesterday_current_limit_up_codes: + @return: + """ code_limit_up_reason_dict = {} for d in limit_up_record_datas: code_limit_up_reason_dict[d[3]] = d[2] @@ -705,6 +714,93 @@ # # return False, f"鏉垮潡-{block}: top4娑ㄥ仠鏉垮潡锛岄潪涓绘澘寮�1,涓嶄负涓绘澘榫�1锛堝疄鏃惰韩浣�-{current_shsz_rank}:{front_current_shsz_rank_codes},鍘嗗彶韬綅-{record_shsz_rank}锛�" + @classmethod + def __is_block_can_buy_new(cls, code, block, current_limit_up_datas, code_limit_up_reasons_dict, + yesterday_current_limit_up_codes, limit_up_record_datas, + current_limit_up_block_codes_dict, + high_level_code_blocks=None, high_level_block_codes=None): + """ + 璇ョエ鐨勬澘鍧楁槸鍚﹀彲浠ヤ拱 + @param code: + @param block: + @param current_limit_up_datas: + @param code_limit_up_reasons_dict: + @param yesterday_current_limit_up_codes: + @param limit_up_record_datas: + @param current_limit_up_block_codes_dict: + @param high_level_code_blocks: + @param high_level_block_codes: + @return: + """ + # 鐙嫍鍒ゆ柇 + if high_level_code_blocks is None: + high_level_code_blocks = {} + if high_level_block_codes is None: + high_level_block_codes = {} + block_codes = current_limit_up_block_codes_dict.get(block) + if block_codes is None: + block_codes = set() + # 璁$畻鏄惁闇�瑕佹縺杩涗拱鍏� + active_buy = cls.__is_need_active_buy(code, block, current_limit_up_datas, + limit_up_record_datas, + yesterday_current_limit_up_codes) + + if not block_codes: + # 楂樹綅鏉挎硾鍖栨澘鍧椾腑鏃犳澘鍧� + if not high_level_block_codes.get(block): + return False, True, f"{block}:鏉垮潡鏃犳定鍋�", False, active_buy + elif len(block_codes) == 1 and code in block_codes: + if not high_level_block_codes.get(block): + return False, True, f"{block}:鏉垮潡鍙湁褰撳墠浠g爜娑ㄥ仠", False, active_buy + # 鍙互涔扮殑鏈�澶ф帓鍚� + # open_limit_up_codes = kpl_block_util.get_shsz_open_limit_up_codes(code, block, limit_up_record_datas, + # code_limit_up_reason_dict) + current_open_limit_up_codes = kpl_block_util.get_shsz_open_limit_up_codes_current(code, block, + current_limit_up_datas) + + is_strong_block = False + + # 鏈�澶氫拱鑰佸嚑 + RANKS = [5, 4, 3, 3, 3, 2, 2] + RANK_TIMES = ["10:00:00", "10:30:00", "11:00:00", "11:30:00", "13:30:00", "14:00:00", "15:00:00"] + now_time_str = tool.get_now_time_str() + max_rank = 2 + for i in range(len(RANK_TIMES)): + if tool.trade_time_sub(now_time_str, RANK_TIMES[i]) <= 0: + max_rank = RANKS[i] + break + + # 闇�瑕佹帓闄ょ殑鑰佸ぇ鐨勪唬鐮� + exclude_first_codes = set() + + # 鑾峰彇涓绘澘寮�1鐨勪唬鐮� + + # 鍓旈櫎楂樹綅鏉� + if current_open_limit_up_codes and yesterday_current_limit_up_codes: + current_open_limit_up_codes -= yesterday_current_limit_up_codes + + # 鑾峰彇浠g爜鐨勫垵娆℃定鍋滄椂闂� + first_limit_up_time = time.time() + # if limit_up_record_datas: + for r in limit_up_record_datas: + if r[3] == code: + first_limit_up_time = int(r[5]) + + # 鑾峰彇涓绘澘瀹炴椂韬綅,鍓旈櫎楂樹綅鏉� + current_shsz_rank, front_current_shsz_rank_codes = kpl_block_util.get_code_current_rank(code, block, + current_limit_up_datas, + code_limit_up_reasons_dict, + yesterday_current_limit_up_codes, + exclude_first_codes, + len( + current_open_limit_up_codes), + shsz=True, + limit_up_time=first_limit_up_time) + if current_shsz_rank < len(current_open_limit_up_codes) + max_rank: + return True, False, f"銆恵block}銆戝墠鎺掍唬鐮侊細{current_shsz_rank}", is_strong_block, active_buy + else: + return False, False, f"銆恵block}銆戝墠鎺掍唬鐮侊細{front_current_shsz_rank_codes} 瓒呰繃{len(current_open_limit_up_codes) + max_rank}涓�", is_strong_block, active_buy + # 鑾峰彇鍙互涔扮殑鏉垮潡 # current_limit_up_datas: 浠婃棩瀹炴椂娑ㄥ仠 # latest_2_day_limit_up_datas锛氭渶杩�2澶╃殑瀹炴椂娑ㄥ仠锛堜笉鍚粖鏃ワ級 @@ -745,14 +841,14 @@ code_limit_up_reasons_dict = {} load_code_block() for block in keys: - can_buy, unique, msg, is_strong, active_buy_info = cls.__is_block_can_buy(code, block, - current_limit_up_datas, - code_limit_up_reasons_dict, - yesterday_current_limit_up_codes, - limit_up_record_datas, - current_limit_up_block_codes_dict, - high_level_code_blocks=high_level_general_code_blocks, - high_level_block_codes=high_level_general_block_codes) + can_buy, unique, msg, is_strong, active_buy_info = cls.__is_block_can_buy_new(code, block, + current_limit_up_datas, + code_limit_up_reasons_dict, + yesterday_current_limit_up_codes, + limit_up_record_datas, + current_limit_up_block_codes_dict, + high_level_code_blocks=high_level_general_code_blocks, + high_level_block_codes=high_level_general_block_codes) fresults.append((block, can_buy, unique, msg, is_strong, active_buy_info)) return fresults, keys @@ -762,7 +858,7 @@ @classmethod def can_buy(cls, code): if constant.TEST: - return ["娴嬭瘯"], True, cls.BLOCK_TYPE_NONE, [], set(),["鍖栧伐"] + return ["娴嬭瘯"], True, cls.BLOCK_TYPE_NONE, [], set(), ["鍖栧伐"] # if True: # # 娴嬭瘯 # return True, "涓嶅垽鏂澘鍧楄韩浣�" @@ -903,7 +999,8 @@ current_limit_up_block_codes_dict, high_level_general_code_blocks) # 淇濆瓨鏉垮潡璁$畻缁撴灉 - cls.__can_buy_compute_result_dict[code] = (can_buy_blocks, unique, msg, can_buy_strong_blocks, keys, active_buy_blocks) + cls.__can_buy_compute_result_dict[code] = ( + can_buy_blocks, unique, msg, can_buy_strong_blocks, keys, active_buy_blocks) if __name__ == "__main__": -- Gitblit v1.8.0