From 10e175f0b00ba76fc84e1478489bdce78f1a40ec Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 22 五月 2025 14:12:28 +0800
Subject: [PATCH] 下单sinfo修改/加想的票累计大单成交足够后加红

---
 l2/l2_data_manager_new.py |   60 +++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 39 insertions(+), 21 deletions(-)

diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py
index 5b18d74..b1f6617 100644
--- a/l2/l2_data_manager_new.py
+++ b/l2/l2_data_manager_new.py
@@ -190,7 +190,8 @@
             # 濡傛灉鏄定鍋滀拱鎾や俊鍙烽渶瑕佺湅鏁版嵁浣嶇疆鏄惁姣斿紑濮嬪鐞嗘椂闂存棭
             if L2DataUtil.is_limit_up_price_buy_cancel(data["val"]):
                 # 鑾峰彇涔板叆淇″彿
-                buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(total_datas[i], buyno_map)
+                buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(total_datas[i],
+                                                                                                    buyno_map)
                 if buy_index is not None and buy_index < begin_pos:
                     continue
 
@@ -328,9 +329,11 @@
     def set_real_place_order_index(cls, code, index, order_begin_pos: OrderBeginPosInfo, last_data):
         trade_record_log_util.add_real_place_order_position_log(code, index, order_begin_pos.buy_single_index)
         total_datas = local_today_datas.get(code)
-        use_time = tool.trade_time_sub_with_ms(L2DataUtil.get_time_with_ms(total_datas[index]["val"]) , L2DataUtil.get_time_with_ms(
-            total_datas[order_begin_pos.buy_exec_index]["val"]))
-        trade_record_log_util.add_place_order_use_time(code, f"鎵ц浣嶆椂闂达細{L2DataUtil.get_time_with_ms(total_datas[order_begin_pos.buy_exec_index]['val'])} 鑰楁椂锛歿use_time}")
+        use_time = tool.trade_time_sub_with_ms(L2DataUtil.get_time_with_ms(total_datas[index]["val"]),
+                                               L2DataUtil.get_time_with_ms(
+                                                   total_datas[order_begin_pos.buy_exec_index]["val"]))
+        trade_record_log_util.add_place_order_use_time(code,
+                                                       f"鎵ц浣嶆椂闂达細{L2DataUtil.get_time_with_ms(total_datas[order_begin_pos.buy_exec_index]['val'])} 鑰楁椂锛歿use_time}")
         l2_log.debug(code, "璁剧疆鐪熷疄涓嬪崟浣嶏細{}", index)
         cancel_buy_strategy.set_real_place_position(code, index, order_begin_pos.buy_single_index, is_default=False)
         # 鑾峰彇鐪熷疄涓嬪崟浣嶇疆涔嬪悗闇�瑕佸垽鏂璅鎾�
@@ -1943,7 +1946,8 @@
             total_datas = local_today_datas[code]
             limit_up_price = gpcode_manager.get_limit_up_price_as_num(code)
             bigger_money = l2_data_util.get_big_money_val(limit_up_price, tool.is_ge_code(code))
-            min_num = int(bigger_money / limit_up_price / 100)
+            bigger_money_num, current_min_num, total_min_num = int(bigger_money / limit_up_price / 100), int(
+                bigger_money / limit_up_price / 100), int(5000 / limit_up_price)
 
             refer_sell_data = L2MarketSellManager().get_refer_sell_data(code, radical_data[3])
             # 鍙傝�冩�诲崠棰�
@@ -1959,7 +1963,8 @@
                                                                                              is_almost_open_limit_up=
                                                                                              radical_data[5])
             # 缂轰箯鐨勫ぇ鍗曢噾棰�
-            lack_money = big_order_deal_enough_result[3]
+            current_lack_money = int(big_order_deal_enough_result[5])
+            total_lack_money = int(big_order_deal_enough_result[6])
             # 濡傛灉鏈夊ぇ鍗曟垚浜ゅ氨涓嶉渶瑕佺湅澶у崟
             if constant.CAN_RADICAL_BUY_NEED_BIG_ORDER_EVERYTIME:
                 # 姣忔涓嬪崟閮介渶瑕佸ぇ鍗�
@@ -1970,10 +1975,11 @@
                     # 60s浠ヤ笂灏变笉涓嬪崟浜�
                     return False, None, "璺濈涓婃缁熻澶у崟鏃堕棿杩囧幓60s", set()
 
-            if lack_money == 0:
-                if not tool.is_sh_code(code):
-                    # 闈炰笂璇佺殑绁ㄧ湅50w
-                    min_num = int(5000 / limit_up_price)
+            if max(current_lack_money, total_lack_money) <= 0:
+                # 宸茬粡涓嶇己灏戝ぇ鍗曚簡
+                # if not tool.is_sh_code(code):
+                # 闈炰笂璇佺殑绁ㄧ湅50w
+                current_min_num = int(5000 / limit_up_price)
             # 濡傛灉绱澶у崟鎴愪氦瓒冲锛屽彧闇�鐪�50w
             # if big_order_deal_enough_result[4]:
             #     min_num = int(5000 / limit_up_price)
