Administrator
2024-08-15 0e921bc8d68e830f15bb049dfb84b22bc05db788
utils/data_export_util.py
@@ -43,16 +43,19 @@
        datas = local_today_datas.get(code)
    if not datas:
        datas = []
    logger_debug.info("加载L2逐笔委托耗时:{}", f"{(time.time() - __start_time)}")
    __start_time = time.time()
    process_indexs = log_export.get_l2_process_position(code, date)
    logger_debug.info("加载L2逐笔委托批次耗时:{}", f"{(time.time() - __start_time)}")
    __start_time = time.time()
    trade_indexs = log_export.get_l2_trade_position(code, date)
    real_position_indexes = log_export.get_real_place_order_positions(code, date)
    deal_list = log_export.load_huaxin_deal_record(code, date)
    logger_debug.info("加载其他交易参数耗时:{}", f"{(time.time() - __start_time)}")
    __start_time = time.time()
    if not datas:
        # 加快没有L2数据的导出速度
        process_indexs = []
        trade_indexs = []
        real_position_indexes = []
        deal_list = []
        cancel_reasons = {}
    else:
        process_indexs = log_export.get_l2_process_position(code, date)
        trade_indexs = log_export.get_l2_trade_position(code, date)
        real_position_indexes = log_export.get_real_place_order_positions(code, date)
        deal_list = log_export.load_huaxin_deal_record(code, date)
        cancel_reasons = log_export.load_cancel_buy_reasons(code, date)
    deal_list_dict = {}
    for d in deal_list:
        deal_list_dict[str(d[0])] = d
@@ -61,14 +64,10 @@
    sell_nos = sell_no_dict.get(code)
    active_sell_map = log_export.load_huaxin_active_sell_map(date=date)
    active_sell_set = active_sell_map.get(code)
    logger_debug.info("加载卖单耗时:{}", f"{(time.time() - __start_time)}")
    __start_time = time.time()
    if not active_sell_set:
        active_sell_set = set()
    fdatas = export_l2_data(code, datas, process_indexs, trade_indexs, real_position_indexes, deal_list_dict, sell_nos,
                            active_sell_set)
    logger_debug.info("组装数据耗时:{}", f"{(time.time() - __start_time)}")
    __start_time = time.time()
                            active_sell_set, cancel_reasons)
    return fdatas
@@ -82,7 +81,7 @@
def export_l2_data(code, datas, process_indexs, trade_indexs, real_position_indexes, deal_list_dict, sell_nos,
                   active_sell_nos):
                   active_sell_nos, cancel_reasons):
    def find_process_index(index):
        for i in range(0, len(process_indexs)):
            if process_indexs[i][0] <= index <= process_indexs[i][1]:
@@ -94,20 +93,15 @@
            if trade_indexs[i][1] == index:
                return trade_indexs[i]
        return None
    logger_debug.info("准备加载L2Map数据-----")
    # 数据预处理
    num_operate_map = {}
    l2.l2_data_util.load_num_operate_map(num_operate_map, code, datas)
    logger_debug.info("load_num_operate_map")
    buy_no_map = {}
    sell_no_map = {}
    l2.l2_data_util.load_buy_no_map(buy_no_map, code, datas)
    logger_debug.info("load_buy_no_map")
    l2.l2_data_util.load_sell_no_map(sell_no_map, code, datas)
    logger_debug.info("load_sell_no_map")
    l2.l2_data_util.load_canceled_buy_no_map(l2.l2_data_util.local_today_canceled_buyno_map, code, datas)
    logger_debug.info("load_canceled_buy_no_map")
    # num_dict = {}
    # for data in datas:
    #     if data["val"]["num"] not in num_dict:
@@ -116,8 +110,14 @@
    logger_debug.info(f"循环组装数据开始:长度-{len(datas)} 主动卖长度-{len(active_sell_nos)}")
    index = 0
    fdatas = []
    # 数据太多就需要过滤掉小金额
    is_data_too_large = len(datas) > 20000
    for data in datas:
        index += 1
        if is_data_too_large and data['val']['num'] * float(data['val']['price']) < 5000:
            if data["index"] not in real_position_indexes:
                continue
        # 先移除
        if data['val']['orderNo'] in active_sell_nos:
            # 过滤主动卖
@@ -227,6 +227,10 @@
            elif trade_info[0] == 2:
                # font.colour_index = 10
                cancel_order_info = trade_info[2]
        if not cancel_order_info:
            if data["index"] in cancel_reasons:
                cancel_order_info = cancel_reasons[data["index"]]
        format_data.append(cancel_order_info)
        format_data.append(data["val"].get("orderNo"))
        fdatas.append((style_int, trade_info, format_data))