Administrator
2024-11-04 8ffb521f738254038d85bbade839b2e30456e525
l2/l2_data_manager_new.py
@@ -483,7 +483,8 @@
            total_sell_volume = 0
            if current_sell and len(current_sell) > 2:
                total_sell_volume = current_sell[2]
            volume_rate = code_volumn_manager.CodeVolumeManager().get_volume_rate(code, total_sell_volume=total_sell_volume)
            volume_rate = code_volumn_manager.CodeVolumeManager().get_volume_rate(code,
                                                                                  total_sell_volume=total_sell_volume)
            volume_rate_index = code_volumn_manager.CodeVolumeManager().get_volume_rate_index(volume_rate)
            # 计算分值
            limit_up_time = cls.__LimitUpTimeManager.get_limit_up_time_cache(code)
@@ -733,8 +734,6 @@
                    code) and not gpcode_manager.GreenListCodeManager().is_in_cache(code):
                return False, True, f"只买想买:没在想买单和绿单", True
        return True, False, f"", False
    @classmethod
@@ -947,6 +946,33 @@
        return is_limit_up_buy
    @classmethod
    def __is_big_order_deal_enough(cls, code):
        """
        大单成交是否足够
        @param code:
        @param volume_rate:
        @return:
        """
        limit_up_price = gpcode_manager.get_limit_up_price_as_num(code)
        refer_volume = code_volumn_manager.CodeVolumeManager().get_max_volume_in_5days(code)
        if refer_volume is None:
            refer_volume = 0
        money_y = int(refer_volume * limit_up_price / 1e8)
        money_y = min(money_y, 50)
        money_y = max(money_y, 5)
        # 计算大单参考数量
        threshold_count = int(round(0.4 * money_y)) * 2
        threshold_money = threshold_count * 299 * 10000
        volume_rate_info = cls.volume_rate_info.get(code)
        deal_big_order_money = BigOrderDealManager().get_total_buy_money(code)
        if deal_big_order_money >= threshold_money:
            return True, f"量比-{volume_rate_info}, 总大单成交金额({deal_big_order_money})>={threshold_money}"
        else:
            return False, f"量比-{volume_rate_info}, 总大单成交金额({deal_big_order_money})<{threshold_money}"
    @classmethod
    def __can_buy_first(cls, code):
        """
        是否可以下单
@@ -1104,6 +1130,11 @@
                                                                                                          min_money=min_money)
                    if left_count < 1:
                        return False, False, f"没有已挂或者成交的大单", False
            big_deal_order_info = cls.__is_big_order_deal_enough(code)
            if not big_deal_order_info[0]:
                return False, False, big_deal_order_info[1], False
            place_order_count = trade_data_manager.PlaceOrderCountManager().get_place_order_count(code)
            # ------------------第一和第二次下单都必须要有至少一笔未成交的大单--------------------------
            # 计算大单