Administrator
2025-01-09 8611e1d8486a2a50066f069af49c276802ae1e2a
添加大卖单阈值
2个文件已修改
76 ■■■■ 已修改文件
l2/l2_transaction_data_manager.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/radical_buy_data_manager.py 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/l2_transaction_data_manager.py
@@ -122,15 +122,19 @@
        """
        return self.__total_buy_datas_dict.get(code)
    def get_total_sell_money(self, code):
    def get_total_sell_money(self, code, threshold_money=None):
        """
        获取总共的大单卖金额
        @param threshold_money: 大单阈值
        @param code:
        @return:
        """
        if code not in self.__total_sell_datas_dict:
            return 0
        return int(sum([x[2] for x in self.__total_sell_datas_dict[code]]))
        if threshold_money:
            return int(sum([x[2] if x[2]>=threshold_money else 0 for x in self.__total_sell_datas_dict[code]]))
        else:
            return int(sum([x[2] for x in self.__total_sell_datas_dict[code]]))
# 成交数据统计
trade/buy_radical/radical_buy_data_manager.py
@@ -39,6 +39,7 @@
    """
    __db = 3
    __big_order_threshold = {}
    __big_sell_order_threshold = {}
    # 已经成交的累计大买单金额:用于初次上板尚未订阅的情况
    __already_total_deal_big_order_money = {}
    # 已经成交的累计大卖单金额:用于初次上板尚未订阅的情况
@@ -55,6 +56,12 @@
            val = redis_manager.RedisUtils.get(self.__get_redis(), k)
            val = int(val)
            self.__big_order_threshold[code] = val
        keys = redis_manager.RedisUtils.keys(self.__get_redis(), "radical_big_sell_order_threshold-*")
        for k in keys:
            code = k.split("-")[1]
            val = redis_manager.RedisUtils.get(self.__get_redis(), k)
            val = int(val)
            self.__big_sell_order_threshold[code] = val
    def __get_redis(self):
        return self.__redis_manager.getRedis()
@@ -74,6 +81,23 @@
            return
        self.__big_order_threshold[code] = threshold_money
        redis_manager.RedisUtils.setex_async(self.__db, f"radical_big_order_threshold-{code}", tool.get_expire(),
                                             f"{threshold_money}")
    def set_big_sell_order_threshold(self, code, threshold_money):
        """
        设置大卖单的阈值
        @param code:
        @param threshold_money:
        @return:
        """
        if code in self.__big_sell_order_threshold:
            return
        async_log_util.info(logger_l2_radical_buy_data, f"大卖单阈值数据:{code}-{threshold_money}")
        if threshold_money < self.__get_base_big_order_threshold(code):
            # 小于基础大单不设置
            return
        self.__big_sell_order_threshold[code] = threshold_money
        redis_manager.RedisUtils.setex_async(self.__db, f"radical_big_sell_order_threshold-{code}", tool.get_expire(),
                                             f"{threshold_money}")
    def set_big_deal_order_list(self, code, buy_money_list, sell_money_list, limit_up_price, min_order_no):
@@ -124,10 +148,18 @@
                pre_limit_up_price_money_sell_list.append((info[0], info[2]))
                total_deal_sell_money += info[0]
                total_deal_sell_money_info_list.append(info)
            # 计算卖单阈值
            max_sell_money = max([x[0] for x in total_deal_sell_money_info_list])
            average_sell_money = sum([x[0] for x in total_deal_sell_money_info_list])
            threshold_sell_money = int(
                round(max(self.__get_base_big_order_threshold(code),
                          min((max_sell_money // 2 + average_sell_money) // 2, average_sell_money))))
            self.set_big_sell_order_threshold(code, threshold_sell_money)
            async_log_util.info(logger_l2_radical_buy_data,
                                f"之前的大卖单:{code}-{total_deal_sell_money}-{total_deal_sell_money_info_list}")
                                f"之前的大卖单:{code}-{total_deal_sell_money}-{total_deal_sell_money_info_list},卖大单阈值-{threshold_sell_money}")
            self.__already_total_sell_deal_big_order_money[code] = (
            total_deal_sell_money, pre_limit_up_price_money_sell_list)
                total_deal_sell_money, pre_limit_up_price_money_sell_list)
    def get_big_order_threshold(self, code):
        """
@@ -139,6 +171,25 @@
            return self.__big_order_threshold.get(code)
        return 2990000
    def __get_base_big_order_threshold(self, code):
        """
        获取基础大单的金额
        @param code:
        @return:
        """
        return l2_data_util.get_big_money_val(gpcode_manager.get_limit_up_price_as_num(code), tool.is_ge_code(code))
    def get_big_sell_order_threshold(self, code):
        """
        获取大单阈值
        @param code:
        @return:
        """
        if code in self.__big_sell_order_threshold:
            return self.__big_sell_order_threshold.get(code)
        return self.__get_base_big_order_threshold(code)
    def get_deal_big_order_money(self, code):
        """
        获取大单成交金额
@@ -149,9 +200,10 @@
            return self.__already_total_deal_big_order_money[code][0]
        return 0
    def get_sell_deal_big_order_money(self, code):
    def get_sell_deal_big_order_money(self, code, threshold_money):
        if code in self.__already_total_sell_deal_big_order_money:
            return self.__already_total_sell_deal_big_order_money[code][0]
            return sum([x[0] if x[0] >= threshold_money else 0 for x in
                        self.__already_total_sell_deal_big_order_money[code][1]])
        return 0
    def get_deal_big_order_money_list(self, code):
@@ -1291,10 +1343,11 @@
    @param code:
    @return: 买大单, 上板前买大单, 卖大单, 上板前卖大单
    """
    threshold_sell_money = BeforeSubDealBigOrderManager().get_big_sell_order_threshold(code)
    buy_money = BigOrderDealManager().get_total_buy_money(code)
    sell_money = BigOrderDealManager().get_total_sell_money(code)
    sell_money = BigOrderDealManager().get_total_sell_money(code, threshold_money=threshold_sell_money)
    before_buy_money = BeforeSubDealBigOrderManager().get_deal_big_order_money(code)
    before_sell_money = BeforeSubDealBigOrderManager().get_sell_deal_big_order_money(code)
    before_sell_money = BeforeSubDealBigOrderManager().get_sell_deal_big_order_money(code, threshold_sell_money)
    return buy_money, before_buy_money, sell_money, before_sell_money
@@ -1313,7 +1366,8 @@
    TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = TOTAL_BIG_DEAL_MONEY_THRESHOLD_COUNT * THRESHOLD_MONEY
    big_order_detail_info = get_total_detal_big_order_details(code)
    deal_big_order_money = big_order_detail_info[0] + big_order_detail_info[1] - big_order_detail_info[2] - big_order_detail_info[3]
    deal_big_order_money = big_order_detail_info[0] + big_order_detail_info[1] - big_order_detail_info[2] - \
                           big_order_detail_info[3]
    try:
        # 获取正在成交的订单
        dealing_order_info = HuaXinBuyOrderManager().get_dealing_order_info(code)