过顶擒龙 — 完整实施规范

作者: 王宁 原著语言: 简体中文 市场聚焦: A股(上海证券交易所和深圳证券交易所) 交易风格: 突破重要阻力位的动量跟进交易


目录

  1. 核心理念
  2. "过顶"概念
  3. 阻力位分类
  4. 突破资格标准
  5. 成交量确认系统
  6. 龙形态——多阶段突破
  7. 突破前的蓄势阶段
  8. 入场技巧
  9. 跟进分析
  10. 仓位管理
  11. 止损架构
  12. 出场策略与目标设定
  13. 市场环境过滤器
  14. 假突破识别
  15. 伪代码:完整交易系统
  16. 关键语录与原则

1. 核心理念

王宁的"过顶擒龙"方法论建立在一个强有力的观察之上:成功突破重要阻力位——尤其是前期重要高点——的股票,其供需动态会发生根本性转变。上方套牢盘被消化,被困的卖方获得解放,股票进入阻力极小的区域,动量可以迅速加速。

"龙"的比喻是有意为之:突破阻力的股票就像一条冲破云层的龙——一旦突破,便可自由翱翔。交易者的任务是在突破的那一刻抓住这条龙。

关键原则:


2. "过顶"概念

"过顶"特指价格收盘突破前期重要高点。这与仅仅在日内触及或刺穿高点是不同的。

2.1 "过顶"的定义

有效的"过顶"事件需要:

  1. 股票必须收盘在前期重要高点之上(日内刺穿不算)
  2. 收盘价必须高出前高至少1%(过滤噪音)
  3. 突破必须有成交量确认(见第5节)
  4. 前期高点必须在至少20个交易日之前形成

2.2 需要突破的"顶"的类型

顶部类型 定义 信号强度
历史最高价 股票有史以来交易过的最高价 最强
52周新高 过去250个交易日的最高收盘价 非常强
重要摆动高点 引发跌幅>= 15%的回调的峰值
次要摆动高点 引发5-15%回调的峰值 中等
整理区间上沿 交易区间的上边界 中等

2.3 "过顶"背后的心理

当价格接近前期高点时,三类市场参与者受到影响:

当新的需求压过套牢盘的供给,且空头回补增加燃料时,突破就成功了。


3. 阻力位分类

3.1 一级阻力

3.2 二级阻力

3.3 三级阻力

3.4 复合阻力

当多个阻力位在一个紧密的价格区间内(3%以内)汇聚时,突破这个复合阻力将异常强劲。同时突破的阻力层级越多,信号越强。


4. 突破资格标准

并非每一次价格突破阻力都符合擒龙的条件。突破必须满足严格的标准:

4.1 K线质量

4.2 果断性评分

decisiveness = 0
if close > prior_high * 1.01:  decisiveness += 1
if close > prior_high * 1.03:  decisiveness += 1
if body_pct >= 0.05:           decisiveness += 1
if close == day_high:          decisiveness += 1
if gap_up and not filled:      decisiveness += 1

# 交易最低要求评分:3

4.3 背景条件


5. 成交量确认系统

5.1 突破日成交量

突破日必须显示出令人信服的成交量:

成交量水平 解读 操作
< 1.5倍20日均量 不充分——可能假突破 不交易
1.5-2.0倍均量 最低确认 减仓交易
2.0-3.0倍均量 标准确认 满仓
3.0-5.0倍均量 强烈确认 满仓,更高确信度
> 5.0倍均量 可能是高潮/派发 谨慎——可能是末端放量

5.2 突破前的成交量模式

理想的突破前成交量模式:

  1. 整理/筑底阶段成交量递减(供给枯竭)
  2. 突破前3-5天成交量逐步放大(吸筹)
  3. 突破日成交量爆发

5.3 突破后的成交量跟进


6. 龙形态——多阶段突破

王宁的标志性形态是多阶段龙型突破,分为不同的阶段展开:

6.1 第一阶段:蛰伏期

6.2 第二阶段:试探期

6.3 第三阶段:突破期

6.4 第四阶段:加速期

6.5 第五阶段:回踩期


7. 突破前的蓄势阶段

7.1 机构吸筹的迹象

突破前,知情资金在底部区域内建仓。寻找以下迹象:

7.2 底部质量评分

base_score = 0
base_duration = days_in_consolidation()

if base_duration >= 60:     base_score += 2
elif base_duration >= 30:   base_score += 1

price_range = (base_high - base_low) / base_low
if price_range <= 0.15:     base_score += 2
elif price_range <= 0.25:   base_score += 1

