From effdce8f3786e640e371d718190233adbc596460 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 09 九月 2024 17:27:40 +0800
Subject: [PATCH] 撤单传入撤单类型

---
 l2/l2_data_manager_new.py |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py
index 6ec5472..dcfb8a0 100644
--- a/l2/l2_data_manager_new.py
+++ b/l2/l2_data_manager_new.py
@@ -328,7 +328,7 @@
         try:
             cancel_result = cancel_buy_strategy.FCancelBigNumComputer().need_cancel_for_deal_fast(code)
             if cancel_result[0]:
-                L2TradeDataProcessor.cancel_buy(code, f"F鎾�:{cancel_result[1]}")
+                L2TradeDataProcessor.cancel_buy(code, f"F鎾�:{cancel_result[1]}", cancel_type=trade_constant.CANCEL_TYPE_F)
             else:
                 l2_log.f_cancel_debug(code, f"鑾峰彇鐪熷疄鎴愪氦浣嶇殑F鎾ゆ湭鐢熸晥锛歿cancel_result[1]}")
         except Exception as e:
@@ -660,25 +660,30 @@
         # 榛樿閲忎负0.2
         if order_begin_pos.buy_volume_rate is None:
             order_begin_pos.buy_volume_rate = 0.2
-        cancel_data, cancel_msg = None, ""
+        cancel_data, cancel_msg, cancel_type = None, "", None
         if not cancel_data:
             cancel_data, cancel_msg = g_cancel(order_begin_pos.buy_single_index, order_begin_pos.buy_exec_index)
+            cancel_type = trade_constant.CANCEL_TYPE_G
         # 渚濇澶勭悊
         if not cancel_data:
             cancel_data, cancel_msg = l_cancel(order_begin_pos.buy_single_index, order_begin_pos.buy_exec_index)
+            cancel_type = trade_constant.CANCEL_TYPE_L
         # B鎾�
         if not cancel_data:
             cancel_data, cancel_msg = b_cancel(order_begin_pos.buy_single_index, order_begin_pos.buy_exec_index)
+            cancel_type = trade_constant.CANCEL_TYPE_G
         if not cancel_data:
             cancel_data, cancel_msg = h_cancel(order_begin_pos.buy_single_index, order_begin_pos.buy_exec_index)
+            cancel_type = trade_constant.CANCEL_TYPE_H
         # J鎾�
         if not cancel_data:
             cancel_data, cancel_msg = j_cancel(order_begin_pos.buy_single_index, order_begin_pos.buy_exec_index)
+            cancel_type = trade_constant.CANCEL_TYPE_J
 
         if cancel_data and not DCancelBigNumComputer().has_auto_cancel_rules(code):
             l2_log.debug(code, "瑙﹀彂鎾ゅ崟锛屾挙鍗曚綅缃細{} 锛屾挙鍗曞師鍥狅細{}", cancel_data["index"], cancel_msg)
             # 鎾ゅ崟
-            cls.cancel_buy(code, cancel_msg, cancel_index=cancel_data["index"])
+            cls.cancel_buy(code, cancel_msg, cancel_index=cancel_data["index"], cancel_type=cancel_type)
             # 鎾ゅ崟鎴愬姛锛岀户缁绠椾笅鍗�
             cls.__process_not_order(code, cancel_data["index"] + 1, end_index, capture_time, is_first_code)
         else:
@@ -1321,10 +1326,14 @@
                 pass
 
     @classmethod
-    def cancel_buy(cls, code, msg=None, source="l2", cancel_index=None):
+    def cancel_buy(cls, code, msg=None, source="l2", cancel_index=None, cancel_type=None):
         # 鏄惁鏄氦鏄撻槦鍒楄Е鍙�
         order_begin_pos = cls.__get_order_begin_pos(
             code)
+        # 婵�杩涗笅鍗曞彧鏈塋鎾よ兘鎾ゅ崟
+        if order_begin_pos and order_begin_pos.mode == OrderBeginPosInfo.MODE_RADICAL and cancel_type not in {trade_constant.CANCEL_TYPE_L,trade_constant.CANCEL_TYPE_L_UP, trade_constant.CANCEL_TYPE_L_DOWN}:
+            return False
+
         total_datas = local_today_datas.get(code)
         if not total_datas:
             return False

--
Gitblit v1.8.0