移动平均线使用技巧(详解)

发布时间:2021-08-22 09:18:15


  刨根问底移动平均线(一)

  移动平均线指标可以说是常用的技术指标中最简单的,无论是股票还是期货,几乎所有的行情软件中都默认给K线主图叠加了移动平均线指标,更确切的说应该是移动平均线簇,有好几条均线构成的一个复杂系统。

 

上证指数日K线图表

 

  如果对均线系统不熟悉,乍一看均线簇感觉乱七八糟的样子。不过要理解好均线,先要搞清楚为什么要有均线,均线是怎么来的。尤其是对于程序化交易或者有志于想程序化方向发展的朋友们来说,搞清楚各种技术指标的算法是非常重要的。毕竟股市技术分析发展已经有近百年的历史了,大多数时候,我们并不需要去重新发明轮子,把现有的指数分析方法和指标先搞清楚,如果真的不够用了,再去搞金融创新。当然,对于机器学习和人工智能做交易,则是另一回事,我们暂且不深究。言归正传,继续说均线。

  最常用的移动平均线系统是简单移动平均线MA,所谓简单就是它的算法非常简单,只是把参数范围内的价格进行算术平均即可。具体的公式是这样的:

  N日移动平均线=N日收市价之和/N

  对于很多喜欢刨根问底的初学者来说,这个公式可能让人很困惑,主要集中在以下两点:

  为什么用收盘价,却把最高价最低价和开盘价都忽略掉

  一个简单的算数平均有啥用

  市面上有大量讲解均线的文章和视频,但几乎没有一个能把这两个点讲清楚的,因为看似简单的两个问题,实际上背后隐藏着的是基本的数学原理。

  先说收盘价这个事,为什么要用收盘价,而不用最高最低价?主要原因有三点:

  固定周期内取收盘价是一种数据采样方式。对于连续交易、不停报价的市场行情,我们不可能对所有的价格信号都进行处理,因此需要选取有代表性的数据。

  收盘价的时间是固定的。任何一个周期的收盘价就是最后一个价格,相邻的两个收盘价之间也是固定的时间跨度。而最高价、最低价这类价格的时间无法确定。

  最重要的一点,收盘价是最新价。对于未收盘的市场行情,收盘价就是当前的价格,因此取收盘价意味着选取最新的价格,这也是为什么不选择开盘价的原因。

  收盘价的问题解释清楚了,再看平均值问题。将N个采样点的数据加起来做平均值,这个算法很简单,其中最主要的目的就是为了滤波。比如某一天的价格有异常波动,那么这个异常波动将会在N个数值做平均的过程中被平均掉,而整个曲线看起来也不那么曲折。

  当我们对价格曲线做参数为N的快速傅立叶变换时,如果只取傅里叶变换结果第一项的实数部分,那么移动快速傅里叶变换的曲线就蜕变成了简单的移动平均线。可见移动平均线实际上可以说是对价格的一种最简单的滤波方式。

  对于每天变化无常的价格曲线,一般可以理解为是由高频信号和低频信号两部分构成的,就像我们常见的声音,有高音也有低音。高频信号由于频率较高,因此变化比较快,不稳定,低频信号则正好相反。因此,均线常常用来过滤掉市场中的高频信号,而保留了频率比较低、比较稳定的低频信号。也正因为低频信号比较稳定,也导致了它的一个致命弱点——滞后性。滞后性和稳定性是相伴相生的,稳定自然就滞后。因此,在使用移动平均线的时候,也有很多方法去减弱它的滞后性,这些内容也会在后面逐步讲解。

  要想用好均线,弄清楚均线的原理和属性是重要的第一步。然而,目前为止,讲解的还都是简单移动平均线。在实际的交易软件当中,还有SMA和EMA两种很常见的移动平均线,但它们计算方法与简单移动平均线有所不同,且实际应用场合也不一样。不同的均线还经常会被嵌入到其他的不同的指标公式当中,比如,KDJ指标就应用了SMA,MACD指标就应用了EMA。

  刨根问底移动平均线(二)

  在上一篇文章中,我们详细讲解了简单移动平均线指标的计算方法,同时也引出了SMA和EMA两种常用的移动平均线。本文将详细给大家讲解这两种移动平均线。

 