if volume_trending_down():  base_score += 1
if higher_lows_in_base():   base_score += 1
if MAs_converging():        base_score += 1

# base_score >= 5: 优秀底部
# base_score 3-4: 合格底部
# base_score < 3: 弱底部,降低确信度

8. 入场技巧

8.1 突破日入场

8.2 次日开盘入场(首选)

8.3 回踩阻力位入场(保守)

8.4 分层入场(进阶)

将计划仓位分为三部分:

  1. 1/3在突破日或次日早盘
  2. 1/3在首次回踩突破位时
  3. 1/3在确认回踩守住后(放量反弹K线)

这种方式降低了平均成本并确认了突破质量。


9. 跟进分析

突破后,跟进的质量决定是持有还是出场。

9.1 强劲跟进(持有/加仓)

9.2 中性跟进(持有/收紧止损)

9.3 弱势跟进(出场或减仓)


10. 仓位管理

10.1 初始仓位大小

基于突破质量评分:

满足的评分项 仓位大小
5+(底部+成交量+K线+均线+板块) 资金的25-30%
3-4项 资金的15-20%
2项(最低门槛) 资金的10%

10.2 加仓规则

10.3 组合规则


11. 止损架构

11.1 初始止损

11.2 时间止损

11.3 形态止损

11.4 渐进式止损上移

function update_stop(position, current_price):
    gain = (current_price - position.entry) / position.entry

    if gain >= 0.20:
        position.stop = max(position.stop, position.entry * 1.10)
    elif gain >= 0.10:
        position.stop = max(position.stop, position.entry * 1.03)
    elif gain >= 0.05:
        position.stop = max(position.stop, position.entry)

    # 均线追踪止损(盈利时)
    if gain >= 0.15:
        position.stop = max(position.stop, current_ma10)

    return position.stop

12. 出场策略与目标设定

12.1 测量目标

突破后的预期涨幅由前期底部的深度来估算:

target = breakout_level + (breakout_level - base_low)

例如,如果一只股票在20元突破,底部低点为15元,则目标为25元(从突破位算起25%的涨幅)。

12.2 分批出场

12.3 高潮顶部信号(全部出场)

如果出现以下情况,清空所有剩余仓位:


13. 市场环境过滤器

13.1 牛市条件(全力进攻)

13.2 震荡市场(标准)

13.3 熊市(防御/空仓)


14. 假突破识别

14.1 突破时的预警信号

14.2 突破后的预警信号

14.3 "多头陷阱"形态

最危险的假突破:

  1. 股票以适中的成交量突破阻力(看起来合法)
  2. 跟进1-2天,小幅上涨
  3. 突然以大阴线反转
  4. 跳空跌破阻力位
  5. 前期"突破买入者"变成套牢盘——制造新一波供给

防御:严格使用止损架构可防止多头陷阱造成灾难性损失。


15. 伪代码:完整交易系统

# ============================================================
# 过顶擒龙 — 完整系统
# ============================================================

def identify_resistance_levels(stock, current_date):
    """寻找当前价格上方所有重要阻力位。"""
    history = stock.get_history(current_date, lookback=500)
    current_price = history.close[-1]
    levels = []

    # 寻找摆动高点
    for i in range(2, len(history) - 2):
        if (history.high[i] > history.high[i-1] and
            history.high[i] > history.high[i-2] and
            history.high[i] > history.high[i+1] and
            history.high[i] > history.high[i+2]):

            decline_after = min(history.low[i+1:i+30]) if i+30 < len(history) else history.low[-1]
            decline_pct = (history.high[i] - decline_after) / history.high[i]

            if decline_pct >= 0.05:
                strength = "primary" if decline_pct >= 0.30 else \
                          "secondary" if decline_pct >= 0.15 else "tertiary"
                levels.append({
                    'price': history.high[i],
                    'date': history.dates[i],
                    'decline_pct': decline_pct,
                    'strength': strength,
                    'age_days': current_date - history.dates[i]
                })

    # 过滤至当前价格附近的阻力位(上方15%以内)
    nearby = [l for l in levels
              if l['price'] > current_price
              and l['price'] < current_price * 1.15]

    return sorted(nearby, key=lambda x: x['price'])


