From 2f2516749615da866e96d8d24e499b7ecbb63a3e Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 23 六月 2025 12:28:52 +0800
Subject: [PATCH] 默认交易模式变更/真实下单位置计算位置修改

---
 l2/l2_data_source_util.py |   69 +++++++++++++++++++++++++++++-----
 1 files changed, 58 insertions(+), 11 deletions(-)

diff --git a/l2/l2_data_source_util.py b/l2/l2_data_source_util.py
index 85893f6..4288c1b 100644
--- a/l2/l2_data_source_util.py
+++ b/l2/l2_data_source_util.py
@@ -2,6 +2,7 @@
 L2鏁版嵁婧簮
 """
 import constant
+from log_module.log import logger_l2_error
 from utils import tool
 
 
@@ -65,7 +66,7 @@
         for bd in buy_datas:
             # 鏍规嵁璁㈠崟鍙峰仛鍖归厤
             if bd["val"]["orderNo"] == cancel_data["val"]["orderNo"]:
-                return bd
+                return bd["index"]
         return None
 
     # 鍚岃姳椤烘笭閬撶殑L2锛屾牴鎹拱鎾ゆ暟鎹煡鎵句拱鍏ユ暟鎹�
@@ -124,15 +125,26 @@
     def get_buy_index_with_cancel_data(cls, code, cancel_data, local_today_num_operate_map):
         key = "{}-{}-{}".format(cancel_data["val"]["num"], "1", cancel_data["val"]["price"])
         cancel_datas = local_today_num_operate_map.get(key)
-        try:
-            cancel_datas.sort(key=lambda t: t["index"])
-        except Exception as e:
-            print("娴嬭瘯")
-        for item in cancel_datas:
-            # 鎻愬墠鍋氳绠�
-            cls.__get_buy_index_with_cancel_data(code, item, local_today_num_operate_map)
+        if cancel_datas:
+            try:
+                cancel_datas.sort(key=lambda t: t["index"])
+            except Exception as e:
+                # print("娴嬭瘯")
+                pass
+            for item in cancel_datas:
+                # 鎻愬墠鍋氳绠�
+                cls.__get_buy_index_with_cancel_data(code, item, local_today_num_operate_map)
 
         return cls.__get_buy_index_with_cancel_data(code, cancel_data, local_today_num_operate_map)
+
+    # 鏍规嵁涔版挙鏁版嵁璁$畻涔板叆鏁版嵁锛堝崕閼師鐢烲2鏁版嵁閫傜敤锛�
+    @classmethod
+    def get_buy_index_with_cancel_data_v2(cls, cancel_data, buyno_map):
+        order_no = str(cancel_data["val"]["orderNo"])
+        buy_data = buyno_map.get(order_no)
+        if buy_data:
+            return buy_data["index"]
+        return None
 
     # 鑾峰彇娌℃挙鐨勭瑪鏁�
     @classmethod
@@ -140,8 +152,8 @@
         data = None
         try:
             data = total_data[index]
-        except:
-            print("")
+        except Exception as e:
+            logger_l2_error.error(f"鏈壘鍒颁拱鍏ョ储寮曞搴旂殑鏁版嵁锛歩ndex-{index} total_data闀垮害-{len(total_data) if total_data else 0} 閿欒鍘熷洜锛歿str(e)}")
         val = data["val"]
         # 鍒ゆ柇褰撳墠涔版槸鍚﹀凡缁忎拱鎾�
         cancel_datas = local_today_num_operate_map.get(
@@ -149,7 +161,6 @@
         canceled = False
         if cancel_datas:
             for cancel_data in cancel_datas:
-
                 buy_index = cls.get_buy_index_with_cancel_data(code, cancel_data, local_today_num_operate_map)
                 if buy_index == index:
                     canceled = True
@@ -162,6 +173,42 @@
             return count
         return 0
 
+        # 鑾峰彇娌℃挙鐨勭瑪鏁�
+
+    # 鑾峰彇娑ㄥ仠涔版病鏈夋挙鍗曠殑鏁伴噺
+    @classmethod
+    def get_limit_up_buy_no_canceled_count_v2(cls, code, index, total_data, canceled_buyno_map):
+        data = None
+        try:
+            data = total_data[index]
+        except Exception as e:
+            logger_l2_error.error(
+                f"鏈壘鍒颁拱鍏ョ储寮曞搴旂殑鏁版嵁锛歩ndex-{index} total_data闀垮害-{len(total_data) if total_data else 0} 閿欒鍘熷洜锛歿str(e)}")
+        val = data["val"]
+        order_no = str(val["orderNo"])
+        canceled_data = canceled_buyno_map.get(order_no)
+        if canceled_data:
+            return data["re"] - canceled_data["re"]
+        else:
+            return data["re"]
+
+    @classmethod
+    def get_limit_up_buy_canceled_data_v2(cls, code, index, total_data, canceled_buyno_map):
+        data = None
+        try:
+            data = total_data[index]
+        except Exception as e:
+            logger_l2_error.error(
+                f"鏈壘鍒颁拱鍏ョ储寮曞搴旂殑鏁版嵁锛歩ndex-{index} total_data闀垮害-{len(total_data) if total_data else 0} 閿欒鍘熷洜锛歿str(e)}")
+        val = data["val"]
+        order_no = str(val["orderNo"])
+        canceled_data = canceled_buyno_map.get(order_no)
+        if canceled_data:
+            return canceled_data
+        else:
+            return None
+
+
 # if __name__ == "__main__":
 #     code = "000925"
 #     l2_data_util.load_l2_data(code)

--
Gitblit v1.8.0