From 353e8ef9cd36018b0e2b5b3e0721f0065d587a8d Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期三, 28 二月 2024 17:02:21 +0800 Subject: [PATCH] H撤Bug修改 --- l2/l2_data_util.py | 62 +++++++++++++++++++++++++++---- 1 files changed, 54 insertions(+), 8 deletions(-) diff --git a/l2/l2_data_util.py b/l2/l2_data_util.py index b5dbb57..9abfa2b 100644 --- a/l2/l2_data_util.py +++ b/l2/l2_data_util.py @@ -33,6 +33,9 @@ # 涔板叆璁㈠崟鍙锋槧灏�,鍙湁鍘熺敓鐨凩2鏁版嵁鎵嶆湁 local_today_buyno_map = {} +# 宸茬粡鎾ゅ崟鐨勮鍗曞彿 +local_today_canceled_buyno_map = {} + def load_l2_data(code, load_latest=True, force=False): # 鍔犺浇鏈�杩戠殑l2鏁版嵁 @@ -71,6 +74,7 @@ # 鏍规嵁浠婃棩鏁版嵁鍔犺浇 load_num_operate_map(local_today_num_operate_map, code, local_today_datas.get(code), force) load_buy_no_map(local_today_buyno_map, code, local_today_datas.get(code), force) + load_canceled_buy_no_map(local_today_canceled_buyno_map, code, local_today_datas.get(code), force) return data_normal return True @@ -106,6 +110,26 @@ key = "{}".format(data["val"]["orderNo"]) if local_today_buyno_map[code].get(key) is None: local_today_buyno_map[code].setdefault(key, data) + + +# 灏嗘暟鎹牴鎹畂rderNo鍒嗙被宸叉挙璁㈠崟,鍘熺敓鏁版嵁鎵嶆湁 +def load_canceled_buy_no_map(local_today_canceled_buyno_map, code, source_datas, clear=False): + # 鍙湁鍘熺敓L2鏁版嵁鎵嶄細鏈夋鎿嶄綔 + if constant.L2_SOURCE_TYPE != constant.L2_SOURCE_TYPE_HUAXIN: + return + if local_today_canceled_buyno_map.get(code) is None: + local_today_canceled_buyno_map[code] = {} + if clear: + local_today_canceled_buyno_map[code] = {} + + for data in source_datas: + # 鍙暀涓嬩拱鎾� + if data["val"]["operateType"] != 1: + continue + # 鍙~鍏呬拱鍏ユ暟鎹� + key = "{}".format(data["val"]["orderNo"]) + if local_today_canceled_buyno_map[code].get(key) is None: + local_today_canceled_buyno_map[code].setdefault(key, data) @tool.async_call @@ -220,7 +244,7 @@ price = float(val["price"]) money = price * int(val["num"]) if price > 3.0: - if money >= 30000: + if money >= 29900: return True else: return False @@ -384,11 +408,16 @@ if int(val["operateType"]) != 2: return False + return True - price = float(val["price"]) - num = int(val["num"]) - # if price * num * 100 < 50 * 10000: - # return False + # 娑ㄥ仠鍗栨挙 + @classmethod + def is_limit_up_price_sell_cancel(cls, val): + if int(val["limitPrice"]) != 1: + return False + + if int(val["operateType"]) != 3: + return False return True # 鏄惁娑ㄥ仠涔版挙 @@ -420,6 +449,22 @@ return True return False + # 鏄惁涓轰拱 + @classmethod + def is_buy(cls, val): + if int(val["operateType"]) == 0: + return True + return False + + # l2鏃堕棿宸�� + @classmethod + def time_sub_as_ms(cls, val1, val2): + # 璁$畻鏃堕棿宸�� + sub_s = tool.trade_time_sub(val1["time"], val2["time"]) + sub_ms = int(val1["tms"]) - int(val2["tms"]) + fs = sub_s * 1000 + sub_ms + return fs + class L2TradeQueueUtils(object): # 涔板叆鏁版嵁鏄惁宸叉挙 @@ -431,8 +476,9 @@ # 鏄惁鏈変拱鎾ゆ暟鎹� if cancel_datas: for cancel_data in cancel_datas: - buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data(code, cancel_data, - local_today_num_operate_map) + buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(cancel_data, + local_today_buyno_map.get( + code)) if buy_index == data["index"]: return True return False @@ -533,4 +579,4 @@ if __name__ == "__main__": - print(load_l2_data("002235")) + print(L2DataUtil.time_sub_as_ms({"time": "13:00:00", "time_ms": "980"}, {"time": "11:29:59", "time_ms": "590"})) -- Gitblit v1.8.0