From 6503f578ea263b18ac01810e07b7acbc82f63a8f Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 15 九月 2025 16:34:17 +0800
Subject: [PATCH] L后不足5笔撤单/建比>=40%时才采用新的下单方式

---
 huaxin_client/l1_client.py |   68 ++++++++++++++-------------------
 1 files changed, 29 insertions(+), 39 deletions(-)

diff --git a/huaxin_client/l1_client.py b/huaxin_client/l1_client.py
index 05e29af..0ee112f 100644
--- a/huaxin_client/l1_client.py
+++ b/huaxin_client/l1_client.py
@@ -9,7 +9,8 @@
 from huaxin_client import socket_util, l1_subscript_codes_manager
 import xmdapi
 from huaxin_client import tool, constant
-from log_module.log import logger_system, logger_local_huaxin_l1, logger_l2_codes_subscript
+from log_module.log import logger_system, logger_local_huaxin_l1, logger_l2_codes_subscript, logger_debug
+from third_data import custom_block_in_money_manager
 from utils import tool as out_tool
 
 ################B绫�##################
@@ -121,20 +122,7 @@
             return
         if pMarketDataField.SecurityName.find("ST") >= 0:
             return
-        close_price = round(pMarketDataField.UpperLimitPrice / out_tool.get_limit_up_rate(pMarketDataField.SecurityID),
-                            2)
-        try:
-            # 娴嬭瘯L1鏁版嵁
-            if pMarketDataField.SecurityID == '600636' or pMarketDataField.SecurityID == '002430' or pMarketDataField.SecurityID == '300466':
-                d = {"SecurityID": pMarketDataField.SecurityID, "PreClosePrice": pMarketDataField.PreClosePrice,
-                     "LastPrice": pMarketDataField.LastPrice, "BidPrice1": pMarketDataField.BidPrice1,
-                     "BidVolume1": pMarketDataField.BidVolume1, "AskVolume1": pMarketDataField.AskVolume1,
-                     "AskPrice1": pMarketDataField.AskPrice1, "UpperLimitPrice": pMarketDataField.UpperLimitPrice,
-                     "UpdateTime": pMarketDataField.UpdateTime, "UpdateMillisec": pMarketDataField.UpdateMillisec}
-                logger_local_huaxin_l1.info(f"L1鏁版嵁锛歿d}")
-        except:
-            pass
-
+        close_price = pMarketDataField.PreClosePrice
         lastPrice = pMarketDataField.LastPrice
         if pMarketDataField.BidPrice1:
             lastPrice = pMarketDataField.BidPrice1
@@ -142,26 +130,19 @@
         if out_tool.get_limit_up_rate(pMarketDataField.SecurityID) > 1.1001:
             # 娑ㄥ仠鏉�20%浠ヤ笂鐨勬墦鎶�
             rate = rate / 2
-
-        # print(pMarketDataField.SecurityID, pMarketDataField.SecurityName, rate, pMarketDataField.Volume)
-
+        # (浠g爜, 鐜颁环, 娑ㄥ箙, 閲�, 褰撳墠鏃堕棿, 涔�1浠�, 涔�1閲�, 涔�2浠�, 涔�2閲�, 鏇存柊鏃堕棿, 鍗�1浠�, 鍗�1閲�)
         level1_data_dict[pMarketDataField.SecurityID] = (
             pMarketDataField.SecurityID, pMarketDataField.LastPrice, rate, pMarketDataField.Volume, time.time(),
-            pMarketDataField.BidPrice1, pMarketDataField.BidVolume1)
-        # print(
-        #     "SecurityID[%s] SecurityName[%s] LastPrice[%.2f] Volume[%d] Turnover[%.2f] BidPrice1[%.2f] BidVolume1[%d] AskPrice1[%.2f] AskVolume1[%d] UpperLimitPrice[%.2f] LowerLimitPrice[%.2f]"
-        #     % (pMarketDataField.SecurityID, pMarketDataField.SecurityName, pMarketDataField.LastPrice,
-        #        pMarketDataField.Volume,
-        #        pMarketDataField.Turnover, pMarketDataField.BidPrice1, pMarketDataField.BidVolume1,
-        #        pMarketDataField.AskPrice1,
-        #        pMarketDataField.AskVolume1, pMarketDataField.UpperLimitPrice, pMarketDataField.LowerLimitPrice))
+            pMarketDataField.BidPrice1, pMarketDataField.BidVolume1, pMarketDataField.BidPrice2,
+            pMarketDataField.BidVolume2, pMarketDataField.UpdateTime, pMarketDataField.AskPrice1,
+            pMarketDataField.AskVolume1)
 
 
 __latest_subscript_codes = set()
 
 
 def __upload_codes_info(queue_l1_w_strategy_r: multiprocessing.Queue, datas):
