Administrator
2024-04-22 b7549def5867c6aba6231ea74359cfe84990ee25
l2/l2_transaction_data_processor.py
@@ -31,18 +31,13 @@
    @classmethod
    def process_huaxin_transaction_datas(cls, code, datas):
        __start_time = time.time()
        # 设置成交价
        current_price_process_manager.set_trade_price(code, datas[-1][1])
        total_datas = l2_data_util.local_today_datas.get(code)
        __start_time = time.time()
        use_time_list = []
        try:
            buyno_map = l2_data_util.local_today_buyno_map.get(code)
            # 暂时不需要重新加载获取
            # if not buyno_map:
            #     if trade_manager.CodesTradeStateManager().get_trade_state_cache(
            #             code) != trade_manager.TRADE_STATE_NOT_TRADE:
            #         l2_data_util.load_l2_data(code)
            #         buyno_map = l2_data_util.local_today_buyno_map.get(code)
            if buyno_map is None:
                buyno_map = {}
@@ -57,24 +52,29 @@
                    limit_up_price = round(float(limit_up_price), 2)
                # 统计卖单
                big_sell_order_info = HuaXinSellOrderStatisticManager.add_transaction_datas(code, datas, limit_up_price)
                need_cancel, cancel_msg = SCancelBigNumComputer().set_big_sell_order_info_for_cancel(code,
                                                                                                     big_sell_order_info,
                                                                                                     order_begin_pos)
                if need_cancel:
                    cancel_msg = f"S撤:{cancel_msg}"
                if not need_cancel:
                    need_cancel, cancel_msg = FCancelBigNumComputer().need_cancel_for_p(code, big_sell_order_info,
                                                                                        order_begin_pos)
                _start_time = time.time()
                use_time_list.append(("处理卖单成交数据", _start_time - __start_time))
                if is_placed_order:
                    need_cancel, cancel_msg = SCancelBigNumComputer().set_big_sell_order_info_for_cancel(code,
                                                                                                         big_sell_order_info,
                                                                                                         order_begin_pos)
                    if need_cancel:
                        cancel_msg = f"S撤:{cancel_msg}"
                    if not need_cancel:
                        need_cancel, cancel_msg = FCancelBigNumComputer().need_cancel_for_p(code, big_sell_order_info,
                                                                                            order_begin_pos)
                    if need_cancel:
                        L2TradeDataProcessor.cancel_buy(code, cancel_msg)
                if need_cancel:
                    L2TradeDataProcessor.cancel_buy(code, cancel_msg)
                GCancelBigNumComputer().set_big_sell_order_info(code, big_sell_order_info)
                    # GCancelBigNumComputer().set_big_sell_order_info(code, big_sell_order_info)
                    use_time_list.append(("处理卖单相关撤数据", time.time() - _start_time))
                    _start_time = time.time()
            except Exception as e:
                async_log_util.error(logger_debug, f"卖单统计异常:{big_sell_order_info}")
                logger_debug.exception(e)
            _start_time = time.time()
            # 计算已经成交的大单
            big_money_count = 0
            for d in datas:
@@ -92,7 +92,11 @@
                        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)
                    # 暂时不需要这种复杂的机制
                    # LCancelBigNumComputer().add_deal_index(code, data["index"], order_begin_pos.buy_single_index)
            use_time_list.append(("统计买单数据", time.time() - _start_time))
            _start_time = time.time()
            if big_money_count > 0:
                LCancelRateManager.compute_big_num_deal_rate(code)
@@ -101,16 +105,14 @@
            if buy_progress_index is not None:
                buy_progress_index_changed = cls.__TradeBuyQueue.set_traded_index(code, buy_progress_index,
                                                                                  total_datas)
                async_log_util.info(logger_l2_trade_buy_queue, "获取成交位置成功: code-{} index-{}", code,
                                    buy_progress_index)
                GCancelBigNumComputer().set_trade_progress(code, order_begin_pos.buy_single_index, buy_progress_index)
                LCancelBigNumComputer().set_trade_progress(code, order_begin_pos.buy_single_index, buy_progress_index,
                                                           total_datas)
                if order_begin_pos and order_begin_pos.buy_exec_index and order_begin_pos.buy_exec_index > -1:
                if is_placed_order:
                    GCancelBigNumComputer().set_trade_progress(code, order_begin_pos.buy_single_index,
                                                               buy_progress_index)
                    LCancelBigNumComputer().set_trade_progress(code, order_begin_pos.buy_single_index,
                                                               buy_progress_index,
                                                               total_datas)
                    cancel_result = FCancelBigNumComputer().need_cancel_for_deal_fast(code, buy_progress_index)
                    if cancel_result[0]:
                        L2TradeDataProcessor.cancel_buy(code, f"F撤:{cancel_result[1]}")
@@ -121,14 +123,15 @@
                                                                     buy_progress_index)
            else:
                pass
            if order_begin_pos and order_begin_pos.buy_exec_index and order_begin_pos.buy_exec_index > -1:
            if is_placed_order:
                # 触发L撤上重新计算
                LCancelBigNumComputer().re_compute_l_up_watch_indexes(code, order_begin_pos.buy_single_index)
            use_time_list.append(("处理成交进度相关撤", time.time() - _start_time))
        except Exception as e:
            logging.exception(e)
            hx_logger_l2_debug.exception(e)
        finally:
            use_time = int((time.time() - __start_time) * 1000)
            if use_time > 10:
                async_log_util.info(hx_logger_l2_upload, f"{code}处理成交用时:{use_time}")
            if use_time > 5:
                async_log_util.info(hx_logger_l2_upload, f"{code}处理成交用时:{use_time}  详情:{use_time_list}")