顶部横幅广告
  • 微信
您当前的位置:首页 > 资讯

回测告诉你技术指标是否有用 之 双均线策略

作者:三青 时间:2023-05-10 阅读数:人阅读

 

我们身边充斥着大量讲解各种技术指标如何使用的信息,同时还会配上例子,让人有种错觉,这个指标真牛。有点统计学常识的小伙伴应当知道,样本太少,我们很难知道这个指标到底管不管用。

出于研究的目的,我决定新开一个系列——《回测告诉你技术指标是否有用》,对17个常用指标进行回测,用科学的手段告诉大家,这些技术指标是否有用。

本系列的回测框架相对简单,目的是让大家加深对各指标的理解,并判断各指标在哪些情况下可以用,本期为此系列的开篇。

研究框架如下:

使用A股和数字货币的行情数据对各指标进行回测,忽略交易成本。为了检验技术指标是否有效,我决定从三个维度进行对比:

指标择时 vs 无脑持股:技术指标自身是否有效;个股择时 vs 指数择时:个股择时与指数择时哪个更有效;A股市场 vs 数字货币市场:技术指标在不同市场的表现。

废话不多说,本期先用最简单的双均线策略作为开篇。

一、策略说明

移动平均线是最古老的技术指标之一,于1901年首次提出,可以分为简单移动平均线、加权移动平均线和指数移动平均线。

本期我们先来回测简单移动平均线(SMA),即对过去N个周期的收盘价(也可以是开盘价、成交量等)求算术平均。N取值从小到大,可以将SMA分为短期、中期和长期均线。移动平均线相当于对原始数据降噪,起到平滑曲线的作用。

SMA可以用来跟踪价格趋势,比如当5日MA处于20日MA之上时,可以说当前处于多头市场,但是N的不同,得出的判断也会有差别。

关于SMA最常见的策略就是双均线策略,即:

短期均线上穿长期均线,开多或平空;长期均线下穿短期均线,开空或平多。

二、回测说明

1. 回测要素

1.1 样本:

个股:从沪深300成分股中选择9只不同行业的公司,包括:贵州茅台、格力电器、万科A、中国平安、海天味业、隆基股份、牧原股份、中信证券和爱尔眼科。

指数:上证指数、沪深300、中证500、中证1000、创业板指

数字货币:BTC、ETH、LTC、BCH和EOS

1.2 数据:

A股:2007-01-01 至 2020-12-31 或 个股或指数上市日期 至 2020-12-31 的日K线数据;

数字货币:2018-01-01 至 2020-12-31 币安1小时K线现货数据。

1.3 参数说明:

双均线策略有2个参数,n1和n2,分别代表短期均线和长期均线,如5日均线和20日均线。

参数遍历设置:

n1和n2取值范围:range(5, 1000, 50)限定条件:n1 < n2

1.4 其他

交易方向:股票只做多,数字货币多空均可。

交易费用:忽略。

2. 计算指标与信号的代码

# ====计算技术指标 n1 = int(para[0]) n2 = int(para[1]) data[short_ma] = data[收盘价_复权].rolling(n1, min_periods=1).mean() data[long_ma] = data[收盘价_复权].rolling(n2, min_periods=1).mean() # ====计算信号 # ==判断市场方向 if is_short: data.loc[data[short_ma] > data[long_ma], signal] = 1 data.loc[data[short_ma] < data[long_ma], signal] = -1 # ==计算前一个信号 data[pre_signal] = data[signal].shift(1) # ==计算金叉死叉信号 # 买入开仓或者买入平仓(做空) data.loc[(data[signal]==1) & (data[pre_signal]!=1), buy] = 1 # 卖出平仓或者卖出开仓(做空) data.loc[(data[signal]==-1) & (data[pre_signal]!=-1), sell] = -1 else: data[signal] = np.where(data[short_ma] > data[long_ma], 1, 0) # ==计算前一个信号 data[pre_signal] = data[signal].shift(1) # ==计算金叉死叉信号 # 买入开仓或者买入平仓(做空) data.loc[(data[signal]==1) & (data[pre_signal]==0), buy] = 1 # 卖出平仓或者卖出开仓(做空) data.loc[(data[signal]==0) & (data[pre_signal]==1), sell] = 0

