From 7eb1a8ed1a007d80de41d131071ee38f5872700c Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期五, 07 二月 2025 14:26:37 +0800 Subject: [PATCH] 辨识度票策略修改/恢复P撤/上传订阅涨幅 --- trade/buy_radical/block_special_codes_manager.py | 53 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 48 insertions(+), 5 deletions(-) diff --git a/trade/buy_radical/block_special_codes_manager.py b/trade/buy_radical/block_special_codes_manager.py index e413b7a..4b930ed 100644 --- a/trade/buy_radical/block_special_codes_manager.py +++ b/trade/buy_radical/block_special_codes_manager.py @@ -59,6 +59,11 @@ f"SELECT r.`_hot_block_name`, r.`_code`, COUNT(*) FROM kpl_limit_up_record r WHERE r.`_day`>'{min_day}' and r.`_day`<'{max_day}' and r._code not like '68%' group by r.`_hot_block_name`, r.`_code`") return results + def __list_code_blocks(self, min_day, max_day): + results = self.__mysql.select_all( + f"SELECT r.`_hot_block_name`, r.`_code`, r.`_day` FROM kpl_limit_up_record r WHERE r.`_day`>'{min_day}' and r.`_day`<'{max_day}' and r._code not like '68%'") + return results + def __get_limit_up_info(self, min_day): sql = f"SELECT r.`_code`, COUNT(r.`_code`),r.`_code_name`,IF( r.`_zylt_val` is null, 1, r.`_zylt_val`/100000000 ) FROM (SELECT * FROM kpl_limit_up_record r ORDER BY r.`_create_time` DESC) r WHERE r.`_day`>'{min_day}' GROUP BY r.`_code`" results = self.__mysql.select_all(sql) @@ -122,13 +127,46 @@ 鑾峰彇鏉垮潡鏈夎鲸璇嗗害鐨勪唬鐮� @return: """ - trading_dates = HistoryKDatasUtils.get_latest_trading_date(8) - max_day = trading_dates[-1] + trading_dates = HistoryKDatasUtils.get_latest_trading_date(9) + max_day = trading_dates[0] min_day = tool.date_sub(max_day, 180) block_map = self.__get_block_map() - # [(鏉垮潡鍚嶇О,浠g爜, 鍦ㄦ澘鍧椾腑鐨勬定鍋滄鏁�)] - code_block_infos = self.__get_code_blocks(min_day, max_day) + # 缁熻鏈�杩�180澶╂定鍋滄暟鎹� + # [(鏉垮潡鍚嶇О,浠g爜, 鏃ユ湡)] + code_block_infos = self.__list_code_blocks(min_day, max_day) + + # 缁熻鏈�杩�8澶╃殑娑ㄥ仠鏁版嵁 + min_day = trading_dates[-1] + code_block_infos_8 = self.__get_code_blocks(min_day, max_day) + # 缁熻娑ㄥ仠娆℃暟澶т簬3娆$殑娑ㄥ仠浠g爜 + # 鏍煎紡锛歿"浠g爜":娑ㄥ仠娆℃暟} + count_dict = {} + filter_codes = set() + for d in code_block_infos_8: + if d[1] not in count_dict: + count_dict[d[1]] = 0 + count_dict[d[1]] += d[2] + if count_dict[d[1]] > 3: + filter_codes.add(d[1]) + count_dict.clear() + code_block_infos_8.clear() + + # 鍒犻櫎鏁版嵁 + temp_data_dict = {} + for d in code_block_infos: + if d[1] in filter_codes and int(d[2].replace("-", "")) > int(min_day.replace("-", "")): + # 闇�瑕佽繃婊や笖鏈�杩�8澶╂定鍋� + continue + block, code = d[0], d[1] + k = f"{block}#{code}" + if k not in temp_data_dict: + temp_data_dict[k] = [block, code, 0] + temp_data_dict[k][2] += 1 + code_block_infos = [temp_data_dict[k] for k in temp_data_dict] + + min_day = tool.date_sub(max_day, 180) + code_block_dict = {} # {"浠g爜":{"鏉垮潡": 娑ㄥ仠娆℃暟}} for b in code_block_infos: if b[1] not in code_block_dict: @@ -139,7 +177,11 @@ for bb in bs: if bb not in code_block_dict[b[1]]: code_block_dict[b[1]][bb] = 0 - code_block_dict[b[1]][bb] += b[2] + if tool.is_ge_code(b[1]): + # 鍒涗笟鏉�1娆℃定鍋滅畻2娆℃定鍋� + code_block_dict[b[1]][bb] += b[2] * 2 + else: + code_block_dict[b[1]][bb] += b[2] block_codes_dict = {} # {"鏉垮潡":[锛堜唬鐮�,娑ㄥ仠娆℃暟锛塢} for code in code_block_dict: for b in code_block_dict[code]: @@ -214,4 +256,5 @@ if __name__ == "__main__": # print(datas) datas = AnalysisBlockSpecialCodesManager().get_block_special_codes() + print(datas) # print(BlockSpecialCodesManager().get_code_blocks("002582")) -- Gitblit v1.8.0