From 81f328532e366eef171b71810b221a9294dda78f Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 21 十二月 2023 14:31:58 +0800
Subject: [PATCH] 买入条件调整/L撤调整

---
 l2/l2_data_manager_new.py |   55 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 45 insertions(+), 10 deletions(-)

diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py
index 550d20f..e708f6e 100644
--- a/l2/l2_data_manager_new.py
+++ b/l2/l2_data_manager_new.py
@@ -12,7 +12,8 @@
 from l2.l2_sell_manager import L2MarketSellManager, L2LimitUpSellManager
 from l2.transaction_progress import TradeBuyQueue
 from log_module import async_log_util, log_export
-from third_data import kpl_data_manager, block_info
+from third_data import kpl_data_manager, block_info, history_k_data_util
+from third_data.history_k_data_util import HistoryKDatasUtils
 from utils import global_util, ths_industry_util, tool
 import l2_data_util
 from db import redis_manager_delegate as redis_manager
@@ -22,7 +23,7 @@
 from l2 import l2_data_manager, l2_log, l2_data_source_util, code_price_manager, \
     transaction_progress, cancel_buy_strategy, l2_data_log
 from l2.cancel_buy_strategy import SecondCancelBigNumComputer, HourCancelBigNumComputer, DCancelBigNumComputer, \
-    LCancelBigNumComputer, LatestCancelIndexManager, FastCancelBigNumComputer, LCancelRateManager
+    LCancelBigNumComputer, LatestCancelIndexManager, FastCancelBigNumComputer, LCancelRateManager, GCancelBigNumComputer
 from l2.l2_data_manager import L2DataException, OrderBeginPosInfo
 from l2.l2_data_util import local_today_datas, L2DataUtil, local_today_num_operate_map, local_today_buyno_map, \
     local_latest_datas, local_today_canceled_buyno_map
@@ -221,6 +222,7 @@
     __SecondCancelBigNumComputer = SecondCancelBigNumComputer()
     __HourCancelBigNumComputer = HourCancelBigNumComputer()
     __LCancelBigNumComputer = LCancelBigNumComputer()
+    __GCancelBigNumComputer = GCancelBigNumComputer()
     __TradeStateManager = trade_manager.TradeStateManager()
     __CodesTradeStateManager = trade_manager.CodesTradeStateManager()
     __PauseBuyCodesManager = gpcode_manager.PauseBuyCodesManager()
@@ -557,6 +559,25 @@
                 pass
             return None, ""
 
+        # G鎾�
+        def g_cancel(_buy_single_index, _buy_exec_index):
+            try:
+                b_need_cancel, b_cancel_data, extra_msg = cls.__GCancelBigNumComputer.need_cancel(code,
+                                                                                                  _buy_exec_index,
+                                                                                                  start_index,
+                                                                                                  end_index)
+                if b_need_cancel and b_cancel_data:
+                    return b_cancel_data, f"G鎾�({extra_msg})"
+            except Exception as e:
+                async_log_util.error(logger_l2_error,
+                                     f"G鎾ゅ嚭閿� 鍙傛暟锛歜uy_single_index-{_buy_single_index} buy_exec_index-{_buy_exec_index} 閿欒鍘熷洜锛歿str(e)}")
+                # logger_l2_error.exception(e)
+                async_log_util.exception(logger_l2_error, e)
+            finally:
+                # l2_data_log.l2_time(code, round(t.time() * 1000) - _start_time, "宸蹭笅鍗�-L鎾ゅぇ鍗曡绠�")
+                pass
+            return None, ""
+
         if start_index < 0:
             start_index = 0
 
@@ -573,6 +594,9 @@
         cancel_data, cancel_msg = None, ""
         if order_begin_pos.mode == OrderBeginPosInfo.MODE_FAST:
             cancel_data, cancel_msg = f_cancel(order_begin_pos.buy_single_index, order_begin_pos.buy_exec_index)
+
+        if not cancel_data:
+            cancel_data, cancel_msg = g_cancel(order_begin_pos.buy_single_index, order_begin_pos.buy_exec_index)
 
         # 渚濇澶勭悊
         if not cancel_data:
@@ -942,8 +966,6 @@
         # if cls.__TradeTargetCodeModeManager.get_mode_cache() == TradeTargetCodeModeManager.MODE_ONLY_BUY_WANT_CODES:
         #     return False, True, f"鍙拱鎯充拱鍗曚腑鐨勪唬鐮�"
 
-        if HighIncreaseCodeManager().is_in(code):
-            return False, True, f"娑ㄥ箙杩囬珮锛�5澶╁唴3娆℃定鍋�"
         return cls.can_buy_first(code, limit_up_price)
         # else:
         #     return True, False, "鍦ㄦ兂涔板悕鍗曚腑"
@@ -980,15 +1002,29 @@
             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"
 
-        # 鍓嶄竴澶╃偢鏉夸箣鍚庯紝浠婃棩10:00涔嬪墠鎵嶈兘涓嬪崟
+        # 涓�5涓氦鏄撴棩鏈夌偢鏉�/璺屽仠涔嬪悗
         if k_format and len(k_format) >= 11 and k_format[10]:
-            if now_timestamp > int("100000"):
-                return False, True, f"涓婁釜浜ゆ槗鏃ョ偢鏉�,褰撴棩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 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]})"
+
+        zyltgb = global_util.zyltgb_map.get(code)
+        if zyltgb >= 40 * 100000000:
+            return False, True, f"40浜夸互涓婄殑閮戒笉涔帮紙{zyltgb}锛�"
+
+        if HighIncreaseCodeManager().is_in(code):
+            if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.8:
+                return False, True, f"5澶╁唴3娆℃定鍋滐紝閲忔湭杈惧埌80%锛坽cls.volume_rate_info[code][0]}锛�"
 
         msg_list = []
-        if can_buy_result[3] and now_timestamp <= int("094000"):
+        if now_timestamp <= int("094000"):
             msg_list.append("寮哄娍10鍒嗛挓")
-            zyltgb = global_util.zyltgb_map.get(code)
             # 鐙嫍
             if not can_buy_result[0] and can_buy_result[1]:
                 msg_list.append("鐙嫍")
@@ -1019,7 +1055,6 @@
                     return True, False, can_buy_result[2]
             return True, False, can_buy_result[2]
         else:
-            zyltgb = global_util.zyltgb_map.get(code)
             # 闈炲己鍔�10鍒嗛挓鍙拱涓荤嚎
             if not can_buy_result[0] and can_buy_result[1]:
                 return False, True, f"闈炲己鍔�10鍒嗛挓锛岀嫭鑻椾笉涓嬪崟"

--
Gitblit v1.8.0