基于David Landry,Dave Landry on Swing Trading (2000)
Dave Landry是一位交易员、教育家,DaveLandry.com创始人,自1990年代以来一直活跃于波段交易的交易和教学。他的方法以其简洁性、趋势跟随回调入场的强调,以及坚持最好的交易是来找你的——而不是你去找的——这一理念而著称。
Dave Landry on Swing Trading (2000) 是一本系统波段交易的实践指南。与许多列举数十种形态和指标的技术分析书籍不同,Landry专注于少数高概率形态,在趋势识别、入场时机和风险管理的纪律框架内执行。该书反映了交易成功不是来自找到完美的指标或形态,而是来自用纪律和耐心应用简单、稳健的方法论这一理念。
波段交易处于日内交易和仓位交易之间的中间地带:
| 维度 | 日内交易 | 波段交易 | 仓位交易 |
|---|---|---|---|
| 持仓周期 | 分钟到小时 | 2-10天 | 每周到每月 |
| 时间投入 | 全职,市场时间内 | 兼职,盘后扫描 | 定期审视 |
| 交易次数 | 每天多次 | 每周2-5次 | 每月2-5次 |
| 每笔利润 | 小(0.5-2%) | 中(3-10%) | 大(10-30%+) |
| 主要时间框架 | 日内(1分钟至15分钟) | 日线 | 周线 |
| 分析重点 | 盘口阅读,Level II | 图表形态,趋势 | 基本面+技术面 |
波段交易对于有全职工作的交易者来说是理想的,因为分析是在市场时间之外完成的,订单在开盘前下达,仓位基本不需要日内监控。
Landry的方法论建立在两个经验观察之上:
观察1:趋势持续。 处于趋势中的市场倾向于继续趋势。处于强势上涨趋势中的股票继续上涨的可能性高于反转。这不是推测,而是统计数据——动量是金融市场中记录最充分的现象之一。
观察2:趋势不是直线移动的。 即使是最强的趋势也会经历暂时回调,因为短期交易者获利了结,市场暂停整理收益。这些回调为波段交易者创造了最佳入场点。
这两个观察的结合产生了核心策略:识别趋势股票,等待回调,在趋势恢复时入场,在趋势显示结束迹象时出场。
波段交易者的优势来自:
Landry喜欢简单的视觉评估而不是复杂指标:
上涨趋势特征:
下降趋势特征:
横盘(不交易):
Landry使用三条均线作为主要趋势过滤器:
做多趋势确认: 10 EMA > 20 EMA > 50 SMA,且都在上升。这意味着短期、中期和长期动量都向上对齐。这是做多波段交易的理想环境。
做空趋势确认: 10 EMA < 20 EMA < 50 SMA,且都在下降。所有时间框架的动量都向下对齐。
Landry使用平均方向指数(ADX)作为次要确认:
ADX测量趋势强度,不管方向。ADX上升意味着趋势(无论是上涨还是下跌)在加强。ADX下降意味着趋势在减弱,不管价格是上涨还是下跌。
上涨趋势中的回调是暂时下跌:
Landry的回调入场要求以下全部:
Landry的理想回调具有以下特征:
蝴蝶结是Landry的标志性形态——一种均线交叉形态,标志着从回调到趋势恢复的转换。它的名字来源于三条均线收敛然后发散时的视觉外观,类似于蝴蝶结。
看涨蝴蝶结:
收敛阶段。 在回调期间,10 EMA、20 EMA和50 SMA收敛——回调将短期均线拉向长期均线,它们聚在一起。
交叉。 三条均线在一根窄幅K线内交叉,最好在1-2天内。10 EMA交叉至20 EMA下方(这是回调正在进行)。
发散阶段。 随着趋势恢复,10 EMA交叉回20 EMA上方,两者都开始从50 SMA向上发散。三条均线开始展开,恢复正确的趋势排列。
入场: 当10 EMA交叉回20 EMA上方且价格收于两者之上时买入。或者,在完成蝴蝶结的K线高点突破时买入。
止损: 在收敛区域低点(回调最低点)下方。
做空的镜像:
并非所有蝴蝶结都相同。Landry建议过滤质量:
2/20 EMA突破是Landry最简单和最有效的形态之一。它识别已回调至20日均线且正在恢复趋势的股票。
形态要求:
2/20 EMA突破有效因为:
虽然Landry的主要方法是回调入场,但他承认一些最强势的走势以动量突破开始——价格以强劲成交量飙升至新高,没有可用的回调入场。
动量入场适用于:
Landry强调突破K线本身是不够的。后续日——突破后的第二天——至关重要:
Landry按上下文和重要性对跳空进行分类:
突破跳空: 发生在新趋势开始时,通常从整理形态中。特点是非常高的成交量。这些跳空通常不被回补,代表最强的跳空信号。
持续跳空(测量跳空): 发生在强势趋势中途。确认趋势强度,可用于估计剩余趋势潜力(从起点到跳空测量趋势,投影相同距离)。
衰竭跳空: 发生在趋势末期,当最后买家(上涨趋势中)或最后卖家(下降趋势中)做出最后绝望的努力时。常伴有高潮成交量。这些跳空通常会迅速被回补。
普通跳空: 在交易区间内随机发生。没有特别意义。通常在几天内被回补。
跳空并持有(持续):
跳空回补(反转):
跳空回调:
并非所有跳空都可交易。Landry建议过滤:
Landry强调个股选择次于板块选择。研究一致表明,股票价格运动的很大一部分可归因于其板块,而非公司特定因素:
这意味着在弱势板块中买最好的股票,远不如在强势板块中买一般的股票。板块分析不是可选的;它是选股的基础。
自上而下方法:
评估大盘。 它是上涨、下跌还是横盘?如果下跌或横盘,减少敞口或转向现金。没有板块选择能克服熊市。
按相对强度对板块排名。 比较过去1、3和6个月的板块表现。专注于在所有时间段排名在前四分位的板块。避免在后四分位的板块。
在强势板块中找强势股票。 在选定的板块内,对个股应用回调入场标准(趋势确认、回调至均线、形态K线)。
板块在经济周期中以某种可预测的模式轮动:
理解经济在周期中的位置有助于预测哪些板块将领先和哪些将落后。这不是时机工具而是偏向工具——它告诉你把注意力集中在哪里。
Landry认为资金管理是交易中最重要的方面:
"我知道资金管理糟糕的交易者,虽然形态识别能力平庸,却能持续赚钱。我也见过分析能力出色却因资金管理糟糕而爆仓的交易者。"
Landry的仓位计算方法简单直接:
示例:
除了单个仓位计算,Landry设定组合级风险限制:
在任何交易入场前,计算风险/回报比率:
Landry反复回到耐心主题。波段交易者最大的优势是等待的能力——坐在现金中,什么都不做,直到市场以一种银盘呈现的高概率形态出现。这也是交易者最大的心理挑战。
Landry估计理想的波段交易者有30-50%的时间处于现金中。这对大多数交易者来说是错误的,他们把活动等同于生产力。但数学很清楚:如果你一年做100笔交易,胜率40%,风险/回报2:1,你是盈利的。如果你通过强迫交易一年做200笔交易,你的胜率降至30%,你就会亏损——尽管"活跃"了两倍。
在放置任何交易前,Landry建议这个 mental 检查清单:
如果任何答案是"否"或"我不确定",不要交易。
每笔交易以止损开始。Landry的止损放置规则:
止损应放置在如果达到则交易论点无效的水平。它永远不应该是任意的(例如,"我用5%止损")——它必须基于图表结构。
随着交易朝有利方向移动,止损被移动以保护利润:
Landry使用目标方法的组合:
Landry建议分批了结盈利交易:
function assessTrend(bars):
ema10 = calculateEMA(bars.close, 10)
ema20 = calculateEMA(bars.close, 20)
sma50 = calculateSMA(bars.close, 50)
adx = calculateADX(bars, 14)
current_price = bars[-1].close
latest_ema10 = ema10[-1]
latest_ema20 = ema20[-1]
latest_sma50 = sma50[-1]
// 检查均线排列
if latest_ema10 > latest_ema20 > latest_sma50:
ma_alignment = "BULLISH"
elif latest_ema10 < latest_ema20 < latest_sma50:
ma_alignment = "BEARISH"
else:
ma_alignment = "MIXED"
// 检查均线斜率
ema20_slope = (ema20[-1] - ema20[-5]) / ema20[-5]
sma50_slope = (sma50[-1] - sma50[-5]) / sma50[-5]
if ema20_slope > 0 and sma50_slope > 0:
slope_direction = "UP"
elif ema20_slope < 0 and sma50_slope < 0:
slope_direction = "DOWN"
else:
slope_direction = "FLAT"
// ADX检查
trend_strength = "STRONG" if adx[-1] > 25 else
"MODERATE" if adx[-1] > 20 else "WEAK"
// 综合
if ma_alignment == "BULLISH" and slope_direction == "UP":
trend = UPTREND
elif ma_alignment == "BEARISH" and slope_direction == "DOWN":
trend = DOWNTREND
else:
trend = NO_TREND
return TrendAssessment(trend, trend_strength, ma_alignment)
function detectPullbackSetup(bars, trend):
if trend.direction != UPTREND:
return None
ema20 = calculateEMA(bars.close, 20)
current_bar = bars[-1]
// 检查价格是否已回调至20 EMA
distance_to_ema20 = (current_bar.low - ema20[-1]) / ema20[-1]
if distance_to_ema20 > 0.02: // 仍在20 EMA上方太远
return None
if distance_to_ema20 < -0.05: // 低于太多——回调可能太深
return None
// 检查回调性质:成交量下降
recent_up_bars = [b for b in bars[-10:] if b.close > b.open]
recent_down_bars = [b for b in bars[-10:] if b.close <= b.open]
pullback_volume = average([b.volume for b in recent_down_bars])
trend_volume = average([b.volume for b in recent_up_bars])
if pullback_volume > trend_volume:
return None // 卖盘与买盘一样强——不是健康回调
// 检查形态K线(窄幅,接近20 EMA)
avg_range = average(bars[-20:].range)
if current_bar.range < avg_range * 0.75:
setup_quality = "HIGH" // 窄幅 = 整理完成
else:
setup_quality = "MODERATE"
// 定义入场、止损和目标
entry = current_bar.high + 0.01 // 在形态K线高点上方买入止损
stop = min(bars[-5:].low) - 0.01 // 回调低点下方
risk = entry - stop
target1 = entry + risk * 2 // 2:1 R:R
target2 = entry + risk * 3 // 3:1 R:R
if risk / entry > 0.05: // 风险 > 入场价的5%——太宽
return None
return PullbackSetup(
entry=entry, stop=stop,
target1=target1, target2=target2,
risk_reward=2.0,
quality=setup_quality
)
function detectBowTie(bars):
ema10 = calculateEMA(bars.close, 10)
ema20 = calculateEMA(bars.close, 20)
sma50 = calculateSMA(bars.close, 50)
// 寻找收敛然后发散
for i in range(len(bars) - 10, len(bars) - 3):
// 检查收敛:三条均线在紧凑区间内
spread = max(ema10[i], ema20[i], sma50[i]) - min(ema10[i], ema20[i], sma50[i])
avg_price = bars[i].close
relative_spread = spread / avg_price
if relative_spread < 0.015: // 均线在彼此的1.5%以内
// 检查之前的看跌交叉(10 EMA跌破20 EMA)
had_bearish_cross = False
for j in range(i-5, i+1):
if ema10[j] < ema20[j]:
had_bearish_cross = True
// 检查随后的看涨再交叉
has_bullish_recross = False
for j in range(i, min(i+5, len(bars))):
if ema10[j] > ema20[j] and had_bearish_cross:
has_bullish_recross = True
if had_bearish_cross and has_bullish_recross:
// 蝴蝶结确认
convergence_low = min(bars[i-2:i+3].low)
entry = bars[-1].high + 0.01
stop = convergence_low - 0.01
return BowTieSignal(
type="BULLISH_BOW_TIE",
convergence_date=bars[i].date,
entry=entry,
stop=stop,
risk=entry - stop
)
return None
function calculatePositionSize(account_equity, risk_percent, entry, stop):
max_risk_dollars = account_equity * risk_percent // 例如,100,000 * 0.01 = 1,000
risk_per_share = abs(entry - stop)
if risk_per_share == 0:
return 0 // 无效形态
shares = floor(max_risk_dollars / risk_per_share)
position_value = shares * entry
// 检查仓位规模限制
max_position_pct = 0.20 // 单仓位最多20%资本
if position_value > account_equity * max_position_pct:
shares = floor(account_equity * max_position_pct / entry)
return PositionSize(
shares=shares,
position_value=shares * entry,
risk_dollars=shares * risk_per_share,
risk_percent_of_equity=(shares * risk_per_share) / account_equity
)
"最好的交易是来找你的。永远不要去寻找交易。如果你眯着眼睛看图表才能看到形态,它就不在那里。"
"波段交易不是关于正确。而是关于管理风险。如果你正确管理风险,40%的胜率就绰绰有余。"
"趋势是你的朋友直到最后。大多数交易者亏损是因为他们试图摸顶和抄底,而不是顺着明显的趋势方向交易。"
"波段交易者最大的优势是能够无所事事的能力。市场不需要你每天参与。"
"仓位计算不性感,但它决定了交易者生存与否的差异。你可能有世界上最好的入场,但如果仓位计算错误,仍然会爆仓。"
"我宁愿错过交易也不愿强迫交易。错过的交易不会让你付出代价。强迫的交易会让你付出金钱。"
"上涨趋势中的回调不是卖出的理由。这是买入的理由——只要你等待回调完成。"
"板块分析不是可选的。你不会只因为你的船造得好就驶入飓风。不要因为图表看起来好就在弱势板块中买股票。"
"止损不是你的敌人。它是你的保险单。你进入的每笔没有止损的交易都是等待发生的事故。"
"大多数交易者在入场上花90%的时间,在出场上花10%。应该反过来。入场的让你参与游戏。出场决定你输赢。"
"如果你持续亏损,问题不是市场。问题是你自己。要么你的方法论有缺陷,要么你的执行不守纪律,要么你的风险管理不足。修复一个,其他的往往会跟着。"
本规范系统化了Dave Landry的波段交易方法论。其核心理念优雅地简洁:识别趋势股票,耐心等待回调至均线支撑,在趋势恢复时以紧密风险和有利回报潜力入场,并用移动止损管理交易。蝴蝶结形态和2/20 EMA突破提供具体的、可重复的入场触发。板块分析确保个股选择得到更广泛市场力量的支持。资金管理——仓位计算、风险限制和组合热度——确保在不可避免的连续亏损中生存。而最重要的是,等待形态而不是强迫交易的纪律,是将盈利波段交易者与大多数失败者区分开来的优势。