From 9fc792923848e96fffc72a99d266e931525c2e49 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 20 三月 2025 10:58:26 +0800 Subject: [PATCH] 大单统计优化 --- l2/l2_transaction_data_manager.py | 79 ++++++++++++++++++++++----------------- 1 files changed, 44 insertions(+), 35 deletions(-) diff --git a/l2/l2_transaction_data_manager.py b/l2/l2_transaction_data_manager.py index 01b07db..788b9f3 100644 --- a/l2/l2_transaction_data_manager.py +++ b/l2/l2_transaction_data_manager.py @@ -210,27 +210,34 @@ normal_buy_datas = [] # 澶у崟闃堝�� threshold_big_money = l2_data_util.get_big_money_val(limit_up_price, tool.is_ge_code(code)) + + dealing_order_info = cls.__dealing_order_info_dict.get(code) + for data in fdatas: # q.append((data['SecurityID'], data['TradePrice'], data['TradeVolume'], # data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'], # data['SellNo'], data['ExecType'])) is_limit_up = data[2] money = data[3] - if code not in cls.__dealing_order_info_dict: + current_order_info = data[0] + + if dealing_order_info is None: # 鏁版嵁鏍煎紡[璁㈠崟鍙凤紝鎬昏偂鏁帮紝鎴愪氦閲戦,鎴愪氦寮�濮嬫椂闂�,鎴愪氦缁撴潫鏃堕棿, 鏈�杩戠殑鎴愪氦浠锋牸, 鏈�杩戠殑鍗栧崟鍙�, 娑ㄥ仠浠锋垚浜ら噾棰漖 - cls.__dealing_order_info_dict[code] = [data[0][6], data[0][2], money, data[0][3], data[0][3], data[0][1], - data[0][7], 0] + dealing_order_info = [current_order_info[6], current_order_info[2], money, + current_order_info[3], current_order_info[3], + current_order_info[1], + current_order_info[7], 0] if is_limit_up: - cls.__dealing_order_info_dict[code][7] += money + dealing_order_info[7] += money + cls.__dealing_order_info_dict[code] = dealing_order_info else: - dealing_order_info = cls.__dealing_order_info_dict[code] - if dealing_order_info[0] == data[0][6]: + if dealing_order_info[0] == current_order_info[6]: # 鎴愪氦鍚屼竴涓鍗曞彿 - dealing_order_info[1] += data[0][2] + dealing_order_info[1] += current_order_info[2] dealing_order_info[2] += money - dealing_order_info[4] = data[0][3] - dealing_order_info[5] = data[0][1] - dealing_order_info[6] = data[0][7] + dealing_order_info[4] = current_order_info[3] + dealing_order_info[5] = current_order_info[1] + dealing_order_info[6] = current_order_info[7] if is_limit_up: dealing_order_info[7] += money else: @@ -247,32 +254,33 @@ if deal_info[2] >= 500000: normal_buy_datas.append(deal_info) # 鍒濆鍖栨湰鏉℃暟鎹� - cls.__dealing_order_info_dict[code] = [data[0][6], data[0][2], money, data[0][3], data[0][3], - data[0][1], data[0][7], 0] + dealing_order_info = [current_order_info[6], current_order_info[2], money, + current_order_info[3], current_order_info[3], + current_order_info[1], current_order_info[7], 0] if is_limit_up: - cls.__dealing_order_info_dict[code][7] += money + dealing_order_info[7] += money + cls.__dealing_order_info_dict[code] = dealing_order_info # 缁熻涓诲姩涔�(涔板崟鍙峰ぇ浜庡崠鍗曞彿) - try: - if data[1]: - if code not in cls.__dealing_active_buy_order_info_dict: - # 鏁版嵁鏍煎紡[璁㈠崟鍙凤紝鎬昏偂鏁帮紝鎴愪氦閲戦,鎴愪氦寮�濮嬫椂闂�,鎴愪氦缁撴潫鏃堕棿] - cls.__dealing_active_buy_order_info_dict[code] = [data[0][6], data[0][2], money, data[0][3], - data[0][3]] + if data[1]: + if code not in cls.__dealing_active_buy_order_info_dict: + # 鏁版嵁鏍煎紡[璁㈠崟鍙凤紝鎬昏偂鏁帮紝鎴愪氦閲戦,鎴愪氦寮�濮嬫椂闂�,鎴愪氦缁撴潫鏃堕棿] + cls.__dealing_active_buy_order_info_dict[code] = [current_order_info[6], current_order_info[2], + money, current_order_info[3], + current_order_info[3]] + else: + dealing_active_buy_order_info = cls.__dealing_active_buy_order_info_dict[code] + if dealing_active_buy_order_info[0] == current_order_info[6]: + # 鎴愪氦鍚屼竴涓鍗曞彿 + dealing_active_buy_order_info[1] += current_order_info[2] + dealing_active_buy_order_info[2] += money + dealing_active_buy_order_info[4] = current_order_info[3] else: - dealing_active_buy_order_info = cls.__dealing_active_buy_order_info_dict[code] - if dealing_active_buy_order_info[0] == data[0][6]: - # 鎴愪氦鍚屼竴涓鍗曞彿 - dealing_active_buy_order_info[1] += data[0][2] - dealing_active_buy_order_info[2] += money - dealing_active_buy_order_info[4] = data[0][3] - else: - # 鍒濆鍖栨湰鏉℃暟鎹� - cls.__dealing_active_buy_order_info_dict[code] = [data[0][6], data[0][2], money, - data[0][3], data[0][3]] - except: - pass - + # 鍒濆鍖栨湰鏉℃暟鎹� + cls.__dealing_active_buy_order_info_dict[code] = [current_order_info[6], + current_order_info[2], money, + current_order_info[3], + current_order_info[3]] return big_buy_datas, normal_buy_datas @@ -406,7 +414,6 @@ fdatas.append(deal_list[i]) return fdatas - @classmethod def clear_latest_deal_volume(cls, code): if code in cls.__deal_volume_list_dict: @@ -468,7 +475,8 @@ L2TradeSingleDataManager.set_sell_passive_to_active_datas(code, last_trade_data[0], d[0]) # cls.__latest_sell_order_info_list_dict[code].append(d) if code not in cls.__latest_sell_order_dict: - cls.__latest_sell_order_dict[code] = [d[0][7], d[0][2], d[0][1], (d[0][3], d[0][6]), (d[0][3], d[0][6])] + cls.__latest_sell_order_dict[code] = [d[0][7], d[0][2], d[0][1], (d[0][3], d[0][6]), + (d[0][3], d[0][6])] else: if cls.__latest_sell_order_dict[code][0] == d[0][7]: cls.__latest_sell_order_dict[code][1] += d[0][2] @@ -495,7 +503,8 @@ # 灏嗘定鍋滀富鍔ㄥ崠璁板叆鏃ュ織 l2_log.info(code, hx_logger_l2_active_sell, f"{info}") - cls.__latest_sell_order_dict[code] = [d[0][7], d[0][2], d[0][1], (d[0][3], d[0][6]), (d[0][3], d[0][6])] + cls.__latest_sell_order_dict[code] = [d[0][7], d[0][2], d[0][1], (d[0][3], d[0][6]), + (d[0][3], d[0][6])] finally: cls.__last_trade_data_dict[code] = d -- Gitblit v1.8.0