Administrator
2025-01-23 8c5353ae5579b0d2cbee3ce0b6e275344df42cc2
L撤比例修改
4个文件已修改
102 ■■■■■ 已修改文件
cancel_strategy/s_l_h_cancel_strategy.py 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/huaxin_trade_server.py 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/block_special_codes_manager.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/radical_buy_data_manager.py 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cancel_strategy/s_l_h_cancel_strategy.py
@@ -574,14 +574,20 @@
                    # 扫入加红
                    return constant.L_CANCEL_RATE_WITH_MUST_BUY_FOR_REDICAL_BUY, True
                else:
                    deal_big_order_info = radical_buy_data_manager.get_total_deal_big_order_info(code,
                                                                                                 gpcode_manager.get_limit_up_price_as_num(
                                                                                                     code))
                    deal_rate = round(deal_big_order_info[1] / deal_big_order_info[2], 2)
                    threshold_rate = 0.5 * deal_rate + 0.35
                    threshold_rate = max(threshold_rate, 0.375)
                    threshold_rate = min(threshold_rate, 0.95)
                    return threshold_rate, False
                    # 根据成交额的大单成交占比来计算撤单比例
                    big_money_rate = radical_buy_data_manager.TotalDealBigOrderInfoManager.get_big_order_rate(code)
                    if big_money_rate is not None:
                        threshold_rate = min(big_money_rate*3, 0.95)
                        return threshold_rate, False
                    else:
                        deal_big_order_info = radical_buy_data_manager.get_total_deal_big_order_info(code,
                                                                                                     gpcode_manager.get_limit_up_price_as_num(
                                                                                                         code))
                        deal_rate = round(deal_big_order_info[1] / deal_big_order_info[2], 2)
                        threshold_rate = 0.5 * deal_rate + 0.35
                        threshold_rate = max(threshold_rate, 0.375)
                        threshold_rate = min(threshold_rate, 0.95)
                        return threshold_rate, False
            if must_buy:
                if is_up:
                    return constant.L_CANCEL_RATE_UP_WITH_MUST_BUY, True
servers/huaxin_trade_server.py
@@ -456,33 +456,8 @@
                                                          limit_up_price,
                                                          sell_1_price, sell_1_volume // 100, average_rate)
            latest_3m_buy1_money_list = code_price_manager.Buy1PriceManager().get_latest_3m_buy1_money_list(code)
            # -----------------------------重新计算L撤后---------------------------
            # 暂时不更新,无意义
            # 如果时涨停状态
            # if abs(float(limit_up_price) - float(buy_1_price)) < 0.001:
            #     # 是否处于下单状态
            #     state = trade_manager.CodesTradeStateManager().get_trade_state_cache(code)
            #     if state == trade_manager.TRADE_STATE_BUY_DELEGATED or state == trade_manager.TRADE_STATE_BUY_PLACE_ORDER or constant.TEST:
            #         if latest_3m_buy1_money_list and tool.trade_time_sub(latest_3m_buy1_money_list[-1][0],
            #                                                              latest_3m_buy1_money_list[0][0]) >= 2 * 60:
            #             # 2分钟以内,标准差在10%以内
            #             c_start_index = None
            #             for i in range(len(latest_3m_buy1_money_list) - 1, -1, -1):
            #                 if tool.trade_time_sub(latest_3m_buy1_money_list[-1][0],
            #                                        latest_3m_buy1_money_list[i][0]) >= 2 * 60:
            #                     c_start_index = i
            #                     break
            #             if c_start_index is not None:
            #                 latest_3m_buy1_money_list = copy.deepcopy(latest_3m_buy1_money_list[c_start_index:])
            #                 latest_3m_buy1_money_list = [x[1] for x in latest_3m_buy1_money_list]
            #                 avg_val = numpy.mean(numpy.array(latest_3m_buy1_money_list))
            #                 max_val = max(latest_3m_buy1_money_list)
            #                 min_val = min(latest_3m_buy1_money_list)
            #                 if abs(max_val - avg_val) / avg_val < 0.1 and abs(min_val - avg_val) / avg_val < 0.1:
            #                     # 买1封单额平稳
            #                     LCancelBigNumComputer().re_compute_l_down_watch_indexes(code)
            threading.Thread(target=lambda: update_kpl_jx_block(code, buy_1_price, limit_up_price), daemon=True).start()
            # 拉取总大单成交
        threading.Thread(target=lambda: radical_buy_data_manager.TotalDealBigOrderInfoManager.update_big_order_info(code, data["totalValueTrade"]), daemon=True).start()
        async_log_util.info(hx_logger_l2_market_data, f"{code}#{data}")
trade/buy_radical/block_special_codes_manager.py
@@ -189,10 +189,9 @@
                    # 小于3块/大于50块
                    continue
                index += 1
                if int(float(limit_up_info_map[code][2])) < 50:
                    continue
                index += 1
                # [(板块, 代码名称, 代码, 涨停次数, 自由市值)]
                fdatas.append(
                    (b, limit_up_info_map[code][1], code, code_block_dict[code][b],
trade/buy_radical/radical_buy_data_manager.py
@@ -1458,6 +1458,52 @@
        return self.__codes
class TotalDealBigOrderInfoManager:
    """
    总成交大单信息管理
    """
    # {代码:(数据,更新时间)}
    __l2_big_order_deal_info_dict = {}
    # 大单成交比例
    __l2_big_order_deal_rate_dict = {}
    @classmethod
    def update_big_order_info(cls, code, total_trade_value):
        """
        更新大单信息
        @param code: 代码
        @param total_trade_value: 总成交额
        @return:
        """
        # (净流入金额, (大单买金额, 大单买数量), (大单卖金额, 大单卖数量))
        deal_big_order_detail_info = get_l2_big_order_deal_info(code)
        if deal_big_order_detail_info:
            cls.__l2_big_order_deal_info_dict[code] = (deal_big_order_detail_info, tool.get_now_time_str())
            if total_trade_value == 0:
                total_trade_value = 1
            cls.__l2_big_order_deal_rate_dict[code] = round(deal_big_order_detail_info[1][0]/total_trade_value, 2)
    @classmethod
    def get_big_order_info(cls, code):
        """
        @param code:
        @return:((净流入金额, (大单买金额, 大单买数量), (大单卖金额, 大单卖数量)), 更新时间)
        """
        return cls.__l2_big_order_deal_info_dict.get(code)
    @classmethod
    def get_big_order_rate(cls, code):
        """
        获取大单占整个成交额的比例
        @param code:
        @return:
        """
        return cls.__l2_big_order_deal_rate_dict.get(code)
def get_total_detal_big_order_details(code):
    """
    获取成交大单详情
@@ -1776,7 +1822,7 @@
    """
    获取成交大单信息
    @param code_:
    @return:(净流入金额, (大单买金额, 大单买数量), (大单卖金额, 大单卖数量))
    @return:{"code": (净流入金额, (大单买金额, 大单买数量), (大单卖金额, 大单卖数量))}
    """
    response_data = requests.get(
        "http://127.0.0.1:9005/get_codes_money_info?codes=" + urllib.parse.quote(json.dumps(list(codes))))