深证成指的SMA均线簇

 

  SMA均线和简单移动平均线MA是有区别的,简单移动平均线MA在进行平均的时候,是不同的价格数据的算术平均,也就是说所有的价格数据都有着相同的权重。具体计算方法可以参考前文:

  法力无边的移动平均线——股市杀手锏「1」

  SMA在计算时,采取了更加高级的算法,它可以通过参数设置,给予当前价格数据更大的权重,而且之前的均值数据是通过逐步加权平均的方式渐渐消除影响的。说起来可能比较抽象和不好理解,还是从具体的计算公式开始解释:

  公式:SMA(X,N,M)

  作用:求X的N日移动平均,M为权重。

  算法:若Y=SMA(X,N,M)则Y=(M*X+(N-M)*Y')/N,其中Y'表示上一周期Y值,且N必须大于M。

  这就是SMA的计算方法,确实要比简单移动平均线更加复杂一些,因为它涉及到了上一个周期的计算数值。

  这个算法对于用Python、C++等高级语言进行实现时,就要多一个记录上一周期数据的动作,当然也可以通过递归来实现。但递归的开销比起记录一条数据要大得多,而且程序也会更加复杂难懂。

  一些朋友可能会想到,对于第一个周期的SMA数据计算怎么办,没有上一个周期的数据呀!通过对公式的分析,我们可以发现,第一个周期的初始数据影响其实没多大。它的影响最多能够持续2*N个周期。在经过最多2*N个周期之后,第一个周期的初始数据对后期的影响将彻底通过移动平均的方式得以消除。但在实际应用过程中,为了保持数据的一致性和流畅性,第一个周期的数据通常取价格序列前N个周期的平均值。具体原因也许不必多解释,大家一看便明。

  对比SMA和简单移动平均线MA的计算公式,得知SMA最大的特点是除了周期数量N,还多了一个参数M。这个M是权重数据,当前价格和上一个周期计算结果的总权重是N,其中当前价格占比为M。增加了权重参数,我们就可以根据实际情况,对当前的周期赋予不同的权重比例,以调节均线的响应速度。这一点,简单移动平均线MA是没有办法实现的。

  对于前期数值影响的缓慢消除,无论是在股票,还是期货市场上,都是有其金融和历史意义的。比如,央行降息是个比较大的时间,它对大盘的影响往往是冲击性的,而这个脉冲信号作用到股票市场,也是一点一点减弱的。

  历史事件对当下的影响,往往不是一下子就结束的,因为人是有记忆的,过去的重要事件对现在甚至未来的影响往往会持续一段时间。而且,随着人们的渐渐遗忘,历史的作用与影响是逐步一点一点减弱的,而非立刻马上消除。

  当前事件对未来的影响,也不可能是一下子突然全部产生作用的,而是根据其强度不同,效用会一点一点的释放。这个过程,就像一个人生病之后,即便用再猛烈的药,一般也不会马上产生作用,而是随着药用的逐步释放,身体渐渐康复。而药物的副作用影响,也会持续一段时间,慢慢减弱。

  要论计算公式在实际市场中的金融意义,SMA也要优于简单移动平均线MA。除了SMA之外,还有一个常用的移动平均线指标EMA,有关EMA的内容,我们将在后面的文章中逐步讲解。

  刨根问底移动平均线(三)

  今天继续讲解法力无边的移动平均线。前面已经有两篇文章讲解简单移动平均线MA和加权移动平均线SMA的具体算法,现在该轮到EMA的讲解了。EMA是Exponent Moving Average的缩写,也就是指数移动平均线。为啥叫指数呢?指数又体现在哪里?要先从EMA的公式一点点的往外扒。

 

上证指数的EMA(20)曲线

 

  毕竟是指数,计算肯定要比算术复杂。关于公式,提前预警,前方高能,请准备好纸:

  纸准备好了吗?如果方便,顺便也准备一支笔,自己跟着推演一下。

  先看EMA最终算法,它的计算公式是酱婶儿的:

EMA计算公式

  其中:

  Yk是第k天的EMA计算数值,对应的Yk-1就是前一天的EMA数值

  Xk是第k天的股票价格数值

  N为EMA的计算参数

  公式形式看起来似乎有点怪,为什么Xk前面要乘以2,分母N+1是咋回事。这个问题要进行下一步的推导和变形,才能很好的给出解释。有时候公式就像变形金刚,变形之后才能看出来他到底是个啥东西。

  将EMA计算公式简单进行的变形:

1

  引入一个变形齿轮!如果令

2

  则可以得到:

3

  对于给定一个任意的Y0(Y0通常取再往前N个周期股票收盘价的简单移动平均线MA数值),我们可以轻松地计算出来EMA的第一个数值Y1:

4

  有了EMA的第一个数值,第二个Y2就更容易了:

5

  进一步计算可以得到EMA的第三个数值Y3:

6

  根据数学归纳法,我们可以将Y3推广到Yk,得到更一般情形下的计算公式形式:

7

  根据m的形式,我们可以很容易的得到0<m<1的结论。当k足够大时,公式中Y0项的系数m^k是趋向于0的。因此,可以把初始值Y0的影响忽略。

  从EMA的最终展开公式中我们可以看到:

8

  每往前面一个周期的价格影响力是以m为底数的指数进行衰减。这也就是EMA为什么被称作指数移动平均的原因。

  对于学文科的同学,如果对上面的公式推导看了头大,可以直接忽略。但关键是要记住一点,EMA之所以叫指数移动平均线,是因为每往前面一个周期,价格对均线数值的影响力是呈指数级数逐步衰减的。

  EMA的公式如果用C++、Python等高级语言进行实现,和SMA的代码应该是差不多的。做Moving Window的时候,多记录一下上个周期的计算结果就即可。递归的不需要,太复杂,效率又低。这是Python结合pandas库写的EMA计算代码:

EMA计算代码

  无论是SMA还是EMA,其核心思想就是将历史的影响进行量化处理。经过前面的公式推导,我们看到EMA是让事件的影响力随时间指数衰减。

9

  我个人觉得认为金融市场的历史事件影响力呈指数衰减,应该是更加合理的一种模型。因为金融市场是由人构成的,是一部分人的集合。

  指数衰减是以人为本的客观规律,大名鼎鼎的艾宾浩斯记忆曲线的形状和底数小于1的指数曲线比较接近。

  无论是股票还是期货市场,短期的事件就像人要记忆的一件事情一样,随着时间的推移,是渐渐被遗忘的。比如,我半年前出去旅游了,在旅途归来那几天,对于路途中的景色和事件记得是最清楚的。但过两天,我可能想不起来我在旅行中所住宾馆的房间号码了;又过几天,我可能连住在哪个宾馆都忘了;过了半年,我可能只记得旅途中比较精彩的片段;两年后,我可能只记得两年前我去某个地方旅游了,而具体去了几天,怎么去的这些细节基本都已经遗忘。但只要时间不是足够长,我还不会完全遗忘,这就是典型的指数衰减特征。不过时间如果足够长,有些事情可能是彻底想不起来的,比如我已经完全想不起来小学三年级上学期语文第六课讲的是啥了。

  简单移动平均线MA,加权移动平均线SMA和指数移动平均线EMA的基本内容都已经讲完了,下面该详细的讲解这些指标的用处了,等到后面的文章中再慢慢讲解。

  刨根问底移动平均线(四)

  前面的几篇文章讲了简单移动平均线MA、加权移动平均线SMA和指数移动平均线EMA的具体算法,接下来该讲讲移动平均线的用法了。

  要说移动平均线的使用方法,总结最全的应该是葛南维均线八大法则,也有人称作葛兰碧移动均线八大准则,whatever,叫啥都行,反正你知道有这么个东西就行了。

 

移动平均线八大法则

 

  移动平均线八大准则把均线的使用方法总结归纳为以下8个要点:

  移动平均线从下降逐渐走平并开始向上方拐头,而股价从移动平均线下方向上方突破,为买进信号。对应图中买点1

  股价位于移动平均线之上运行,回档时未跌破移动平均线后又再度上升时为买进时机。对应图中买点2

  股价位于移动平均线之上运行,回档时跌破移动平均线,但长期移动平均线继续呈上升趋势,此时为买进时机。对应图中买点3

  股价位于移动平均线以下运行,突然暴跌,距离移动平均线太远,极有可能向移动平均线靠近(物极必反,下跌反弹),此时为买进时机。对应图中买点4

  股价位于移动平均线之上运行,连续数日大涨,离移动平均线愈来愈远,说明近期内购买股票者获利丰厚,随时都会产生获利回吐的卖压,应暂时卖出持股。对应图中卖点4

  移动平均线从上升逐渐走平,而股价从移动平均线上方向下跌破移动平均线时说明卖压渐重,应卖出所持股票。对应图中卖点1

  股价位于移动平均线下方运行,反弹时未突破移动平均线,且移动平均线跌势减缓,趋于水平后又出现下跌趋势,此时为卖出时机。对应图中卖点2

  股价反弹后在移动平均线上方徘徊,而移动平均线却继续下跌,宜卖出所持股票。对应图中卖点3

  这8个要点与图中的8个位置点相对应。该准则也是大多数技术派在使用移动平均线时的核心思想,把这8个准则搞清楚、理解透彻之后,对于均线的使用应该就基本过关了。

  准则中主要包含了股票价格从底部开始上涨的过程、上涨趋势的发展过程、短期涨幅过大的处理、上涨过程中回调的处理、上涨趋势向下跌趋势转化的过程、下跌趋势的发展过程、下跌过快超跌反弹的处理和下跌趋势彻底形成向前发展等几个方面,可以说是比较全面的。无论是股票、还是期货,甚至外汇和期权等其他金融标的物,其价格趋势运行方式也基本是这么个规律。

  说在这里,突然想到了一个话题——庄家。请别和我讲什么股市有庄家之类。所谓的庄家坐庄,其目的也是操作股票价格,而且要让价格有大幅度的变化。只要价格产生大幅度的变化,那势必形成价格趋势,你看看价格趋势运行是不是还是逃不出上面所说的几个方面?所谓的庄家也控制不了规律。作为一个职业投资者,奉劝各位还是早日放弃分析庄家的思路,时代变了,跟随趋势就好。

  但是,和大多数技术分析讲解思路一样,移动平均线八大准则也是着重讲解技术有效的一面,而对于均线失效的时候,从不提及。如何处理好技术失效,才是技术使用成败的关键。

  这就好像卖筷子的人,他会大力和顾客说筷子用来吃面条多么多么的好用,吃饭夹菜又如何如何的灵活,但他绝对不会和你说筷子用来喝汤根本就不行。

  讲解移动平均线的人也一样,对于一项技术的讲解,如果仅仅讲解技术有效的一面,而不把其弊端讲清楚,简直就和没讲没啥区别。那么,移动平均线的弊端又在哪里呢?它又会在什么时候失效呢?为了回答这个问题,我们要先理解均线的性质。前面的几篇文章中,已经把均线的计算方法和特点讲的很清楚了,这里也就不再赘述。直接给出最核心的一句话:

  移动平均线实际上可以说是对价格的一种最简单的滤波方式。

  滤波方式,啥意思?也正因为这一点,透漏了均线的长处和不足。均线的失效和应对,我们在下篇文章中,继续讲解。

  刨根问底移动平均线(五)

  上一篇文章讲解了移动平均线八大准则,准则主要是从移动平均线有效的一面讲解。但移动平均线和其他技术指标一样,也有失效的时候。

  简单移动平均线MA也是对价格序列进行快速傅里叶变换结果第一项的实数部分,也是将价格进行傅立叶级数展开的第一项。这就是说当忽略掉正弦部分的影响,离散数据的傅立叶分析就退化成了简单移动平均线。因此,移动平均线实际上是对价格的一种最简单的滤波方式。

  由于过分的过滤掉了高频信号,因此移动平均线对于高频信号是没有反应的,这也就导致了均线的滞后性,从而也带来了均线的稳定性。滞后性和稳定性是一对相伴相生的孪生兄弟。正因为这两点,使得移动平均线注定是一种趋势行情的指标,也就是说当行情走出一定方向之后,移动平均线的信号才会出现,对于时间跨度足够长的趋势,移动平均线能够很好的将其反映出来,而且信号稳定不变。比如下面这样的行情:

移动平均线能够很好的反应市场的趋势方向

  移动平均线能够很好的反应市场的趋势方向

下跌趋势当中的移动平均线

  下跌趋势当中的移动平均线

  上面的两个案例我们可以看出,移动平均线很好的过滤掉了市场价格的高频信号。与此同时,移动平均线失效,也基本来自于它的滞后性和稳定性。我们来看这样一段行情:

均线失效案例

  均线失效案例

  价格在均线附近来回上下穿越,移动平均线八大准则中没有哪一条能够适用这种走势。这种走势当中,高低频信号的影响力是差不多的,低频信号的稳定没有办法抵制高频信号的诱惑。

  综上所述,我们可以很清晰的发现,均线在有效的时候,往往都是它的斜率明显大于0或者小于0的时候,而斜率在0附近,也就是接近水平状态,也正是移动平均线失效的时刻。

  当一个周期某个参数的移动平均线走平,价格上下穿越的时候,还可以参考其他参数的移动平均线。当多个参数的移动平均线都走平,而且价格上下穿越的时候,这就是所谓的均线簇粘合状态,如下图所示:

均线簇粘合状态

  当均线簇系统出现粘合状态的时候,意味着股票或期货的价格在当前周期完全没有方向,此时移动平均线在判断趋势时,完全失效。但均线的这种状态,也从另一个层面说明了,市场在不远的将来可能要选择方向。在均线簇高度粘合的行情中做交易,那么恭喜你,您可能是下一轮趋势的建设者。但是,多数的职业交易员,更加喜欢做盘整趋势结束之后新趋势的接班人。

  既然说到了均线簇,那么接下来我们就说说均线簇的特点。所谓均线簇,就是同一周期K线图上几根参数不同的移动平均线,而这些参数相差不会太小,比如,常见的均线簇参数组(5,10,20,30,40,60)。均线簇对于方向的判定,往往是根据它的发散和粘合特点来判断。正如前文所述,当均线簇粘合时,价格又来回在均线上下穿越,这就是市场没方向。当均线簇再次发散,就是市场再次选择方向之时。

10

  当明确了均线及均线簇的规律和特点时,在进行程序化的时候,就可以直接拿来用。主观交易的很多思路,是可以直接用来做程序的,而不需要我们再去重新发明轮子。这里面,可能有朋友会问,怎么去判断均线簇粘合。其实,这个问题也很简单,可以选择一组均线簇的参数,计算出几条均线数值,然后利用统计学中的变异系数来判断其粘合程度:

变异系数计算公式

  变异系数计算公式

  其中,S为均线簇数值标准差,x为均线簇数值平均值。

  如果考虑到大盘和个股的报价数值差异很大(上证指数数值在3000左右,个股可能只有个位数或者10-20),可以对价格先取个对数,然后再计算移动平均线,以获取更加一致化计算结果。就像酱:

同花顺计算均线粘合公式

  同花顺计算均线粘合公式

  上图是用同花顺的指标编写的均线粘合判断公式代码。当然,如果用python等高级语言来编写粘合判断函数会更简单,这是用Python结合pandas函数库来计算均线簇变异系数的代码示例:

均线簇变异系数的代码

  要说均线的用法,其实主要的内容都在这里。当然,有些人会神话某些参数,尤其是5,8,13,21,34……这组斐波那契数列。但我要说的是,没有哪个参数是独秀。所有的移动平均线都是用来滤波的,只是大家节奏不同罢了。



下一篇:顾比均线的设置和使用方法(图解)

上一篇:移动平均线是什么意思