From 077e12531a7b005e4e89a30c789d3de7c6201e82 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 13 八月 2024 17:43:12 +0800
Subject: [PATCH] 新P撤

---
 l2/cancel_buy_strategy.py |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/l2/cancel_buy_strategy.py b/l2/cancel_buy_strategy.py
index 37744a1..e6988cd 100644
--- a/l2/cancel_buy_strategy.py
+++ b/l2/cancel_buy_strategy.py
@@ -22,7 +22,7 @@
 from utils import tool
 from l2.transaction_progress import TradeBuyQueue
 from trade import trade_queue_manager, l2_trade_factor, trade_manager, trade_data_manager
-from l2 import l2_log, l2_data_source_util
+from l2 import l2_log, l2_data_source_util, code_price_manager
 from l2.l2_data_util import L2DataUtil, local_today_num_operate_map, local_today_datas, local_today_buyno_map, \
     local_today_canceled_buyno_map
 from log_module.log import logger_buy_1_volumn, logger_l2_error
@@ -221,6 +221,8 @@
     __redis_manager = redis_manager.RedisManager(0)
     __real_order_index_cache = {}
     __max_buy_order_num_cache = {}
+    # 涓嬪崟璺濈澶繙璁$畻
+    __far_away_computed_cache = {}
 
     __instance = None
 
@@ -284,6 +286,7 @@
     # 璁剧疆鐪熷疄鐨勪笅鍗曚綅缃�
     def set_real_order_index(self, code, index, is_default):
         self.__set_real_order_index(code, index, is_default)
+        self.__far_away_computed_cache[code] = False
         # if not is_default and code.find("60") == 0:
         try:
             # 缁熻鏈垚浜ょ殑鏈�澶у崟
@@ -431,6 +434,17 @@
         total_count, total_num = L2DataComputeUtil.compute_left_buy_order(code, trade_index, real_order_index,
                                                                           limit_up_price, min_money)
 
+        # 涓嬪崟鍚�3绉掞紝鎺掓挙姣斾緥鈮�65%鍒欐挙鎺夛紝瑙嗕负P鎾ょ殑涓�绉嶏紝鎺掑緱澶悗浜嗐��
+        if sub_time > 3 and not self.__far_away_computed_cache.get(code):
+            self.__far_away_computed_cache[code] = True
+            # 鎴愪氦杩涘害浣嶅埌鐪熷疄涓嬪崟浣嶇殑浣嶇疆杩囪繙
+            total_count_, total_num_ = L2DataComputeUtil.compute_left_buy_order(code, trade_index, real_order_index,
+                                                                                limit_up_price, 500000)
+            # 鑾峰彇涔�1閲戦
+            buy1_money = code_price_manager.Buy1PriceManager().get_latest_buy1_money(code)
+            if buy1_money:
+                if total_num_ * limit_up_price * 100 > buy1_money * 0.65:
+                    return True, f"P鎾わ細鎴愪氦浣嶇疆璺濈涓嬪崟浣嶇疆澶繙 鎴愪氦浣�-{trade_index} 涓嬪崟浣�-{real_order_index} 涔�1-{buy1_money}"
         min_time_s, max_time_s = 2, 30
         if total_num * limit_up_price >= 299 * 100:
             min_time_s, max_time_s = 30, 60

--
Gitblit v1.8.0