From ae8d76a456b64c1c6c4ebf11b6ec33b7df217b1a Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 18 八月 2025 13:43:46 +0800 Subject: [PATCH] bug修复 --- third_data/custom_block_in_money_manager.py | 76 +++++++++++++++++++++++++++++++++---- 1 files changed, 67 insertions(+), 9 deletions(-) diff --git a/third_data/custom_block_in_money_manager.py b/third_data/custom_block_in_money_manager.py index 82f880f..f0d7a12 100644 --- a/third_data/custom_block_in_money_manager.py +++ b/third_data/custom_block_in_money_manager.py @@ -6,6 +6,7 @@ import os import constant +import l2_data_util from db import mysql_data_delegate as mysql_data from huaxin_client import l1_subscript_codes_manager from third_data.kpl_data_constant import LimitUpCodesBlockRecordManager @@ -18,8 +19,15 @@ def __init__(self): # 鎬荤殑鍑�娴佸叆 self.__code_money_dict = {} - # 鍑�娴佸叆澶у崟閲戦 - self.__code_big_buy_mmoney_list_dict = {} + # 鎬讳拱鍗曚俊鎭細{"code":[閲戦, 鏁伴噺]} + self.__code_buy_money_dict = {} + # 鎬诲崠鍗曚俊鎭細{"code":[閲戦, 鏁伴噺]} + self.__code_sell_money_dict = {} + + # 鍑�娴佸叆澶у崟涔伴噾棰� + self.__code_big_buy_money_list_dict = {} + # 鍑�娴佸嚭澶у崟鍗栭噾棰� + self.__code_big_sell_money_list_dict = {} self.__latest_price = {} self.__load_data() @@ -34,23 +42,50 @@ self.add_data(item) def add_data(self, item): + """ + 娣诲姞鏁版嵁 + @param item: (浠g爜,绫诲瀷, 璁㈠崟鏁版嵁) 璁㈠崟鏁版嵁锛�(璁㈠崟鍙�, 閲�, 閲戦, 鏃堕棿, 鏈�鏂版垚浜や环鏍�) + @return: + """ code = item[0] if code not in self.__code_money_dict: self.__code_money_dict[code] = 0 - if not tool.is_ge_code(code) and item[2][2] < 299e4: - return + + if code not in self.__code_buy_money_dict: + self.__code_buy_money_dict[code] = [0, 0] + + if code not in self.__code_sell_money_dict: + self.__code_sell_money_dict[code] = [0, 0] + + if not tool.is_ge_code(code): + big_money = l2_data_util.get_big_money_val(item[2][4]) + if item[2][2] < big_money: + # 涓嶆槸甯歌瀹氫箟鐨勫ぇ鍗曞氨杩斿洖 + return if tool.is_ge_code(code) and item[2][2] < 299e4 and item[2][1] < 290000: return if item[1] == 0: # item[2]鐨勬暟鎹粨鏋勶細 (涔板崟鍙�, 閲�, 閲戦, 鏃堕棿, 鏈�鏂版垚浜や环鏍�) self.__code_money_dict[code] += item[2][2] - if code not in self.__code_big_buy_mmoney_list_dict: - self.__code_big_buy_mmoney_list_dict[code] = [] - # 澶т拱鍗曚俊鎭細(閲戦,鏈�鍚庝环鏍�) + self.__code_buy_money_dict[code][0] += item[2][2] + self.__code_buy_money_dict[code][1] += 1 + + if code not in self.__code_big_buy_money_list_dict: + self.__code_big_buy_money_list_dict[code] = [] + # 澶т拱鍗曚俊鎭細(閲戦, 鏈�鏂颁环鏍�, 璁㈠崟鍙�) if len(item[2]) >= 5: - self.__code_big_buy_mmoney_list_dict[code].append((item[2][2], item[2][4], item[2][0])) + self.__code_big_buy_money_list_dict[code].append((item[2][2], item[2][4], item[2][0])) else: self.__code_money_dict[code] -= item[2][2] + self.__code_sell_money_dict[code][0] += item[2][2] + self.__code_sell_money_dict[code][1] += 1 + # 澶у崠鍗曚俊鎭� + if code not in self.__code_big_sell_money_list_dict: + self.__code_big_sell_money_list_dict[code] = [] + if len(item[2]) >= 5: + # 澶у崠鍗曚俊鎭細(閲戦, 鏈�鏂颁环鏍�, 璁㈠崟鍙�) + self.__code_big_sell_money_list_dict[code].append((item[2][2], item[2][4], item[2][0])) + self.__latest_price[code] = item[2][4] def get_code_money_dict(self): @@ -61,6 +96,15 @@ return self.__code_money_dict.get(code) return 0 + def get_money_info(self, code): + """ + 鑾峰彇浠g爜娴佸叆淇℃伅 + @param code: 浠g爜淇℃伅 + @return: 鍑�娴佸叆閲戦,[澶у崟涔伴噾棰�, 澶у崟涔版暟閲廬,[澶у崟鍗栭噾棰�,澶у崟鍗栨暟閲廬 + """ + return self.__code_money_dict.get(code), self.__code_buy_money_dict.get(code), self.__code_sell_money_dict.get( + code) + def set_money(self, code, money): self.__code_money_dict[code] = money @@ -70,7 +114,15 @@ @param code: @return:[(閲戦, 浠锋牸, 璁㈠崟鍙�)] """ - return self.__code_big_buy_mmoney_list_dict.get(code) + return self.__code_big_buy_money_list_dict.get(code) + + def get_big_sell_money_list(self, code): + """ + 鑾峰彇浠g爜鐨勫ぇ涔板崟鍒楄〃 + @param code: + @return:[(閲戦, 浠锋牸, 璁㈠崟鍙�)] + """ + return self.__code_big_sell_money_list_dict.get(code) def get_latest_price(self, code): return self.__latest_price.get(code) @@ -215,6 +267,12 @@ money = CodeInMoneyManager().get_money(code) if money is None: continue + # 澶ц嚜鐢辨祦閫氬競鍊肩殑娴佸嚭涓嶇畻 + if money < 0: + price = CodeInMoneyManager().get_latest_price(code) + zylt_volume = global_util.zylt_volume_map.get(code) + if price and zylt_volume and zylt_volume * price > 200e8: + continue before_fblocks = LimitUpCodesBlockRecordManager().get_radical_buy_blocks(code) if not before_fblocks: before_fblocks = set() -- Gitblit v1.8.0