Administrator
2023-10-30 fb47d36048e94b9a506d5c153e3dd19a01e37df1
l2/l2_data_manager_new.py
@@ -1,4 +1,5 @@
import logging
import random
import time as t
from code_attribute import big_money_num_manager, code_volumn_manager, code_data_util, industry_codes_sort, \
@@ -215,7 +216,6 @@
    __SecondCancelBigNumComputer = SecondCancelBigNumComputer()
    __HourCancelBigNumComputer = HourCancelBigNumComputer()
    __LCancelBigNumComputer = LCancelBigNumComputer()
    __DCancelBigNumComputer = DCancelBigNumComputer()
    __TradeStateManager = trade_manager.TradeStateManager()
    __CodesTradeStateManager = trade_manager.CodesTradeStateManager()
    __PauseBuyCodesManager = gpcode_manager.PauseBuyCodesManager()
@@ -283,13 +283,14 @@
                cls.unreal_buy_dict.pop(code)
    @classmethod
    def set_real_place_order_index(cls, code, index, buy_single_index):
        trade_record_log_util.add_real_place_order_position_log(code, index, buy_single_index)
        need_cancel = FastCancelBigNumComputer().set_real_order_index(code, index)
        if need_cancel:
            cls.cancel_buy(code, msg="F撤不够2笔触发撤单")
        else:
            cancel_buy_strategy.set_real_place_position(code, index, buy_single_index)
    def set_real_place_order_index(cls, code, index, order_begin_pos:OrderBeginPosInfo):
        trade_record_log_util.add_real_place_order_position_log(code, index, order_begin_pos.buy_single_index)
        if order_begin_pos.mode == OrderBeginPosInfo.MODE_FAST:
            need_cancel = FastCancelBigNumComputer().set_real_order_index(code, index)
            if need_cancel:
                cls.cancel_buy(code, msg="F撤不够2笔触发撤单")
                return
        cancel_buy_strategy.set_real_place_position(code, index, order_begin_pos.buy_single_index)
    # 处理华鑫L2数据
    @classmethod
@@ -349,7 +350,7 @@
                        if place_order_index:
                            order_begin_pos = cls.__get_order_begin_pos(
                                code)
                            cls.set_real_place_order_index(code, place_order_index, order_begin_pos.buy_single_index)
                            cls.set_real_place_order_index(code, place_order_index, order_begin_pos)
                            async_log_util.info(logger_l2_process, "code:{} 获取到下单真实位置:{}", code, place_order_index)
                except:
                    async_log_util.error(logger_l2_error, f"{code} 处理真实下单位置出错")
@@ -599,6 +600,7 @@
                    jx_blocks, jx_blocks_by = KPLCodeJXBlockManager().get_jx_blocks_cache(
                        code), KPLCodeJXBlockManager().get_jx_blocks_cache(code, by=True)
                    info = cls.__trade_log_placr_order_info_dict[code]
                    info.mode = order_begin_pos.mode
                    info.set_buy_index(order_begin_pos.buy_single_index, order_begin_pos.buy_exec_index)
                    if jx_blocks:
                        info.set_kpl_blocks(list(jx_blocks))
@@ -1226,19 +1228,19 @@
    @classmethod
    def __compute_fast_order_begin_pos(cls, code, start_index, end_index):
        limit_up_price = gpcode_manager.get_limit_up_price(code)
        if float(limit_up_price) >= 10:
            return False, -1, "股价大于10块"
        # if float(limit_up_price) >= 10:
        #     return False, -1, "股价大于10块"
        total_datas = local_today_datas[code]
        start_time_str = total_datas[start_index]["val"]["time"]
        if tool.trade_time_sub(start_time_str, "10:00:00") > 0:
            return False, -1, "超过规定时间"
        # if tool.trade_time_sub(start_time_str, "13:00:00") > 0:
        #     return False, -1, "超过规定时间"
        refer_sell_data = cls.__L2MarketSellManager.get_refer_sell_data(code, start_time_str)
        if refer_sell_data is None:
            return False, -1, "总卖为空"
        if cls.__L2MarketSellManager.is_refer_sell_time_used(code, refer_sell_data[0]):
            return False, -1, "总卖统计时间已被使用"
        # 是否大于500万
        if refer_sell_data[1] < 500 * 10000:
        if refer_sell_data[1] <= 500 * 10000:
            return False, -1, "总卖小于指定金额"
        # 统计之前的卖
        threshold_money = refer_sell_data[1]