From 3a87b1c89a76d858e8e7e4e54ff360dc0b8670f5 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 11 九月 2025 16:27:20 +0800
Subject: [PATCH] L撤删除L前撤单与L后后半段撤单

---
 trade/current_price_process_manager.py |   53 +++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 37 insertions(+), 16 deletions(-)

diff --git a/trade/current_price_process_manager.py b/trade/current_price_process_manager.py
index bcf2a4c..e74a537 100644
--- a/trade/current_price_process_manager.py
+++ b/trade/current_price_process_manager.py
@@ -10,18 +10,18 @@
 from log_module.log import logger_l2_codes_subscript, logger_debug
 import constant
 from code_attribute import gpcode_manager
+from third_data import kpl_data_constant
 from third_data.code_plate_key_manager import KPLPlateForbiddenManager
 from third_data.kpl_data_constant import LimitUpCodesBlockRecordManager, LimitUpDataConstant
 from trade.buy_money_count_setting import BuyMoneyUtil
-from trade.buy_radical import radical_buy_data_manager
+from trade.buy_radical import radical_buy_data_manager, new_block_processor
 from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager
 from trade.buy_radical.radical_buy_data_manager import RadicalBuyBlockManager, RadicalBuyDataManager
+from trade.order_statistic import DealAndDelegateWithBuyModeDataManager
 from utils import tool, import_util
 from trade import trade_manager, l2_trade_util, trade_constant
 from trade.trade_data_manager import CodeActualPriceProcessor, RadicalBuyDealCodesManager
 import concurrent.futures
-
-trade_gui = import_util.import_lib("trade.trade_gui")
 
 __actualPriceProcessor = CodeActualPriceProcessor()
 
@@ -30,7 +30,8 @@
 latest_add_codes = set()
 
 