三、回测结果

1. 总体表现

首先,取净值前10的策略,对其净值求平均,来对比下与简单持股是否有提高。从个股来看,只有万科和中国平安能勉强跑赢简单持股,其他均不如直接持股。而指数择时效果要好很多,几乎都有提升。数字货币市场择时效果出奇的好,即使EOS在持币亏80%的情况下,靠如此简单的择时策略也能翻两倍。

表1 个股、指数和数字货币的择时表现

接下来看一下不同品种最优参数的策略评价指标。

表2 个股最优参数评价指标

表3 指数最优参数评价指标

表4 数字货币最优参数评价指标

2. 技术指标有效性评价

普适性:在股票市场,SMA对指数比个股更有效,在数字货币市场十分有效,普适性适中。

参数稳定性:SMA用在指数择时,参数比较稳定,但在个股和数字货币上参数稳定性差。

四、对策略的理解

1. 趋势跟踪策略

通过对历史交易一笔一笔的研读(对不起我的颈椎),也对双均线策略有了更深的理解。

总体来说,均线策略是典型的趋势跟踪策略。参数较小时,更加敏感,发出的交易信号更多,倾向于在趋势建立之初发出信号,因此也会发出很多的错误信号。参数较大时正好相反,对行情不够敏感,介入行情较晚,信号发出频率低。

参数大小没有好坏之分,可以适应不同的行情。另外,不同的性格也会对参数选择有一定影响。

2. 什么行情赚钱

SMA属于滞后指标,反映了过去一段时间行情的特点,因此会有很大的概率发出错误的信号。当遇到震荡行情,均线反复交叉,导致频繁的开仓平仓,均线策略会产生一系列小亏。当遇到反转行情,策略亏损的幅度会有所加大但有限,这也是该策略的优点之一。下面两个图分别展示了震荡和反转行情,策略的表现。

对于均线策略的赚钱行情就是有大趋势的时候,可以吃到很大部分的涨幅或跌幅(如果可以做空),也是主要的利润来源。聪明的小伙伴这是应该明白了,均线策略具有低胜率、高盈亏比的特点。吃到一波趋势管”三年“,之后又开始了“漫长”的震荡磨损。

3. 为什么在指数和数字货币上更有效

对于A股这种只能做多的市场,使用均线策略的一个好处是可以避开大幅下跌。但当均线策略遇到茅台这种大牛股之后,其避开下跌的这部分功能就被弱化了。

下图是茅台的历史走势图,我们发现,虽然茅台的回撤也能达到30%,但相对涨幅来说,还是微不足道。比如茅台去年3月,从大概1900回撤到1600,但是之后迎来了一波更大的上涨,指标滞后,不能完全抓住。也就是说,对于茅台这种牛股来说,更重要的是抓住涨幅而不是规避回撤。均线策略天生具有滞后性,自然跑不过持股了。

再看万科的历史走势图,其回撤幅度与涨幅差不多,因此对万科来说,抓住涨幅和规避回撤同样重要,所以均线策略对万科来说是有效的。均线对指数有效其实与万科的情况类似,没有哪个指数可以一直上涨,想想上证指数一直在3000点附近就明白了。

以上就解释了为什么个股择时很难,而指数却相对容易。

其实对个股来讲,更重要的是选股,择时可以作为辅助。选出牛股即使不择时也会收益爆炸。如果某些个股需要择时,说明它的质地一般,择时意义也不大,投资是有机会成本的。

最后,均线策略对数字货币有效原因有两个,(1) 数字货币可以多空交易;(2) 相对股市,有更高的波动性(即大涨大跌)。也就是说利润不单可以多空双吃,且出现趋势的概率还很大。

要注意的是,文中只是回测的结果,跟实盘会有很大的差距。本期的目的是让各位小伙伴对均线策略有更深的理解,而不是直接拿去实盘。据我所知,这波数字货币的牛市中,其择时策略能跑赢持币的是很少的。

本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。邮箱:dacesmiling@qq.com

标签:
微信

三青

当你还撑不起你的梦想时,就要去奋斗。如果缘分安排我们相遇,请不要让她擦肩而过。我们一起奋斗!

微信
阿里云