From 7c6d06136079b73c5676c716c992fdebb23cca7c Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 27 五月 2025 16:15:31 +0800
Subject: [PATCH] bug修复

---
 trade/buy_radical/radical_buy_data_manager.py |   62 +++++++++++++++++++++++++++++--
 1 files changed, 58 insertions(+), 4 deletions(-)

diff --git a/trade/buy_radical/radical_buy_data_manager.py b/trade/buy_radical/radical_buy_data_manager.py
index e8a73e0..5d96c51 100644
--- a/trade/buy_radical/radical_buy_data_manager.py
+++ b/trade/buy_radical/radical_buy_data_manager.py
@@ -314,6 +314,49 @@
 
 
 @tool.singleton
+class TotalDealBigOrderThresholdMoneyManager:
+    """
+    绱鎴愪氦澶у崟闃堝�肩鐞嗭紙浜轰负璁剧疆锛�
+    """
+    __db = 3
+    __redis_manager = redis_manager.RedisManager(3)
+    __total_big_order_threshold = {}
+
+    def __init__(self):
+        self.__load_data()
+
+    def __get_redis(self):
+        return self.__redis_manager.getRedis()
+
+    def __load_data(self):
+        keys = redis_manager.RedisUtils.keys(self.__get_redis(), "total_radical_big_order_threshold-*")
+        for k in keys:
+            code = k.split("-")[1]
+            val = redis_manager.RedisUtils.get(self.__get_redis(), k)
+            val = int(val)
+            self.__total_big_order_threshold[code] = val
+
+    def set_money(self, code, money):
+        """
+        璁剧疆閲戦
+        @param code:
+        @param money:
+        @return:
+        """
+        self.__total_big_order_threshold[code] = money
+        redis_manager.RedisUtils.setex_async(self.__db, f"total_radical_big_order_threshold-{code}", tool.get_expire(),
+                                             money)
+
+    def get_money_cache(self, code):
+        """
+        鑾峰彇缂撳瓨
+        @param code:
+        @return:
+        """
+        return self.__total_big_order_threshold.get(code)
+
+
+@tool.singleton
 class RadicalCodeMarketInfoManager:
     """
     婵�杩涗拱鐨勭エ琛屾儏鏁版嵁绠$悊
@@ -617,7 +660,12 @@
                         code)
                     if deal_money >= 2 * THRESHOLD_MONEY:
                         gpcode_manager.WhiteListCodeManager().add_code(code)
-                        trade_record_log_util.add_common_msg(code, "鍔犵櫧",  f"{code}澶у崟鎴愪氦瓒冲鍔犵櫧锛� 鏈壒娆℃垚浜ら噾棰�-{deal_money}/{THRESHOLD_MONEY * 2}  绱澶у崟閲戦锛歿total_deal_big_order_result[1]}/{total_deal_big_order_result[2]}")
+                        trade_record_log_util.add_common_msg(code, "鍔犵櫧",
+                                                             f"{code}澶у崟鎴愪氦瓒冲鍔犵櫧锛� 鏈壒娆℃垚浜ら噾棰�-{deal_money}/{THRESHOLD_MONEY * 2}  绱澶у崟閲戦锛歿total_deal_big_order_result[1]}/{total_deal_big_order_result[2]}")
+                    else:
+                        async_log_util.info(logger_debug,
+                                            f"{code}-鎴愪氦澶у崟灏�({deal_money}/{2 * THRESHOLD_MONEY}锛屾渶灏忚鍗曞彿-{order_begin_pos.min_order_no})锛屼笉鑳藉姞鐧�")
+
         except Exception as e:
             logger_debug.exception(e)
             async_log_util.info(logger_debug, f"澶勭悊鎴愪氦澶у崟瓒冲鍔犵櫧鐨勯棶棰�:{str(e)}")
@@ -1717,7 +1765,7 @@
     """
     鎬绘垚浜ゅぇ鍗曞晩鏄惁瓒冲
     @param code:
-    @return:(缂哄皯鐨勮祫閲�,鎬绘垚浜ら噾棰�, 瑕佹眰鐨勫ぇ鍗曢噾棰�)
+    @return:(缂哄皯鐨勮祫閲�, 鎬绘垚浜ら噾棰�, 瑕佹眰鐨勫ぇ鍗曢噾棰�, 璁$畻寰楀埌鐨勫ぇ鍗曢槇鍊奸噾棰�)
     """
 
     THRESHOLD_MONEY, is_temp_threshold_money = BeforeSubDealBigOrderManager().get_big_order_threshold_info(code)
@@ -1729,7 +1777,13 @@
     if tool.is_ge_code(code):
         TOTAL_BIG_DEAL_MONEY_THRESHOLD_COUNT *= 3.3
 
-    TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = TOTAL_BIG_DEAL_MONEY_THRESHOLD_COUNT * THRESHOLD_MONEY
+    TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE = TOTAL_BIG_DEAL_MONEY_THRESHOLD_COUNT * THRESHOLD_MONEY
+
+    human_setting_money = TotalDealBigOrderThresholdMoneyManager().get_money_cache(code)
+    if human_setting_money is not None:
+        TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = int(human_setting_money)
+    else:
+        TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE
 
     # if is_for_buy and is_temp_threshold_money:
     #     # 棣栨涓婃澘涔板叆锛屽ぇ鍗曢槇鍊兼墦3鎶�
@@ -1749,7 +1803,7 @@
     except Exception as e:
         async_log_util.info(logger_l2_radical_buy, f"璁$畻姝e湪鎴愪氦澶у崟鍑洪敊锛歿str(e)}")
     total_lack_money = max(0, int(TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY - deal_big_order_money))
-    return total_lack_money, deal_big_order_money, TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY
+    return total_lack_money, deal_big_order_money, TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY, TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE
 
 
 def is_big_order_deal_enough(code, volume_rate, refer_total_sell_money, for_buy=False, is_almost_open_limit_up=False):

--
Gitblit v1.8.0