Administrator
2025-01-08 8526930f8c13d60d2cdb1db3eec0e0ecb1ee614e
BUG修复
2个文件已修改
47 ■■■■ 已修改文件
l2/huaxin/huaxin_delegate_postion_manager.py 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/l2_data_manager_new.py 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/huaxin/huaxin_delegate_postion_manager.py
@@ -3,6 +3,7 @@
"""
import time
import constant
from huaxin_client import constant as huaxin_client_constant
from l2 import l2_data_util, l2_data_source_util
from l2.huaxin import l2_huaxin_util
@@ -51,6 +52,8 @@
    真实下单位管理
    """
    __place_order_info_dict = {}
    # 真实下单位置
    __place_order_position = {}
    # 获取下单信息
    @classmethod
@@ -233,15 +236,27 @@
        order_time = order_info[2]
        estimate_time_space = 1 if tool.is_sz_code(code) else 2.5
        place_order_data = cls.__compute_real_place_order_position(code, exec_data, order_info_list, add_datas)
        real_place_index_info = None
        if place_order_data:
            return place_order_data["index"], order_info, RELIABILITY_TYPE_REAL
            real_place_index_info = place_order_data["index"], RELIABILITY_TYPE_REAL
        elif tool.trade_time_sub(add_datas[-1]['val']['time'],
                                 exec_data['val']['time']) >= estimate_time_space and time.time() - order_time > 5:
            estimate_index = cls.__compute_estimate_order_position(code, exec_data["index"], order_info_list[-1][1],
                                                                   order_info_list[-1][0])
            if estimate_index:
                return estimate_index, order_info, RELIABILITY_TYPE_ESTIMATE
        return None, order_info, None
                real_place_index_info = estimate_index, RELIABILITY_TYPE_ESTIMATE
        if real_place_index_info:
            # 获取到了下单位置
            async_log_util.info(hx_logger_trade_debug, f"真实下单位置:{code}-{real_place_index_info}")
            async_log_util.info(logger_real_place_order_position,
                                f"真实下单位置:{code}-{real_place_index_info}-{0}")
            if code in cls.__place_order_info_dict:
                cls.__place_order_info_dict.pop(code)
            cls.__place_order_position[code] = real_place_index_info[0]
            return real_place_index_info[0], order_info, real_place_index_info[1]
        else:
            return None, order_info, None
    @classmethod
    def recompute_for_slow_time(cls, code, order_info, real_place_index, compute_type):
@@ -256,7 +271,13 @@
        # TODO 重新计算, 根据实际订单来计算
        pass
    # 计算预估下单位
    @classmethod
    def get_place_order_position(cls, code):
        return cls.__place_order_position.get(code)
    @classmethod
    def set_place_order_position(cls, code, index):
        cls.__place_order_position[code] = index
def __compute_estimate_order_position(code, exec_buy_index, shadow_price, shadow_volume):
@@ -532,8 +553,13 @@
# 获取真实下单位置
def get_place_order_position(code):
    if constant.IS_NEW_VERSION_PLACE_ORDER:
        return RealDelegateOrderPositionManager.get_place_order_position(code)
    return __place_order_position.get(code)
def set_place_order_position(code, index):
    __place_order_position[code] = index
    if constant.IS_NEW_VERSION_PLACE_ORDER:
        RealDelegateOrderPositionManager.set_place_order_position(code, index)
    else:
        __place_order_position[code] = index
l2/l2_data_manager_new.py
@@ -486,11 +486,12 @@
                            order_begin_pos = cls.__get_order_begin_pos(
                                code)
                            cls.set_real_place_order_index(code, place_order_index, order_begin_pos)
                            try:
                                cls.__re_compute_threading_pool.submit(
                                    cls.__recompute_real_order_index, code, place_order_index, order_info, compute_type)
                            except:
                                pass
                            if not constant.IS_NEW_VERSION_PLACE_ORDER:
                                try:
                                    cls.__re_compute_threading_pool.submit(
                                        cls.__recompute_real_order_index, code, place_order_index, order_info, compute_type)
                                except:
                                    pass
                            async_log_util.info(logger_l2_process, f"code:{code} 获取到下单真实位置:{place_order_index}")
                    # 处理涨停卖与涨停卖撤