
单均线突破策略的核心逻辑
单均线突破策略是量化交易中最基础的趋势跟踪方法之一。它的核心思想非常直白:用一根移动平均线作为“多空分界线”。价格从下往上穿越均线,视为多头信号,开仓买入;价格从上往下穿越均线,视为空头信号,开仓卖出。股票和期货市场都适用,尤其在期货的连续合约上,因为可以双向交易,策略能捕捉上涨和下跌两段趋势。
均线本身是过去N根K线收盘价的平均值,常见周期有5、10、20、60等。周期越短,均线对价格变化越敏感,信号频繁但假突破多;周期越长,均线越平滑,信号少但滞后明显。量化交易中,交易者会先固定一个周期,比如20日均线,然后编写程序自动判断价格与均线的位置关系。

实现步骤拆解
第一步:获取数据并计算均线
量化交易需要历史K线数据,包含开盘价、最高价、最低价、收盘价、成交量。以股票为例,日线数据足够;期货因为杠杆高,有时用分钟线或小时线。计算均线用收盘价,公式是:MA = (C1 + C2 + ... + Cn) / n,其中C是收盘价,n是周期。程序里直接调用移动平均函数即可。
第二步:定义突破规则
要避免“价格刚好等于均线”的模糊地带,通常设定一个微小阈值。价格上穿均线超过0.1%才视为有效突破,下穿同理。期货交易中还会加入“收盘价确认”,即只有K线收盘价站稳均线才发信号,防止盘中假突破。
第三步:开仓与平仓逻辑
多头开仓:当前收盘价大于均线,且上一根收盘价小于等于均线。空头开仓:当前收盘价小于均线,且上一根收盘价大于等于均线。平仓规则有两种常见方式:一是反向信号平仓,即出现空头信号时平掉多头;二是固定止损止盈,比如亏损2%止损,盈利5%止盈。期货交易中,止损尤其关键,因为杠杆会放大亏损。
第四步:回测与参数优化
策略写好后,必须用历史数据回测。回测要覆盖不同市场环境:单边上涨、单边下跌、横盘震荡。单均线策略在趋势行情中表现好,但在震荡市中会反复止损。优化方向包括调整均线周期、增加过滤条件(如成交量放大、波动率过滤)、设置移动止损。回测指标看年化收益、最大回撤、胜率、盈亏比。
代码演示(以Python为例)
下面用简洁的代码展示单均线突破策略的核心逻辑,数据用模拟的期货收盘价序列。
import numpy as np
import pandas as pd
# 模拟50个交易日的期货收盘价
np.random.seed(42)
close = np.cumsum(np.random.randn(50)) + 100
df = pd.DataFrame({'close': close})
# 计算20日均线
df['ma20'] = df['close'].rolling(20).mean()
# 生成信号:1为多头持仓,-1为空头持仓,0为无持仓
df['signal'] = 0
df.loc[df['close'] > df['ma20'], 'signal'] = 1
df.loc[df['close'] < df['ma20'], 'signal'] = -1
# 突破点:信号从-1或0变为1做多,从1或0变为-1做空
df['position'] = df['signal'].shift(1).fillna(0)
df['trade'] = df['signal'] - df['position']
# 打印开仓信号(trade=2做多,trade=-2做空)
print(df[df['trade'] != 0][['close','ma20','trade']])
这段代码展示了均线计算和信号生成。实际交易中还需加入手续费、滑点、保证金计算,期货还要考虑合约乘数和到期换月。
股票与期货的差异处理
股票市场T+1,当天买入不能卖出,单均线突破策略在股票上只能做多,信号出现后次日开盘执行。期货市场T+0且双向交易,信号出现后可以立即按收盘价或下一根开盘价成交。期货交易中,均线周期通常比股票短,因为期货波动大,长周期均线滞后太严重。期货有夜盘,数据要拼接完整。
策略的优缺点与改进思路
单均线突破策略优点在于规则简单、执行明确、适合程序化交易。缺点是在震荡市中频繁被“打脸”,连续小亏累积起来也很可观。改进方法包括:用双均线过滤(如20日均线上穿60日均线才做多)、加入ATR波动率过滤(波动太小不做)、用收盘价确认突破、在均线附近设置缓冲区。对于期货,还可以结合基差或持仓量变化提高胜率。
量化交易不是寻找圣杯,单均线策略是理解趋势跟踪的入门砖。把它跑通、回测、调参,再逐步叠加过滤条件,才能形成稳定的交易系统。股票和期货市场各有特性,策略参数必须针对具体品种调整,切忌直接套用。