From 0033f43c150e7b226455d207a3e148de21c7a938 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 09 五月 2025 18:39:17 +0800
Subject: [PATCH] bug修复

---
 huaxin_client/l2_client_test.py |   41 ++++++++++++++++-------------------------
 1 files changed, 16 insertions(+), 25 deletions(-)

diff --git a/huaxin_client/l2_client_test.py b/huaxin_client/l2_client_test.py
index 9a250e4..92fece3 100644
--- a/huaxin_client/l2_client_test.py
+++ b/huaxin_client/l2_client_test.py
@@ -4,6 +4,7 @@
 import queue
 import time
 import lev2mdapi
+from l2.huaxin import l2_huaxin_util
 from log_module import log
 from log_module.log import logger_local_huaxin_l2_subscript, logger_system
 from utils import tool
@@ -66,7 +67,7 @@
     def get_big_sell_orders(self):
         return self.__big_sell_orders
 
-    def add_transaction_data_for_accurate(self, data):
+    def add_transaction_data_for_accurate(self, item):
         """
         鑾峰彇绮剧‘鐨勪拱鍗曚俊鎭�
         @param data:
@@ -76,18 +77,10 @@
         def format_timestamp(timestamp):
             time_str = str(timestamp)
             return int(time_str[:5] if time_str[0] == '9' else time_str[:6])
-
-        item = (data["BuyNo"], data["SellNo"], data["TradePrice"], data["TradeVolume"])
-        # item = {"SecurityID": pTransaction['SecurityID'], "TradePrice": pTransaction['TradePrice'],
-        #         "TradeVolume": pTransaction['TradeVolume'],
-        #         "OrderTime": pTransaction['TradeTime'], "MainSeq": pTransaction['MainSeq'],
-        #         "SubSeq": pTransaction['SubSeq'], "BuyNo": pTransaction['BuyNo'],
-        #         "SellNo": pTransaction['SellNo'],
-        #         "ExecType": pTransaction['ExecType'].decode()}
         money = round(item[2] * item[3])
         volume = item[3]
         price = item[2]
-        order_time = data["OrderTime"]
+        order_time = item[4]
         if item[0] not in self.__big_accurate_buy_order_dict:
             # (涔板崟鍙�, 閲�, 閲戦, 鏃堕棿, 鏈�鏂版垚浜や环鏍�)
             self.__big_accurate_buy_order_dict[item[0]] = [item[0], 0, 0, order_time, price]
@@ -100,22 +93,20 @@
         if self.__latest_buy_order and self.__latest_buy_order[0] != item[0]:
             # 鏈夊彲鑳芥槸澶у崟鎴愪氦瀹屾垚锛� 鍒ゆ柇涓婁釜璁㈠崟鏄惁鏄ぇ鍗�
             last_buy_order = self.__big_accurate_buy_order_dict.get(self.__latest_buy_order[0])
-            try:
-                if last_buy_order[2] > 299e4:
-                    self.big_accurate_buy_order_queue.put_nowait(last_buy_order)
-            except Exception as e:
-                print("鏁版嵁锛�", last_buy_order, self.__latest_buy_order, item)
-                raise e
+
+            if last_buy_order[2] > 299e4:
+                self.big_accurate_buy_order_queue.put_nowait(last_buy_order)
+
             # 濡傛灉鏁版嵁杩囧闇�瑕佺Щ闄よ繃闀挎椂闂寸殑灏忛噾棰濇暟鎹�
             accurate_buy_count = len(self.__big_accurate_buy_order_dict.keys())
             if accurate_buy_count > 10000 and accurate_buy_count - self.__last_accurate_buy_count > 2000:
                 # 瓒呰繃1w鏉℃暟鎹笖鏂板2000鏉℃暟鎹�
                 # 瓒呰繃1w鏉℃暟鎹氨瑕佺Щ闄�30鍒嗛挓涔嬪墠鐨勬暟鎹�
-                now_time_int = int(tool.trade_time_add_second(tool.get_now_time_str(), -3600).replace(":", ""))
+                now_time_int = int(
+                    tool.trade_time_add_second(l2_huaxin_util.convert_time(order_time), -3600).replace(":", ""))
                 try:
                     remove_order_nos = [x for x in self.__big_accurate_buy_order_dict if
-                                        now_time_int - format_timestamp(
-                                            self.__big_accurate_buy_order_dict[x][3]) > 0]
+                                        format_timestamp(self.__big_accurate_buy_order_dict[x][3]) < now_time_int]
                     if remove_order_nos:
                         for order_no in remove_order_nos:
                             self.__big_accurate_buy_order_dict.pop(order_no)
@@ -141,11 +132,11 @@
             if accurate_sell_count > 10000 and accurate_sell_count - self.__last_accurate_sell_count > 2000:
                 # 瓒呰繃1w鏉℃暟鎹笖鏂板2000鏉℃暟鎹�
                 # 瓒呰繃1w鏉℃暟鎹氨瑕佺Щ闄�30鍒嗛挓涔嬪墠鐨勬暟鎹�
-                now_time_int = int(tool.trade_time_add_second(tool.get_now_time_str(), -3600).replace(":", ""))
+                now_time_int = int(tool.trade_time_add_second(l2_huaxin_util.convert_time(order_time), -3600).replace(":", ""))
                 try:
                     remove_order_nos = [x for x in self.__big_accurate_sell_order_dict if
-                                        now_time_int - format_timestamp(
-                                            self.__big_accurate_sell_order_dict[x][3]) > 0]
+                                        now_time_int > format_timestamp(
+                                            self.__big_accurate_sell_order_dict[x][3])]
                     if remove_order_nos:
                         for order_no in remove_order_nos:
                             self.__big_accurate_sell_order_dict.pop(order_no)
@@ -153,7 +144,7 @@
                     self.__last_accurate_sell_count = len(self.__big_accurate_sell_order_dict.keys())
 
     def add_transaction_data(self, data):
-        item = (data["BuyNo"], data["SellNo"], data["TradePrice"], data["TradeVolume"])
+        item = (data["BuyNo"], data["SellNo"], data["TradePrice"], data["TradeVolume"], data["OrderTime"])
         # item = {"SecurityID": pTransaction['SecurityID'], "TradePrice": pTransaction['TradePrice'],
         #         "TradeVolume": pTransaction['TradeVolume'],
         #         "OrderTime": pTransaction['TradeTime'], "MainSeq": pTransaction['MainSeq'],
@@ -163,10 +154,10 @@
         money = round(item[2] * item[3])
         volume = item[3]
         price = item[2]
-        order_time = data["OrderTime"]
+        order_time = item[4]
 
         if self.accurate_buy:
-            self.add_transaction_data_for_accurate(data)
+            self.add_transaction_data_for_accurate(item)
 
         if not self.__latest_buy_order:
             # (涔板崟鍙�, 閲�, 閲戦, 鏃堕棿, 鏈�鏂版垚浜や环鏍�)

--
Gitblit v1.8.0