From 0acb55dbb2d251472f902b3bb721fd888ab9a31f Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 08 一月 2024 17:37:32 +0800 Subject: [PATCH] 增加获取当前正在委托详情API/下单后立马移除红名单 --- third_data/code_plate_key_manager.py | 28 +++++++++++++++++----------- 1 files changed, 17 insertions(+), 11 deletions(-) diff --git a/third_data/code_plate_key_manager.py b/third_data/code_plate_key_manager.py index 9365388..b45b190 100644 --- a/third_data/code_plate_key_manager.py +++ b/third_data/code_plate_key_manager.py @@ -11,7 +11,8 @@ from code_attribute import code_nature_analyse from db.redis_manager_delegate import RedisUtils from third_data import kpl_block_util, kpl_api, kpl_util -from utils import global_util, tool +from trade.trade_manager import MarketSituationManager +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 @@ -489,7 +490,7 @@ # 杩斿洖鍐呭(鏄惁鍙拱, 鏄惁涓虹嫭鑻�, 鎻忚堪淇℃伅) @classmethod - def __is_block_can_buy(cls, code, block, current_limit_up_datas, code_limit_up_reason_dict, + def __is_block_can_buy(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): # 鐙嫍鍒ゆ柇 @@ -516,7 +517,8 @@ # ---------------------------鍒ゆ柇寮哄娍涓荤嚎------------------------- is_strong_block = False for d in current_limit_up_datas: - if d[5] != block: + bs = kpl_util.get_current_limit_up_reasons(d) + if block not in bs: general_blocks = high_level_code_blocks.get(d[0]) if not general_blocks or block not in general_blocks: # 娌″湪娉涘寲鏉垮潡涓� @@ -560,7 +562,7 @@ # 鑾峰彇涓绘澘瀹炴椂韬綅,鍓旈櫎楂樹綅鏉� current_shsz_rank, front_current_shsz_rank_codes = kpl_block_util.get_code_current_rank(code, block, current_limit_up_datas, - code_limit_up_reason_dict, + code_limit_up_reasons_dict, yesterday_current_limit_up_codes, exclude_first_codes, len( @@ -586,8 +588,10 @@ # 鐪嬭嚜鐢辨祦閫氬競鍊兼槸鍚﹀皬浜�20浜� if is_strong_block and current_shsz_rank < len(current_open_limit_up_codes) + max_rank + 1: zyltgb = global_util.zyltgb_map.get(code) - if zyltgb and zyltgb < 20 * 100000000: - return True, False, f"銆恵block}銆戝己鍔挎澘鍧� 鑷敱娴侀�氬競鍊�({zyltgb})灏忎簬20浜�", is_strong_block + situation = MarketSituationManager().get_situation_cache() + zylt_threshold = buy_condition_util.get_zyltgb_threshold(situation) + if zyltgb and zylt_threshold[1] <= zyltgb <= zylt_threshold[2]: + return True, False, f"銆恵block}銆戝己鍔挎澘鍧� 鑷敱娴侀�氬競鍊�({zyltgb})澶т簬{zylt_threshold[1]//100000000}浜� 灏忎簬{zylt_threshold[2]//100000000}浜�", is_strong_block return False, False, f"銆恵block}銆戝墠鎺掍唬鐮侊細{front_current_shsz_rank_codes} 瓒呰繃{len(current_open_limit_up_codes) + max_rank}涓�", is_strong_block # 杩囨椂鐨勪唬鐮� @@ -626,10 +630,12 @@ if limit_up_record_datas: for d in limit_up_record_datas: if d[2] in constant.KPL_INVALID_BLOCKS and d[3] in before_blocks_dict: - code_limit_up_reason_dict[d[3]] = list(before_blocks_dict.get(d[3]))[0] + code_limit_up_reasons_dict[d[3]] = {list(before_blocks_dict.get(d[3]))[0]} else: - code_limit_up_reason_dict[d[3]] = d[2] - return code_limit_up_reason_dict + code_limit_up_reasons_dict[d[3]] = {d[2]} + if d[6]: + code_limit_up_reasons_dict[d[3]] |= set(d[6].split("銆�")) + return code_limit_up_reasons_dict if current_limit_up_datas is None: current_limit_up_datas = [] @@ -657,11 +663,11 @@ fresults = [] if not keys: return fresults, set() - code_limit_up_reason_dict = {} + code_limit_up_reasons_dict = {} load_code_block() for block in keys: can_buy, unique, msg, is_strong = cls.__is_block_can_buy(code, block, current_limit_up_datas, - code_limit_up_reason_dict, + code_limit_up_reasons_dict, yesterday_current_limit_up_codes, limit_up_record_datas, current_limit_up_block_codes_dict, -- Gitblit v1.8.0