From b664371ed6ee1da20af2e132426d70b3bfc66566 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 01 四月 2024 13:47:10 +0800
Subject: [PATCH] bug修复

---
 l2/l2_transaction_data_manager.py |   28 ++++++++++++++++------------
 1 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/l2/l2_transaction_data_manager.py b/l2/l2_transaction_data_manager.py
index c065ade..c80396f 100644
--- a/l2/l2_transaction_data_manager.py
+++ b/l2/l2_transaction_data_manager.py
@@ -7,7 +7,7 @@
 from db.redis_manager_delegate import RedisUtils
 from l2 import l2_log
 from l2.huaxin import l2_huaxin_util
-from l2.l2_data_util import local_today_sellno_map
+from l2.l2_data_util import local_today_sellno_map, local_today_datas
 
 from log_module import async_log_util
 from log_module.log import hx_logger_l2_transaction_desc, hx_logger_l2_transaction_sell_order
@@ -104,7 +104,7 @@
 
     # 杩斿洖鏈�杩�1s鐨勫ぇ鍗曞崠锛�(鎬诲崠閲戦,[(鍗栧崟鍙�,鎬绘墜鏁�,浠锋牸,锛�'寮�濮嬫椂闂�',涔板崟鍙凤級,锛�'缁撴潫鏃堕棿',涔板崟鍙凤級),...])
     @classmethod
-    def add_transaction_datas(cls, code, datas):
+    def add_transaction_datas(cls, code, datas, buy_exec_index=None):
         # q.append((data['SecurityID'], data['TradePrice'], data['TradeVolume'],
         #           data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'],
         #           data['SellNo'], data['ExecType']))
@@ -119,11 +119,10 @@
             cls.__big_sell_order_info_list_dict[code] = []
 
         sell_no_map = local_today_sellno_map.get(code)
+        total_datas = local_today_datas.get(code)
         if not sell_no_map:
             sell_no_map = {}
         for d in datas:
-            if f"{d[7]}" in sell_no_map:
-                continue
             cls.__latest_sell_order_info_list_dict[code].append(d)
             if code not in cls.__latest_sell_order_dict:
                 cls.__latest_sell_order_dict[code] = [d[7], d[2], d[1], (d[3], d[6]), (d[3], d[6])]
@@ -139,10 +138,13 @@
                     # 澶т簬50w鐨勫崠鍗曟墠浼氫繚瀛�
                     # 澶т簬50w鍔犲叆鍗栧崟
                     if info[1] * info[2] >= 500000:
-                        l2_log.info(code, hx_logger_l2_transaction_sell_order, f"{cls.__latest_sell_order_dict[code]}")
-                        cls.__big_sell_order_ids_dict[code].add(info[0])
-                        cls.__big_sell_order_info_dict[code][info[0]] = info
-                        cls.__big_sell_order_info_list_dict[code].append(info)
+                        if f"{info[0]}"  not in sell_no_map or (buy_exec_index is not None and info[0] > int(
+                                total_datas[buy_exec_index]["val"]["orderNo"])):
+                            l2_log.info(code, hx_logger_l2_transaction_sell_order,
+                                        f"{cls.__latest_sell_order_dict[code]}")
+                            cls.__big_sell_order_ids_dict[code].add(info[0])
+                            cls.__big_sell_order_info_dict[code][info[0]] = info
+                            cls.__big_sell_order_info_list_dict[code].append(info)
 
                     cls.__latest_sell_order_dict[code] = [d[7], d[2], d[1], (d[3], d[6]), (d[3], d[6])]
         latest_time = l2_huaxin_util.convert_time(datas[-1][3], with_ms=True)
@@ -185,10 +187,12 @@
         # 缁熻鏈�杩戠殑澶у崟
         if latest_sell_order_info[1] * latest_sell_order_info[2] >= 500000:
             if latest_sell_order_info[0] not in temp_sell_order_ids:
-                big_sell_orders.append(latest_sell_order_info)
-                temp_sell_order_ids.add(latest_sell_order_info[0])
-                total_sell_info[0] += int(latest_sell_order_info[1] * latest_sell_order_info[2])
-
+                if f"{latest_sell_order_info[0]}" not in sell_no_map or (
+                        buy_exec_index is not None and latest_sell_order_info[0] > int(
+                        total_datas[buy_exec_index]["val"]["orderNo"])):
+                    big_sell_orders.append(latest_sell_order_info)
+                    temp_sell_order_ids.add(latest_sell_order_info[0])
+                    total_sell_info[0] += int(latest_sell_order_info[1] * latest_sell_order_info[2])
         big_sell_orders.reverse()
         total_sell_info[1] = big_sell_orders
         return total_sell_info

--
Gitblit v1.8.0