Administrator
2024-10-29 2c707e6083d8d60b088a7f91a0020370e65c8c7f
l2/l2_data_manager_new.py
@@ -724,7 +724,8 @@
            return False, True, f"14:57后不能交易", True
        if cls.__TradeTargetCodeModeManager.get_mode_cache() == TradeTargetCodeModeManager.MODE_ONLY_BUY_WANT_CODES:
            if not cls.__WantBuyCodesManager.is_in_cache(code) and not gpcode_manager.GreenListCodeManager().is_in_cache(code):
            if not cls.__WantBuyCodesManager.is_in_cache(
                    code) and not gpcode_manager.GreenListCodeManager().is_in_cache(code):
                return False, True, f"只买想买:没在想买单和绿单", True
        return True, False, f"", False
@@ -1156,10 +1157,7 @@
        k_format = code_nature_analyse.CodeNatureRecordManager().get_k_format_cache(code)
        # 是否有辨识度
        is_special = True if k_format and k_format[8][0] else False
        # 上5个交易日有炸板之后
        has_open_limit_up_in_5 = True if k_format and len(k_format) >= 11 and k_format[10] else False
        # 上5个交易日有跌停
        has_limit_down_in_5 = True if k_format and len(k_format) >= 13 and k_format[12] else False
        # 是否是强势10分钟
        is_in_strong_time = now_timestamp <= int("094000")
        # 是否是强势30分钟
@@ -1519,7 +1517,7 @@
                                                     max_num_set=set(),
                                                     buy_volume_rate=buy_volume_rate,
                                                     mode=OrderBeginPosInfo.MODE_RADICAL,
                                                     mode_desc="总抛压小扫入",
                                                     mode_desc=f"总抛压小扫入",
                                                     sell_info=sell_info,
                                                     threshold_money=threshold_money)
            order_begin_pos_info.at_limit_up = cls.__is_at_limit_up_buy(code)
@@ -1933,43 +1931,48 @@
        @param end_index:
        @return: (是否获取到信号, 信号位置, 消息)
        """
        # 激进买信号的时间
        def __can_order():
            # 判断是否是板上放量
            if cls.__is_at_limit_up_buy(code, start_index):
                return False, None, "板上放量"
            total_datas = local_today_datas[code]
            min_num = int(29900 / gpcode_manager.get_limit_up_price_as_num(code))
            # 如果有大单成交就不需要看大单
            deal_money_list = BigOrderDealManager().get_total_buy_money_list(code)
            if deal_money_list:
                for m in deal_money_list:
                    if m >= 2990000:
                        min_num = int(5000 / gpcode_manager.get_limit_up_price_as_num(code))
                        break
            single_index = None
            for i in range(start_index, end_index + 1):
                data = total_datas[i]
                val = data["val"]
                if not L2DataUtil.is_limit_up_price_buy(val):
                    continue
                if val["num"] < min_num:
                    continue
                if int(val["orderNo"]) <= radical_data[1]:
                    # 主动买单后的数据不算
                    continue
                single_index = i
                break
            if single_index is not None:
                return True, single_index, "有大单"
            return False, None, "无大单"
        radical_data = RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict.get(code)
        if not radical_data:
            return False, None, "不满足激进买的条件"
        if t.time() > radical_data[0]:
            return False, None, "超过生效时间"
        # 判断是否是板上放量
        if cls.__is_at_limit_up_buy(code, start_index):
            return False, None, "板上放量"
        total_datas = local_today_datas[code]
        min_num = int(29900 / gpcode_manager.get_limit_up_price_as_num(code))
        # 如果有大单成交就不需要看大单
        deal_money_list = BigOrderDealManager().get_total_buy_money_list(code)
        if deal_money_list:
            for m in deal_money_list:
                if m >= 2990000:
                    min_num = int(5000 / gpcode_manager.get_limit_up_price_as_num(code))
                    break
        single_index = None
        for i in range(start_index, end_index + 1):
            data = total_datas[i]
            val = data["val"]
            if not L2DataUtil.is_limit_up_price_buy(val):
                continue
            if val["num"] < min_num:
                continue
            if int(val["orderNo"]) <= radical_data[1]:
                # 主动买单后的数据不算
                continue
            single_index = i
            break
        if single_index is not None:
            return True, single_index, "有大单"
        return False, None, "无大单"
        result = __can_order()
        l2_log.debug(code, f"L2扫入判断:{result}")
        return result
    @classmethod
    def test__compute_active_order_begin_pos(cls, code, continue_count, start_index, end_index):