# technical-indicators > 计算股票技术指标(MA、MACD、RSI、BOLL等)。适用于技术分析、量化回测、趋势判断等场景。支持单个指标计算或批量计算所有指标,返回包含指标值的DataFrame。 - Author: YuFan - Repository: YFOOOO/financial_agent - Version: 20251215175407 - Stars: 1 - Forks: 0 - Last Updated: 2026-02-07 - Source: https://github.com/YFOOOO/financial_agent - Web: https://mule.run/skillshub/@@YFOOOO/financial_agent~technical-indicators:20251215175407 --- --- name: technical-indicators description: 计算股票技术指标(MA、MACD、RSI、BOLL等)。适用于技术分析、量化回测、趋势判断等场景。支持单个指标计算或批量计算所有指标,返回包含指标值的DataFrame。 license: MIT allowed-tools: - calculate_ma - calculate_macd - calculate_rsi - calculate_boll - calculate_all_indicators metadata: version: "1.0.0" author: "YFOOOO" indicators: - MA (移动平均线) - MACD (指数平滑异同移动平均线) - RSI (相对强弱指标) - BOLL (布林带) --- # Technical Indicators Skill 专业的股票技术指标计算工具,支持主流技术分析指标。 ## Overview 本 Skill 提供以下核心功能: 1. **单个指标计算** - 计算 MA、MACD、RSI、BOLL 等单一指标 2. **批量计算** - 一次性计算所有指标 3. **指标解读** - 提供指标含义和使用建议 所有计算基于 pandas 和 talib,支持向量化高性能计算。 ## Quick Start ### 1. 准备数据 技术指标计算需要 OHLCV 数据(开盘、最高、最低、收盘、成交量)。 通常先调用 `financial-data-fetch` Skill 获取数据。 ### 2. 选择指标 根据分析需求选择合适的指标: - **趋势分析** → MA (移动平均线) - **动量分析** → MACD, RSI - **波动分析** → BOLL (布林带) - **综合分析** → calculate_all_indicators ### 3. 调用工具 传入 DataFrame 数据,返回包含指标值的新 DataFrame。 ## Indicators ### 1. MA (移动平均线) **Tool**: `calculate_ma` **Description**: 计算简单移动平均线(SMA),用于判断价格趋势。 **Parameters**: - `data` (DataFrame, required): 包含"收盘"列的价格数据 - `periods` (list[int], optional): MA 周期列表,默认 [5, 10, 20, 60] **Returns**: DataFrame,新增列:MA5, MA10, MA20, MA60 **Example**: ```python result = calculate_ma(data=stock_df, periods=[5, 10, 20]) # 返回包含 MA5, MA10, MA20 列的 DataFrame ``` **Interpretation**: - 短期MA(5日)上穿长期MA(20日) → 金叉,买入信号 - 短期MA下穿长期MA → 死叉,卖出信号 --- ### 2. MACD (指数平滑异同移动平均线) **Tool**: `calculate_macd` **Description**: 计算 MACD 指标,用于判断买卖时机和趋势强度。 **Parameters**: - `data` (DataFrame, required): 包含"收盘"列的价格数据 - `fast_period` (int, optional): 快线周期,默认 12 - `slow_period` (int, optional): 慢线周期,默认 26 - `signal_period` (int, optional): 信号线周期,默认 9 **Returns**: DataFrame,新增列:MACD_DIF, MACD_DEA, MACD_BAR **Example**: ```python result = calculate_macd(data=stock_df) # 返回包含 MACD_DIF, MACD_DEA, MACD_BAR 的 DataFrame ``` **Interpretation**: - DIF 上穿 DEA → 金叉,买入信号 - DIF 下穿 DEA → 死叉,卖出信号 - BAR 柱状图放大 → 趋势增强 --- ### 3. RSI (相对强弱指标) **Tool**: `calculate_rsi` **Description**: 计算 RSI 指标,用于判断超买超卖状态。 **Parameters**: - `data` (DataFrame, required): 包含"收盘"列的价格数据 - `period` (int, optional): RSI 周期,默认 14 **Returns**: DataFrame,新增列:RSI **Example**: ```python result = calculate_rsi(data=stock_df, period=14) # 返回包含 RSI 列的 DataFrame ``` **Interpretation**: - RSI > 70 → 超买区域,可能回调 - RSI < 30 → 超卖区域,可能反弹 - RSI 在 30-70 之间 → 正常区域 --- ### 4. BOLL (布林带) **Tool**: `calculate_boll` **Description**: 计算布林带指标,用于判断价格波动范围。 **Parameters**: - `data` (DataFrame, required): 包含"收盘"列的价格数据 - `period` (int, optional): MA 周期,默认 20 - `std_dev` (float, optional): 标准差倍数,默认 2.0 **Returns**: DataFrame,新增列:BOLL_MIDDLE, BOLL_UPPER, BOLL_LOWER **Example**: ```python result = calculate_boll(data=stock_df, period=20, std_dev=2.0) # 返回包含 BOLL_MIDDLE, BOLL_UPPER, BOLL_LOWER 的 DataFrame ``` **Interpretation**: - 价格触及上轨 → 超买,可能回调 - 价格触及下轨 → 超卖,可能反弹 - 价格突破上轨 → 强势上涨 - 价格跌破下轨 → 强势下跌 --- ### 5. 批量计算所有指标 **Tool**: `calculate_all_indicators` **Description**: 一次性计算所有主流技术指标(MA、MACD、RSI、BOLL)。 **Parameters**: - `data` (DataFrame, required): 包含 OHLCV 列的价格数据 **Returns**: DataFrame,新增所有指标列 **Example**: ```python result = calculate_all_indicators(data=stock_df) # 返回包含所有指标的 DataFrame ``` ## Data Requirements ### 输入数据格式 所有工具要求输入 DataFrame 包含以下列: - ✅ **必需**: `收盘` (float) - 收盘价 - ⚠️ **可选**: `开盘`, `最高`, `最低`, `成交量` (部分指标需要) ### 数据质量要求 1. **最小数据量**: - MA: 至少 max(periods) + 1 行 - MACD: 至少 34 行(slow_period + signal_period) - RSI: 至少 period + 1 行 - BOLL: 至少 period + 1 行 2. **数据连续性**: 建议使用连续交易日数据(无缺失) 3. **数据排序**: 按日期升序排列 ## Error Handling ### 1. 数据不足 ``` 错误:数据量不足,需要至少 34 行数据计算 MACD ``` ### 2. 列名缺失 ``` 错误:DataFrame 缺少 '收盘' 列 ``` ### 3. 数据类型错误 ``` 错误:'收盘' 列必须为数值类型(float/int) ``` ### 4. 参数超出范围 ``` 错误:RSI 周期必须 > 0(当前: -1) ``` ## Performance Notes - **计算时间**: - 单个指标: < 100ms (1000行数据) - 批量计算: < 500ms (1000行数据) - **内存使用**: 约为原始数据的 2-3 倍 - **优化建议**: 使用向量化操作,避免循环 ## References 详细指标公式和解读见: - [指标公式详解](references/indicators_formula.md) - [指标解读指南](references/interpretation.md) ## Script Implementation 指标计算逻辑实现在: - `scripts/calculate_ma.py` - MA 计算 - `scripts/calculate_macd.py` - MACD 计算 - `scripts/calculate_all.py` - 批量计算(复用 `core/indicators.py`) 这些脚本复用项目中的 `core/indicators.py` 模块,确保计算一致性。