第 04 课:技术指标的真实角色
核心观点:指标不是"买卖信号",而是特征工程。
"金叉必涨"的幻灭
小李是一个股票新手。他在网上学到了一个"必胜法则":MACD 金叉买入,死叉卖出。
他兴奋地写了一个程序,回测过去 10 年的数据。结果:胜率 52%,年化收益 -8%。
"怎么可能?金叉明明是上涨信号啊!"
他又试了 RSI 超卖买入、布林带下轨买入、均线多头排列买入……每一个"经典信号",单独使用时胜率都在 50% 附近徘徊,扣掉手续费后全部亏损。
问题出在哪里?
小李犯了一个常见错误:把技术指标当成买卖信号。
真相是:
- 指标是滞后的:MACD 金叉时,价格已经涨了一段
- 指标是简化的:一个数字无法概括复杂的市场状态
- 指标是被利用的:当所有人都在看同一个信号,信号就失效了
那技术指标到底有什么用?
答案是:特征工程。指标不是用来直接交易的,而是用来描述市场状态的。当你把 MACD、RSI、布林带等几十个指标组合在一起,作为机器学习模型的输入特征,它们才能发挥真正的价值。
这一课的目标:让你理解技术指标的本质,学会正确使用它们。
4.1 指标的本质
指标 = 数学变换
所有技术指标,本质上都是对价格和成交量的数学变换:
| 原始数据 | 变换方式 | 得到的指标 |
|---|---|---|
| 收盘价序列 | 滑动平均 | MA(移动平均线) |
| 收盘价序列 | 指数加权平均 | EMA(指数移动平均) |
| 涨跌幅序列 | 相对强度计算 | RSI |
| 价格序列 | 均值 ± 标准差 | 布林带 |
| 最高价、最低价、收盘价 | 多重计算 | MACD |
核心洞察:指标不会创造新信息,只是换一种方式呈现已有信息。
滞后性是固有属性
任何基于历史数据计算的指标,都必然是滞后的:
价格已经发生变化
↓
计算指标
↓
指标发出信号
↓
你采取行动
↓
此时价格可能已经反转
| 指标 | 典型参数 | 滞后程度 |
|---|---|---|
| MA5 | 5 日均线 | 约 2-3 天 |
| MA20 | 20 日均线 | 约 10 天 |
| MACD | 12, 26, 9 | 约 5-10 天 |
| RSI(14) | 14 日 | 约 7 天 |
启示:不要指望指标能"预测"未来,它们只能描述"现在"和"过去"。
信息压缩与损失
把几百天的价格数据,压缩成一个数字(比如 RSI=65),必然会损失大量信息:
- 价格的分布形态?丢失了
- 成交量的变化模式?丢失了
- 盘中的波动特征?丢失了
这就是为什么单一指标无法有效指导交易——信息太少了。
4.2 趋势类指标
MA / EMA:平滑与滞后的权衡
移动平均线 (MA):过去 N 天收盘价的简单平均。
MA(5) = (P₁ + P₂ + P₃ + P₄ + P₅) / 5
指数移动平均线 (EMA):给近期价格更高的权重。
EMA = 今日价格 × α + 昨日EMA × (1-α)
其中 α = 2 / (N+1)
| 对比 | MA(简单移动平均) | EMA(指数移动平均) |
|---|---|---|
| 权重分布 | 平均 | 近期更高 |
| 对新数据反应 | 慢 | 快 |
| 平滑程度 | 更平滑 | 更灵敏 |
| 适用场景 | 长期趋势 | 短期趋势 |
核心权衡:参数越小 → 越灵敏 → 越多噪音;参数越大 → 越稳定 → 越滞后。
MACD:趋势与动量
MACD 是最常用的趋势指标之一,由三部分组成:
DIFF (快线) = EMA₁₂ - EMA₂₆
DEA (信号线) = EMA₉(DIFF)
柱状图 = 2 × (DIFF - DEA) ← 中国软件惯例
注意:
2×系数是国内软件(同花顺、通达信)的惯例。国际标准(TradingView、MetaTrader)使用DIFF - DEA,无 2× 系数。使用不同平台时请注意差异。
直观理解:
- DIFF:短期趋势与长期趋势的差距
- DEA:DIFF 的平滑版本
- 柱状图:趋势加速/减速的程度
| MACD 状态 | 含义 | 市场解读 |
|---|---|---|
| DIFF > 0, 柱状图变大 | 上涨趋势加速 | 多头强势 |
| DIFF > 0, 柱状图变小 | 上涨趋势减速 | 可能见顶 |
| DIFF < 0, 柱状图变小 | 下跌趋势减速 | 可能见底 |
| DIFF < 0, 柱状图变大 | 下跌趋势加速 | 空头强势 |
背离分析
背离是技术分析中最重要的概念之一:
| 背离类型 | 价格表现 | MACD 表现 | 含义 |
|---|---|---|---|
| 顶背离 | 创新高 | 未创新高 | 上涨动能衰竭,可能下跌 |
| 底背离 | 创新低 | 未创新低 | 下跌动能衰竭,可能上涨 |
顶背离示意:
价格: 100 → 110 → 120 → 125 → 130(新高)
MACD: 10 → 15 → 18 → 16 → 14(未新高)
↑
动能衰竭信号
重要警告:
- 背离只是"可能"的信号,不是"确定"的信号
- 单独使用背离交易,胜率通常只有 55-60%
- 需要结合其他指标和市场结构验证
4.3 振荡类指标
RSI:相对强弱
RSI 衡量近期涨跌的相对强度:
RS = 平均上涨幅度 / 平均下跌幅度
RSI = 100 - 100/(1+RS)
RSI 的范围是 0-100:
| RSI 区间 | 传统解读 | 实际情况 |
|---|---|---|
| > 70 | 超买,应该卖出 | 强势市场可能持续 > 80 |
| 30-70 | 正常区间 | 大部分时间在这里 |
| < 30 | 超卖,应该买入 | 弱势市场可能持续 < 20 |
RSI 的真实用法:
- 不要单独依赖 70/30 作为买卖信号
- RSI 的趋势更重要:RSI 从 30 上升 vs RSI 一直在 60-70 震荡
- RSI 背离同样有效:价格新高但 RSI 未新高 = 顶背离
布林带 (Bollinger Bands)
布林带由三条线组成:
中轨 = MA₂₀(20日移动平均线)
上轨 = MA₂₀ + 2σ(均值 + 2倍标准差)
下轨 = MA₂₀ - 2σ(均值 - 2倍标准差)
统计含义:在正态分布假设下,价格有 95% 的概率在上下轨之间。
| 布林带信号 | 传统解读 | 适用场景 |
|---|---|---|
| 触及上轨 | 超买,可能回落 | 震荡市 |
| 触及下轨 | 超卖,可能反弹 | 震荡市 |
| 突破上轨 | 趋势开始 | 趋势市 |
| 带宽收窄 | 波动率降低,即将突破 | 所有市场 |
关键洞察:布林带在震荡市是"回归"信号,在趋势市是"突破"信号——你需要先判断市场状态。
4.4 波动率指标
历史波动率
历史波动率 = 过去 N 天收益率的标准差 × √252(年化)
示例计算:
日收益率标准差 = 2%
年化波动率 = 2% × √252 ≈ 31.7%
| 年化波动率 | 典型资产 | 风险等级 |
|---|---|---|
| 10-15% | 债券、大盘蓝筹 | 低 |
| 20-30% | 普通股票 | 中 |
| 40-60% | 小盘股、加密货币 | 高 |
| 80%+ | 山寨币、末日期权 | 极高 |
ATR(Average True Range)
ATR 衡量"真实波动幅度",考虑了跳空缺口:
True Range = max(
当日最高 - 当日最低,
|当日最高 - 昨日收盘|,
|当日最低 - 昨日收盘|
)
ATR = True Range 的 N 日平均
ATR 的实战用途:
- 止损设置:止损距离 = 入场价 ± 2×ATR
- 仓位管理:波动率高时减仓,波动率低时可适当加仓
- 突破确认:突破幅度 > 1×ATR 更可能是真突破
4.5 策略评价指标
这些指标用于评估策略表现,而非交易信号:
Sharpe Ratio(夏普比率)
Sharpe Ratio = (Rₚ - Rᶠ) / σₚ
Rₚ = 投资组合收益率
Rᶠ = 无风险利率(如国债收益率)
σₚ = 收益的标准差
直观理解:每承担 1 单位风险,能获得多少超额收益。
| Sharpe Ratio | 评价 |
|---|---|
| < 0 | 亏损,不如存银行 |
| 0-1 | 一般,可能不值得冒险 |
| 1-2 | 良好 |
| 2-3 | 优秀 |
| > 3 | 顶级(或数据有问题) |
其他风险指标
| 指标 | 公式 | 含义 |
|---|---|---|
| Sortino Ratio | (Rₚ - Rᶠ) / σ_下行 | 只惩罚下跌波动,更关注亏损风险 |
| Maximum Drawdown | 从峰值到谷底的最大跌幅 | 最坏情况会亏多少 |
| Calmar Ratio | 年化收益 / 最大回撤 | 收益与回撤的平衡 |
| VaR (95%) | 95% 置信度下的最大损失 | 正常情况下的风险边界 |
示例:
- 策略年化收益 20%,最大回撤 40% → Calmar = 0.5(一般)
- 策略年化收益 15%,最大回撤 10% → Calmar = 1.5(优秀)
4.6 指标组合:从信号到特征
为什么单一指标无效?
实证研究表明,单一技术指标的预测能力非常有限:
| 策略 | 胜率 | 年化收益(扣除手续费后) |
|---|---|---|
| MACD 金叉/死叉 | 51% | -5% ~ +3% |
| RSI 超买超卖 | 52% | -3% ~ +5% |
| 布林带突破 | 50% | -8% ~ +2% |
| 双均线交叉 | 53% | -2% ~ +8% |
说明:以上数据为示意性参考,实际表现因市场、时间段、参数设置和交易成本假设而异。
原因:
- 市场参与者都在看同一个信号 → 信号被提前消化
- 不同市场状态需要不同解读 → 单一规则无法适应
- 指标信息不完整 → 需要多维度验证
指标作为特征的正确用法
传统用法(错误):
RSI < 30 → 买入
正确用法(特征工程):
特征向量 = [
RSI,
RSI 变化率,
MACD_DIFF,
MACD_柱状图变化率,
布林带位置(价格在带中的相对位置),
ATR(波动率),
成交量变化率,
...更多特征
]
→ 输入机器学习模型 → 输出:买入/卖出/持有 + 置信度
多智能体视角:
- Trend Agent:关注 MACD、均线、ATR
- Mean Reversion Agent:关注 RSI、布林带、偏离度
- Regime Agent:关注波动率变化、相关性变化
- Risk Agent:关注 VaR、最大回撤、Sharpe 变化
💻 代码实现(可选)
如果你想动手实践,这里提供计算指标的示例代码:
import pandas as pd
import numpy as np
def calculate_indicators(df):
"""
计算常用技术指标
df 需要包含: open, high, low, close, volume 列
"""
# EMA
df['EMA12'] = df['close'].ewm(span=12).mean()
df['EMA26'] = df['close'].ewm(span=26).mean()
# MACD
df['MACD_DIFF'] = df['EMA12'] - df['EMA26']
df['MACD_DEA'] = df['MACD_DIFF'].ewm(span=9).mean()
df['MACD_Histogram'] = 2 * (df['MACD_DIFF'] - df['MACD_DEA'])
# RSI(处理除零情况)
delta = df['close'].diff()
gain = delta.where(delta > 0, 0).rolling(14).mean()
loss = (-delta.where(delta < 0, 0)).rolling(14).mean()
rs = gain / loss.replace(0, np.nan) # 避免除零
df['RSI'] = 100 - 100 / (1 + rs)
df['RSI'] = df['RSI'].fillna(100) # 连续上涨时 RSI=100
# Bollinger Bands
df['BB_Middle'] = df['close'].rolling(20).mean()
df['BB_Std'] = df['close'].rolling(20).std()
df['BB_Upper'] = df['BB_Middle'] + 2 * df['BB_Std']
df['BB_Lower'] = df['BB_Middle'] - 2 * df['BB_Std']
df['BB_Position'] = (df['close'] - df['BB_Lower']) / (df['BB_Upper'] - df['BB_Lower'])
# ATR
high_low = df['high'] - df['low']
high_close = (df['high'] - df['close'].shift()).abs()
low_close = (df['low'] - df['close'].shift()).abs()
tr = pd.concat([high_low, high_close, low_close], axis=1).max(axis=1)
df['ATR'] = tr.rolling(14).mean()
return df
def calculate_sharpe_ratio(returns, risk_free_rate=0.04, periods_per_year=252):
"""
计算夏普比率
注意: risk_free_rate 应根据当前市场调整
- 2020-2021: ~0%(接近零利率)
- 2024-2025: ~4-5%(美联储加息后)
"""
excess_returns = returns - risk_free_rate / periods_per_year
return np.sqrt(periods_per_year) * excess_returns.mean() / returns.std()
本课交付物
完成本课后,你将获得:
- 对技术指标的正确认知 - 知道指标是"特征"而非"信号"
- 常用指标的计算方法 - 理解 MACD、RSI、布林带、ATR 的本质
- 策略评价能力 - 能用 Sharpe、Sortino、Calmar 等指标评估策略
- 多维度思考框架 - 知道不同指标适合不同的市场状态和 Agent
本课要点回顾
- 理解技术指标的本质:对价格/成交量的数学变换,不创造新信息
- 掌握趋势类指标(MACD)和振荡类指标(RSI、布林带)的用法
- 理解背离分析的原理和局限性
- 学会使用 Sharpe Ratio 等指标评估策略表现
- 认识到单一指标的局限性,理解指标组合作为特征的价值
延伸阅读
- 背景知识:Alpha 与 Beta - 策略收益分解
- 背景知识:历史著名量化事故 - 过度依赖指标的代价
下一课预告
第 05 课:经典策略范式
趋势跟随、均值回归、网格交易、配对交易……这些经典策略各有什么特点?适合什么市场?有什么陷阱?下一课我们逐一拆解。