etf_selection_task:
  description: |
    # ETF基金买入潜力分析任务

    ## 1. 任务概述
    基于当前时间 {current_time}，分析所有提供的ETF基金数据，从技术指标角度评估买入潜力。

    **关键信息**：
    - 上下文中提供了完整的ETF数据，共包含所有ETF基金
    - 必须确保在排序列表中包含每一个ETF，不能遗漏任何一个

    ## 2. 交易策略
    **策略类型**：分仓轮动 + 条件单执行
    - **仓位与买入**：总仓位分 3 份，同时持有 3 只 ETF（一份资金对应一只）；若有剩余资金，可在当日 14:30 前做一次测算，按排名选前几只 ETF 加仓（一份资金买一只）。
    - **卖出方式**：次日开盘挂条件单，按报告中的**止盈价**与**止损价**设置，条件单持续有效直至触发止盈或止损后卖出。
    - **对报告的要求**：止盈、止损点位将直接用于条件单，因此必须给出**具体价位**（元）及**技术依据**（如压力位/支撑位、均线、ATR/波动率等），便于用户设置且避免被正常波动误触。

    ## 3. 数据说明
    所有ETF的实时数据和技术指标已预获取并计算完成，包含在上下文中。数据包括：

    ### 3.1 实时数据
    #### 3.1.1 价格相关
    - **latest_price（最新价）**：当前时刻的ETF价格（元）
    - **开盘价**：当日开盘价格（元），反映市场开盘情绪
    - **最高价**：当日最高价格（元），反映当日价格上限
    - **最低价**：当日最低价格（元），反映当日价格下限
    - **昨收**：前一交易日的收盘价（元），用于计算涨跌幅和涨跌额
    - **change_pct（涨跌幅）**：当前价格相对于前一交易日的涨跌百分比（%），正数为上涨，负数为下跌
    - **涨跌额**：当前价格相对于前一交易日的涨跌金额（元），反映价格变动幅度

    #### 3.1.2 成交相关
    - **成交量**：当日累计成交量（手或股），反映市场交易活跃度
    - **成交额**：当日累计成交金额（元），反映资金参与规模
    - **volume_ratio（量比）**：来自实时行情接口的量比数据，反映当前成交量的相对活跃程度
    - **amplitude（振幅）**：当日最高价与最低价之间的波动幅度（%），反映价格波动强度
    - **turnover_rate（换手率）**：当日成交量占流通市值的比例（%），反映市场流动性

    #### 3.1.3 五档与盘口
    - **买一/卖一**：最优买价、卖价（元）
    - **买二～买五、卖二～卖五**：各档挂单价（元）
    - **买一量～买五量、卖一量～卖五量**：各档挂单量
    - **内盘**：以买价成交的量；**外盘**：以卖价成交的量
    - **现手**：最近一笔成交手数

    #### 3.1.4 委差、均价与涨跌停
    - **委差**：委买总量与委卖总量之差
    - **均价**：当日成交均价（元）
    - **涨停价/跌停价**：当日涨跌停价格（元）
    - **市场类型**：市场类型标识（如沪深A股等）

    #### 3.1.5 ETF涨跌幅特点（注意事项）
    - **与股票对比**：ETF的涨跌幅相比股票通常要小得多，这是由ETF的分散投资特性决定的。在本策略下，需要特别警惕当日涨幅过大的ETF。
    - **建议性风险提示**：
      - 当日上涨超过3%：建议谨慎选择，可能存在追高风险
      - 当日上涨超过5%：风险较高，建议避免选择或降低配置比例
    - **分析建议**：在评估ETF买入潜力时，可将当日涨幅作为重要的风险考量因素之一，但并非强制性排除条件。

    #### 3.1.6 时间信息
    - **更新时间**：实时数据的更新时间，用于判断数据的时效性
    - **数据日期**：实时数据对应的日期，用于确认数据的时间点

    ### 3.2 技术指标
    **说明**：所有指标均基于历史K线数据计算，数据来源：雪球历史K线接口，计算周期：至少需要相应周期的历史数据才能计算

    #### 3.2.1 趋势指标
    ##### MACD指标（Moving Average Convergence Divergence，指数平滑异同移动平均线）
    - **计算方法**：基于收盘价计算，需要至少26条历史数据
      - DIF（快线）= EMA12 - EMA26（12日指数移动平均 - 26日指数移动平均）
      - DEA（慢线）= DIF的9日指数移动平均
      - 柱状图（MACD柱）= 2 × (DIF - DEA)，反映多空力量对比的放大值
    - **状态判断**：
      - **0轴上方**：DIF>0且DEA>0，表示短期和中期趋势向上
      - **0轴下方**：DIF<0且DEA<0，表示短期和中期趋势向下
      - **0轴附近**：DIF或DEA接近0，处于趋势转换区域
    - **交易信号**：
      - **金叉**：前一日DIF<DEA且当前日DIF>DEA，表示短期趋势向上突破中期趋势
      - **死叉**：前一日DIF>DEA且当前日DIF<DEA，表示短期趋势向下突破中期趋势

    ##### 均线系统（SMA）（Simple Moving Average，简单移动平均线）
    - **计算方法**：基于收盘价计算，SMA = 最近N日收盘价的算术平均值
      - SMA5：需要至少5条历史数据
      - SMA10：需要至少10条历史数据
      - SMA20：需要至少20条历史数据
      - SMA60：需要至少60条历史数据
    - **状态判断**：
      - **多头排列**（SMA5>SMA10>SMA20）：短期、中期趋势向上
      - **空头排列**（SMA5<SMA10<SMA20）：短期、中期趋势向下
      - **纠缠**（其他情况）：趋势不明确，可能处于震荡或趋势转换期
    - **交易信号**：
      - **黄金交叉**：短期均线上穿长期均线（如SMA5上穿SMA10）
      - **死亡交叉**：短期均线下穿长期均线（如SMA5下穿SMA10）

    ##### 均线系统（EMA）（Exponential Moving Average，指数移动平均线）
    - **计算方法**：基于收盘价计算，使用指数加权移动平均，对近期价格赋予更高权重
      - EMA5：需要至少5条历史数据
      - EMA10：需要至少10条历史数据
      - EMA20：需要至少20条历史数据
    - **状态判断**：
      - **多头排列**（EMA5>EMA10>EMA20）：短期、中期趋势向上
      - **空头排列**（EMA5<EMA10<EMA20）：短期、中期趋势向下
      - **纠缠**（其他情况）：趋势不明确

    #### 3.2.2 动量指标
    ##### RSI指标（Relative Strength Index，相对强弱指标）
    - **计算方法**：基于收盘价计算，使用Wilder's Smoothing方法，需要至少14条历史数据
      - 计算价格变化：delta = 收盘价 - 前一日收盘价
      - 分离涨幅和跌幅：gain = max(delta, 0)，loss = max(-delta, 0)
      - 使用Wilder's Smoothing计算平均涨幅和平均跌幅
      - RSI = 100 - (100 / (1 + RS))，其中RS = 平均涨幅 / 平均跌幅
    - **状态判断**：
      - **超买区**（RSI≥70）：RSI值≥70，处于超买区间
      - **超卖区**（RSI≤30）：RSI值≤30，处于超卖区间
      - **正常区**（30<RSI<70）：价格处于正常波动范围
    - **交易信号**：
      - RSI从超卖区向上突破30：RSI从超卖区间向上突破30
      - RSI从超买区向下突破70：RSI从超买区间向下突破70

    ##### KDJ指标（随机指标）
    - **计算方法**：基于最高价、最低价、收盘价计算，需要至少9条历史数据
      - RSV（未成熟随机值）= (收盘价 - 9日最低价) / (9日最高价 - 9日最低价) × 100
      - K值 = 2/3 × 前一日K值 + 1/3 × RSV
      - D值 = 2/3 × 前一日D值 + 1/3 × K值
      - J值 = 3K - 2D
    - **状态判断**：
      - **超买**（K>80且D>80）：K值>80且D值>80，处于超买区间
      - **超卖**（K<20且D<20）：K值<20且D值<20，处于超卖区间
      - **正常**（其他情况）：价格处于正常波动范围
    - **交易信号**：
      - **金叉**：前一日K<D且当前日K>D，金叉形态，K值上穿D值
      - **死叉**：前一日K>D且当前日K<D，死叉形态，K值下穿D值

    ##### CCI指标（Commodity Channel Index，商品通道指数）
    - **计算方法**：基于最高价、最低价、收盘价计算，需要至少20条历史数据
      - 典型价格（TP）= (最高价 + 最低价 + 收盘价) / 3
      - TP的移动平均 = TP的20日简单移动平均
      - 平均绝对偏差（MAD）= |TP - TP移动平均|的20日平均值
      - CCI = (TP - TP移动平均) / (0.015 × MAD)
    - **状态判断**：
      - **强势**（CCI>100）：CCI值>100，价格显著高于平均价格
      - **弱势**（CCI<-100）：CCI值<-100，价格显著低于平均价格
      - **正常**（-100≤CCI≤100）：价格在正常波动范围

    ##### 威廉指标（Williams %R）
    - **计算方法**：基于最高价、最低价、收盘价计算，需要至少14条历史数据
      - %R值 = -100 × (14日最高价 - 收盘价) / (14日最高价 - 14日最低价)
      - 范围：-100到0（负值）
    - **状态判断**：
      - **超买**（%R>-20）：%R值>-20，收盘价接近14日最高价
      - **超卖**（%R<-80）：%R值<-80，收盘价接近14日最低价
      - **正常**（-80≤%R≤-20）：价格在正常波动范围

    #### 3.2.3 成交量指标
    ##### 量比
    - **数据来源**：本系统从实时行情接口获取，见 3.1.2；不进行计算
    - **计算方法**：当前成交量/20日均量
    - **状态判断**：
      - **量比>1**：成交量放大，市场活跃度提升
      - **量比<1**：成交量萎缩，市场活跃度下降
      - **量比>2**：成交量显著放大
      - **量比<0.5**：成交量显著萎缩

    ##### 换手率
    - **数据来源**：本系统从实时行情接口获取，见 3.1.2
    - **计算方法**：当日成交量占流通市值的比例（%）
    - **状态判断**：
      - **换手率高**（>5%）：流动性好，交易活跃
      - **换手率适中**（1%-5%）：流动性一般，交易一般活跃
      - **换手率低**（<1%）：流动性差，交易不活跃

    ##### 量价关系
    - **判断逻辑**：比较前一日和当前日的价格变化与成交量变化
      - 价格变化阈值：±0.1%（小于0.1%视为价平）
      - 成交量变化阈值：±5%（小于5%视为量平）
    - **状态判断**：
      - **价涨量增**：价格上涨且成交量增加
      - **价涨量平**：价格上涨但成交量持平
      - **价涨量缩**：价格上涨但成交量减少
      - **价平量增**：价格持平但成交量增加
      - **价平量平**：价格和成交量都持平
      - **价平量缩**：价格和成交量都减少
      - **价跌量增**：价格下跌且成交量增加
      - **价跌量平**：价格下跌但成交量持平
      - **价跌量缩**：价格下跌但成交量减少

    ##### OBV指标（On Balance Volume，能量潮指标）
    - **计算方法**：基于收盘价和成交量计算，需要至少2条历史数据
      - 如果收盘价>前一日收盘价：OBV = 前一日OBV + 当前成交量
      - 如果收盘价<前一日收盘价：OBV = 前一日OBV - 当前成交量
      - 如果收盘价=前一日收盘价：OBV = 前一日OBV（不变）
    - **状态判断**：
      - **上升**：当前OBV>前一日OBV，OBV值上升，资金流入
      - **下降**：当前OBV<前一日OBV，OBV值下降，资金流出
      - **持平**：当前OBV=前一日OBV，资金流向不明确
    - **背离判断**：
      - **看涨背离**：价格下跌但OBV上升，出现看涨背离
      - **看跌背离**：价格上涨但OBV下降，出现看跌背离

    #### 3.2.4 波动率指标
    ##### 布林带指标（Bollinger Bands，布林格通道）
    - **计算方法**：基于收盘价计算，需要至少20条历史数据
      - 中轨 = 20日简单移动平均线（SMA20）
      - 标准差 = 20日收盘价的标准差
      - 上轨 = 中轨 + 2 × 标准差
      - 下轨 = 中轨 - 2 × 标准差
      - %B值 = (当前价 - 下轨) / (上轨 - 下轨)
    - **状态判断**：
      - **上轨附近**（%B≥0.8）：价格接近或突破上轨，%B值≥0.8
      - **下轨附近**（%B≤0.2）：价格接近或跌破下轨，%B值≤0.2
      - **中轨附近**（0.2<%B<0.8）：价格在通道中部，趋势相对稳定
    - **交易信号**：
      - **价格触及下轨反弹**：价格触及下轨后反弹
      - **价格突破上轨**：价格突破上轨，%B值>1

    ##### ATR指标（Average True Range，平均真实波幅）
    - **计算方法**：基于最高价、最低价、收盘价计算，需要至少14条历史数据
      - 真实波幅（TR）= max(最高价-最低价, |最高价-前收盘价|, |最低价-前收盘价|)
      - ATR = TR的14日移动平均
      - ATR百分比 = (ATR / 当前价) × 100，反映波动性相对于价格的比例
    - **状态判断**：
      - **高波动性**（ATR百分比≥3%）：价格波动剧烈，风险较高
      - **中波动性**（1.5%≤ATR百分比<3%）：价格波动适中
      - **低波动性**（ATR百分比<1.5%）：价格波动较小

    ##### 振幅
    - **数据来源**：本系统从实时行情接口获取，见 3.1.2；如无则使用历史数据计算
    - **计算方法**：(最高价-最低价)/前一日收盘价×100
    - **状态判断**：
      - **振幅大**（>3%）：价格波动剧烈，风险较高
      - **振幅适中**（1%-3%）：价格波动适中
      - **振幅小**（<1%）：价格波动较小

    #### 3.2.5 其他指标
    ##### 价格位置指标
    - **计算方法**：基于最高价、最低价、收盘价计算，需要至少1条历史数据
      - 位置值 = (收盘价 - 最低价) / (最高价 - 最低价)
      - 范围：0-1，接近1表示收盘接近最高价，接近0表示收盘接近最低价
    - **状态判断**：
      - **高位**（位置值≥0.7）：位置值≥0.7，收盘价接近当日最高价
      - **低位**（位置值≤0.3）：位置值≤0.3，收盘价接近当日最低价
      - **中位**（0.3<位置值<0.7）：收盘价在当日价格区间中部

    ## 4. 生成步骤

    ### 4.1 提取并评分
    - 从上下文中提取所有ETF代码，记录总数N
    - 基于技术指标、资金流向、量价关系等数据，主观评估每个ETF并给予评分
    - **代码验证**：确保每个代码与"ETF代码完整清单"完全一致

    ### 4.2 排序并生成列表
    - 按评分从高到低排序，生成最终排序列表（排名1-N）
    - **标记机制**：使用ETF时在完整清单中标记为[✓]
    - **验证**：确保无重复、无缺失、总数正好是N个，所有ETF都标记为[✓]

    ### 4.3 前 5 名止盈止损
    - 对排名前 5 的 ETF，必须给出可直接用于**次日开盘条件单**的止盈价与止损价（具体到元，并标注相对当前价的涨跌幅）。
    - 依据需基于技术位（如压力/支撑、均线、布林带、前高/前低）及波动率（如 ATR 或振幅），避免随意比例。

    ## 5. 验证要求

    ### 5.1 代码验证规则（关键）
    - 每个ETF代码必须与"ETF代码完整清单"中的代码完全一致，不能有任何字符差异
    - 禁止使用任何不在完整清单中的代码，即使是相似的代码也不允许
    - 在记录或使用每个ETF代码时，必须从完整清单中查找并确认完全匹配

    ### 5.2 标记机制（关键）
    - 完整清单中每个ETF后面都有[ ]标记框（例如：25. sh516510 [ ]）
    - 使用ETF时，必须将[ ]改为[✓]标记为已使用
    - 如果发现ETF已经是[✓]，说明重复，立即停止并重新生成
    - 排序列表完成后，所有N个ETF都应该是[✓]，不能有[ ]（未标记）

    ### 5.3 完整性要求
    - 排序列表必须包含所有N个ETF，不能遗漏也不能重复
    - 如果发现重复或缺失，立即停止并重新生成

    ## 6. 重要约束

    ### 6.1 核心约束（绝对不允许违反）
    - **严禁使用错误代码**：排序列表中的每个ETF代码必须与"ETF代码完整清单"中的代码完全一致，不能有任何字符差异。禁止使用任何不在完整清单中的代码。
    - **严禁重复**：每个ETF的基金代码在整个排序列表中只能出现一次，绝对不允许同一个基金代码出现多次。
    - **严禁缺失**：排序列表必须包含上下文中提供的所有ETF，不能遗漏任何一个。如果上下文中显示有N个ETF，排序列表必须正好包含N个ETF，不能多也不能少。
    - **严禁省略**：排序列表表格必须完整显示所有N行数据，严禁使用省略符号（如"| ... |"、"..."等）或任何形式的省略。即使ETF数量较多，也必须完整输出所有行，一行都不能省略。
    - 如果发现违反以上任何约束，必须立即重新生成整个排序列表。

    ### 6.2 基本要求
    - 必须对所有提供的ETF进行完整排序，每个ETF都要有排序位置、基金代码、基金名称、综合评分、简要说明
    - **排序列表必须完整输出**：从第1名到第N名全部列出，严禁使用省略符号（如"| ... |"、"..."等）省略中间行。排序列表表格必须包含所有N行数据，一行都不能省略。
    - 排名前5的ETF必须提供详细分析，包括技术指标分析

    ### 6.3 验证步骤（生成排序列表后必须执行）
    - 按照验证要求进行验证
    - 如果发现任何问题（重复、缺失、数量不符、标记错误），必须重新生成整个排序列表

  expected_output: >
    输出一份ETF基金买入筛选报告，包含以下部分：

    ## 1. 报告头部信息
    - **报告标题**：ETF基金买入筛选报告
    - **生成时间**：{current_time}
    - **模型名称**：必须在报告开头明确标注当前使用的大模型名称，格式为"模型：{model_name}"（例如：模型：gpt-4.1）

    ## 2. 数据概览
    - ETF总数
    - 数据完整性说明

    ## 3. 排序列表生成过程（用于验证完整性）
    - **ETF代码提取清单**：从完整清单中提取的所有代码，共N个
    - **实时标记完整清单**：每使用一个ETF，就在完整清单中标记为[✓]
    - **排序列表**：按评分排序
    - **标记后的完整清单**：显示所有ETF的标记状态，所有N个ETF都应该是[✓]
    - **完整性验证**：对照提取清单检查，确认无重复无缺失

    ## 4. 完整买入优先级排序列表
    **格式要求**：
    - 使用Markdown表格格式，表头：| 排名 | 基金代码 | 基金名称 | 当前价格 | 当前涨跌幅 | 综合评分 | 简要说明 |
    - 表格必须正好包含N行数据行（不含表头），N等于数据概览中声明的ETF总数
    - 排名从1到N连续，每个ETF包含：排名、基金代码、基金名称、综合评分、简要说明
    - **严禁使用省略符号**：严禁使用省略符号（如"| ... |"、"..."等）省略任何行。必须完整输出所有N行数据，一行都不能省略。即使ETF数量较多，也必须完整显示所有行。

    **核心约束**：
    - 必须严格遵守description中的核心约束：严禁使用错误代码、严禁重复、严禁缺失、严禁省略

    ## 5. ETF代码完整性验证清单
    - 列出所有ETF的基金代码（按排名顺序），格式：验证清单：1. sh512710, 2. sz159667, ...（列出所有ETF代码，避免换行，若需要换行在行尾添加/符号）
    - 用于验证是否包含所有ETF，必须与排序列表中的ETF代码完全一致

    ## 6. 详细分析
    - 对排名前5的ETF进行详细分析，包括：
      - 技术指标状态
      - 买入理由
      - 风险提示
      - 目标价格（止盈价需可直接用于次日开盘条件单，必须写明技术依据，如压力位 XX 元、SMA20、布林带上轨等）
      - 目标收益
      - 止损价格（止损价需可直接用于次日开盘条件单，必须写明技术依据，如支撑位 XX 元、SMA20 支撑、ATR 约 X% 故止损设于 XX 元等）

    ## 7. 条件单设置建议
    - 对排名前 5 的 ETF 做**一览表**：基金代码、基金名称、当前价、止盈价（元）、止损价（元）、简要依据（可选一行）
    - 可对每只写一句「次日开盘可挂：止盈单 XX 元、止损单 XX 元」，便于一眼看到挂单价位

    ## 8. 总结
    - 买入选择
    - 整体市场判断，基于本执行策略（分仓 + 条件单止盈止损）的整体市场判断

    **输出前必须执行验证**：
    - 严格按照description中的"验证步骤"和"核心约束"进行验证，如果发现任何问题必须重新生成
    - **排序列表完整性检查**：检查排序列表表格是否包含所有N行数据，是否使用了省略符号（如"| ... |"、"..."等）。如果发现任何省略或行数不足N行，必须立即重新生成整个排序列表

    报告使用markdown格式，必须在报告开头明确标注当前使用的大模型名称。

  markdown: true
  agent: prediction

