From 36367e32a8c00cbbacb2cc7f7a09adde3e0cfaa9 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 11 十一月 2024 18:37:32 +0800 Subject: [PATCH] 扫过的单可继续扫/扫了未成交遵循顺位机制/唯一涨停原因的高位板要计算其身位 --- third_data/code_plate_key_manager.py | 60 +++++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 37 insertions(+), 23 deletions(-) diff --git a/third_data/code_plate_key_manager.py b/third_data/code_plate_key_manager.py index 126ebe6..64503c2 100644 --- a/third_data/code_plate_key_manager.py +++ b/third_data/code_plate_key_manager.py @@ -16,7 +16,8 @@ from third_data.third_blocks_manager import BlockMapManager, CodeThirdBlocksManager from trade.buy_money_count_setting import RadicalBuyBlockCodeCountManager from trade.order_statistic import DealAndDelegateWithBuyModeDataManager -from trade.radical_buy_data_manager import RadicalBuyDataManager +from trade.radical_buy_data_manager import RadicalBuyDataManager, BlockPlaceOrderRecordManager +from trade.trade_data_manager import RadicalBuyDealCodesManager from utils import global_util, tool, buy_condition_util from log_module import log, async_log_util from db import redis_manager_delegate as redis_manager @@ -1185,12 +1186,16 @@ kpl_data_constant.open_limit_up_code_dict_for_radical_buy = temp_dict @classmethod - def __get_current_index(cls, code, block, yesterday_limit_up_codes, exclude_codes=None, limit_up_time=None): + def __get_current_index(cls, code, block, yesterday_limit_up_codes, exclude_codes=None, limit_up_time=None, + ignore_open_limit_up=True): """ - 鑾峰彇褰撳墠娑ㄥ仠韬綅 + 鑾峰彇褰撳墠娑ㄥ仠韬綅 @param code: @param block: @param yesterday_limit_up_codes: + @param exclude_codes: + @param limit_up_time: + @param ignore_open_limit_up: 鏄惁蹇界暐寮�1鐨勪唬鐮� @return: 绱㈠紩,鍓嶆帓浠g爜淇℃伅锛圼(浠g爜, 娑ㄥ仠鏃堕棿)]锛� """ if exclude_codes is None: @@ -1202,16 +1207,11 @@ limit_up_time = time.time() for k in LimitUpDataConstant.current_limit_up_datas: _code = k[0] - # 鍓旈櫎4鏉夸互涓婄殑鏉� - if kpl_util.get_high_level_count(k[4]) >= 4: - continue - if _code in exclude_codes: continue blocks = LimitUpDataConstant.get_blocks_with_history(_code) if not blocks: blocks = set() - blocks = BlockMapManager().filter_blocks(blocks) if _code == code: # 鑾峰彇褰撳墠浠g爜娑ㄥ仠鏃堕棿 limit_up_time = int(k[2]) @@ -1219,10 +1219,15 @@ # 涓嶆槸杩欎釜鏉垮潡 if block not in blocks: continue + + # 鍓旈櫎4鏉夸互涓婄殑鏉� + if kpl_util.get_high_level_count(k[4]) >= 4 and len(blocks) > 1: + continue + if not tool.is_can_buy_code(_code): continue # 鍓旈櫎寮�1鐨勬暟鎹� - if timestamp_start <= int(k[2]) < timestamp_end: + if ignore_open_limit_up and timestamp_start <= int(k[2]) < timestamp_end: continue # 鍓旈櫎楂樹綅鏉� if _code in yesterday_limit_up_codes: @@ -1242,13 +1247,14 @@ return current_index, before_codes_info @classmethod - def __get_history_index(cls, code, block, yesterday_limit_up_codes, exclude_codes=None): + def __get_history_index(cls, code, block, yesterday_limit_up_codes, exclude_codes=None, ignore_open_limit_up=True): """ 鑾峰彇鍘嗗彶娑ㄥ仠韬綅 @param code: @param block: - @param current_limit_up_datas: 鏄ㄦ棩娑ㄥ仠浠g爜 - @param current_limit_up_codes: 鐩墠鐨勬定鍋滀唬鐮� + @param yesterday_limit_up_codes: + @param exclude_codes: + @param ignore_open_limit_up: 鏄惁蹇界暐寮�1浠g爜 @return: """ if exclude_codes is None: @@ -1261,25 +1267,25 @@ limit_up_space_ge_60s_codes = set() for k in LimitUpDataConstant.history_limit_up_datas: _code = k[3] - - # 鍓旈櫎4鏉夸互涓婄殑鏉� - if kpl_util.get_high_level_count(k[12]) >= 4: - continue - if _code in exclude_codes: continue - blocks = LimitUpDataConstant.get_blocks_with_history(_code) if _code == code: # 鑾峰彇褰撳墠浠g爜娑ㄥ仠鏃堕棿 limit_up_time = int(k[5]) continue + + blocks = LimitUpDataConstant.get_blocks_with_history(_code) # 涓嶆槸杩欎釜鏉垮潡 if block not in blocks: continue + # 鍓旈櫎4鏉夸互涓婁笖鏉垮潡鏁伴噺澶т簬1涓� + if kpl_util.get_high_level_count(k[12]) >= 4 and len(blocks) > 1: + continue + if not tool.is_can_buy_code(_code): continue # 鍓旈櫎寮�1鐨勬暟鎹� - if timestamp_start <= int(k[5]) < timestamp_end: + if ignore_open_limit_up and timestamp_start <= int(k[5]) < timestamp_end: continue # 鍓旈櫎楂樹綅鏉� if _code in yesterday_limit_up_codes: @@ -1386,7 +1392,8 @@ if history_index == 1: # 褰撳墠浠g爜涓鸿��2锛岃鍒ゆ柇鑰佸ぇ鏄惁鍙拱 if RadicalBuyDataManager.is_code_can_buy(history_before_codes_info[0][0], - DealAndDelegateWithBuyModeDataManager().get_deal_codes(), is_refered=True)[0]: + DealAndDelegateWithBuyModeDataManager().get_deal_codes(), + is_refered=True)[0]: return False, f"寮�1鏁伴噺锛歿count}锛屽墠鎺掍唬鐮佸彲涔帮細{history_before_codes_info[0]}" return True, f"寮�1鏁伴噺锛歿count}锛屽墠鎺掍唬鐮佷笉鍙拱锛歿history_before_codes_info[0]}锛屽巻鍙插墠鎺�-{history_before_codes_info}锛屽紑1浠g爜-{open_limit_up_block_codes}" return True, f"寮�1鏁伴噺锛歿count}锛屽巻鍙�-{history_index + 1} 瀹炴椂-{current_index + 1}锛� 鍓嶆帓浠g爜-{current_before_codes_info}, 寮�1浠g爜-{open_limit_up_block_codes}" @@ -1406,6 +1413,7 @@ return index, before_codes_info temp_index = index temp_before_codes_info = [] + deal_codes = RadicalBuyDealCodesManager().get_deal_codes() for b in before_codes_info: # 褰撲綔鐩爣绁ㄨ幏鍙栨壂鍏ユ澘鍧� code_ = b[0] @@ -1420,6 +1428,11 @@ if not need_delete: if radical_buy_data_manager.ExcludeIndexComputeCodesManager.is_in_cache(code_): need_delete = True + # 鍒ゆ柇鏄笉鏄壂浜嗘病鏈夋壂杩涘叆 + if not need_delete: + if code_ in BlockPlaceOrderRecordManager().get_codes() and code_ not in deal_codes: + need_delete = True + if need_delete: temp_index -= 1 else: @@ -1462,7 +1475,7 @@ if tool.trade_time_sub(tool.timestamp_format(limit_up_timestamp, '%H:%M:%S'), tool.timestamp_format(current_before_codes_info[-1][1], '%H:%M:%S')) >= 10 * 60: - return False, f"璺濈涓婁釜浠g爜娑ㄥ仠宸茶繃鍘�10鍒嗛挓锛坽current_before_codes_info[0]}锛�" + return False, f"璺濈涓婁釜浠g爜娑ㄥ仠宸茶繃鍘�10鍒嗛挓锛坽current_before_codes_info[-1]}锛�" # 鍖呭惈楂樹綅鏉跨殑鏁翠綋鎺掑簭 all_history_index, all_history_before_codes_info = cls.__get_history_index(code, block, set()) @@ -1470,7 +1483,7 @@ # 鍓嶄袱涓唬鐮佹槸鍚︽湁鐐告澘 dif_codes = set(all_history_before_codes[:2]) - set(current_before_codes[:2]) if dif_codes: - return False, f"鍓�2浠g爜鏈夌偢鏉匡細{dif_codes}" + return False, f"鍓�2浠g爜鏈夌偢鏉匡細{dif_codes}, 鍓嶆帓浠g爜锛歿all_history_before_codes}" # 鍓嶆帓浠g爜鐐告澘涓嶈兘>=2涓� dif_codes = set(all_history_before_codes) - set(current_before_codes) if len(dif_codes) >= 2: @@ -1510,7 +1523,8 @@ pre_code = history_before_codes_info[0][0] # pre_code涓嶈兘涔帮紝鎵嶈兘涔� if RadicalBuyDataManager.is_code_can_buy(pre_code, - DealAndDelegateWithBuyModeDataManager().get_deal_codes(), is_refered=True)[0]: + DealAndDelegateWithBuyModeDataManager().get_deal_codes(), + is_refered=True)[0]: return False, f"鍓嶆帓浠g爜鍙拱锛歿pre_code}" # 鍓嶉潰涓�涓唬鐮佷笉鑳戒拱锛屽墠涓�涓唬鐮佸繀椤讳笌鍓嶅墠涓唬鐮佹定鍋滄椂闂寸浉宸�15鍒嗛挓鍐� for i in range(len(all_history_before_codes_info) - 1, -1, -1): -- Gitblit v1.8.0