Administrator
9 天以前 438bf1cbb7b39ca1682353e95cd7894034017b85
bug修复
3个文件已修改
77 ■■■■ 已修改文件
servers/data_server.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/radical_buy_data_manager.py 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/trade_result_manager.py 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/data_server.py
@@ -1020,7 +1020,7 @@
                                 output_util.money_desc(th_buy),  # 买大单阈值
                                 output_util.money_desc(th_sell),  # 卖单阈值
                                 big_money_rate * 100,  # 大单成交比(成交大单占整体成交额的比例)
                                 big_deal_rate_of_threashold_total_money # 涨停成交大单占累计大单阈值的比例
                                 big_deal_rate_of_threashold_total_money  # 涨停成交大单占累计大单阈值的比例
                                 ),
                                # 涨停大单净买入
                                output_util.money_desc(deal_big_money_info[1]),
@@ -1029,7 +1029,8 @@
                                # 原累计大单阈值(非人为设置)
                                output_util.money_desc(deal_big_money_info[3]),
                                # 人为设置的大单, 原始计算值
                                (output_util.money_desc(deal_big_money_info[4]) if deal_big_money_info[4] else '',output_util.money_desc(deal_big_money_info[5]) if deal_big_money_info[5] else '')
                                (output_util.money_desc(deal_big_money_info[4]) if deal_big_money_info[4] else '',
                                 output_util.money_desc(deal_big_money_info[5]) if deal_big_money_info[5] else '')
                            ]
                            if single_code:
                                # 加载大单详情
trade/buy_radical/radical_buy_data_manager.py
@@ -367,6 +367,16 @@
                    val = json.loads(val)
                    self.__total_big_order_threshold[code] = val
    def remove_money(self, code):
        """
        移除金额
        @param code:
        @return:
        """
        if code in self.__total_big_order_threshold:
            self.__total_big_order_threshold.pop(code)
            trade_record_log_util.add_common_msg(code, f"移除人为设置累计大单阈值")
    def set_money(self, code, money, trade_state):
        """
        设置金额
@@ -379,6 +389,7 @@
        redis_manager.RedisUtils.setex_async(self.__db, f"total_radical_big_order_threshold_info-{code}",
                                             tool.get_expire(),
                                             json.dumps((money, trade_state)))
        trade_record_log_util.add_common_msg(code, f"人为设置累计大单阈值:{money}")
    def get_money_cache(self, code):
        """
@@ -670,61 +681,6 @@
        #         trade_record_log_util.add_must_buy(code, "累计成交大单足够")
        # cls.__process_add_must(code)
        pass
    @classmethod
    def __process_add_must(cls, code):
        """
        处理加白
        @param code:
        @return:
        """
        if not constant.CAN_AUTO_ADD_WHITE:
            return
        if gpcode_manager.MustBuyCodesManager().is_in_cache(code):
            return
        trade_state = trade_manager.CodesTradeStateManager().get_trade_state_cache(code)
        if not trade_util.is_delegated(trade_state):
            # 没下单
            return
        human_setting_money_info = TotalDealBigOrderThresholdMoneyManager().get_money_info_cache(code)
        if not human_setting_money_info or not trade_util.is_delegated(human_setting_money_info[1]):
            # 没有人为设置累计大单阈值/不是在下单状态设置的 就不能加白
            return
        try:
            total_deal_big_order_result = get_total_deal_big_order_info(code,
                                                                        gpcode_manager.get_limit_up_price_as_num(code))
            if total_deal_big_order_result[0] <= 0 and total_deal_big_order_result[2] >= 1e8:
                # 1个亿以上的且本批次成交的大单金额大于2倍大单金额就加白
                order_begin_pos = TradePointManager().get_buy_compute_start_data_cache(code)
                is_placed_order = l2_data_manager.TradePointManager.is_placed_order(order_begin_pos)
                if not is_placed_order:
                    # 没有下过单
                    return
                if order_begin_pos and order_begin_pos.min_order_no is not None:
                    # 在 min_order_no 之后成交的大单金额
                    total_buy_data_list = BigOrderDealManager().get_total_buy_data_list(code)
                    min_order_no = order_begin_pos.min_order_no
                    if min_order_no is None:
                        async_log_util.warning(logger_debug, "处理成交大单足够加红: 最小订单号为空")
                        return
                    bigger_money = l2_data_util.get_big_money_val(gpcode_manager.get_limit_up_price_as_num(code),
                                                                  tool.is_ge_code(code))
                    deal_money = sum(
                        [x[2] for x in total_buy_data_list if x[0] >= min_order_no and x[2] >= bigger_money])
                    # 获取均大单
                    THRESHOLD_MONEY, is_temp_threshold_money = BeforeSubDealBigOrderManager().get_big_order_threshold_info(
                        code)
                    if deal_money >= 2 * THRESHOLD_MONEY:
                        gpcode_manager.MustBuyCodesManager().add_code(code)
                        trade_record_log_util.add_common_msg(code, "加红",
                                                             f"{code}大单成交足够加红, 本批次成交金额-{deal_money}/{THRESHOLD_MONEY * 2}  累计大单金额:{total_deal_big_order_result[1]}/{total_deal_big_order_result[2]}")
                    else:
                        async_log_util.info(logger_debug,
                                            f"{code}-成交大单少({deal_money}/{2 * THRESHOLD_MONEY},最小订单号-{order_begin_pos.min_order_no}),不能加白")
        except Exception as e:
            logger_debug.exception(e)
            async_log_util.info(logger_debug, f"处理成交大单足够加白的问题:{str(e)}")
    @classmethod
    def market_info_change(cls, code):
@@ -1860,7 +1816,7 @@
    # 再次计算算的值
    deal_rate = round(deal_big_order_money / TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE_ORIGIN, 2)
    TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE = max(1, (
                1 + max((-0.1 * deal_rate + 0.25), 0)) * deal_big_order_money)
            1 + max((-0.1 * deal_rate + 0.25), 0)) * deal_big_order_money)
    refer_sell_data = L2MarketSellManager().get_latest_refer_sell_data_with_not_zero(code)
    if refer_sell_data:
        TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE += refer_sell_data[1]
trade/trade_result_manager.py
@@ -14,7 +14,7 @@
from l2.l2_sell_manager import L2MarketSellManager
from log_module.log import logger_l2_error
from trade import trade_record_log_util
from trade.buy_radical.radical_buy_data_manager import RadicalBuyDataManager
from trade.buy_radical.radical_buy_data_manager import RadicalBuyDataManager, TotalDealBigOrderThresholdMoneyManager
from trade.trade_data_manager import PlaceOrderCountManager
from trade.trade_queue_manager import THSBuy1VolumnManager
from utils import buy_condition_util
@@ -143,6 +143,8 @@
    JCancelBigNumComputer().cancel_success(code)
    NBCancelBigNumComputer().cancel_success(code)
    CancelRateHumanSettingManager().remove_l_down(code)
    # 移除人为设置的大单阈值
    TotalDealBigOrderThresholdMoneyManager().remove_money(code)
    # 记录最近的撤单时间
    if from_real_cancel:
        __latest_cancel_l2_data_dict[code] = total_datas[-1]