-def compute_code_order(code, top_in_blocks=None, yesterday_limit_up_codes=None, today_history_limit_up_codes=None, top_out_blocks=None):
+def compute_code_order(code, top_in_blocks=None, yesterday_limit_up_codes=None, today_history_limit_up_codes=None,
+                       top_out_blocks=None):
     """
     璁$畻浠g爜鐨勬帓搴�
     @param code:
@@ -51,7 +52,9 @@
         return -1
         # 榛戝悕鍗�
     trade_state = trade_manager.CodesTradeStateManager().get_trade_state_cache(code)
-
+    # 澶勪簬濮旀墭鐘舵�佺殑蹇呴』璁㈤槄
+    if trade_state == trade_constant.TRADE_STATE_BUY_DELEGATED or trade_state == trade_constant.TRADE_STATE_BUY_PLACE_ORDER:
+        return 0
     if l2_trade_util.is_in_forbidden_trade_codes(code):
         # 娌℃湁鎴愪氦
         if trade_state == trade_constant.TRADE_STATE_BUY_SUCCESS:
@@ -59,18 +62,20 @@
             return 998
         else:
             return -1
-
     deal_codes = RadicalBuyDealCodesManager().get_deal_codes()
     result = RadicalBuyDataManager().is_code_can_buy(code, deal_codes)
     if not result[0]:
         if len(result) > 2 and result[2]:
             # 鍙互鎷夐粦
-            l2_trade_util.forbidden_trade(code, result[1])
+            if new_block_processor.is_can_forbidden(code):
+                l2_trade_util.forbidden_trade(code, msg=result[1])
         return -1
 
     # 鎯充拱鍗�
     if gpcode_manager.WantBuyCodesManager().is_in_cache(code):
         return 0
+    else:
+        return -1
     # 闅斿鍗曟帓涓�
     if gpcode_manager.BuyOpenLimitUpCodeManager().is_in_cache(code):
         return 0
@@ -100,7 +105,7 @@
                         return 200
             else:
                 # 娌℃湁杈ㄨ瘑搴︼紝鏂版澘鍧楄闃呭墠3
-                new_blocks = LimitUpCodesBlockRecordManager().get_new_blocks()
+                new_blocks = kpl_data_constant.get_new_blocks(code)
                 if new_blocks and b in new_blocks:
                     info = RadicalBuyBlockManager().get_history_index(code, b, yesterday_limit_up_codes)
                     if info[0] > 0:
@@ -127,6 +132,17 @@
                 continue
             # 鍑�娴佸叆 + 杈ㄨ瘑搴�
             return index + 1
+    # 鍒ゆ柇浠婃棩杈ㄨ瘑搴�
+    try:
+        for b in blocks:
+            if radical_buy_data_manager.RadicalBuyBlockManager.is_today_block_special_codes(code, b,
+                                                                                            yesterday_limit_up_codes):
+                if b in top_in_blocks:
+                    index = top_in_blocks.index(b)
+                    return index + 1
+    except Exception as e:
+        logger_debug.exception(e)
+
     return 10000
 
 
@@ -151,7 +167,7 @@
             code, price = d["code"], float(d["price"])
             temp_prices.append((code, price))
             # 鑾峰彇鏀剁洏浠�
-            pricePre = gpcode_manager.CodePrePriceManager.get_price_pre_cache(code)
+            pricePre = gpcode_manager.CodePrePriceManager().get_price_pre_cache(code)
             if pricePre is not None:
                 # 鏄惁鏄兂涔板崟
                 order_index = compute_code_order(code, top_in_blocks, yesterday_limit_up_codes,
@@ -161,8 +177,8 @@
                     # 鍒涗笟鏉跨殑娑ㄥ箙闇�瑕佹墦鎶�
                     rate = rate / 2
                 if order_index >= 0:
-                    if order_index < 1000 and rate >= 3:
-                        # 娑ㄥ箙澶т簬3%鐨勬墠鑳借闃�
+                    if order_index < 1000 and rate >= 0:
+                        # 娑ㄥ箙澶т簬7%鐨勬墠鑳借闃�
                         _code_list.append((rate, code, order_index))
                     else:
                         _delete_list.append((rate, code, 0))
@@ -188,7 +204,8 @@
         _delete_list = []
         for item in new_code_list:
             trade_state = trade_manager.CodesTradeStateManager().get_trade_state_cache(item[1])
-            if l2_trade_util.is_in_forbidden_trade_codes(item[1]) and trade_state != trade_constant.TRADE_STATE_BUY_SUCCESS:
+            if l2_trade_util.is_in_forbidden_trade_codes(
+                    item[1]) and trade_state != trade_constant.TRADE_STATE_BUY_SUCCESS:
                 # 鎷夐粦鐨勫皻鏈垚浜ょ殑浠g爜
                 _delete_list.append(item)
             elif item[0] < 0:
@@ -216,6 +233,10 @@
         for d in _delete_list:
             del_code_list.append(d[1])
 
+        if del_code_list:
+            async_log_util.info(logger_l2_codes_subscript,
+                                f"({request_id})闇�瑕佸垹闄よ闃呯殑浠g爜锛歿del_code_list}")
+
         if constant.L2_SOURCE_TYPE == constant.L2_SOURCE_TYPE_HUAXIN:
             # 鍗庨懌L2,鑾峰彇鍔犲叆浠g爜鐨勬定鍋滀环
 
@@ -230,8 +251,8 @@
                 dif2 = add_code_set - latest_add_codes
                 if dif2:
                     # 鏂板鍔犵殑璁㈤槄闇�瑕佹媺鍙栦箣鍓嶇殑澶у崟
-                    for c in dif2:
-                        __pre_big_order_deal_thread_pool.submit(radical_buy_data_manager.pull_pre_deal_big_orders, c)
+                    __pre_big_order_deal_thread_pool.submit(radical_buy_data_manager.pull_pre_deal_big_orders_by_codes,
+                                                            dif2)
                 if True:
                     async_log_util.info(logger_l2_codes_subscript,
                                         f"({request_id})棰勫鐞嗘柊澧炶闃呬唬鐮侊細{dif2}")
@@ -239,7 +260,7 @@
                     add_datas = []
                     for d in add_code_list:
                         limit_up_price = gpcode_manager.get_limit_up_price_as_num(d)
-                        min_volume = int(round(50 * 10000 / limit_up_price))
+                        min_volume = int(round(constant.L2_MIN_MONEY / limit_up_price))
                         # 闇�瑕佽闃呯殑鐗规畩鐨勯噺
                         special_volumes = BuyMoneyUtil.get_possible_buy_volumes(limit_up_price)
                         special_volumes |= set([tool.get_buy_volume_by_money(limit_up_price, x) for x in
@@ -250,7 +271,7 @@
                              tool.get_buy_volume(limit_up_price), list(special_volumes)))
                     huaxin_target_codes_manager.HuaXinL2SubscriptCodesManager.push(add_datas, request_id)
             except Exception as e:
-                logging.exception(e)
+                logger_debug.exception(e)
         else:
             pass
 

--
Gitblit v1.8.0