From a99df93c160cd4feb4fb9ee076a49672c5ee0d02 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 14 五月 2024 00:40:55 +0800
Subject: [PATCH] 成交队列输出

---
 code_attribute/code_nature_analyse.py |   78 +++++++++++++++++++++++++++++++--------
 1 files changed, 62 insertions(+), 16 deletions(-)

diff --git a/code_attribute/code_nature_analyse.py b/code_attribute/code_nature_analyse.py
index 05d9470..dc6e69f 100644
--- a/code_attribute/code_nature_analyse.py
+++ b/code_attribute/code_nature_analyse.py
@@ -385,24 +385,70 @@
     datas = copy.deepcopy(record_datas)
     datas.sort(key=lambda x: x["bob"])
     datas = datas[0 - day_count:]
-    min_price = None
-    max_price = None
+    min_price_info = None
+    max_price_info = None
     for d in datas:
-        if min_price is None:
-            min_price = d["low"]
-        if max_price is None:
-            max_price = d["high"]
-        if min_price > d["low"]:
-            min_price = d["low"]
-        if max_price < d["high"]:
-            max_price = d["high"]
+        if min_price_info is None:
+            min_price_info = d["low"], d
+        if max_price_info is None:
+            max_price_info = d["high"], d
+        if min_price_info[0] > d["low"]:
+            min_price_info = d["low"], d
+        if max_price_info[0] < d["high"]:
+            max_price_info = d["high"], d
     # if max_price > float(limit_up_price):
     #     return False
-    rate = (float(limit_up_price) - min_price) / min_price
-    # print(rate)
-    if rate >= 0.28:
-        return True
-    return False
+    rate = (float(limit_up_price) - min_price_info[1]["close"]) / min_price_info[1]["close"]
+    print(rate)
+    if rate >= 0.319:
+        return True, rate
+    return False, rate
+
+
+# 杩炵画娑ㄥ仠鍚庢槸鍚﹀洖璋冧笉瓒冲
+def is_continue_limit_up_not_enough_fall_dwon(record_datas):
+    # 10 澶╁唴鏄惁鏈夎繛缁�3鏉�
+    datas = copy.deepcopy(record_datas)
+    datas.sort(key=lambda x: x["bob"])
+    datas = datas[0 - 10:]
+    limit_up_continue_count_info = None
+    max_limit_up_continue_count_info_list = []  # [杩炵画娑ㄥ仠娆℃暟,娑ㄥ仠璧风偣]
+
+    for i in range(len(datas)):
+        item = datas[i]
+        if __is_limit_up(item):
+            if not limit_up_continue_count_info:
+                limit_up_continue_count_info = [1, i]
+            else:
+                limit_up_continue_count_info[0] += 1
+        else:
+            if limit_up_continue_count_info:
+                max_limit_up_continue_count_info_list.append(limit_up_continue_count_info)
+                limit_up_continue_count_info = None
+    max_limit_up_info = None
+    for x in max_limit_up_continue_count_info_list:
+        if max_limit_up_info is None:
+            max_limit_up_info = x
+        if max_limit_up_info[0] <= x[0]:
+            max_limit_up_info = x
+
+    if not max_limit_up_info or max_limit_up_info[0] < 3:
+        print("鏃�3杩炴澘")
+        return False
+    start_index = max_limit_up_info[1]
+    max_price_info = [0, None]
+    for i in range(start_index, len(datas)):
+        item = datas[i]
+        if item["high"] > max_price_info[0]:
+            max_price_info = [item["high"], i]
+    # 璁$畻鍥炶俯浠锋牸
+    lowest_price_threhhold = round((1 - 0.28) * max_price_info[0], 2)
+    for i in range(max_price_info[1] + 1, len(datas)):
+        item = datas[i]
+        if item["low"] < lowest_price_threhhold:
+            print("鍥炶俯瓒冲")
+            return False
+    return True
 
 
 # 鏄惁鏈夋定鍋�
@@ -674,7 +720,7 @@
                 has_continue = True
         else:
             continue_count = 0
-    if count >= 7 and has_continue:
+    if count >= 6 and has_continue:
         return True, "闀挎湡杈ㄨ瘑搴�"
     return False, ""
 

--
Gitblit v1.8.0