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/trade_manager.py |   48 ++++++++++++++++++++++++++++++++++--------------
 1 files changed, 34 insertions(+), 14 deletions(-)

diff --git a/trade/trade_manager.py b/trade/trade_manager.py
index add8ec3..a7e5414 100644
--- a/trade/trade_manager.py
+++ b/trade/trade_manager.py
@@ -11,7 +11,9 @@
 
 import concurrent.futures
 
+from cancel_strategy.s_l_h_cancel_strategy import CancelRateHumanSettingManager
 from code_attribute import gpcode_manager
+from code_attribute.gpcode_manager import CodesContinueBuyMoneyManager
 from db import mysql_data_delegate as mysql_data, redis_manager_delegate as redis_manager
 from db.mysql_data_delegate import Mysqldb
 from db.redis_manager_delegate import RedisUtils
@@ -30,8 +32,10 @@
 from trade.trade_data_manager import AccountMoneyManager, RadicalBuyDealCodesManager
 from utils import import_util, tool, huaxin_util
 
-trade_gui = import_util.import_lib("trade.trade_gui")
-
+try:
+    trade_gui = import_util.import_lib("trade.trade_gui")
+except:
+    pass
 __db = 2
 __redis_manager = redis_manager.RedisManager(2)
 
@@ -91,6 +95,8 @@
 
 # 浜ゆ槗鐩爣绁ㄦā寮�
 class TradeTargetCodeModeManager:
+    # 鍙拱杈ㄨ瘑搴�
+    MODE_ONLY_BUY_SPECIAL_CODES = 2
     # 鍙拱鎯充拱鍗�
     MODE_ONLY_BUY_WANT_CODES = 1
     # 涔版墍鏈�
@@ -117,7 +123,7 @@
         self.__trade_buy_mode_cache = self.get_mode()
 
     def set_mode(self, mode):
-        if mode != self.MODE_ONLY_BUY_WANT_CODES and mode != self.MODE_BUY_ALL:
+        if mode != self.MODE_ONLY_BUY_WANT_CODES and mode != self.MODE_BUY_ALL and mode != self.MODE_ONLY_BUY_SPECIAL_CODES:
             raise Exception("mode鍙傛暟鍊奸敊璇�")
         self.__trade_buy_mode_cache = mode
         RedisUtils.setex(self.__get_redis(), "trade_buy_mode", tool.get_expire(), mode)
@@ -128,7 +134,7 @@
         # 榛樿璁剧疆涓哄彲浜ゆ槗
         val = RedisUtils.get(cls.__get_redis(), "trade_buy_mode")
         if val is None:
-            return cls.MODE_BUY_ALL
+            return cls.MODE_ONLY_BUY_WANT_CODES
         return int(val)
 
     def get_mode_cache(self):
@@ -415,7 +421,7 @@
     @return:
     """
     price = gpcode_manager.get_limit_up_price(code)
-    __buy(code, price, trade_constant.TRADE_STATE_NOT_TRADE, 0, last_data, last_data["index"],  0, exec_index=exec_index)
+    __buy(code, price, trade_constant.TRADE_STATE_NOT_TRADE, 0, last_data, last_data["index"], 0, exec_index=exec_index)
 
 
 # 涓柇涔板叆
@@ -436,7 +442,14 @@
                                                                 mode))
             if not can_buy:
                 raise Exception(msg)
+            continue_buy_money = CodesContinueBuyMoneyManager().get_continue_buy_money(code)
+            if continue_buy_money:
+                # 璁剧疆浜嗙画涔伴噾棰濈殑
+                money = continue_buy_money
+
             count = tool.get_buy_volume_by_money(price, money)
+            if count < 4 and float(price) < 200:
+                count = 4
 
             # if mode == OrderBeginPosInfo.MODE_RADICAL:
             #     # 婵�杩涗拱鍏ラ噾棰濅负1鎵�
@@ -491,6 +504,12 @@
 
 # 寮�濮嬪彇娑堜拱鍏�
 def start_cancel_buy(code, force=False):
+    """
+    寮�濮嬫挙鍗�
+    @param code:
+    @param force:
+    @return:
+    """
     async_log_util.info(logger_trade, "{} trade_manager.start_cancel_buy 寮�濮�".format(code))
     trade_state = __CodesTradeStateManager.get_trade_state_cache(code)
     try:
@@ -569,16 +588,16 @@
             continue
         # 涔板叆鎴愬姛
         if code is not None and int(data["type"]) == 0:
-            l2_trade_util.forbidden_trade(code, msg="浜ゆ槗鎴愬姛", force=True)
+            if not CodesContinueBuyMoneyManager().get_continue_buy_money(code):
+                l2_trade_util.forbidden_trade(code, msg="浜ゆ槗鎴愬姛", force=True)
             state = CodesTradeStateManager().get_trade_state_cache(code)
             if state != trade_constant.TRADE_STATE_BUY_SUCCESS:
-                CodesTradeStateManager().set_trade_state(code, trade_constant.TRADE_STATE_BUY_SUCCESS)
-                # 鍒犻櫎涔版挙璁板綍鐨勪复鏃朵俊鎭�
-                kp_client_msg_manager.add_msg(code, "涔板叆鎴愪氦")
-                l2_data_manager.TradePointManager().delete_buy_point(code)
-                # 绉婚櫎浜ゆ槗绐楀彛鍒嗛厤
-                if trade_gui is not None:
-                    trade_gui.THSBuyWinManagerNew.cancel_distribute_win_for_code(code)
+                if not CodesContinueBuyMoneyManager().get_continue_buy_money(code):
+                    # 娌¤缃画涔�
+                    CodesTradeStateManager().set_trade_state(code, trade_constant.TRADE_STATE_BUY_SUCCESS)
+                    # 鍒犻櫎涔版挙璁板綍鐨勪复鏃朵俊鎭�
+                    kp_client_msg_manager.add_msg(code, "涔板叆鎴愪氦")
+                    l2_data_manager.TradePointManager().delete_buy_point(code)
             # 浜ゆ槗鎴愬姛鏃堕棿杩囧幓3s涔嬪悗锛屼笖褰撳墠濮旀墭鍒楄〃閲岄潰杩樻湁璇ヤ唬鐮佹暟鎹氨鍐嶆鎵ц鎾ゅ崟
             # 鏂扮増涓嬪崟涓嶅鐞�
             if not constant.IS_NEW_VERSION_PLACE_ORDER:
@@ -657,7 +676,8 @@
 def buy_success(code):
     # 鍔犲叆榛戝悕鍗�
     if not l2_trade_util.is_in_forbidden_trade_codes(code):
-        l2_trade_util.forbidden_trade(code, "buy success", force=True)
+        if not CodesContinueBuyMoneyManager().get_continue_buy_money(code):
+            l2_trade_util.forbidden_trade(code, "buy success", force=True)
         mode = TradePointManager().get_latest_place_order_mode(code)
         if mode is None:
             mode = OrderBeginPosInfo.MODE_NORMAL

--
Gitblit v1.8.0