@@ -1992,8 +1998,6 @@
                 val = data["val"]
                 if not L2DataUtil.is_limit_up_price_buy(val):
                     continue
-                if val["num"] < min_num:
-                    continue
                 # 鎾ゅ崟涓嶇畻
                 left_count = l2_data_source_util.L2DataSourceUtils.get_limit_up_buy_no_canceled_count_v2(code, i,
                                                                                                          total_datas,
@@ -2008,23 +2012,35 @@
                         # 鍒ゆ柇鏄惁涓哄ぇ鍗�
                         order_money = dealing_active_order_info[2] + round(val["price"], 2) * val["num"] * 100
                         if order_money >= bigger_money:
-                            lack_money -= order_money
-                            watch_indexes.add(i)
-                            if lack_money < 0:
+                            if val["num"] >= bigger_money_num:
+                                watch_indexes.add(i)
+                            if val["num"] >= current_min_num:
+                                current_lack_money -= order_money
+                            if val["num"] >= total_min_num:
+                                total_lack_money -= order_money
+                            if max(current_lack_money, total_lack_money) < 0:
                                 single_index = i
                                 break
 
                 if int(val["orderNo"]) <= radical_data[1]:
                     # 涓诲姩涔板崟鍚庣殑鏁版嵁涓嶇畻
                     continue
-                watch_indexes.add(i)
-                lack_money -= round(val["price"], 2) * val["num"] * 100
-                if lack_money < 0:
+
+                if val["num"] >= bigger_money_num:
+                    watch_indexes.add(i)
+
+                if val["num"] >= current_min_num:
+                    current_lack_money -= round(val["price"], 2) * val["num"] * 100
+
+                if val["num"] >= total_min_num:
+                    total_lack_money -= round(val["price"], 2) * val["num"] * 100
+
+                if max(current_lack_money, total_lack_money) < 0:
                     single_index = i
                     break
             if single_index is not None:
                 return True, single_index, f"鏈夊ぇ鍗�,澶у崟鎯呭喌锛歿big_order_deal_enough_result[1]}", watch_indexes
-            return False, None, f"澶у崟涓嶈冻锛歿trade_index}-{end_index}  缂哄皯鐨勫ぇ鍗�-{lack_money}  澶у崟鎯呭喌锛歿big_order_deal_enough_result[1]}", watch_indexes
+            return False, None, f"澶у崟涓嶈冻锛歿trade_index}-{end_index}  缂哄皯鐨勫ぇ鍗�-{max(current_lack_money, total_lack_money)}  澶у崟鎯呭喌锛歿big_order_deal_enough_result[1]}", watch_indexes
 
         radical_data = RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict.get(code)
         record_codes = radical_buy_data_manager.BlockPlaceOrderRecordManager().get_codes()
@@ -2245,7 +2261,8 @@
                                 f"{code}鑾峰彇鍒颁拱鍏ユ墽琛岀偣(蹇�熶拱鍏�)锛歿i} 缁熻绾拱鎵嬫暟锛歿buy_nums} 鐩爣绾拱鎵嬫暟锛歿threshold_num} 缁熻绾拱鍗曟暟锛歿buy_count}")
             elif L2DataUtil.is_limit_up_price_buy_cancel(_val):
                 # 鍒ゆ柇涔板叆浣嶇疆鏄惁鍦ㄤ拱鍏ヤ俊鍙蜂箣鍓�
-                buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(total_datas[i], buy_no_map)
+                buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(total_datas[i],
+                                                                                                    buy_no_map)
                 if buy_index is not None:
                     # 鎵惧埌涔版挙鏁版嵁鐨勪拱鍏ョ偣
                     if buy_index >= buy_single_index:
@@ -2385,7 +2402,8 @@
                                 f"{code}鑾峰彇鍒颁拱鍏ユ墽琛岀偣(绉瀬涓嬪崟)锛歿i} 缁熻绾拱鎵嬫暟锛歿buy_nums} 鐩爣绾拱鎵嬫暟锛歿threshold_num} 缁熻绾拱鍗曟暟锛歿buy_count}")
             elif L2DataUtil.is_limit_up_price_buy_cancel(_val):
                 # 鍒ゆ柇涔板叆浣嶇疆鏄惁鍦ㄤ拱鍏ヤ俊鍙蜂箣鍓�
-                buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(total_datas[i], buyno_map)
+                buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(total_datas[i],
+                                                                                                    buyno_map)
                 if buy_index is not None:
 
                     # 鎵惧埌涔版挙鏁版嵁鐨勪拱鍏ョ偣

--
Gitblit v1.8.0