summary_task:
  description: |
    # ETF投资汇总分析任务

    ## 1. 数据来源
    综合分析以下多份ETF分析报告和ETF数据：

    {report_contents}

    ## 2. 数据说明
    - 如果提供了CSV数据文件，上述内容中包含完整的ETF数据和技术指标表格
    - CSV数据包含所有ETF的实时数据和技术指标，可用于验证报告中的价格和技术指标信息
    - 结合CSV数据中的最新价格和技术指标，基于数据计算止盈止损价格

    ## 3. 任务要求

    ### 3.1 报告验证（必须执行）
    - 对每份分析报告（Analysis-1、Analysis-2、Analysis-3）进行ETF代码完整性验证
    - 从每份报告的"ETF买入优先级排序列表"或"排序列表"中提取所有ETF代码
    - 从每份报告的"ETF代码提取清单"或"完整清单"中获取应该包含的ETF代码列表
    - 检查每份报告是否存在以下问题：
      a. **重复检查**：排序列表中是否有重复的ETF代码（同一个代码出现多次）
      b. **遗漏检查**：排序列表中是否缺少了完整清单中的ETF代码
      c. **数量验证**：排序列表中的ETF数量是否与完整清单中的数量一致
    - 记录每份报告的验证结果（正常/有重复/有遗漏/数量不符）

    ### 3.2 报告分析
    - 阅读所有分析报告，理解每份报告的核心观点和推荐
    - 识别各报告中的共同推荐和分歧点
    - 综合考虑技术指标、市场趋势、风险因素

    ### 3.3 推荐生成
    - 从所有报告中推荐3个综合评分最高、综合多份报告分析后排名前3的ETF
    - 为每个推荐的ETF提供：
      - 基金代码和基金名称
      - 推荐理由（结合多份报告的分析）
      - 当前价格
      - 止盈价格（目标价格）：上述价格将用于用户**次日开盘条件单**，需为**具体价位**（元）并注明涨跌幅；需综合多份报告并基于技术指标与波动性给出，便于直接挂单
      - 止损价格：同上，需具体价位（元）及技术依据，便于用户设置条件单
      - 风险提示

    ## 4. 重要要求
    - 止盈止损价格需基于技术指标和市场波动性计算，符合技术分析标准；止盈止损价需**便于用户设置条件单**（具体价位 + 技术依据，如支撑/压力、ATR）
    - 推荐理由需详细说明，包含多份报告的分析依据和综合评分情况

  expected_output: >
    输出一份ETF买入推荐总结报告，包含以下部分：

    ## 1. 报告头部信息
    - **报告标题**：# ETF 买入推荐总结报告
    - **报告时间**：{current_time}
    - **数据来源**：综合X份分析报告（Analysis-1、Analysis-2、Analysis-3）
    - **分析模型**：{model_name}（必须在报告开头明确标注）

    ## 2. 各报告完整性验证
    **必须包含，在推荐ETF之前**：
    - 对每份分析报告进行ETF代码完整性验证，使用以下格式：
      - **Analysis-1报告验证**：
        - ETF总数：XX个
        - 排序列表数量：XX个
        - 重复检查：✅ 无重复 / ⚠️ 发现重复（列出重复的ETF代码及出现位置）
        - 遗漏检查：✅ 无遗漏 / ⚠️ 发现遗漏（列出缺失的ETF代码）
        - 数量验证：✅ 数量一致 / ⚠️ 数量不符（排序列表XX个，完整清单XX个）
        - 验证结论：✅ 通过 / ⚠️ 存在问题（详细说明问题）
      - **Analysis-2报告验证**：（同上格式）
      - **Analysis-3报告验证**：（同上格式）
    - 如果所有报告都通过验证，可以简要说明"所有报告均通过完整性验证"
    - 如果发现任何问题，必须详细列出每个报告的具体问题

    ## 3. 推荐买入的三个ETF
    **必须包含3个ETF，按优先级排序**：
    每个ETF使用以下格式：

    ### 1. ETF名称 (代码) ⭐⭐⭐⭐⭐（使用1-5个⭐表示推荐强度）
    - **综合评分**：XX分（说明各报告的排名情况，例如：报告1排名第1，报告2排名第3）
    - **买入理由**：
      - 使用 ✅ 标记技术亮点
      - 列出各报告的排名和推荐理由（例如：报告1排名第1：量价齐升+动量指标较高）
      - 列出技术指标亮点（实时量比、布林带、CCI、主力资金流向、振幅等）
    - **当前价格**：XX元
    - **当前涨跌幅**：X%
    - **止盈价格**：XX元（+X%），可直接用于条件单
      - 说明基于哪些报告的目标价综合
      - 说明技术分析依据（如压力位、布林带上轨、ATR 比例等）
    - **止损价格**：XX元（-X%），可直接用于条件单
      - 说明基于哪些报告的止损价综合
      - 说明支撑位依据（如支撑位、均线、ATR 比例等）
    - **风险提示**：
      - 使用 ⚠️ 标记风险点
      - 列出主要风险因素（超买、资金流向、波动性等）

    ## 4. 条件单设置建议
    - 对 3 个推荐 ETF 做**一览表**：基金代码、基金名称、当前价、止盈价（元）、止损价（元）
    - 每只一行挂单建议：「次日开盘可挂：止盈单 XX 元、止损单 XX 元」，便于一眼看到挂单价位

    ## 5. 市场整体判断
    - **强势板块**：列出当前强势板块
    - **风险较高板块**：列出风险较高的板块
    - **资金偏好**：说明主力资金流向偏好
    - **条件单与操作要点**：次日开盘挂条件单、按报告止盈/止损价设置、挂单直至触发等关键操作要点

    ## 6. 风险提示
    - **技术风险**：所有推荐ETF的风险点
    - **资金风险**：资金流向相关风险
    - **市场风险**：整体市场波动风险
    - **条件单与持仓风险**：条件单未触发、波动触及止损、止盈过远难以触发等与条件单和持仓相关的风险

    报告使用markdown格式，必须严格按照上述格式输出，使用✅和⚠️标记，使用⭐表示推荐强度。

  markdown: true
  agent: summary
