From 58b40f2f7de276662f2e1f967812066127e33d8d Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 20 三月 2025 16:33:08 +0800 Subject: [PATCH] 优化逐笔成交中的卖单统计 --- l2/l2_transaction_data_manager.py | 45 ++++++++++++++++++++++++++------------------- 1 files changed, 26 insertions(+), 19 deletions(-) diff --git a/l2/l2_transaction_data_manager.py b/l2/l2_transaction_data_manager.py index f8ecf3c..0b7b836 100644 --- a/l2/l2_transaction_data_manager.py +++ b/l2/l2_transaction_data_manager.py @@ -314,12 +314,14 @@ @classmethod def statistic_big_sell_data(cls, code, fdatas): """ - 缁熻澶у崠鍗� + 缁熻澶у崠鍗�(299w浠ヤ笂) @param code: @param fdatas: [(鏁版嵁鏈韩, 鏄惁涓诲姩涔�, 鏄惁娑ㄥ仠, 鎬绘垚浜ら, 涓嶅惈ms鏃堕棿锛屽惈ms鏃堕棿)] @return: 杩斿洖鏁版嵁閲岄潰鎴愪氦鐨勫ぇ鍗� """ big_sell_datas = [] + # 姝e湪鎴愪氦鐨勫崠鍗� + dealing_order_info = cls.__dealing_order_info_dict.get(code) for data in fdatas: if not data[2]: # 鍙绠楁澘涓婃垚浜� @@ -328,23 +330,28 @@ # q.append((data['SecurityID'], data['TradePrice'], data['TradeVolume'], # data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'], # data['SellNo'], data['ExecType'])) - if code not in cls.__dealing_order_info_dict: + if dealing_order_info is None: # 鏁版嵁鏍煎紡[璁㈠崟鍙凤紝鎬昏偂鏁帮紝鎴愪氦閲戦] - cls.__dealing_order_info_dict[code] = [data[0][7], data[0][2], money] - if cls.__dealing_order_info_dict[code][0] == data[0][7]: - # 鎴愪氦鍚屼竴涓鍗曞彿 - cls.__dealing_order_info_dict[code][1] += data[0][2] - cls.__dealing_order_info_dict[code][2] += money + dealing_order_info = [data[0][7], data[0][2], money] else: - # 淇濆瓨涓婁竴鏉℃暟鎹� - l2_log.info(code, hx_logger_l2_transaction_desc, f"{code}#{cls.__dealing_order_info_dict[code]}") - # 璁剧疆鏈�杩戞垚浜ゅ畬鎴愮殑涓�鏉℃暟鎹� - deal_info = cls.__dealing_order_info_dict[code] - # 鏄惁涓哄ぇ涔板崟 - if deal_info[2] >= 2990000: - big_sell_datas.append(deal_info) - # 鍒濆鍖栨湰鏉℃暟鎹� - cls.__dealing_order_info_dict[code] = [data[0][7], data[0][2], money] + if dealing_order_info[0] == data[0][7]: + # 鎴愪氦鍚屼竴涓鍗曞彿 + dealing_order_info[1] += data[0][2] + dealing_order_info[2] += money + else: + # 淇濆瓨涓婁竴鏉℃暟鎹� + # 璁剧疆鏈�杩戞垚浜ゅ畬鎴愮殑涓�鏉℃暟鎹� + deal_info = dealing_order_info + # 淇濆瓨涓婁竴鏉℃暟鎹� + if deal_info[2] >= 2990000: + # 鏄惁涓哄ぇ涔板崟 + l2_log.info(code, hx_logger_l2_transaction_desc, + f"{code}#{deal_info}") + big_sell_datas.append(deal_info) + # 鍒濆鍖栨湰鏉℃暟鎹� + dealing_order_info = [data[0][7], data[0][2], money] + # 淇濆瓨鏈�鍚庝竴鏉℃暟鎹殑鐘舵�� + cls.__dealing_order_info_dict[code] = dealing_order_info return big_sell_datas # 缁熻鎵�鏈夌殑鎴愪氦閲� @@ -462,10 +469,10 @@ use_time_list.append(("澶勭悊娑ㄥ仠鍗�", use_time)) for d in fdatas: # 鑾峰彇褰撳墠鏄惁涓轰富鍔ㄤ拱 + if d[1]: + # 涓诲姩涔� + continue try: - if d[1]: - # 涓诲姩涔� - continue if d[2]: # 娑ㄥ仠涓诲姩鍗� L2TradeSingleDataProcessor.add_active_limit_up_sell_data(d[0]) -- Gitblit v1.8.0