From 46aa2eb6b6520333cb8ebb525fd4f7f93b0be60c Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期三, 09 四月 2025 15:36:51 +0800 Subject: [PATCH] 新板块重新定义 --- trade/buy_radical/new_block_processor.py | 72 ++++++++++++++++++++++++++++++++++++ 1 files changed, 72 insertions(+), 0 deletions(-) diff --git a/trade/buy_radical/new_block_processor.py b/trade/buy_radical/new_block_processor.py index 9e7140b..3068298 100644 --- a/trade/buy_radical/new_block_processor.py +++ b/trade/buy_radical/new_block_processor.py @@ -1,11 +1,83 @@ """ 鏂伴鏉愬鐞嗗櫒 """ +import constant from code_attribute import code_nature_analyse from code_attribute.gpcode_manager import HumanRemoveForbiddenManager +from third_data import kpl_util from third_data.kpl_data_constant import LimitUpCodesBlockRecordManager from trade import l2_trade_util, trade_record_log_util from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager +from utils import tool +from utils.kpl_data_db_util import KPLLimitUpDataUtil + + +@tool.singleton +class BeforeBlocksComputer: + """ + 寰�鏃ラ鏉愯绠楀櫒 + """ + def __init__(self): + self.__before_blocks = set() + self.__load_data() + + def __load_data(self): + # kpl_results: [( r.`_code`, r.`_day`, r.`_hot_block_name`, r.`_blocks`, r.`_open`)] + kpl_results = KPLLimitUpDataUtil.get_latest_block_infos() + days = set() + for r in kpl_results: + # 鍙�60涓氦鏄撴棩涔嬪唴鐨勯鏉� + days.add(r[1]) + days = list(days) + days.sort(key=lambda x: int(x.replace("-", "")), reverse=True) + days = days[:60] + # {"鏃ユ湡":{ "棰樻潗":{浠g爜} }} + day_block_codes_dict = {} + for r in kpl_results: + if r[1] not in days: + continue + if r[4]: + # 涓嶇畻鐐告澘 + continue + # 缁熻姣忎竴澶╃殑棰樻潗 + day = r[1] + block = kpl_util.filter_block(r[2]) + if block in constant.KPL_INVALID_BLOCKS: + continue + if day not in day_block_codes_dict: + day_block_codes_dict[day] = {} + if block not in day_block_codes_dict[day]: + day_block_codes_dict[day][block] = set() + day_block_codes_dict[day][block].add(r[0]) + + # 姣忎竴澶╄蛋鐨勬澘鍧� + day_block_dict = {} + for day in day_block_codes_dict: + for b in day_block_codes_dict[day]: + if len(day_block_codes_dict[day][b]) >= 3: + if day not in day_block_dict: + day_block_dict[day] = set() + day_block_dict[day].add(b) + day_block_list = [(d, day_block_dict[d]) for d in day_block_dict] + day_block_list.sort(key=lambda x: x[0]) + # 杩囧幓59澶╁嚭鐜扮殑棰樻潗 + old_blocks = set() + for d in day_block_list: + if d[0] == days[0]: + continue + old_blocks |= d[1] + self.__before_blocks |= old_blocks + + # 鏄ㄥぉ鍑虹幇鐨勯鏉� + # if days[0] == day_block_list[-1][0]: + # # 鏄ㄥぉ鍑虹幇鐨勯鏉� + # yesterday_blocks = day_block_list[-1][1] + + def is_new_block(self, block): + return block not in self.__before_blocks + + def get_old_blocks(self): + return self.__before_blocks def process_new_block(code, block): -- Gitblit v1.8.0