def detect_breakout(stock, date):
    """检测今日K线是否为有效的阻力突破。"""
    candle = stock.get_daily_candle(date)
    levels = identify_resistance_levels(stock, date - 1)

    if not levels:
        return None

    for level in levels:
        if candle.close > level['price'] * 1.01:
            # K线质量检查
            body_pct = (candle.close - candle.open) / candle.open
            if body_pct < 0.03:
                continue

            # 成交量检查
            hist = stock.get_history(date, lookback=60)
            avg_vol = mean(hist.volume[-20:])
            vol_ratio = candle.volume / avg_vol
            if vol_ratio < 1.5:
                continue

            # 底部质量
            base = analyze_base(hist, level['price'])

            # 果断性
            dec_score = compute_decisiveness(candle, level['price'])

            if dec_score >= 3:
                return {
                    'stock': stock,
                    'resistance': level,
                    'candle': candle,
                    'vol_ratio': vol_ratio,
                    'base_score': base['score'],
                    'decisiveness': dec_score,
                    'total_score': dec_score + base['score']
                }

    return None


def analyze_base(history, resistance_price):
    """分析阻力位下方整理底部的质量。"""
    # 计算价格在阻力位下方的时间
    base_days = 0
    base_low = resistance_price

    for i in range(len(history) - 1, -1, -1):
        if history.close[i] > resistance_price:
            break
        base_days += 1
        base_low = min(base_low, history.low[i])

    price_range = (resistance_price - base_low) / base_low
    vol_trend = linear_regression_slope(history.volume[-base_days:])

    score = 0
    if base_days >= 60:      score += 2
    elif base_days >= 30:    score += 1
    if price_range <= 0.15:  score += 2
    elif price_range <= 0.25: score += 1
    if vol_trend < 0:        score += 1  # 底部期间成交量递减

    return {'score': score, 'days': base_days, 'range': price_range}


def manage_breakout_trade(position, daily_data, market_index):
    """突破入场后的每日交易管理。"""
    current = daily_data[-1]
    gain = (current.close - position.entry_price) / position.entry_price

    # 检查突破是否失败
    resistance = position.resistance_price
    days_since_entry = len(daily_data) - position.entry_index

    # 止损检查
    if current.close < position.stop:
        return EXIT_FULL, "止损触发"

    if current.close < resistance * 0.97 and days_since_entry <= 5:
        return EXIT_FULL, "突破失败——回到阻力位下方"

    if days_since_entry >= 5 and gain < 0.05:
        return EXIT_FULL, "时间止损——进展不足"

    # 更新追踪止损
    if gain >= 0.20:
        new_stop = position.entry_price * 1.10
    elif gain >= 0.10:
        new_stop = position.entry_price * 1.03
    elif gain >= 0.05:
        new_stop = position.entry_price
    else:
        new_stop = position.stop

    position.stop = max(position.stop, new_stop)

    # 分批出场
    measured_target = resistance + (resistance - position.base_low)

    if current.close >= measured_target and position.scale_level < 2:
        position.scale_level = 2
        return EXIT_THIRD, "达到测量目标"
    elif current.close >= (resistance + measured_target) / 2 and position.scale_level < 1:
        position.scale_level = 1
        return EXIT_THIRD, "达到半程测量目标"

    # 高潮检测
    day_gain = (current.close - current.open) / current.open
    vol_ratio = current.volume / position.stock.avg_volume_20
    if day_gain >= 0.08 and vol_ratio >= 4.0:
        return EXIT_FULL, "检测到高潮顶部"

    return HOLD, "持仓健康"

16. 关键语录与原则

"一只突破前期高点的股票就是一条挣脱束缚的龙。不要犹豫——骑上龙或者看着它飞走。"

"阻力不是一堵墙,而是一道门。这道门很重,需要巨大的力量才能打开。这个力量就是成交量。没有成交量,门依然紧闭。"

"底部的质量告诉你突破的一切。深厚、安静的底部产生强劲、持续的突破。浅薄、嘈杂的底部产生虚假的起步。"

"不要买突破尝试,要买突破确认。尝试失败的频率高于成功——但确认的突破跟进率很高。"

"首次回踩突破位是市场给耐心交易者的礼物。如果该位守住,你就得到了这条龙是真实的确认。"

"当多个阻力位在一个价格处汇聚时,突破所需的力量是巨大的——但随之而来的推动力也同样巨大。复合阻力突破是概率最高的交易。"

"在熊市中,即使龙也会从天上掉下来。永远不要对抗市场环境。擒龙方法在市场潮水上涨时效果最好。"

"测量目标不是保证,而是预期。动态管理仓位——让市场告诉你它何时结束,而不是你的计算器。"

"假突破是你交易突破所付出的税。接受它们,用止损控制亏损,然后继续前进。五次成功的擒龙轻松抵消十次假突破。"


本规范综合了王宁《过顶擒龙》的核心方法论,构建为A股市场突破交易策略的可执行实施指南。