From 30b8187bb288e69750e3280d3e1f4cccc0a01d85 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 22 四月 2024 18:46:30 +0800 Subject: [PATCH] 大单净流入对撤单比例影响 --- l2/l2_transaction_data_processor.py | 67 +++++++++++++++++++++++---------- 1 files changed, 46 insertions(+), 21 deletions(-) diff --git a/l2/l2_transaction_data_processor.py b/l2/l2_transaction_data_processor.py index a495a43..f738522 100644 --- a/l2/l2_transaction_data_processor.py +++ b/l2/l2_transaction_data_processor.py @@ -1,20 +1,23 @@ import logging import time +import constant from code_attribute import gpcode_manager from l2 import l2_data_util, l2_data_manager, transaction_progress from l2.cancel_buy_strategy import FCancelBigNumComputer, LCancelBigNumComputer, LCancelRateManager, \ GCancelBigNumComputer, SCancelBigNumComputer, HourCancelBigNumComputer from l2.l2_data_manager_new import L2TradeDataProcessor from l2.l2_data_util import L2DataUtil -from l2.l2_transaction_data_manager import HuaXinBuyOrderManager, HuaXinSellOrderStatisticManager +from l2.l2_transaction_data_manager import HuaXinBuyOrderManager, HuaXinSellOrderStatisticManager, BigOrderDealManager from log_module import async_log_util from log_module.log import hx_logger_l2_debug, logger_l2_trade_buy_queue, logger_debug, hx_logger_l2_upload from trade import current_price_process_manager from trade.deal_big_money_manager import DealOrderNoManager +import concurrent.futures class HuaXinTransactionDatasProcessor: + __statistic_thread_pool = concurrent.futures.ThreadPoolExecutor(max_workers=constant.HUAXIN_L2_MAX_CODES_COUNT + 2) __TradeBuyQueue = transaction_progress.TradeBuyQueue() # 璁$畻鎴愪氦杩涘害 @@ -28,6 +31,27 @@ buy_progress_index = buyno_map[buy_no]["index"] break return buy_progress_index + + @classmethod + def statistic_big_order_infos(cls, code, datas): + """ + 缁熻澶у崟鎴愪氦 + @param code: + @param datas: + @return: + """ + buy_datas = HuaXinBuyOrderManager.statistic_big_buy_data(code, datas) + if buy_datas: + BigOrderDealManager().add_buy_datas(code, buy_datas) + + sell_datas = HuaXinSellOrderStatisticManager.statistic_big_sell_data(code, datas) + if sell_datas: + BigOrderDealManager().add_sell_datas(code, sell_datas) + + if buy_datas or sell_datas: + buy_money = BigOrderDealManager().get_total_buy_money(code) + sell_money = BigOrderDealManager().get_total_sell_money(code) + LCancelRateManager.set_big_num_deal_info(code, buy_money, sell_money) @classmethod def process_huaxin_transaction_datas(cls, code, datas): @@ -76,29 +100,30 @@ _start_time = time.time() # 璁$畻宸茬粡鎴愪氦鐨勫ぇ鍗� - big_money_count = 0 - for d in datas: - data = buyno_map.get(f"{d[6]}") - buy_num = None - if data: - buy_num = data["val"]["num"] * 100 - # 缁熻鎴愪氦鍗� - deal_info = HuaXinBuyOrderManager.statistic_deal_desc(code, d, buy_num) - if deal_info and deal_info[1]: - data = buyno_map.get(f"{deal_info[0]}") - print("宸茬粡鎴愪氦绱㈠紩锛�", data["index"]) - val = data["val"] - if l2_data_util.is_big_money(val) and L2DataUtil.is_limit_up_price_buy(val): - big_money_count += 1 - DealOrderNoManager().add_orderno(code, f"{deal_info[0]}") - # L鍚庢槸鍚︽湁鎴愪氦锛屽鏋滄湁鎴愪氦灏遍渶瑕侀櫎鍘诲綋鍓嶇瑪鏁帮紝鐒跺悗閲嶆柊鍥婃嫭涓�绗� - # 鏆傛椂涓嶉渶瑕佽繖绉嶅鏉傜殑鏈哄埗 - # LCancelBigNumComputer().add_deal_index(code, data["index"], order_begin_pos.buy_single_index) + # big_money_count = 0 + # for d in datas: + # data = buyno_map.get(f"{d[6]}") + # buy_num = None + # if data: + # buy_num = data["val"]["num"] * 100 + # # 缁熻鎴愪氦鍗� + # deal_info = HuaXinBuyOrderManager.statistic_deal_desc(code, d, buy_num) + # if deal_info and deal_info[1]: + # data = buyno_map.get(f"{deal_info[0]}") + # print("宸茬粡鎴愪氦绱㈠紩锛�", data["index"]) + # val = data["val"] + # if l2_data_util.is_big_money(val) and L2DataUtil.is_limit_up_price_buy(val): + # big_money_count += 1 + # DealOrderNoManager().add_orderno(code, f"{deal_info[0]}") + # # L鍚庢槸鍚︽湁鎴愪氦锛屽鏋滄湁鎴愪氦灏遍渶瑕侀櫎鍘诲綋鍓嶇瑪鏁帮紝鐒跺悗閲嶆柊鍥婃嫭涓�绗� + # # 鏆傛椂涓嶉渶瑕佽繖绉嶅鏉傜殑鏈哄埗 + # # LCancelBigNumComputer().add_deal_index(code, data["index"], order_begin_pos.buy_single_index) + cls.__statistic_thread_pool.submit(cls.statistic_big_order_infos, code, datas) use_time_list.append(("缁熻涔板崟鏁版嵁", time.time() - _start_time)) _start_time = time.time() - if big_money_count > 0: - LCancelRateManager.compute_big_num_deal_rate(code) + # if big_money_count > 0: + # LCancelRateManager.compute_big_num_deal_rate(code) buy_progress_index = cls.__compute_latest_trade_progress(code, buyno_map, datas) -- Gitblit v1.8.0