From 994079acd0ac30a32e2b0391881890be16b0afc0 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期二, 17 六月 2025 11:01:13 +0800 Subject: [PATCH] ‘功能完善 --- strategy/data_analyzer.py | 29 ++++++++++++++++++++--------- 1 files changed, 20 insertions(+), 9 deletions(-) diff --git a/strategy/data_analyzer.py b/strategy/data_analyzer.py index 5b7acde..882999f 100644 --- a/strategy/data_analyzer.py +++ b/strategy/data_analyzer.py @@ -272,6 +272,18 @@ return count @classmethod + def __is_limit_up(cls, code, close, pre_close): + """ + 鏄惁娑ㄥ仠 + @param code: + @param close: + @param pre_close: + @return: + """ + return abs(close - cls.calculate_upper_limit_price(code, + pre_close)) < 0.01 + + @classmethod def get_third_limit_up_days(cls, k_data, days): """ 鑾峰彇杩戝嚑涓氦鏄撴棩鐨勪笁鏉垮ぉ鏁� @@ -280,18 +292,17 @@ @return: 涓夋澘澶╂暟 """ count = 0 + k_data = k_data[:days] + k_data = k_data[::-1] for i in range(days): if i + 3 >= len(k_data): continue # 鍒ゆ柇杩炵画涓夋棩娑ㄥ仠涓旂鍥涙棩闈炴定鍋� - if (k_data[i]['close'] >= cls.calculate_upper_limit_price(k_data[i]["sec_id"], k_data[i]["pre_close"])) and \ - (k_data[i + 1]['close'] >= cls.calculate_upper_limit_price(k_data[i + 1]["sec_id"], - k_data[i + 1]["pre_close"])) and \ - (k_data[i + 2]['close'] >= cls.calculate_upper_limit_price(k_data[i + 2]["sec_id"], - k_data[i + 2]["pre_close"])) and \ - (k_data[i + 3]['close'] < cls.calculate_upper_limit_price(k_data[i + 3]["sec_id"], - k_data[i + 3]["pre_close"])): - count += 1 + if cls.__is_limit_up(k_data[i]["sec_id"], k_data[i]['close'], k_data[i]["pre_close"]): + if cls.__is_limit_up(k_data[i+1]["sec_id"], k_data[i+1]['close'], k_data[i+1]["pre_close"]): + if cls.__is_limit_up(k_data[i+2]["sec_id"], k_data[i+2]['close'], k_data[i+2]["pre_close"]): + if not cls.__is_limit_up(k_data[i+3]["sec_id"], k_data[i+3]['close'], k_data[i+3]["pre_close"]): + count += 1 return count @classmethod @@ -528,5 +539,5 @@ if reason not in block_days: block_days[reason] = set() block_days[reason].add(date) - return set([b for b in block_days if len(block_days[b])==len(days_list)]) + return set([b for b in block_days if len(block_days[b]) == len(days_list)]) return set() -- Gitblit v1.8.0