From b01a946cdbd1adc0f25d2d1899ea7802ff13b13d Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 29 十二月 2023 17:48:35 +0800
Subject: [PATCH] 选票需求修改

---
 l2/l2_data_manager_new.py |   73 +++++++++++++++++++++---------------
 1 files changed, 43 insertions(+), 30 deletions(-)

diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py
index faefdb7..d085e0e 100644
--- a/l2/l2_data_manager_new.py
+++ b/l2/l2_data_manager_new.py
@@ -240,7 +240,7 @@
     __L2LimitUpSellManager = L2LimitUpSellManager()
     __PlaceOrderCountManager = PlaceOrderCountManager()
     __CodeNatureRecordManager = code_nature_analyse.CodeNatureRecordManager()
-    __MarketSituationManager=MarketSituationManager()
+    __MarketSituationManager = MarketSituationManager()
 
     # 鑾峰彇浠g爜璇勫垎
     @classmethod
@@ -1002,23 +1002,31 @@
         if can_buy_result is None:
             return False, True, "灏氭湭鑾峰彇鍒版澘鍧椾俊鎭�"
         # -------閲忕殑绾︽潫--------
+        volume_rate_thresholds = buy_condition_util.get_volume_rate_by_level(
+            1), buy_condition_util.get_volume_rate_by_level(2)
+
         k_format = code_nature_analyse.CodeNatureRecordManager().get_k_format_cache(code)
         if k_format and (k_format[1][0] or k_format[3][0]) and len(k_format) >= 12 and k_format[11]:
             # 鐮村墠楂�/鎺ヨ繎鍓嶉珮涓�30澶╁唴鏈夋定鍋�
-            if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.6:
-                return False, True, f"鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮涓�30澶╁唴鏈夋定鍋�,褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬0.6"
+            if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
+                return False, True, f"鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮涓�30澶╁唴鏈夋定鍋�,褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬{volume_rate_thresholds[1]}"
 
-        # 涓�5涓氦鏄撴棩鏈夌偢鏉�/璺屽仠涔嬪悗
+        # 涓�5涓氦鏄撴棩鏈夌偢鏉夸箣鍚�
         if k_format and len(k_format) >= 11 and k_format[10]:
-            if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.6:
-                return False, True, f"涓�5涓氦鏄撴棩鐐告澘/璺屽仠,閲忔湭杈惧埌60%({cls.volume_rate_info[code][0]})"
+            if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
+                return False, True, f"涓�5涓氦鏄撴棩鐐告澘,閲忔湭杈惧埌{volume_rate_thresholds[1]}({cls.volume_rate_info[code][0]})"
+
+        # 涓�5涓氦鏄撴棩鏈夎穼鍋�
+        if k_format and len(k_format) >= 13 and k_format[12]:
+            if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.29:
+                return False, True, f"涓�5涓氦鏄撴棩璺屽仠,閲忔湭杈惧埌{0.29}({cls.volume_rate_info[code][0]})"
 
         # 鑾峰彇閲忕殑鍙傝�冩棩鏈�
         if code in global_util.max60_volumn:
             day = global_util.max60_volumn[code][1]
             if day in HistoryKDatasUtils.get_latest_trading_date_cache(5):
-                if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.6:
-                    return False, True, f"鍙傝�冮噺鍦ㄦ渶杩�5澶�,閲忔湭杈惧埌60%({cls.volume_rate_info[code][0]})"
+                if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
+                    return False, True, f"鍙傝�冮噺鍦ㄦ渶杩�5澶�,閲忔湭杈惧埌{volume_rate_thresholds[1]}({cls.volume_rate_info[code][0]})"
         # 鑾峰彇甯傚満琛屾儏
         situation = cls.__MarketSituationManager.get_situation_cache()
         zylt_threshold = buy_condition_util.get_zyltgb_threshold(situation)
@@ -1028,7 +1036,7 @@
             zyltgb = zylt_threshold[1] + 1
 
         if zyltgb >= zylt_threshold[0]:
-            return False, True, f"{zylt_threshold[0]//100000000}浜夸互涓婄殑閮戒笉涔帮紙{zyltgb}锛�"
+            return False, True, f"{zylt_threshold[0] // 100000000}浜夸互涓婄殑閮戒笉涔帮紙{zyltgb}锛�"
 
         if HighIncreaseCodeManager().is_in(code):
             if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.8:
@@ -1041,26 +1049,31 @@
             if not can_buy_result[0] and can_buy_result[1]:
                 msg_list.append("鐙嫍")
                 if zyltgb < zylt_threshold[1] or zyltgb > zylt_threshold[2]:
-                    return False, True, f"寮哄娍10鍒嗛挓锛岀嫭鑻楋紙{can_buy_result[4]}锛変笉涓嬪崟锛坽can_buy_result[4]}锛夎嚜鐢辨祦閫氬競鍊硷紙{zyltgb}锛変笉婊¤冻鏉′欢"
+                    # 濡傛灉娌℃湁杈ㄨ瘑搴︽墠涓嶄拱
+                    if k_format and k_format[8][0]:
+                        # 鏈夎鲸璇嗗害
+                        pass
+                    else:
+                        return False, True, f"寮哄娍10鍒嗛挓锛岀嫭鑻楋紙{can_buy_result[4]}锛変笉涓嬪崟锛坽can_buy_result[4]}锛夎嚜鐢辨祦閫氬競鍊硷紙{zyltgb}锛変笉婊¤冻鏉′欢"
                 if k_format and (k_format[1][0] or k_format[3][0]):
                     msg_list.append("鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮")
                     # 鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮
