作者: 王宁 原著语言: 简体中文 市场聚焦: A股(上海证券交易所和深圳证券交易所) 交易风格: 突破重要阻力位的动量跟进交易
王宁的"过顶擒龙"方法论建立在一个强有力的观察之上:成功突破重要阻力位——尤其是前期重要高点——的股票,其供需动态会发生根本性转变。上方套牢盘被消化,被困的卖方获得解放,股票进入阻力极小的区域,动量可以迅速加速。
"龙"的比喻是有意为之:突破阻力的股票就像一条冲破云层的龙——一旦突破,便可自由翱翔。交易者的任务是在突破的那一刻抓住这条龙。
关键原则:
"过顶"特指价格收盘突破前期重要高点。这与仅仅在日内触及或刺穿高点是不同的。
有效的"过顶"事件需要:
| 顶部类型 | 定义 | 信号强度 |
|---|---|---|
| 历史最高价 | 股票有史以来交易过的最高价 | 最强 |
| 52周新高 | 过去250个交易日的最高收盘价 | 非常强 |
| 重要摆动高点 | 引发跌幅>= 15%的回调的峰值 | 强 |
| 次要摆动高点 | 引发5-15%回调的峰值 | 中等 |
| 整理区间上沿 | 交易区间的上边界 | 中等 |
当价格接近前期高点时,三类市场参与者受到影响:
当新的需求压过套牢盘的供给,且空头回补增加燃料时,突破就成功了。
当多个阻力位在一个紧密的价格区间内(3%以内)汇聚时,突破这个复合阻力将异常强劲。同时突破的阻力层级越多,信号越强。
并非每一次价格突破阻力都符合擒龙的条件。突破必须满足严格的标准:
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
突破日必须显示出令人信服的成交量:
| 成交量水平 | 解读 | 操作 |
|---|---|---|
| < 1.5倍20日均量 | 不充分——可能假突破 | 不交易 |
| 1.5-2.0倍均量 | 最低确认 | 减仓交易 |
| 2.0-3.0倍均量 | 标准确认 | 满仓 |
| 3.0-5.0倍均量 | 强烈确认 | 满仓,更高确信度 |
| > 5.0倍均量 | 可能是高潮/派发 | 谨慎——可能是末端放量 |
理想的突破前成交量模式:
王宁的标志性形态是多阶段龙型突破,分为不同的阶段展开:
突破前,知情资金在底部区域内建仓。寻找以下迹象:
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: 弱底部,降低确信度
将计划仓位分为三部分:
这种方式降低了平均成本并确认了突破质量。
突破后,跟进的质量决定是持有还是出场。
基于突破质量评分:
| 满足的评分项 | 仓位大小 |
|---|---|
| 5+(底部+成交量+K线+均线+板块) | 资金的25-30% |
| 3-4项 | 资金的15-20% |
| 2项(最低门槛) | 资金的10% |
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
突破后的预期涨幅由前期底部的深度来估算:
target = breakout_level + (breakout_level - base_low)
例如,如果一只股票在20元突破,底部低点为15元,则目标为25元(从突破位算起25%的涨幅)。
如果出现以下情况,清空所有剩余仓位:
最危险的假突破:
防御:严格使用止损架构可防止多头陷阱造成灾难性损失。
# ============================================================
# 过顶擒龙 — 完整系统
# ============================================================
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, "持仓健康"
"一只突破前期高点的股票就是一条挣脱束缚的龙。不要犹豫——骑上龙或者看着它飞走。"
"阻力不是一堵墙,而是一道门。这道门很重,需要巨大的力量才能打开。这个力量就是成交量。没有成交量,门依然紧闭。"
"底部的质量告诉你突破的一切。深厚、安静的底部产生强劲、持续的突破。浅薄、嘈杂的底部产生虚假的起步。"
"不要买突破尝试,要买突破确认。尝试失败的频率高于成功——但确认的突破跟进率很高。"
"首次回踩突破位是市场给耐心交易者的礼物。如果该位守住,你就得到了这条龙是真实的确认。"
"当多个阻力位在一个价格处汇聚时,突破所需的力量是巨大的——但随之而来的推动力也同样巨大。复合阻力突破是概率最高的交易。"
"在熊市中,即使龙也会从天上掉下来。永远不要对抗市场环境。擒龙方法在市场潮水上涨时效果最好。"
"测量目标不是保证,而是预期。动态管理仓位——让市场告诉你它何时结束,而不是你的计算器。"
"假突破是你交易突破所付出的税。接受它们,用止损控制亏损,然后继续前进。五次成功的擒龙轻松抵消十次假突破。"
本规范综合了王宁《过顶擒龙》的核心方法论,构建为A股市场突破交易策略的可执行实施指南。