龙空技术网

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

原理DY 2216

前言:

眼前小伙伴们对“ema算法”都比较注重,我们都想要剖析一些“ema算法”的相关知识。那么小编同时在网摘上汇集了一些对于“ema算法””的相关知识,希望你们能喜欢,姐妹们快快来了解一下吧!

刨根问底技术指标(三)

今天继续讲解法力无边的移动平均线。前面已经有两篇文章讲解简单移动平均线MA和加权移动平均线SMA的具体算法,没看过的朋友可以向前翻阅相关的两篇文章:

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

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

现在该轮到EMA的讲解了。EMA是Exponent Moving Average的缩写,也就是指数移动平均线。为啥叫指数呢?指数又体现在哪里?要先从EMA的公式一点点的往外扒。

上证指数的EMA(20)曲线

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

诸君请放心,阅读本文保证不会流鼻血

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

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

其中:

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

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

N为EMA的计算参数

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

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

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

则可以得到:

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

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

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

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

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

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

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

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

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

Python用来计算EMA的函数源代码

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

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

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

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

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

未完,待续……

标签: #ema算法