# 技术指标全集 > 本文档系统整理量化交易中常用的技术指标,涵盖趋势、动量、波动率、成交量四大类别,并结合 tradehk 项目的实际实现进行深度解析。所有公式均已验证,参数建议基于加密货币市场特性优化。 --- ## 一、趋势类指标 ### 1.1 简单移动均线(MA / SMA) **原理**:对过去 N 个周期的收盘价取算术平均值,平滑价格噪音,识别趋势方向。 **公式**: $$MA(N) = \frac{1}{N} \sum_{i=0}^{N-1} Close_{t-i}$$ **tradehk 实现参数**:MA10(短期)+ MA100(长期) **信号逻辑**: - 价格 > MA10 > MA100:多头排列,看涨 - 价格 < MA10 < MA100:空头排列,看跌 - MA10 上穿 MA100:金叉,买入信号 - MA10 下穿 MA100:死叉,卖出信号 **加密货币适用性**:MA 在趋势明显的牛市/熊市中效果显著,震荡市中产生大量假信号,需配合其他指标过滤。 --- ### 1.2 指数移动均线(EMA) **原理**:对近期数据赋予更高权重的移动均线,对价格变化反应更灵敏。 **公式**: $$EMA_t = Close_t \times k + EMA_{t-1} \times (1-k), \quad k = \frac{2}{N+1}$$ **tradehk 实现参数**:EMA12(快线)+ EMA26(慢线) **与 MA 的区别**:EMA 对最新价格更敏感,能更快捕捉趋势转折,但也更容易产生假信号。 --- ### 1.3 超级趋势线(SuperTrend) **原理**:基于 ATR(真实波动幅度)动态计算上下轨,当价格突破上轨转为看空,突破下轨转为看多。 **公式**: $$ATR = RMA(TR, period)$$ $$上轨 = \frac{High + Low}{2} + multiplier \times ATR$$ $$下轨 = \frac{High + Low}{2} - multiplier \times ATR$$ **tradehk 实现参数**:period=10,multiplier=3 **信号逻辑**: - 方向由 -1 变为 +1:趋势反转看多(权重 +2) - 方向由 +1 变为 -1:趋势反转看空(权重 +2) - 持续多头趋势中:看多(权重 +1) - 持续空头趋势中:看空(权重 +1) **优势**:SuperTrend 是趋势跟踪的利器,在单边行情中表现极佳,止损位动态跟随趋势,不会过早出局。 --- ## 二、动量类指标 ### 2.1 艾略特波浪振荡器(EWO) **原理**:EWO = EMA(5) - EMA(35),衡量短期动量相对于中期趋势的偏离程度。 **公式**: $$EWO = EMA(Close, 5) - EMA(Close, 35)$$ **信号解读**: - EWO > 0(绿色):短期动量强于中期,多头动能 - EWO < 0(红色):短期动量弱于中期,空头动能 - EWO 由负转正:动量反转,潜在买入机会 - EWO 由正转负:动量衰减,潜在卖出机会 **在 tradehk 大周期偏向判断中的权重**:EWO 是最重要的指标,权重为 2(其他指标权重均为 1)。当 EWO < 0 时,大周期偏向空头;EWO > 0 时,大周期偏向多头。 --- ### 2.2 MACD(指数平滑异同移动平均线) **原理**:通过两条 EMA 的差值及其信号线,识别趋势变化和动量强弱。 **标准参数(12, 26, 9)**: $$MACD线 = EMA(12) - EMA(26)$$ $$信号线 = EMA(MACD线, 9)$$ $$柱状图 = MACD线 - 信号线$$ **tradehk 特殊参数(10, 20, 10)**:针对加密货币短周期优化,反应更灵敏。 **信号逻辑**: | 信号 | 条件 | 权重 | |------|------|------| | MACD 金叉 | MACD 线上穿信号线 | +2(看多) | | MACD 死叉 | MACD 线下穿信号线 | +2(看空) | | 柱状图扩大(正) | 柱状图 > 0 且增大 | +1(多头增强) | | 柱状图扩大(负) | 柱状图 < 0 且减小 | +1(空头增强) | **背离信号**: - **顶背离**:价格创新高,MACD 未创新高 → 上涨动能衰竭,看空 - **底背离**:价格创新低,MACD 未创新低 → 下跌动能衰竭,看多 --- ### 2.3 动量振荡器(AO,Awesome Oscillator) **原理**:AO = SMA(中点价, 5) - SMA(中点价, 34),中点价 = (High + Low) / 2 **公式**: $$AO = SMA\left(\frac{H+L}{2}, 5\right) - SMA\left(\frac{H+L}{2}, 34\right)$$ **信号逻辑**: - AO 上穿零轴:动量由空转多(权重 +1) - AO 下穿零轴:动量由多转空(权重 +1) - 双峰形态(Saucer):连续两个正值柱,第二个更高 → 买入 - 碟形形态(Twin Peaks):两个负值低点,第二个更高 → 买入 --- ### 2.4 相对强弱指数(RSI) **原理**:通过比较一段时间内涨跌幅的平均值,衡量价格动量的强弱。 **公式**: $$RS = \frac{平均涨幅}{平均跌幅}$$ $$RSI = 100 - \frac{100}{1 + RS}$$ **tradehk 实现**:使用 Wilder 平滑法(RMA),period=14 **标准阈值**: - RSI > 70:超买区,价格可能回落 - RSI < 30:超卖区,价格可能反弹 - RSI 从超卖区回升(穿越 30):看多反转信号 - RSI 从超买区回落(穿越 70):看空反转信号 **加密货币调整**:由于加密货币波动性更大,部分交易者将阈值调整为 80/20,以减少假信号。 --- ### 2.5 随机指标(Stochastic Oscillator) **原理**:衡量当前收盘价在过去 N 个周期最高价和最低价范围内的相对位置。 **公式**: $$\%K = \frac{Close - LL_N}{HH_N - LL_N} \times 100$$ $$\%D = SMA(\%K, 3)$$ **tradehk 实现参数**:kPeriod=14,dPeriod=3 **信号逻辑**: - K、D 均低于 20:超卖区,看多 - K、D 均高于 80:超买区,看空 - K 上穿 D(低位金叉):买入信号 - K 下穿 D(高位死叉):卖出信号 --- ### 2.6 随机 RSI(StochRSI) **原理**:将 Stochastic 公式应用于 RSI 值,比 RSI 更敏感,更早发出信号。 **公式**: $$StochRSI = \frac{RSI - \min(RSI, N)}{\max(RSI, N) - \min(RSI, N)}$$ **tradehk 实现参数**:rsiPeriod=14,stochPeriod=14,kSmooth=3,dSmooth=3 **使用注意**:StochRSI 比 RSI 更敏感,假信号更多,建议配合趋势指标使用。 --- ### 2.7 KDJ 指标 **原理**:KDJ 是在随机指标基础上增加 J 线的改进版本,J 线放大了 K 和 D 的偏离程度。 **公式**: $$K_t = \frac{2}{3} K_{t-1} + \frac{1}{3} RSV_t$$ $$D_t = \frac{2}{3} D_{t-1} + \frac{1}{3} K_t$$ $$J = 3K - 2D$$ **tradehk 实现参数**:period=9,kSmooth=3,dSmooth=3 **信号逻辑**: | 信号 | 条件 | 权重 | |------|------|------| | 低位金叉 | K 上穿 D 且 K < 30 | +2(强看多) | | 普通金叉 | K 上穿 D | +1(看多) | | 高位死叉 | K 下穿 D 且 K > 70 | +2(强看空) | | 普通死叉 | K 下穿 D | +1(看空) | **J 线特性**:J 线超过 100 或低于 0 时,表示市场极度超买或超卖,往往预示反转。 --- ## 三、波动率类指标 ### 3.1 布林带(Bollinger Bands) **原理**:以移动均线为中轨,上下各加减 N 倍标准差形成通道,衡量价格波动范围。 **公式**: $$中轨 = MA(Close, 20)$$ $$上轨 = 中轨 + 2 \times \sigma_{20}$$ $$下轨 = 中轨 - 2 \times \sigma_{20}$$ **tradehk 实现参数**:period=20,multiplier=2 **信号逻辑**: - 价格触及下轨:超卖反弹信号(权重 +1) - 价格触及上轨:超买回落信号(权重 +1) - 带宽极度收窄(< 2%):即将变盘警告 **布林带收缩(Squeeze)**:当上下轨距离极小时,表明市场处于低波动整理阶段,即将爆发大行情。结合 TTM Squeeze 指标可更精确判断方向。 --- ### 3.2 TTM Squeeze(挤压动量指标) **原理**:结合布林带和 Keltner 通道,当布林带收缩在 Keltner 通道内时触发"挤压"状态,结合动量柱判断突破方向。 **公式**: $$KC_{上} = EMA(Close, 20) + 1.5 \times ATR(20)$$ $$KC_{下} = EMA(Close, 20) - 1.5 \times ATR(20)$$ $$挤压状态 = BB_{上} < KC_{上} \text{ 且 } BB_{下} > KC_{下}$$ **tradehk 实现参数**:bbPeriod=20,kcPeriod=20 **信号解读**: - 挤压状态(红点):市场蓄势待发 - 挤压释放(绿点):行情即将爆发 - 动量柱由负转正:看多突破 - 动量柱由正转负:看空突破 --- ### 3.3 真实波动幅度(ATR) **原理**:衡量市场波动性的指标,是 SuperTrend 等指标的基础。 **公式**: $$TR = \max(H-L, |H-C_{prev}|, |L-C_{prev}|)$$ $$ATR = RMA(TR, N)$$ **应用场景**: - 动态止损:止损位 = 入场价 - N × ATR(多头) - 仓位管理:仓位大小与 ATR 成反比,波动大时减仓 - 过滤低波动期:ATR 过低时暂停交易 --- ## 四、成交量类指标 ### 4.1 能量潮(OBV,On-Balance Volume) **原理**:累计成交量,价格上涨时加上成交量,价格下跌时减去成交量,反映资金流向。 **公式**: $$OBV_t = \begin{cases} OBV_{t-1} + Volume_t & \text{if } Close_t > Close_{t-1} \\ OBV_{t-1} - Volume_t & \text{if } Close_t < Close_{t-1} \\ OBV_{t-1} & \text{if } Close_t = Close_{t-1} \end{cases}$$ **信号解读**: - OBV 与价格同向上涨:趋势健康,资金持续流入 - OBV 背离价格(价格新高但 OBV 未新高):上涨动能不足,警惕回调 - OBV 突破前高:强烈看多信号 --- ### 4.2 资金流量指数(MFI,Money Flow Index) **原理**:结合价格和成交量的 RSI,衡量资金流入流出的强度。 **公式**: $$典型价格 = \frac{H + L + C}{3}$$ $$资金流 = 典型价格 \times 成交量$$ $$MFI = 100 - \frac{100}{1 + \frac{正向资金流}{负向资金流}}$$ **tradehk 实现参数**:period=14 **阈值**: - MFI > 80:资金大量流入,超买 - MFI < 20:资金大量流出,超卖 --- ### 4.3 成交量收缩检测 **tradehk 实现**:检测最近 5 根 K 线的平均成交量是否低于前 5 根的 70%。 **信号含义**:成交量收缩通常意味着市场观望情绪浓厚,趋势可能即将反转或大行情即将爆发,需等待放量确认。 --- ## 五、趋势强度类指标 ### 5.1 趋向运动指数(DMI/ADX) **原理**:DMI 通过计算 +DI(多头方向线)和 -DI(空头方向线)判断趋势方向,ADX 衡量趋势强度。 **公式**: $$+DM = H_t - H_{t-1} \text{(若 > 0 且 > -DM)}$$ $$-DM = L_{t-1} - L_t \text{(若 > 0 且 > +DM)}$$ $$+DI = \frac{RMA(+DM, N)}{ATR} \times 100$$ $$-DI = \frac{RMA(-DM, N)}{ATR} \times 100$$ $$ADX = RMA\left(\frac{|+DI - (-DI)|}{+DI + (-DI)}, N\right) \times 100$$ **tradehk 实现参数**:period=14 **信号逻辑(仅在 ADX > 25 时有效)**: | 信号 | 条件 | 权重 | |------|------|------| | 强趋势看多金叉 | +DI 上穿 -DI,ADX > 25 | +2 | | 强趋势看空死叉 | +DI 下穿 -DI,ADX > 25 | +2 | | 多头趋势持续 | +DI > -DI,ADX > 25 | +1 | | 空头趋势持续 | -DI > +DI,ADX > 25 | +1 | **ADX 解读**: - ADX < 20:无趋势,震荡市,趋势跟踪策略慎用 - ADX 20-25:趋势形成中 - ADX > 25:趋势明显,可跟随 - ADX > 40:强趋势,注意过热风险 --- ## 六、指标组合建议 ### 6.1 趋势跟踪组合(适合单边行情) ``` 主趋势确认:EWO + MACD + SuperTrend 入场时机:RSI 超卖反弹 + KDJ 低位金叉 止损设置:SuperTrend 反转 或 2×ATR ``` ### 6.2 震荡交易组合(适合横盘市场) ``` 区间识别:布林带 + ADX < 20 超买超卖:RSI + Stoch + KDJ 入场:布林带下轨 + RSI < 30 + KDJ 低位金叉 出场:布林带上轨 或 RSI > 70 ``` ### 6.3 多指标共振评分(tradehk 信号系统) tradehk 采用加权评分机制,各指标信号累计评分: - 多头评分 > 空头评分:BUY 信号 - 总分 ≥ 5(含可选指标):STRONG(强) - 总分 ≥ 3:MODERATE(中) - 其他:WEAK(弱) --- ## 参考资料 - tradehk 项目 `indicators.ts`:完整指标实现代码 - Investopedia 技术指标百科:https://www.investopedia.com/terms/t/technicalanalysis.asp - TradingView 指标文档:https://www.tradingview.com/scripts/ --- ## 附录:数据说明与补充 本文档旨在对上文提及的技术指标提供更深度的解析,包括详细的数据属性、参数建议、实战应用场景、数据格式规范以及常见误区,以帮助量化交易研究者和开发者更精准地应用这些工具。 ### 一、核心指标数据说明 为了确保策略的准确性和可复现性,对每个指标的数据特征进行标准化定义至关重要。下表详细列出了各核心指标的计算公式、数据范围、单位、推荐精度及主要数据来源。 | 指标名称 (Indicator) | 计算公式 (LaTeX) | 数据范围 | 单位 | 推荐精度 | 数据来源 | | :--- | :--- | :--- | :--- | :--- | :--- | | **MA / SMA** | `MA(N) = \frac{1}{N} \sum_{i=0}^{N-1} Close_{t-i}` | `(0, +∞)` | 价格单位 | 2-4 位小数 | 交易所 OHLCV 数据 | | **EMA** | `EMA_t = C_t \times k + E_{t-1} \times (1-k)` | `(0, +∞)` | 价格单位 | 2-4 位小数 | 交易所 OHLCV 数据 | | **SuperTrend** | `上/下轨 = \frac{H+L}{2} \pm m \times ATR` | `(0, +∞)` | 价格单位 | 2-4 位小数 | 交易所 OHLCV 数据 | | **EWO** | `EWO = EMA(C, 5) - EMA(C, 35)` | `(-∞, +∞)` | 点 (Points) | 2-4 位小数 | 交易所 OHLCV 数据 | | **MACD** | `MACD = EMA(C, 12) - EMA(C, 26)` | `(-∞, +∞)` | 点 (Points) | 4-6 位小数 | 交易所 OHLCV 数据 | | **RSI** | `RSI = 100 - \frac{100}{1 + RS}` | `[0, 100]` | 百分比 (%) | 2-4 位小数 | 交易所 OHLCV 数据 | | **Stochastic** | `\%K = \frac{C - LL_N}{HH_N - LL_N} \times 100` | `[0, 100]` | 百分比 (%) | 2-4 位小数 | 交易所 OHLCV 数据 | | **Bollinger Bands** | `中轨 \pm 2 \times \sigma_{20}` | `(0, +∞)` | 价格单位 | 2-4 位小数 | 交易所 OHLCV 数据 | | **ATR** | `ATR = RMA(TR, N)` | `(0, +∞)` | 价格单位 | 2-4 位小数 | 交易所 OHLCV 数据 | | **OBV** | `OBV_t = OBV_{t-1} \pm Volume_t` | `(-∞, +∞)` | 交易量单位 | 整数 | 交易所 OHLCV 数据 | | **MFI** | `MFI = 100 - \frac{100}{1 + MFR}` | `[0, 100]` | 百分比 (%) | 2-4 位小数 | 交易所 OHLCV 数据 | | **ADX** | `ADX = RMA(\frac{|+DI - (-DI)|}{+DI + (-DI)})` | `[0, 100]` | 数值 | 2-4 位小数 | 交易所 OHLCV 数据 | ### 二、数据格式规范 标准化的数据格式是保证多模块、多策略协同工作的基础。以下规范定义了系统输入和输出的数据结构。 #### 1. 输入数据格式 (OHLCV) 所有技术指标计算均依赖于标准的 OHLCV K线数据。推荐使用 JSON 数组格式,其中每个元素代表一个时间周期的数据点。 ```json [ { "timestamp": 1672531200000, // Unix 毫秒时间戳 "open": 16500.50, "high": 16550.75, "low": 16480.25, "close": 16525.00, "volume": 1250.75 }, // ... more data points ] ``` - **字段类型**:`timestamp` 为长整型 (long),其余价格和成交量字段为浮点型 (float/double)。 - **时间戳**:必须使用统一的 **Unix 毫秒时间戳**,以避免时区混淆。 #### 2. 指标输出格式 指标计算结果应与原始输入数据对齐,并以 JSON 对象或字典形式输出,方便策略调用。 ```json { "timestamp": 1672531200000, "rsi": 55.78, "macd": { "macd": 12.54, "signal": 10.98, "histogram": 1.56 }, "bollinger_bands": { "upper": 16800.20, "middle": 16500.00, "lower": 16200.80 } } ``` ### 三、参数参考总表 指标参数的选择对策略表现有决定性影响。下表整理了 `tradehk` 项目中使用的核心参数,并给出了通用市场的推荐范围作为参考。 | 指标 | 参数 | `tradehk` 设定值 | 推荐范围 | 说明 | | :--- | :--- | :--- | :--- | :--- | | **MA** | `period` | 10 (短), 100 (长) | 5-200 | 周期越短越灵敏,越长越平滑 | | **EMA** | `period` | 12 (快), 26 (慢) | 5-200 | 常用于构建 MACD 等复杂指标 | | **SuperTrend** | `period` | 10 | 7-14 | ATR 计算周期 | | | `multiplier` | 3 | 2-4 | 乘数越大,通道越宽,信号越少 | | **MACD** | `fast`, `slow`, `signal` | 10, 20, 10 | (12, 26, 9) | `tradehk` 针对加密市场优化,更灵敏 | | **RSI** | `period` | 14 | 7-30 | 14 为标准周期,短线可缩短 | | **Stochastic** | `kPeriod`, `dPeriod` | 14, 3 | (14, 3) | 经典的超买超卖指标参数 | | **KDJ** | `period`, `k`, `d` | 9, 3, 3 | (9, 3, 3) | 随机指标的变种,J线更灵敏 | | **Bollinger Bands**| `period`, `multiplier` | 20, 2 | (20, 2) | 2倍标准差覆盖约95%的价格波动 | | **TTM Squeeze** | `bbPeriod`, `kcPeriod` | 20, 20 | (20, 20) | 通常与布林带周期保持一致 | | **ADX/DMI** | `period` | 14 | 14 | ADX 的标准计算周期 | ### 四、量化交易应用场景 技术指标的价值在于应用。以下为几种基于本文档指标构建的典型策略场景。 1. **多时间周期趋势跟踪策略** - **场景描述**:利用 [艾略特波浪振荡器 (EWO)](../../wiki/名词解释/艾略特波浪振荡器.md) 在 4 小时图上判断主趋势方向。当 EWO > 0 确认多头市场后,在 15 分钟图上寻找 [MACD](../../wiki/名词解释/MACD.md) 金叉作为入场信号,并使用 [SuperTrend](../../wiki/名词解释/SuperTrend.md) 的下轨作为动态追踪止损位。此策略旨在过滤掉逆势交易,提高胜率。 - **核心指标**:EWO, MACD, SuperTrend。 2. **高频市场均值回归策略** - **场景描述**:在 ETH/BTC 等相对稳定的交易对的 1 分钟图上,部署基于 [布林带 (Bollinger Bands)](../../wiki/名词解释/布林带.md) 和 [相对强弱指数 (RSI)](../../wiki/名词解释/RSI.md) 的均值回归策略。当价格触及布林带下轨且 RSI 低于 20([超卖](../../wiki/名词解释/超卖.md)),执行买入;当价格触及上轨且 RSI 高于 80([超买](../../wiki/名词解释/超买.md)),执行卖出。此策略适用于波动率较高且区间震荡明显的市场。 - **核心指标**:Bollinger Bands, RSI。 3. **波动性突破与成交量验证策略** - **场景描述**:使用 [TTM Squeeze](../../wiki/名词解释/TTM_Squeeze.md) 指标监控市场,当指标显示“挤压”状态(红点)时,表明市场正处于低波动蓄势阶段。一旦挤压释放(绿点)且价格强势突破布林带上轨,同时伴随 [能量潮 (OBV)](../../wiki/名词解释/能量潮.md) 指标的显著上升(验证资金流入),则执行追多操作。此策略旨在捕捉由盘整转为单边大行情的起点。 - **核心指标**:TTM Squeeze, Bollinger Bands, OBV。 ### 五、常见误区与正确理解 1. **误区:指标是预测未来的水晶球。** - **正确理解**:技术指标是基于历史价格和成交量的数学计算,它们是对市场过去状态的描述和总结,而非对未来的精准预测。它们提供的是概率优势,而非确定性。任何交易决策都应结合[风险管理](../../wiki/名词解释/风险管理.md)进行。 2. **误区:参数越贴合历史数据越好(过拟合)。** - **正确理解**:在历史回测中过度优化参数,会导致策略对特定历史行情表现完美,但在未来实盘中表现糟糕。应选择在多段不同市场环境中都表现稳健的参数,并进行样本外测试。 3. **误区:指标信号越多,交易机会越多。** - **正确理解**:过于灵敏的参数或指标组合会产生大量“噪音”信号,导致频繁交易和高昂的交易成本。高质量的交易信号往往来自于多个非相关指标的共振确认,追求信号质量而非数量是关键。 4. **误区:忽视指标的适用市场环境。** - **正确理解**:趋势类指标(如 MA, SuperTrend)在单边行情中表现优异,但在震荡市中会频繁止损。而摆动类指标(如 RSI, Stochastic)在区间震荡市中能有效捕捉高抛低吸机会,但在趋势行情中会过早离场。必须先判断当前市场属于[趋势](../../wiki/名词解释/趋势.md)市还是[震荡](../../wiki/名词解释/震荡.md)市,再选择合适的指标组合。 5. **误区:混淆指标背离的真正含义。** - **正确理解**:[背离](../../wiki/名词解释/背离.md)(如 MACD 顶背离)是动能减弱的信号,预示原有趋势可能即将反转或进入盘整,但它本身不是一个精确的入场做空信号。强势趋势中的背离可能会持续很长时间(“背了又背”),需要等待价格确认跌破关键支撑位或趋势线后才能行动。