From 0ed2c53acd278d57a39390fd4db78c5aaf088e0a Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期五, 21 四月 2023 18:03:54 +0800 Subject: [PATCH] 开盘啦数据解析 --- code_nature_analyse.py | 76 +++++++++++++++++++++++++++---------- 1 files changed, 55 insertions(+), 21 deletions(-) diff --git a/code_nature_analyse.py b/code_nature_analyse.py index 01b405b..8c9b59c 100644 --- a/code_nature_analyse.py +++ b/code_nature_analyse.py @@ -85,37 +85,40 @@ # 鑾峰彇鑲℃�� -# 杩斿洖锛堟槸鍚︽定鍋滐紝棣栨澘婧环鐜囨槸鍚﹀ぇ浜�0.6锛� +# 杩斿洖锛堟槸鍚︽定鍋滐紝棣栨澘婧环鐜囷紝棣栨澘鐐告澘婧环鐜囷級 def get_nature(record_datas): - limit_up = is_have_limit_up(record_datas) + limit_up_count = get_first_limit_up_count(record_datas) premium_rate = get_limit_up_premium_rate(record_datas) - result = (limit_up, premium_rate >= 0.6, premium_rate) - + open_premium_rate = get_open_limit_up_premium_rate(record_datas) + result = (limit_up_count, premium_rate, open_premium_rate) return result +# 鑾峰彇娑ㄥ箙 def get_lowest_price_rate(record_datas): datas = copy.deepcopy(record_datas) datas.sort(key=lambda x: x["bob"]) - datas = datas[-15:] - low_price = datas[0]["close"] - date = None + datas = datas[-10:] for data in datas: - if low_price > data["close"]: - low_price = data["close"] + limit_up_price = float(gpcode_manager.get_limit_up_price_by_preprice(data["pre_close"])) + if abs(limit_up_price - data["high"]) < 0.01: date = data['bob'].strftime("%Y-%m-%d") - return (datas[-1]["close"] - low_price) / low_price, date + return round((datas[-1]["close"] - data["close"]) / data["close"], 4), date + return 0, '' # 鏄惁鏈夋定鍋� -def is_have_limit_up(datas): +def get_first_limit_up_count(datas): datas = copy.deepcopy(datas) + count = 0 for i in range(len(datas)): item = datas[i] - limit_up_price = float(gpcode_manager.get_limit_up_price_by_preprice(item["pre_close"])) - if abs(limit_up_price - item["close"]) < 0.01: - return True, item['bob'].strftime("%Y-%m-%d") - return False, '' + # 鑾峰彇棣栨澘娑ㄥ仠娆℃暟 + if __is_limit_up(item) and i>0 and not __is_limit_up(datas[i-1]): + # 棣栨澘娑ㄥ仠 + count+=1 + + return count # 鏄惁鐮村墠楂� @@ -255,6 +258,12 @@ return max_volume, average_volume +# 鏄惁娑ㄥ仠 +def __is_limit_up(data): + limit_up_price = float(gpcode_manager.get_limit_up_price_by_preprice(data["pre_close"])) + return abs(limit_up_price - data["close"]) < 0.001 + + # 棣栨澘娑ㄥ仠婧环鐜� def get_limit_up_premium_rate(datas): datas = copy.deepcopy(datas) @@ -263,13 +272,38 @@ for i in range(0, len(datas)): item = datas[i] limit_up_price = float(gpcode_manager.get_limit_up_price_by_preprice(item["pre_close"])) - if abs(limit_up_price - item["close"]) < 0.001 and abs( - limit_up_price - datas[i - 1]["close"]) >= 0.001 and 0 < i < len(datas) - 1: - # 棣栨澘娑ㄥ仠 - rate = (datas[i + 1]["high"] - datas[i + 1]["pre_close"]) / datas[i + 1]["pre_close"] - first_rate_list.append(rate) + if abs(limit_up_price - item["close"]) < 0.001: + if 0 < i < len(datas) - 1 and not __is_limit_up(datas[i - 1]): + # 棣栨澘娑ㄥ仠 + rate = (datas[i + 1]["high"] - datas[i + 1]["pre_close"]) / datas[i + 1]["pre_close"] + first_rate_list.append(rate) if not first_rate_list: - return 0 + return None + count = 0 + for rate in first_rate_list: + if rate >= 0.01: + count += 1 + return count / len(first_rate_list) + + +# 棣栨澘鐐告澘婧环鐜� +def get_open_limit_up_premium_rate(datas): + datas = copy.deepcopy(datas) + datas.sort(key=lambda x: x["bob"]) + first_rate_list = [] + for i in range(0, len(datas)): + item = datas[i] + limit_up_price = float(gpcode_manager.get_limit_up_price_by_preprice(item["pre_close"])) + + if abs(limit_up_price - item["high"]) < 0.001 and abs(limit_up_price - item["close"]) > 0.001: + # + limit_up_price = float(gpcode_manager.get_limit_up_price_by_preprice(datas[i - 1]["pre_close"])) + if 0 < i < len(datas) - 1 and not __is_limit_up(datas[i - 1]): + # 鍓嶄竴澶╂湭娑ㄥ仠 + rate = (datas[i + 1]["high"] - item["high"]) / item["high"] + first_rate_list.append(rate) + if not first_rate_list: + return None count = 0 for rate in first_rate_list: if rate >= 0.01: -- Gitblit v1.8.0