第三章 趋势跟踪策略详解:双均线、海龟、布林带与唐奇安
各位同学,欢迎来到实战课第三讲。今天咱们聊聊趋势跟踪——这可以说是CTA策略里最经典、最朴素,但也最经得起时间考验的一类方法。
我个人习惯把趋势跟踪比作「顺风车」。你不需要预测风从哪来,只需要在风起时上车,风停时下车。听起来简单,对吧?但真正做好的人不多。为什么?因为人性总想抄底逃顶,而趋势跟踪恰恰是反人性的。
好,咱们直接进入正题。今天要拆解四个经典策略:双均线、海龟交易法则、布林带突破、唐奇安通道。我会把每个策略的核心逻辑、代码实现、以及我踩过的坑都讲清楚。
核心观点:趋势跟踪策略的核心不在于「预测」,而在于「确认」和「跟随」。你赚的是趋势延续的钱,不是反转的钱。
3.1 双均线策略:最朴素的趋势识别器
双均线策略,说白了就是两条移动平均线的交叉。一条快线(短期均线),一条慢线(长期均线)。快线上穿慢线做多,下穿做空。
嗯,这里要注意:参数选择很关键。我见过有人用5日和20日,也有人用10日和60日。没有标准答案,取决于你的交易周期。
我在项目中遇到过一个问题:在震荡行情里,双均线会被反复打脸。快线刚上穿慢线,价格又掉头向下,来回止损。后来我加了一个「过滤条件」——只有价格突破某个关键位置才入场,效果好了不少。
# 双均线策略核心代码
def dual_ma_strategy(df, fast=5, slow=20):
df['ma_fast'] = df['close'].rolling(fast).mean()
df['ma_slow'] = df['close'].rolling(slow).mean()
# 生成信号
df['signal'] = 0
df.loc[df['ma_fast'] > df['ma_slow'], 'signal'] = 1
df.loc[df['ma_fast'] < df['ma_slow'], 'signal'] = -1
# 取差分得到交易信号
df['position'] = df['signal'].diff()
return df
避坑指南:我曾经用双均线做螺纹钢的15分钟线,参数设得太敏感,一天交易了20多次,手续费吃掉了一半利润。后来把参数放大到30/120,交易频率降下来了,收益反而更稳。
3.2 海龟交易法则:经典中的经典
海龟交易法则,这名字听着就霸气。它源自1983年理查德·丹尼斯的一个实验——他训练了一批「海龟」交易员,用一套系统化的方法做趋势跟踪,结果大获成功。
核心逻辑其实不复杂:用唐奇安通道的突破作为入场信号,然后分批加仓,严格止损。
你想想看,为什么海龟法则能成功?因为它解决了两个核心问题:什么时候入场和什么时候出场。而且它用「分批建仓」的方式,既不错过趋势,又控制了风险。
| 要素 | 具体规则 |
|---|---|
| 入场 | 价格突破20日高点做多,突破20日低点做空 |
| 加仓 | 每突破0.5个ATR加仓一次,最多加4次 |
| 止损 | 跌破10日低点(或2个ATR)止损 |
| 仓位 | 根据ATR计算头寸规模,控制风险 |
我个人习惯用ATR(平均真实波幅)来动态调整仓位。市场波动大的时候少做,波动小的时候多做。说白了就是「顺势而为,逆势加仓」——不对,应该是「顺势加仓」。
注意:海龟法则在单边趋势行情里表现极好,但在震荡市里会连续亏损。我建议你搭配一个「趋势过滤器」——比如用200日均线判断大方向,只做顺势突破。
3.3 布林带突破策略:波动率驱动的交易
布林带,大家应该都熟悉。它由三条线组成:中轨(均线)、上轨(中轨+2倍标准差)、下轨(中轨-2倍标准差)。
传统的用法是:价格触及上轨卖出,触及下轨买入——这是做回归。但咱们做趋势跟踪,恰恰相反:价格突破上轨做多,突破下轨做空。
为什么会这样?因为布林带的扩张本身就意味着波动率在放大,趋势可能正在形成。我记得有一次做原油,布林带突然张口,价格突破上轨,我果断做多,三天赚了8%。
# 布林带突破策略核心代码
def bollinger_breakout(df, window=20, num_std=2):
df['mid'] = df['close'].rolling(window).mean()
df['std'] = df['close'].rolling(window).std()
df['upper'] = df['mid'] + num_std * df['std']
df['lower'] = df['mid'] - num_std * df['std']
# 突破信号
df['signal'] = 0
df.loc[df['close'] > df['upper'], 'signal'] = 1
df.loc[df['close'] < df['lower'], 'signal'] = -1
return df
实战技巧:布林带的参数可以动态调整。市场波动大的时候,把标准差倍数放大到2.5或3,减少假突破。波动小的时候,用1.5倍,捕捉早期趋势。
3.4 唐奇安通道策略:最纯粹的突破交易
唐奇安通道,其实就是N日最高价和N日最低价构成的通道。它比布林带更简单,没有标准差的计算,就是纯价格突破。
我最早接触唐奇安通道是在做股指期货的时候。当时用20日通道,突破上轨做多,跌破下轨做空。效果还不错,但有一个问题:假突破太多。
后来我加了一个「确认机制」——价格突破后,必须收盘价也在通道外,才算有效信号。这一下子过滤掉了不少噪音。
说白了,唐奇安通道和布林带突破的核心区别在于:唐奇安看的是绝对价格高低点,布林带看的是相对价格位置。两者各有优劣,我建议你根据品种特性来选择。
我的经验:对于趋势性强的品种(如原油、铜),唐奇安通道效果更好。对于震荡性强的品种(如玉米、白糖),布林带突破更合适。没有最好的策略,只有最合适的策略。
3.5 四个策略的对比与选择
好了,四个策略都讲完了。咱们来做个对比,方便你选择。
| 策略 | 核心逻辑 | 优点 | 缺点 | 适合品种 |
|---|---|---|---|---|
| 双均线 | 快慢线交叉 | 简单直观,参数少 | 震荡市表现差 | 趋势性强的品种 |
| 海龟法则 | 通道突破+分批建仓 | 系统完整,风控好 | 参数多,回撤大 | 大趋势品种 |
| 布林带突破 | 波动率突破 | 适应市场波动 | 假突破较多 | 震荡转趋势 |
| 唐奇安通道 | 价格高低点突破 | 纯粹,无参数干扰 | 假突破多 | 强趋势品种 |
我个人建议:刚开始做趋势跟踪,先从双均线或唐奇安通道入手。这两个策略参数少,逻辑清晰,容易理解。等熟悉了趋势跟踪的节奏,再尝试海龟法则和布林带突破。
记住一句话:趋势跟踪不是预测,而是应对。你不需要知道价格会涨到哪,只需要知道现在该不该上车。
好,这一讲就到这里。下一讲咱们聊聊策略组合与权重分配——怎么把今天学的四个策略组合起来,做出更稳健的收益曲线。