From 97ec997e855faee25f8f2e35734f87afa5af6f95 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 27 八月 2024 17:15:21 +0800
Subject: [PATCH] 9:25之前的订阅数据处理

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

diff --git a/huaxin_client/l1_client.py b/huaxin_client/l1_client.py
index 558f08e..05e29af 100644
--- a/huaxin_client/l1_client.py
+++ b/huaxin_client/l1_client.py
@@ -123,7 +123,22 @@
             return
         close_price = round(pMarketDataField.UpperLimitPrice / out_tool.get_limit_up_rate(pMarketDataField.SecurityID),
                             2)
-        rate = round((pMarketDataField.LastPrice - close_price) * 100 / close_price, 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
+
+        lastPrice = pMarketDataField.LastPrice
+        if pMarketDataField.BidPrice1:
+            lastPrice = pMarketDataField.BidPrice1
+        rate = round((lastPrice - close_price) * 100 / close_price, 2)
         if out_tool.get_limit_up_rate(pMarketDataField.SecurityID) > 1.1001:
             # 娑ㄥ仠鏉�20%浠ヤ笂鐨勬墦鎶�
             rate = rate / 2
@@ -165,16 +180,9 @@
         logger_local_huaxin_l1.info(f"({request_id})鏂板鍔犺闃呯殑浠g爜锛歿add_codes}")
 
 
-is_re_subscript = False
-
-
 # 閲嶆柊璁㈤槄浠g爜
 def re_subscript(spi: MdSpi):
     try:
-        global is_re_subscript
-        if is_re_subscript:
-            return
-        is_re_subscript = True
         codes_sh, codes_sz = l1_subscript_codes_manager.request_l1_subscript_target_codes()
         if len(codes_sh) > 100 and len(codes_sz) > 100:
             logger_local_huaxin_l1.info(f"閲嶆柊璁㈤槄 sh-{len(codes_sh)} sz-{len(codes_sz)}")
@@ -201,6 +209,26 @@
             pass
         finally:
             time.sleep(1)
+
+
+def __run_subscript_task(spi):
+    """
+    杩愯璁㈤槄浠诲姟锛屽湪9:19鍒�9:29涔嬮棿寮�濮嬭闃�
+    @return:
+    """
+    is_re_subscript = False
+    while True:
+        try:
+            # 鍒ゆ柇鏄惁闇�瑕侀噸鏂拌闃�
+            if tool.is_pre_trade_time():
+                re_subscript(spi)
+                is_re_subscript = True
+            if is_re_subscript:
+                break
+        except:
+            pass
+        finally:
+            time.sleep(3)
 
 
 def run(queue_l1_w_strategy_r, queue_l1_r_strategy_w):
@@ -254,6 +282,9 @@
     #     "002292", 8.06, 9.96, 969500 * 100, time.time())
 
     threading.Thread(target=__read_from_strategy, args=(queue_l1_r_strategy_w,), daemon=True).start()
+
+    threading.Thread(target=__run_subscript_task, args=(spi,), daemon=True).start()
+
     # 绛夊緟绋嬪簭缁撴潫
     while True:
         print("鏁伴噺", len(level1_data_dict))
@@ -294,15 +325,6 @@
             logging.exception(e)
         finally:
             time.sleep(3)
-            try:
-                # 鍒ゆ柇鏄惁闇�瑕侀噸鏂拌闃�
-                if tool.is_pre_trade_time():
-                    re_subscript(spi)
-                else:
-                    global is_re_subscript
-                    is_re_subscript = False
-            except:
-                pass
 
     # 閲婃斁鎺ュ彛瀵硅薄
     api.Release()

--
Gitblit v1.8.0