第三节:震荡市识别——如何判断市场在“磨洋工”

做网格交易,最怕什么?

不是单边下跌,也不是单边上涨。最怕的是——你明明在震荡市里,却以为趋势要来了,结果一追就被套;或者趋势已经启动了,你还傻傻地挂着网格,结果仓位全飞了。

所以,识别震荡市,是网格交易的第一道基本功。说白了,你得先知道市场现在在干嘛,才能决定用哪把刀。

一、什么是震荡市?

震荡市,也叫盘整市。价格在一个区间里来回跑,没有明确的方向。高点不过前高,低点不破前低。就像一个人原地踏步,看着忙活,其实没走多远。

我个人习惯把震荡市分成两类:

  • 窄幅震荡:振幅在5%以内,适合小网格、高频交易。
  • 宽幅震荡:振幅在10%-20%,适合大网格、低频交易。

你想想看,如果振幅太小,网格间距设大了,根本吃不到利润。反过来,振幅太大,网格设小了,容易穿仓。

二、常用技术指标:三把尺子量震荡

判断震荡市,我一般用三个指标。不是越多越好,而是互相印证。就像盖房子,你得有水平尺、垂直线、卷尺,缺一个都不踏实。

1. 布林带(Bollinger Bands)

布林带是我最常用的工具。它由三条线组成:中轨是20日均线,上下轨是加减两倍标准差。

震荡市的特征很明显:

  • 价格在上下轨之间来回穿梭,不碰轨,或者碰了立刻弹回来。
  • 布林带收窄,像一条被压扁的蛇。这叫“缩口”,是震荡的前兆。
  • 布林带走平,没有向上或向下的斜率。

我在项目中遇到过一种情况:布林带缩口到极致,价格突然突破上轨,很多人以为要大涨了,结果第二天又跌回中轨。这就是假突破。嗯,这里要注意,布林带缩口后的第一次突破,往往不靠谱。

核心判断逻辑:

当布林带上下轨的宽度(带宽)小于历史平均值的60%时,市场大概率进入震荡。

# 计算布林带带宽
import pandas as pd
import numpy as np

def bollinger_bandwidth(df, window=20):
    df['mid'] = df['close'].rolling(window).mean()
    df['std'] = df['close'].rolling(window).std()
    df['upper'] = df['mid'] + 2 * df['std']
    df['lower'] = df['mid'] - 2 * df['std']
    df['bandwidth'] = (df['upper'] - df['lower']) / df['mid']
    return df

# 当bandwidth小于历史30日均值的60%,标记为震荡
df['bandwidth_ma'] = df['bandwidth'].rolling(30).mean()
df['is_range'] = df['bandwidth'] < df['bandwidth_ma'] * 0.6

2. RSI(相对强弱指标)

RSI衡量的是涨跌力度。震荡市里,RSI会在30到70之间来回摆动,不会轻易进入超买或超卖区。

我个人的经验是:

  • RSI在40-60之间徘徊,说明市场没有方向,典型的震荡。
  • RSI偶尔冲到70以上,但很快回落,说明多头无力持续。
  • RSI跌破30,但第二天就反弹,说明空头也是纸老虎。

避坑指南:我曾经以为RSI跌破30就是抄底机会,结果在趋势市里被埋了。后来才明白,RSI在震荡市里好用,在趋势市里会钝化。所以,一定要先判断市场状态,再用RSI。

小技巧:

把RSI的参数从14改成7,灵敏度更高,更适合识别短期震荡。

3. ATR(平均真实波幅)

ATR衡量的是波动幅度。震荡市的ATR会持续走低,甚至创出近期新低。

怎么用?

  • ATR连续下降,说明市场在“缩量”,波动越来越小。
  • ATR突然放大,往往是震荡结束的信号,趋势要来了。
  • 对比ATR的20日均值和5日均值,如果5日均值低于20日均值,说明波动在衰减。

说白了,ATR就是市场的“心跳”。心跳平稳,说明在休息;心跳加速,说明要运动了。

# ATR计算示例
def calculate_atr(df, period=14):
    df['tr'] = np.maximum(
        df['high'] - df['low'],
        np.maximum(
            abs(df['high'] - df['close'].shift(1)),
            abs(df['low'] - df['close'].shift(1))
        )
    )
    df['atr'] = df['tr'].rolling(period).mean()
    return df

# 判断震荡:ATR连续5日下降
df['atr_decreasing'] = df['atr'] < df['atr'].shift(1)
df['range_signal'] = df['atr_decreasing'].rolling(5).sum() >= 4

三、震荡市与趋势市的切换识别

这是最难的部分。很多人在震荡里赚了钱,结果趋势一来全吐回去。为什么?因为没识别出切换信号。

我总结了三步判断法:

  1. 看布林带开口:带宽从低位开始放大,说明波动在苏醒。
  2. 看价格突破:价格连续两日收盘在布林带外,且不回轨。
  3. 看ATR确认:ATR单日放大超过20%,说明趋势有力量。

举个例子。我记得有一次做沪深300的网格,布林带缩口缩了快两周,ATR也跌到了历史低位。突然有一天,价格突破上轨,ATR放大了25%。我当时犹豫了一下,没有及时撤网格,结果第二天高开低走,网格全成交在了高位。嗯,从那以后,我给自己定了个规矩:ATR放大超过20%,立刻暂停网格,等趋势确认再说。

重要提醒:

震荡转趋势的初期,往往有假突破。不要看到一根大阳线就激动。等第二根K线确认,或者等收盘价站稳布林带外轨。

四、知识体系框架

下面这张图,是我自己整理的知识结构。每次做交易前,我都会过一遍这个流程。

震荡市识别知识体系 市场状态判断 布林带 RSI ATR 带宽 < 历史均值60% 价格在上下轨内运行 布林带走平 RSI在40-60之间 不进入超买超卖区 摆动平缓 ATR持续下降 ATR创近期新低 5日均值 < 20日均值 震荡→趋势切换识别 布林带开口放大 价格突破外轨 ATR放大 > 20%

五、实战中的注意事项

最后,说几个我踩过的坑:

  • 不要只看一个指标。布林带说震荡,RSI说趋势,你信谁?三个指标至少两个一致,才能下结论。
  • 震荡市也会变。今天震荡,不代表明天还震荡。每天开盘前,花30秒看一眼ATR和布林带带宽。
  • 别在震荡市里做趋势策略。我见过有人用均线金叉死叉做网格,结果来回打脸。工具要对症。

我的习惯:

每天早上9:25,打开三个指标的监控面板。如果三个指标都指向震荡,我就放心挂网格。如果有一个指标开始异动,我就减半仓位。如果两个指标异动,我就清仓观望。宁可错过,不要做错。

好了,震荡市的识别就讲到这里。记住一句话:网格交易赚的是震荡的钱,趋势来了要懂得收手。下一节,我们会聊网格参数的设定,包括间距、仓位、频率这些核心问题。

专注资料整理