From 23361ac1cacec70b840f497cc35d2f7a5de66387 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 28 十一月 2024 19:11:00 +0800
Subject: [PATCH] redis接口本地化/扫入策略修改

---
 l2/l2_data_manager_new.py |   62 ++++++++++++++++++-------------
 1 files changed, 36 insertions(+), 26 deletions(-)

diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py
index 64d85b7..9c4d3b4 100644
--- a/l2/l2_data_manager_new.py
+++ b/l2/l2_data_manager_new.py
@@ -2075,45 +2075,55 @@
             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)
-            # 濡傛灉鏈夊ぇ鍗曟垚浜ゅ氨涓嶉渶瑕佺湅澶у崟
-            total_deal_money = 0
-            if constant.CAN_RADICAL_BUY_NEED_BIG_ORDER_EVERYTIME:
-                # 姣忔涓嬪崟閮介渶瑕佸ぇ鍗�
-                current_big_order_deal_money_info = EveryLimitupBigDealOrderManager.get_big_buy_deal_order_money_info(
-                    code)
-                if current_big_order_deal_money_info:
-                    total_deal_money = current_big_order_deal_money_info[0]
-                if current_big_order_deal_money_info and tool.trade_time_sub(tool.get_now_time_str(),
-                                                                             current_big_order_deal_money_info[1]) > 60:
-                    # 60s浠ヤ笂鐨勫ぇ鍗曚笉鐪�
-                    total_deal_money = 0
-            else:
-                # 鍙渶瑕佹�绘垚浜ょ殑澶у崟
-                total_deal_money = BigOrderDealManager().get_total_buy_money(code)
+
             refer_sell_data = L2MarketSellManager().get_refer_sell_data(code, radical_data[3])
             # 鍙傝�冩�诲崠棰�
             refer_sell_money = 0
             if refer_sell_data:
                 refer_sell_money = refer_sell_data[1]
-            THRESHOLD_MONEY = 2990000
-            if refer_sell_money >= 1e7:
-                THRESHOLD_MONEY = 2990000 * 2
-            else:
-                THRESHOLD_MONEY = 2990000
-            if total_deal_money >= THRESHOLD_MONEY:
+            # 澶у崟鍒ゆ柇缁撴灉
+            big_order_deal_enough_result = radical_buy_data_manager.is_big_order_deal_enough(code,
+                                                                                             code_volumn_manager.CodeVolumeManager().get_volume_rate_refer_in_5days(
+                                                                                                 code),
+                                                                                             refer_sell_money)
+            # 缂轰箯鐨勫ぇ鍗曢噾棰�
+            lack_money = big_order_deal_enough_result[3]
+            # 濡傛灉鏈夊ぇ鍗曟垚浜ゅ氨涓嶉渶瑕佺湅澶у崟
+            if constant.CAN_RADICAL_BUY_NEED_BIG_ORDER_EVERYTIME:
+                # 姣忔涓嬪崟閮介渶瑕佸ぇ鍗�
+                current_big_order_deal_money_info = EveryLimitupBigDealOrderManager.get_big_buy_deal_order_money_info(
+                    code)
+                if current_big_order_deal_money_info and tool.trade_time_sub(tool.get_now_time_str(),
+                                                                             current_big_order_deal_money_info[1]) > 60:
+                    # 60s浠ヤ笂灏变笉涓嬪崟浜�
+                    return False, None, "璺濈涓婃缁熻澶у崟鏃堕棿杩囧幓60s", set()
+
+            if lack_money == 0:
                 min_num = int(5000 / limit_up_price)
             # 闇�瑕佺洃鍚殑澶у崟
             watch_indexes = set()
             # 鎬诲鎵樺ぇ鍗曢噾棰�
             total_delegating_big_money = 0
             single_index = None
-            for i in range(start_index, end_index + 1):
+            # 浠庢垚浜よ繘搴︿綅寮�濮嬬湅
+            trade_index, is_default = cls.__TradeBuyQueue.get_traded_index(code)
+            if trade_index is None:
+                trade_index = 0
+            canceled_buyno_map = local_today_canceled_buyno_map.get(code)
+            for i in range(trade_index, end_index + 1):
                 data = total_datas[i]
                 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,
+                                                                                                         canceled_buyno_map)
+                if left_count == 0:
+                    continue
+
                 # 涓婅瘉鏈夊彲鑳芥槸閮ㄥ垎鎴愪氦鐨勫ぇ鍗�
                 if i == start_index and tool.is_sh_code(code):
                     dealing_active_order_info = HuaXinBuyOrderManager().get_dealing_active_order_info(code)
@@ -2121,9 +2131,9 @@
                         # 鍒ゆ柇鏄惁涓哄ぇ鍗�
                         order_money = dealing_active_order_info[2] + round(val["price"], 2) * val["num"] * 100
                         if order_money >= bigger_money:
-                            total_delegating_big_money += order_money
+                            lack_money -= order_money
                             watch_indexes.add(i)
-                            if total_delegating_big_money + total_deal_money >= THRESHOLD_MONEY:
+                            if lack_money < 0:
                                 single_index = i
                                 break
 
@@ -2131,8 +2141,8 @@
                     # 涓诲姩涔板崟鍚庣殑鏁版嵁涓嶇畻
                     continue
                 watch_indexes.add(i)
-                total_delegating_big_money += round(val["price"], 2) * val["num"] * 100
-                if total_delegating_big_money + total_deal_money >= THRESHOLD_MONEY:
+                lack_money -= round(val["price"], 2) * val["num"] * 100
+                if lack_money < 0:
                     single_index = i
                     break
             if single_index is not None:

--
Gitblit v1.8.0