-                    if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.6:
-                        return False, True, f"寮哄娍10鍒嗛挓锛岀嫭鑻楋紙{can_buy_result[4]}锛夛紝鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮,褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬0.6"
+                    if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
+                        return False, True, f"寮哄娍10鍒嗛挓锛岀嫭鑻楋紙{can_buy_result[4]}锛夛紝鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮,褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬{volume_rate_thresholds[1]}"
                 else:
-                    if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.3:
-                        return False, True, f"寮哄娍10鍒嗛挓锛岀嫭鑻楋紙{can_buy_result[4]}锛�,褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬0.3"
+                    if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[0]:
+                        return False, True, f"寮哄娍10鍒嗛挓锛岀嫭鑻楋紙{can_buy_result[4]}锛�,褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬{volume_rate_thresholds[0]}"
             else:
                 msg_list.append("闈炵嫭鑻�")
                 if zyltgb < zylt_threshold[1] or zyltgb > zylt_threshold[2]:
                     msg_list.append("涓嶆弧瓒宠嚜鐢辨祦閫�")
                     if k_format and (k_format[1][0] or k_format[3][0]):
                         # 鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮
-                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.6:
-                            return False, True, f"寮哄娍10鍒嗛挓锛屽悗鎺掞紝涓嶆弧瓒宠嚜鐢卞競鍊硷紝鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮,褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬0.6"
+                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
+                            return False, True, f"寮哄娍10鍒嗛挓锛屽悗鎺掞紝涓嶆弧瓒宠嚜鐢卞競鍊硷紝鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮,褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬{volume_rate_thresholds[1]}"
                     else:
-                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.3:
-                            return False, True, f"寮哄娍10鍒嗛挓锛屽悗鎺�,涓嶆弧瓒宠嚜鐢卞競鍊硷紝褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬0.3"
+                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[0]:
+                            return False, True, f"寮哄娍10鍒嗛挓锛屽悗鎺�,涓嶆弧瓒宠嚜鐢卞競鍊硷紝褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬{volume_rate_thresholds[0]}"
                 else:
                     msg_list.append("婊¤冻鑷敱娴侀��")
                     # 鍚庢帓锛屾弧瓒宠嚜鐢辨祦閫氬競鍊奸渶瑕佷笅鍗�
@@ -1075,28 +1088,28 @@
                 if zyltgb < zylt_threshold[1] or zyltgb > zylt_threshold[2]:
                     if k_format and (k_format[1][0] or k_format[3][0]):
                         # 鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮
-                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.6:
-                            return False, True, f"闈炲己鍔�10鍒嗛挓锛屽己鍔夸富绾垮悗鎺掞紝涓嶆弧瓒宠嚜鐢卞競鍊硷紝鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮,褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬0.6"
+                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
+                            return False, True, f"闈炲己鍔�10鍒嗛挓锛屽己鍔夸富绾垮悗鎺掞紝涓嶆弧瓒宠嚜鐢卞競鍊硷紝鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮,褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬{volume_rate_thresholds[1]}"
                     else:
-                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.3:
-                            return False, True, f"闈炲己鍔�10鍒嗛挓锛屽己鍔夸富绾垮悗鎺�,涓嶆弧瓒宠嚜鐢卞競鍊硷紝褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬0.3"
+                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[0]:
+                            return False, True, f"闈炲己鍔�10鍒嗛挓锛屽己鍔夸富绾垮悗鎺�,涓嶆弧瓒宠嚜鐢卞競鍊硷紝褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬{volume_rate_thresholds[0]}"
                 else:
                     if k_format and (k_format[1][0] or k_format[3][0]):
-                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.3:
-                            return False, True, f"闈炲己鍔�10鍒嗛挓锛屽己鍔夸富绾垮悗鎺�,婊¤冻鑷敱甯傚�硷紝鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮, 褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬0.3"
+                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[0]:
+                            return False, True, f"闈炲己鍔�10鍒嗛挓锛屽己鍔夸富绾垮悗鎺�,婊¤冻鑷敱甯傚�硷紝鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮, 褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬{volume_rate_thresholds[0]}"
             else:
                 # 闈炲己鍔夸富绾�
                 if zyltgb < zylt_threshold[1] or zyltgb > zylt_threshold[2]:
-                    if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.6:
-                        return False, True, f"闈炲己鍔�10鍒嗛挓锛岄潪寮哄娍涓荤嚎鍚庢帓锛屼笉婊¤冻鑷敱甯傚��, 褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬0.6"
+                    if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
+                        return False, True, f"闈炲己鍔�10鍒嗛挓锛岄潪寮哄娍涓荤嚎鍚庢帓锛屼笉婊¤冻鑷敱甯傚��, 褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬{volume_rate_thresholds[1]}"
                 else:
                     if k_format and (k_format[1][0] or k_format[3][0]):
                         # 鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮
-                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.6:
-                            return False, True, f"闈炲己鍔�10鍒嗛挓锛岄潪寮哄娍涓荤嚎鍚庢帓锛屾弧瓒宠嚜鐢卞競鍊硷紝鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮, 褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬0.6"
+                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
+                            return False, True, f"闈炲己鍔�10鍒嗛挓锛岄潪寮哄娍涓荤嚎鍚庢帓锛屾弧瓒宠嚜鐢卞競鍊硷紝鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮, 褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬{volume_rate_thresholds[1]}"
                     else:
-                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.3:
-                            return False, True, f"闈炲己鍔�10鍒嗛挓锛岄潪寮哄娍涓荤嚎鍚庢帓, 婊¤冻鑷敱甯傚�硷紝褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬0.3"
+                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[0]:
+                            return False, True, f"闈炲己鍔�10鍒嗛挓锛岄潪寮哄娍涓荤嚎鍚庢帓, 婊¤冻鑷敱甯傚�硷紝褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬{volume_rate_thresholds[0]}"
             return True, False, can_buy_result[2]
 
     @classmethod

--
Gitblit v1.8.0