From 58c7388c1979c13bdf84db0f53ff7ab5c34e15ca Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期二, 16 四月 2024 15:29:57 +0800 Subject: [PATCH] 被动卖成交数据处理优化 --- l2/place_order_single_data_manager.py | 62 +++++++++++++++---------------- 1 files changed, 30 insertions(+), 32 deletions(-) diff --git a/l2/place_order_single_data_manager.py b/l2/place_order_single_data_manager.py index 790b2c4..0fa7842 100644 --- a/l2/place_order_single_data_manager.py +++ b/l2/place_order_single_data_manager.py @@ -1,6 +1,8 @@ """ 涓嬪崟淇″彿绠$悊 """ +import time + from l2 import l2_log from l2.huaxin import l2_huaxin_util from log_module.log import logger_l2_trade_buy, logger_debug @@ -62,7 +64,7 @@ break @classmethod - def process_passive_limit_up_sell_data(cls, data): + def process_passive_limit_up_sell_data(cls, code, datas, limit_up_price): """ 娣诲姞娑ㄥ仠琚姩鍗栨垚浜ゆ暟鎹� @param data: 鏁版嵁鏍煎紡锛�(data['SecurityID'], data['TradePrice'], data['TradeVolume'], @@ -71,41 +73,37 @@ @return: """ try: - # 闇�瑕佸垽鏂綋鍓嶅崟鏄惁宸茬粡鎴愪氦瀹屾垚 - code = data[0] - sell_no = data[7] - if code not in cls.__latest_sell_data: - cls.__latest_sell_data[code] = [sell_no, data[2]] - else: - if cls.__latest_sell_data[code][0] == sell_no: - cls.__latest_sell_data[code][1] += data[2] - else: - cls.__latest_sell_data[code] = [sell_no, data[2]] - # 鍒ゆ柇鏄惁鏄渶鍚庝竴绗斿崠鍗� - # l2_log.info(code, logger_l2_trade_buy, f"琚姩鍗栨暟鎹細{data}") - - # 鍒ゆ柇杩欎釜璁㈠崟鍙锋槸鍚︽垚浜ゅ畬 + start_time = time.time() sell_list = cls.__latest_limit_up_sell_list_dict.get(code) if not sell_list: return sell_info = sell_list[-1] - # 涓诲姩鍗栬鍗曢泦鍚� - # active_sell_order_no_set = cls.__active_sell_order_no_set_dict.get(code) - # if active_sell_order_no_set and sell_info['val']['orderNo'] in active_sell_order_no_set: - # l2_log.info(code, logger_l2_trade_buy,f"鏈�杩戠殑鍗栨槸涓诲姩鍗�:{sell_info['val']['orderNo']}") - # return - - sell_info_num = sell_info['val']['num'] - deal_num = cls.__latest_sell_data[code][1] // 100 - - # l2_log.info(code, logger_l2_trade_buy, - # f"鏈�杩戞定鍋滃崠锛歿sell_info['val']['orderNo']} 鍗栭噺锛歿sell_info_num} 鎴愪氦閲忥細{deal_num}") - if sell_no == sell_info['val']['orderNo'] and sell_info_num == deal_num: - # 鎴愪氦瀹屾垚 - L2TradeSingleDataManager.set_latest_sell_data(code, data) - l2_log.info(code, logger_l2_trade_buy, f"鎵惧埌鏈�杩戠殑琚姩娑ㄥ仠鍗栧崟鏁版嵁锛歿sell_info['val']['orderNo']}, 鍙互瑙﹀彂涓嬪崟") - - # l2_log.info(code, logger_l2_trade_buy, f"鎵惧埌鏈�杩戠殑琚姩娑ㄥ仠鍗栧崟鏁版嵁锛歿data['val']['orderNo']}, 鍙互瑙﹀彂涓嬪崟") + for data in datas: + if data[6] < data[7] or data[1] != limit_up_price: + # 鎺掗櫎涓诲姩鍗�/闈炴定鍋滃崠 + continue + sell_no = data[7] + if sell_no != sell_info['val']['orderNo']: + continue + # 闇�瑕佸垽鏂綋鍓嶅崟鏄惁宸茬粡鎴愪氦瀹屾垚 + if code not in cls.__latest_sell_data: + cls.__latest_sell_data[code] = [sell_no, data[2]] + else: + if cls.__latest_sell_data[code][0] == sell_no: + cls.__latest_sell_data[code][1] += data[2] + else: + cls.__latest_sell_data[code] = [sell_no, data[2]] + sell_info_num = sell_info['val']['num'] + deal_num = cls.__latest_sell_data[code][1] // 100 + if sell_info_num == deal_num: + use_time = round((time.time() - start_time) * 1000, 3) + l2_log.info(code, logger_l2_trade_buy, + f"鎵惧埌鏈�杩戠殑琚姩娑ㄥ仠鍗栧崟鏁版嵁锛歿sell_info['val']['orderNo']}, 璁$畻鑰楁椂锛歿use_time}ms, 鍙互瑙﹀彂涓嬪崟") + # 鎴愪氦瀹屾垚 + L2TradeSingleDataManager.set_latest_sell_data(code, data) + l2_log.info(code, logger_l2_trade_buy, "琚姩鍗栨暟鎹鐞嗗畬姣�") + break + # l2_log.info(code, logger_l2_trade_buy, f"鎵惧埌鏈�杩戠殑琚姩娑ㄥ仠鍗栧崟鏁版嵁锛歿data['val']['orderNo']}, 鍙互瑙﹀彂涓嬪崟") except Exception as e: logger_debug.exception(e) -- Gitblit v1.8.0