From 09991e316ce092d0b05a198aad9d58e78e06f69b Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 23 五月 2024 10:55:13 +0800
Subject: [PATCH] bug修复

---
 huaxin_client/l2_client_for_cb.py |   40 +++++++++++++++++++++++++---------------
 1 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/huaxin_client/l2_client_for_cb.py b/huaxin_client/l2_client_for_cb.py
index cee96b9..b5f9a42 100644
--- a/huaxin_client/l2_client_for_cb.py
+++ b/huaxin_client/l2_client_for_cb.py
@@ -12,7 +12,6 @@
 import time
 import concurrent.futures
 
-
 from code_attribute import target_codes_manager
 from code_attribute.history_k_data_util import JueJinApi, JueJinHttpApi
 from huaxin_client import command_manager
@@ -50,8 +49,6 @@
 market_code_dict = {}
 
 
-
-
 class Lev2MdSpi(lev2mdapi.CTORATstpLev2MdSpi):
     special_code_volume_for_order_dict = {}
     # 宸茬粡璁㈤槄鐨勪唬鐮�
@@ -76,9 +73,10 @@
         szse_codes = []
         sse_codes = []
         for code in codes:
-            if code.find("00") == 0 or code.find("30") == 0:
+            market_type = tool.get_market_type(code)
+            if market_type == tool.MARKET_TYPE_SZSE:
                 szse_codes.append(code.encode())
-            elif code.find("60") == 0 or code.find("68") == 0:
+            elif  market_type == tool.MARKET_TYPE_SSE:
                 sse_codes.append(code.encode())
         return sse_codes, szse_codes
 
@@ -279,12 +277,20 @@
             rate = round(
                 (pDepthMarketData['LastPrice'] - pDepthMarketData['PreClosePrice']) / pDepthMarketData['PreClosePrice'],
                 4)
+            # 浠g爜, 鏈�杩戠殑浠锋牸, 娑ㄥ箙, 涔�1浠凤紝 涔�1閲�, 鎴愪氦鎬婚噺, 濮旀墭涔板叆鎬婚噺, 濮旀墭鍗栧嚭鎬婚噺
+
+            market_call_back_queue.put_nowait((pDepthMarketData['SecurityID'], pDepthMarketData['LastPrice'], rate,
+                                               pDepthMarketData['BidPrice1'], pDepthMarketData['BidVolume1'],
+                                               pDepthMarketData['TotalVolumeTrade'], pDepthMarketData['TotalBidVolume'], pDepthMarketData['TotalAskVolume']))
             code = pDepthMarketData['SecurityID']
             if code.find("00") == 0 or code.find("60") == 0:
                 if rate >= 0.05:
                     self.__high_rate_codes.add(code)
                 else:
                     self.__high_rate_codes.discard(code)
+            elif code.find("11") == 0 or code.find("12") == 0:
+                # 杩囨护鍙浆鍊�
+                pass
             else:
                 if rate >= 0.10:
                     self.__high_rate_codes.add(code)
@@ -383,29 +389,32 @@
     鍒濆鍖栨暟鎹�
     :return:
     """
-    codes = []
+    market_codes = []
     # 鑾峰彇鐩爣浠g爜
     for i in range(3):
         try:
-            codes = target_codes_manager.get_subscript_codes()
-            if codes:
+            underlying_codes = target_codes_manager.get_subscript_underlying_codes()
+            cb_codes = target_codes_manager.get_subscript_cb_codes()
+            if underlying_codes and cb_codes:
+                market_codes.extend(underlying_codes)
+                market_codes.extend(cb_codes)
                 break
         except Exception as e:
             logger_system.exception(e)
             time.sleep(5)
-    logger_system.info(f'鍙浆鍊烘鑲℃暟閲忥細{len(codes)}')
-    if codes:
+    logger_system.info(f'璁㈤槄琛屾儏鏁伴噺锛歿len(market_codes)}')
+    if market_codes:
         # 鑾峰彇鐩爣浠g爜鐨勬敹鐩樹环
         pre_price_dict = {}
         for i in range(3):
             try:
-                pre_price_dict = get_pre_price(codes)
+                pre_price_dict = get_pre_price(market_codes)
                 if pre_price_dict:
                     break
             except Exception as e:
                 logger_system.exception(e)
                 time.sleep(5)
-        logger_system.info(f'鍙浆鍊烘鑲℃槰鏃ユ敹鐩樹环鏁伴噺锛歿len(codes)}')
+        logger_system.info(f'鏄ㄦ棩鏀剁洏浠锋暟閲忥細{len(market_codes)}')
         if pre_price_dict:
             for k in pre_price_dict:
                 if k.find("00") == 0 or k.find("60") == 0:
@@ -413,7 +422,7 @@
                 else:
                     limit_up_price = tool.to_price(decimal.Decimal(str(pre_price_dict[k])) * decimal.Decimal("1.2"))
                 Lev2MdSpi.limit_up_price_dict[k] = round(float(limit_up_price), 2)
-    return codes
+    return market_codes
 
 
 def start_sub_high_price():
@@ -425,7 +434,7 @@
         time.sleep(3)
 
 
-def run(trade_call_back_queue_: multiprocessing.Queue) -> None:
+def run(trade_call_back_queue_: multiprocessing.Queue, market_call_back_queue_: multiprocessing.Queue) -> None:
     """
     鍏堣闃呮墍鏈夌殑L2market琛屾儏鏁版嵁锛岀瓫閫夊嚭姣旇緝澶х殑娑ㄥ箙锛堜富鏉�>5%,绉戝垱鏉�/鍒涗笟鏉�>10%锛夌殑绁紝鐒跺悗璁㈤槄鍏朵氦鎴愪氦L2鏁版嵁
     :param trade_call_back_queue_: 娣诲姞鐨勫唴瀹规牸寮忎负锛氾紙浠g爜,浜ゆ槗鏃堕棿锛�
@@ -436,8 +445,9 @@
     try:
         # log.close_print()
         # 鍒濆鍖�
-        global trade_call_back_queue
+        global trade_call_back_queue, market_call_back_queue
         trade_call_back_queue = trade_call_back_queue_
+        market_call_back_queue = market_call_back_queue_
         codes = __init_data()
         __init_l2(codes)
 

--
Gitblit v1.8.0