From f4333824e6fc82eb7e6c0ff536f31baf6c7c8df2 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 26 六月 2025 14:21:47 +0800 Subject: [PATCH] L后自然最大撤单率最大80% --- l2/l2_data_util.py | 56 +++++++++++++++++++++++++++++++------------------------- 1 files changed, 31 insertions(+), 25 deletions(-) diff --git a/l2/l2_data_util.py b/l2/l2_data_util.py index b4fddd3..e12f024 100644 --- a/l2/l2_data_util.py +++ b/l2/l2_data_util.py @@ -33,6 +33,9 @@ # 涔板叆璁㈠崟鍙锋槧灏�,鍙湁鍘熺敓鐨凩2鏁版嵁鎵嶆湁 local_today_buyno_map = {} +# 鍗栧嚭璁㈠崟鍙锋槧灏勶紝鍙湁鍘熺敓鐨凩2鏁版嵁鎵嶆湁 +local_today_sellno_map = {} + # 宸茬粡鎾ゅ崟鐨勮鍗曞彿 local_today_canceled_buyno_map = {} @@ -74,6 +77,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_sell_no_map(local_today_sellno_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 @@ -84,12 +88,13 @@ datas = local_today_datas.get(code) if not datas: # 鍒濆鍖� - local_today_datas[code] =[] + local_today_datas[code] = [] load_num_operate_map(local_today_num_operate_map, code, local_today_datas.get(code)) load_buy_no_map(local_today_buyno_map, code, local_today_datas.get(code)) + load_sell_no_map(local_today_sellno_map, code, local_today_datas.get(code)) load_canceled_buy_no_map(local_today_canceled_buyno_map, code, local_today_datas.get(code)) - if datas and len(datas) < datas[-1]["index"] + 1: + if datas and len(datas) != datas[-1]["index"] + 1: return False return True @@ -105,7 +110,10 @@ local_today_datas[code] = datas[code] 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_sell_no_map(local_today_sellno_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) + + constant.L2_DATA_IS_LOADED = True # 灏嗘暟鎹牴鎹畁um-operate鍒嗙被 @@ -139,6 +147,25 @@ 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_sell_no_map(local_today_sellno_map, code, source_datas, clear=False): + # 鍙湁鍘熺敓L2鏁版嵁鎵嶄細鏈夋鎿嶄綔 + if constant.L2_SOURCE_TYPE != constant.L2_SOURCE_TYPE_HUAXIN: + return + if local_today_sellno_map.get(code) is None: + local_today_sellno_map[code] = {} + if clear: + local_today_sellno_map[code] = {} + + for data in source_datas: + if data["val"]["operateType"] != 2: + continue + # 鍙~鍏呬拱鍏ユ暟鎹� + key = "{}".format(data["val"]["orderNo"]) + if local_today_sellno_map[code].get(key) is None: + local_today_sellno_map[code].setdefault(key, data) # 灏嗘暟鎹牴鎹畂rderNo鍒嗙被宸叉挙璁㈠崟,鍘熺敓鏁版嵁鎵嶆湁 @@ -268,33 +295,12 @@ return False -# 鏄惁涓哄ぇ鍗� -def is_big_money(val): - price = float(val["price"]) - money = price * int(val["num"]) - if price > 3.0: - if money >= 29900: - return True - else: - return False - else: - max_money = price * 10000 - if money >= max_money * 0.95: - return True - else: - return False - - class L2DataUtil: @classmethod def is_same_time(cls, time1, time2): if constant.TEST: return True - time1_s = time1.split(":") - time1_second = int(time1_s[0]) * 3600 + int(time1_s[1]) * 60 + int(time1_s[2]) - time2_s = time2.split(":") - time2_second = int(time2_s[0]) * 3600 + int(time2_s[1]) * 60 + int(time2_s[2]) - if abs(time2_second - time1_second) < 3: + if abs(tool.trade_time_sub(time1, time2)) < 3: return True else: return False @@ -614,4 +620,4 @@ if __name__ == "__main__": - print(L2DataUtil.get_time_with_ms({"time": "10:00:00", "tms": 490})) + print(L2DataUtil.time_sub_as_ms({"time": "09:46:05", "tms": 480}, {"time": "09:46:04", "tms": 90})) -- Gitblit v1.8.0