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