From cbb47fc396a73d39dc2e5c403fd8d6eef9dc72aa Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期五, 19 七月 2024 11:04:47 +0800 Subject: [PATCH] bug修复 --- l2_data_util.py | 2 +- cancel_strategy/s_l_h_cancel_strategy.py | 54 ++++++++++++++++++++++++++++++++++++------------------ 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/cancel_strategy/s_l_h_cancel_strategy.py b/cancel_strategy/s_l_h_cancel_strategy.py index 7de946b..af87bcc 100644 --- a/cancel_strategy/s_l_h_cancel_strategy.py +++ b/cancel_strategy/s_l_h_cancel_strategy.py @@ -1132,9 +1132,6 @@ if val["num"] < min_num: continue - if val["num"] < bigger_num: - continue - left_count = l2_data_source_util.L2DataSourceUtils.get_limit_up_buy_no_canceled_count_v2(code, i, total_datas, local_today_canceled_buyno_map.get( @@ -1153,6 +1150,18 @@ break self.__l_down_after_by_big_order_dict[code] = watch_indexes l2_log.l_cancel_debug(code, f"L鍚庡悗鍗婃澶у崟澶囩敤鍥婃嫭鑼冨洿锛歿watch_indexes}") + + try: + watch_indexes_info = self.get_l_down_watch_indexes_cache(code) + if watch_indexes_info: + total_watch_indexes = set(watch_indexes) | set(watch_indexes_info[2]) + trade_record_log_util.add_cancel_watch_indexes_log(code, + trade_record_log_util.CancelWatchIndexesInfo( + trade_record_log_util.CancelWatchIndexesInfo.CANCEL_TYPE_L_DOWN, + watch_indexes_info[0], + list(total_watch_indexes))) + except: + pass # 璁剧疆鐪熷疄涓嬪崟浣嶇疆 def set_real_place_order_index(self, code, index, buy_single_index=None, is_default=False): @@ -1642,6 +1651,10 @@ # 瀹堟姢S鎾や互澶栫殑鏁版嵁 if int(tool.get_now_time_str().replace(":", "")) > int("145700") and not constant.TEST: return False, None, "" + try: + LCancelOutOfDateWatchIndexesManager().process(code, start_index, end_index) + except Exception as e: + l2_log.l_cancel_debug("L鍚庣ǔ瀹氭洿鏂板嚭閿欙細{}",str(e)) # 涓嬪崟浣嶄复杩戞挙 can_cancel, cancel_data = False, None try: @@ -1703,6 +1716,13 @@ """ __latest_cancel_time_dict = {} + __instance = None + + def __new__(cls, *args, **kwargs): + if not cls.__instance: + cls.__instance = super(LCancelOutOfDateWatchIndexesManager, cls).__new__(cls, *args, **kwargs) + return cls.__instance + @classmethod def compute_latest_canceled_watch_index_time(cls, code, watch_indexes): """ @@ -1725,7 +1745,8 @@ return total_datas[max_cancel_index]["val"]["time"] @classmethod - def compute_l_down_common_watch_indexes(cls, code, start_index, end_index, max_count, min_num, exclude_watch_indexes): + def compute_l_down_common_watch_indexes(cls, code, start_index, end_index, max_count, min_num, + exclude_watch_indexes): """ 鑾峰彇L鍚庣洃鍚暟鎹� @param code: @@ -1808,16 +1829,17 @@ if tool.trade_time_sub(total_datas[-1]["val"]["time"], self.__latest_cancel_time_dict.get(code)) < 10 * 60: # 鏈�杩戠殑鎾ゅ崟鏃堕棿灏忎簬10鍒嗛挓 return - # TODO 鏌ユ壘鏄惁鏈夌浉鍚屾椂闂寸殑鎾ゅ崟涓旀挙鍗曟椂闂村湪10鍒嗛挓涔嬪墠 + l2_log.l_cancel_debug(code, f"L鍚庣ǔ瀹�") canceled_buyno_map = local_today_canceled_buyno_map.get(code) - cancel_time_dict={} + cancel_time_dict = {} for index in watch_indexes: if index > real_place_order_index: continue orderNo = str(total_datas[index]["val"]["orderNo"]) if orderNo not in canceled_buyno_map: continue - if tool.trade_time_sub(total_datas[-1]["val"]["time"], canceled_buyno_map[orderNo]["val"]["time"]) < 10 * 60: + if tool.trade_time_sub(total_datas[-1]["val"]["time"], + canceled_buyno_map[orderNo]["val"]["time"]) < 10 * 60: continue val = total_datas[index]["val"] time_str = L2DataUtil.get_time_with_ms(val) @@ -1825,28 +1847,24 @@ cancel_time_dict[time_str] = set() cancel_time_dict[time_str].add(index) remove_indexes = set() - for t in cancel_time_dict: - if len(cancel_time_dict[t])>1: - remove_indexes|=cancel_time_dict[t] + for t in cancel_time_dict: + if len(cancel_time_dict[t]) > 1: + remove_indexes |= cancel_time_dict[t] if remove_indexes: # 绉婚櫎绱㈠紩 add_count = len(remove_indexes) limit_up_price = gpcode_manager.get_limit_up_price_as_num(code) - min_num = int(5000/limit_up_price) + min_num = int(5000 / limit_up_price) trade_index, is_default = TradeBuyQueue().get_traded_index(code) if trade_index is None: trade_index = 0 - add_watch_index = self.compute_l_down_common_watch_indexes(code,trade_index ,real_place_order_index, add_count, min_num, watch_indexes) + add_watch_index = self.compute_l_down_common_watch_indexes(code, trade_index, real_place_order_index, + add_count, min_num, watch_indexes) watch_indexes -= remove_indexes - watch_indexes|=add_watch_index + watch_indexes |= add_watch_index # 淇濆瓨鏁版嵁 / LCancelBigNumComputer().set_l_down_watch_index_info(code, watch_indexes_info[0], True, watch_indexes) l2_log.l_cancel_debug(code, f"L鍚庣ǔ瀹氬悗鏇存柊鐩戞帶鑼冨洿锛氬垹闄�-{remove_indexes} 澧炲姞-{add_watch_index}") - - - - - # --------------------------------H鎾�------------------------------- diff --git a/l2_data_util.py b/l2_data_util.py index af7c6c4..f3fe5b0 100644 --- a/l2_data_util.py +++ b/l2_data_util.py @@ -36,7 +36,7 @@ @return: """ price = float(val["price"]) - money = price * val["num"] + money = round(price * val["num"], 2) if is_ge: if money >= 29900 or val["num"] >= 2999: return True -- Gitblit v1.8.0