摘要:在趋势跟踪策略中,震荡行情是最大的“敌人” —— 它会导致频繁假信号、反复止损、资金回撤、胜率骤降。因此,几乎所有成熟趋势策略都会配备“震荡过滤器”,以识别并避开无序波动市场。
在趋势跟踪策略中,震荡行情是最大的“敌人” —— 它会导致频繁假信号、反复止损、资金回撤、胜率骤降。因此,几乎所有成熟趋势策略都会配备“震荡过滤器”,以识别并避开无序波动市场。
一、什么是“震荡过滤器”?
震荡过滤器(Chop Filter / Range Filter) 是一类用于识别市场是否处于“无趋势、横盘震荡”状态的技术工具或逻辑条件。当检测到震荡时,策略会:
- 暂停开仓
- 缩小仓位
- 放宽入场阈值
- 切换至区间交易模式
二、常见的震荡过滤器(附原理+用法+代码思路)
以下是实战中最常用、最有效的几类震荡过滤器,按推荐优先级排序:
1. ADX(平均趋向指数)—— 最经典的趋势强度过滤器
▶ 原理:
ADX 不指示方向,只衡量趋势强度。值越高,趋势越强;值越低,市场越震荡。
- ADX
- ADX > 25~30 → 趋势市(允许交易)
- ADX > 40 → 强趋势(可加仓)
▶ 优点:
- 标准化、通用性强
- 易于编程实现
- 与趋势策略天然契合
▶ 代码示例(EasyLanguage):
pascal
Vars
NumericSeries ADXValue;
Begin
ADXValue = AvgDI(14); // 或 ADX(14)
// 只在趋势明确时开仓
If (ValidTrade == 1 AND H[1] >= HHN[1] AND MarketPosition != 1 AND ADXValue > 25)
{
Buy(0, O);
}
End
```
注意:ADX 有滞后性,适合日线/小时线,不适合超短线。
2. ATR 波动率过滤器 —— 用波动幅度识别震荡
▶ 原理:
震荡市通常伴随低波动率。ATR(平均真实波幅)下降至历史低位,往往预示市场进入盘整。
- ATR
- ATR > N周期ATR均线 × 1.5 → 高波动趋势启动
▶ 优点:
- 直接反映价格波动能量
- 可动态调整止损幅度
▶ 代码示例:
pascal
Vars
NumericSeries ATR_MA;
Begin
ATR_MA = Average(ATR, 20);
// 震荡过滤:ATR低于均值60%则不开新仓
If (ATR
{
ValidTrade = 0; // 清除交易信号
}
End
```
---
3. 价格通道振幅过滤(CSDN知识库推荐方法)
▶ 原理:
计算最近N周期最高价与最低价的相对振幅,若振幅过小,则判定为窄幅震荡。
公式:
(HHV(H, N) - LLV(L, N)) / LLV(L, N)
▶ 优点:
- 直观、物理意义明确
- 无需复杂指标
▶ 代码示例:
pascal
Vars
Numeric PriceRangeRatio;
Begin
PriceRangeRatio = (Highest(H, 20) - Lowest(L, 20)) / Lowest(L, 20) * 100; // 百分比
If (PriceRangeRatio
{
ValidTrade = 0; // 过滤掉震荡信号
}
End
```
---
4. 成交量过滤器(适用于股票/期货主力合约)
▶ 原理:
震荡市常伴随缩量。若成交量持续低于均量线一定比例,说明市场缺乏方向共识。
- Volume
▶ 代码示例:
pascal
If (V
{
ValidTrade = 0;
}
```
注意:外汇、加密货币等无统一成交量数据,慎用。
---
5. CMI(钱德动量摆动指标)—— 专为震荡设计的趋势过滤器
▶ 原理(来自CSDN知识库):
CMI 衡量当前价格在近期范围内的位置,值越小,越震荡。
公式简化版:
> `CMI = ABS(Close - Close[N]) / (Highest(H, N) - Lowest(L, N)) * 100`
> - CMI
> - CMI > 60 → 趋势
▶ 代码示例:
pascal
Vars
Numeric CMI;
Begin
CMI = Abs(Close - Close[10]) / (Highest(H, 10) - Lowest(L, 10)) * 100;
If (CMI
{
ValidTrade = 0; // 震荡,不开仓
}
End
```
---
6. 布林带收口过滤器
▶ 原理:
布林带上下轨收窄 → 波动率下降 → 震荡;开口 → 波动率上升 → 趋势启动。
- BandWidth = (UpperBand - LowerBand) / MiddleBand
- BandWidth
▶ 代码示例:
pascal
Vars
Numeric UpperBand, LowerBand, BandWidth, AvgBandWidth;
Begin
UpperBand = BollingerUpper(C, 20, 2);
LowerBand = BollingerLower(C, 20, 2);
BandWidth = (UpperBand - LowerBand) / Average(C, 20);
AvgBandWidth = Average(BandWidth, 20);
If (BandWidth
{
ValidTrade = 0; // 布林收口,震荡过滤
}
End
```
7. RSI 区间过滤(辅助使用)
▶ 原理:
震荡市中RSI常在40~60之间徘徊,突破该区间可能预示趋势启动。
- RSI 在 [40,60] 之间持续 > 3根K线 → 震荡
- RSI 突破60/跌破40 → 可能趋势启动
▶ 代码示例:
```pascal
Vars
Numeric RSI_Value;
Numeric InRangeCount(0);
Begin
RSI_Value = RSI(C, 14);
If (RSI_Value >= 40 And RSI_Value
{
InRangeCount = InRangeCount + 1;
} Else
{
InRangeCount = 0;
}
If (InRangeCount >= 3)
{
ValidTrade = 0; // RSI持续中性,震荡过滤
}
End
```
三、实战组合建议(推荐搭配使用)
| 市场类型 | 推荐过滤器组合 | 说明 |
||||
| 商品期货 | ADX + ATR | 趋势强度+波动率双重确认 |
| 股票指数 | ADX + 成交量 | 避免流动性陷阱 |
| 外汇/加密 | ATR + 布林带宽度 | 无成交量数据下的最优选择 |
| 全自动量化 | ADX + 价格振幅 + CMI | 多维度交叉验证,提高稳定性 |
黄金法则:宁可错过,不可做错。震荡市空仓观望,远胜于反复止损。
� 总结:震荡过滤器选择指南
| 过滤器 | 适用品种 | 优点 | 缺点 | 推荐指数 |
||||||
| ADX | 所有趋势品种 | 标准、稳定、易用 | 滞后 | ⭐⭐⭐⭐⭐ |
| ATR | 所有 | 反映真实波动 | 需配合其他指标 | ⭐⭐⭐⭐ |
| 价格振幅 | 股票、期货 | 直观、物理意义明确 | 参数需调优 | ⭐⭐⭐⭐ |
| 成交量 | 股票、主力合约 | 反映市场参与度 | 数据不全时无效 | ⭐⭐⭐ |
| CMI | 所有 | 专为震荡设计 | 计算稍复杂 | ⭐⭐⭐⭐ |
| 布林收口 | 所有 | 视觉化好,易理解 | 易受参数影响 | ⭐⭐⭐ |
| RSI区间 | 辅助参考 | 简单 | 噪音多,单独用效果差 | ⭐⭐ |
来源:理财师观察