-    if not tool.is_trade_time():
+    if not tool.is_trade_time() and not tool.is_pre_trade_time():
         return
     # 涓婁紶鏁版嵁
     type_ = "set_target_codes"
@@ -231,8 +212,18 @@
             time.sleep(3)
 
 
-def run(queue_l1_w_strategy_r, queue_l1_r_strategy_w):
-    logger_local_huaxin_l1.info("杩愯l1璁㈤槄鏈嶅姟")
+def run(queue_l1_w_strategy_r, queue_l1_r_strategy_w, fixed_codes=None):
+    """
+    杩愯l1璁㈤槄浠诲姟
+
+    @param queue_l1_w_strategy_r: L1鏂瑰啓锛岀瓥鐣ユ柟璇�
+    @param queue_l1_r_strategy_w: L1鏂硅锛岀瓥鐣ユ柟鍐�
+    @param fixed_codes: 鍥哄畾瑕佽繑鍥炴暟鎹殑浠g爜
+    @return:
+    """
+    if fixed_codes is None:
+        fixed_codes = set()
+    logger_local_huaxin_l1.info(f"杩愯l1璁㈤槄鏈嶅姟锛屽浐瀹氫唬鐮侊細{fixed_codes}")
     codes_sh = []
     codes_sz = []
     for i in range(15):
@@ -287,7 +278,7 @@
 
     # 绛夊緟绋嬪簭缁撴潫
     while True:
-        print("鏁伴噺", len(level1_data_dict))
+        # print("鏁伴噺", len(level1_data_dict))
         try:
             if len(level1_data_dict) < 1:
                 continue
@@ -296,17 +287,17 @@
             # (浠g爜,鐜颁环,娑ㄥ箙,閲�,鏃堕棿)
             list_ = [level1_data_dict[k] for k in level1_data_dict]
             flist = []
-            plist = []
             now_time_int = int(tool.get_now_time_str().replace(":", ""))
-            threshold_rate = constant.L1_MIN_RATE_PRE if now_time_int < int(
-                "094000") else constant.L1_MIN_RATE
+            threshold_rate = constant.L1_MIN_RATE
             for d in list_:
-                if d[2] >= threshold_rate:
-                    # 娑ㄥ箙灏忎簬5%鐨勯渶瑕佸垹闄�
+                if d[2] >= threshold_rate or d[0] in fixed_codes:
+                    # 娑ㄥ箙灏忎簬3%鐨勯渶瑕佸垹闄�
                     flist.append(d)
-                if d[0] in __position_codes:
-                    plist.append(d)
             flist.sort(key=lambda x: x[2], reverse=True)
+            # 灏嗗浐瀹氫唬鐮佺殑鎺掑湪鏈�鍓�
+            for code in fixed_codes:
+                if code in level1_data_dict:
+                    flist.insert(0, level1_data_dict[code])
             # 姝e紡浜ゆ槗涔嬪墠鍏堝鐞嗘瘮杈冨皯鐨勬暟鎹紝涓嶇劧澶勭悊鏃堕棿涔呴�犳垚鏁版嵁鎷ュ牭
             MAX_COUNT = 500
             if now_time_int < int("092600"):
@@ -316,13 +307,12 @@
             elif now_time_int < int("092900"):
                 MAX_COUNT = 400
             datas = flist[:MAX_COUNT]
-            # 灏嗘寔浠撹偂鍔犲叆杩涘幓
-            datas.extend(plist)
             if len(datas) > 0:
                 logger_l2_codes_subscript.info("寮�濮�#鍗庨懌L1涓婁紶浠g爜锛氭暟閲�-{}", len(datas))
                 __upload_codes_info(queue_l1_w_strategy_r, datas)
         except Exception as e:
             logging.exception(e)
+            logger_debug.exception(e)
         finally:
             time.sleep(3)
 

--
Gitblit v1.8.0