From 15199f8e93fe48e6261c99eadf6673d788db3a80 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期日, 17 三月 2024 22:56:10 +0800
Subject: [PATCH] L2进程与策略进程合并

---
 l2/l2_data_manager_new.py |   50 +++++++++++++++++++++++++++++++++-----------------
 1 files changed, 33 insertions(+), 17 deletions(-)

diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py
index d611564..87f4cd0 100644
--- a/l2/l2_data_manager_new.py
+++ b/l2/l2_data_manager_new.py
@@ -29,11 +29,13 @@
     local_latest_datas, local_today_canceled_buyno_map
 import l2.l2_data_util
 from log_module.log import logger_l2_trade_buy, logger_l2_process, logger_l2_error, logger_debug, \
-    logger_l2_not_buy_reasons
+    logger_l2_not_buy_reasons, logger_real_place_order_position
 
 from trade.trade_data_manager import CodeActualPriceProcessor, PlaceOrderCountManager
 
 from trade.trade_manager import TradeTargetCodeModeManager, AccountAvailableMoneyManager, MarketSituationManager
+
+import concurrent.futures
 
 
 class L2DataManager:
@@ -242,6 +244,7 @@
     __PlaceOrderCountManager = PlaceOrderCountManager()
     __CodeNatureRecordManager = code_nature_analyse.CodeNatureRecordManager()
     __MarketSituationManager = MarketSituationManager()
+    __re_compute_threading_pool = concurrent.futures.ThreadPoolExecutor(max_workers=10)
 
     # 鑾峰彇浠g爜璇勫垎
     @classmethod
@@ -334,6 +337,19 @@
             origin_datas.clear()
 
     @classmethod
+    def __recompute_real_order_index(cls, code, pre_real_order_index, order_info):
+        real_order_index = huaxin_delegate_postion_manager.recompute_for_slow_time(code, order_info,
+                                                                                   pre_real_order_index)
+        if real_order_index:
+            exec_data = order_info[2]
+            order_begin_pos = cls.__get_order_begin_pos(
+                code)
+            if order_begin_pos and order_begin_pos.buy_exec_index == exec_data["index"]:
+                cls.set_real_place_order_index(code, real_order_index, order_begin_pos)
+                async_log_util.info(logger_real_place_order_position,
+                                    f"鐪熷疄涓嬪崟浣嶇煫姝o細{code}-{real_order_index}  涓嬪崟鏁版嵁锛歿order_info}")
+
+    @classmethod
     def process_add_datas(cls, code, add_datas, capture_timestamp, __start_time):
         now_time_str = tool.get_now_time_str()
         if len(add_datas) > 0:
@@ -355,12 +371,18 @@
                         #     cls.set_real_place_order_index(code, place_order_index, order_begin_pos.buy_single_index)
                     else:
                         # 鑾峰彇涓嬪崟浣嶇疆
-                        place_order_index = huaxin_delegate_postion_manager.get_l2_place_order_position(code, float(
-                            gpcode_manager.get_limit_up_price(code)), add_datas)
+                        place_order_index, order_info = huaxin_delegate_postion_manager.get_l2_place_order_position(
+                            code, float(
+                                gpcode_manager.get_limit_up_price(code)), add_datas)
                         if place_order_index:
                             order_begin_pos = cls.__get_order_begin_pos(
                                 code)
                             cls.set_real_place_order_index(code, place_order_index, order_begin_pos)
+                            try:
+                                cls.__re_compute_threading_pool.submit(
+                                    cls.__recompute_real_order_index, code, place_order_index, order_info)
+                            except:
+                                pass
                             async_log_util.info(logger_l2_process, "code:{} 鑾峰彇鍒颁笅鍗曠湡瀹炰綅缃細{}", code, place_order_index)
                 except:
                     async_log_util.error(logger_l2_error, f"{code} 澶勭悊鐪熷疄涓嬪崟浣嶇疆鍑洪敊")
@@ -847,11 +869,11 @@
 
         if cls.__PauseBuyCodesManager.is_in_cache(code):
             return False, True, f"璇ヤ唬鐮佽鏆傚仠浜ゆ槗"
-
-        if int(tool.get_now_time_str().replace(":", "")) >= 145700:
+        now_time_int = int(tool.get_now_time_str().replace(":", ""))
+        if  now_time_int>= 145700:
             return False, True, f"14:57鍚庝笉鑳戒氦鏄�"
-
-
+        if  130100>=now_time_int>= 112900:
+            return False, True, f"11:29:00-13:01:00涓嶈兘浜ゆ槗"
 
         limit_up_price = gpcode_manager.get_limit_up_price(code)
 
@@ -868,8 +890,6 @@
         average_rate = cls.__Buy1PriceManager.get_average_rate(code)
         if average_rate and average_rate <= 0.01 and tool.trade_time_sub(tool.get_now_time_str(), "10:30:00") >= 0:
             return False, True, f"鍧囦环娑ㄥ箙({average_rate})灏忎簬1%"
-
-
 
         total_data = local_today_datas.get(code)
         order_begin_pos = cls.__get_order_begin_pos(
@@ -1641,10 +1661,10 @@
                 threshold_num = int(sell_data[1] / (limit_up_price * 100)) // 2
                 threshold_max_num = 1
             #  淇″彿涓轰箣鍓嶆湁寰呮垚浜ょ殑澶у崟锛堜笉鏄鍦ㄦ垚浜わ級
-            trade_index,is_default = cls.__TradeBuyQueue.get_traded_index(code)
+            trade_index, is_default = cls.__TradeBuyQueue.get_traded_index(code)
             if not is_default and trade_index is not None:
-                temp_big_num = int(30000/limit_up_price)
-                for i in range(trade_index+1, buy_single_index):
+                temp_big_num = int(30000 / limit_up_price)
+                for i in range(trade_index + 1, buy_single_index):
                     data = total_datas[i]
                     val = data['val']
                     if not L2DataUtil.is_limit_up_price_buy(val):
@@ -1662,10 +1682,8 @@
                     if left_count > 0:
                         # 瀹夊叏绗旀暟涓庡泭鎷椂闂磋寖鍥翠慨鏀�
                         threshold_count = 3
-                        max_space_time_ms = 9*1000
+                        max_space_time_ms = 9 * 1000
                         break
-
-
 
         if not threshold_num:
             # 鐩爣鎵嬫暟
@@ -1675,12 +1693,10 @@
 
         # place_order_count = trade_data_manager.PlaceOrderCountManager().get_place_order_count(code)
 
-
         # buy_single_time_seconds = L2DataUtil.get_time_as_second(total_datas[buy_single_index]["val"]["time"])
 
         # 鍙互瑙﹀彂涔帮紝褰撴湁娑ㄥ仠涔颁俊鍙锋椂鎵嶄細瑙﹀彂涔�
         trigger_buy = True
-
 
         # 濡傛灉澶у崟鍚湁鐜囧ぇ浜�50%锛屽垯鏃堕棿鍥婃嫭鑼冨洿鎻愰珮鍒�3s
         if max_num_set and origin_count:

--
Gitblit v1.8.0