前言:
眼前小伙伴们对“ema算法”都比较注重,我们都想要剖析一些“ema算法”的相关知识。那么小编同时在网摘上汇集了一些对于“ema算法””的相关知识,希望你们能喜欢,姐妹们快快来了解一下吧!刨根问底技术指标(三)
今天继续讲解法力无边的移动平均线。前面已经有两篇文章讲解简单移动平均线MA和加权移动平均线SMA的具体算法,没看过的朋友可以向前翻阅相关的两篇文章:
法力无边的移动平均线——股市杀手锏「2」
法力无边的移动平均线——股市杀手锏「1」
现在该轮到EMA的讲解了。EMA是Exponent Moving Average的缩写,也就是指数移动平均线。为啥叫指数呢?指数又体现在哪里?要先从EMA的公式一点点的往外扒。
毕竟是指数,计算肯定要比算术复杂。关于公式,提前预警,前方高能,请准备好纸
纸准备好了吗?如果方便,顺便也准备一支笔,自己跟着推演一下。
先看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计算代码:
无论是SMA还是EMA,其核心思想就是将历史的影响进行量化处理。经过前面的公式推导,我们看到EMA是让事件的影响力随时间指数衰减。
我个人觉得认为金融市场的历史事件呈指数衰减,应该是更加合理的一种模型。因为金融市场是由人构成的,是一部分人的集合。
指数衰减是以人为本的客观规律,大名鼎鼎的艾宾浩斯记忆曲线的形状和底数小于1的指数曲线比较接近。
无论是股票还是期货市场,短期的事件就像人要记忆的一件事情一样,随着时间的推移,是渐渐被遗忘的。比如,我半年前出去旅游了,在旅途归来那几天,对于路途中的景色和事件记得是最清楚的。但过两天,我可能想不起来我在旅行中所住宾馆的房间号码了;又过几天,我可能连住在哪个宾馆都忘了;过了半年,我可能只记得旅途中比较精彩的片段;两年后,我可能只记得两年前我去某个地方旅游了,而具体去了几天,怎么去的这些细节基本都已经遗忘。但只要时间不是足够长,我还不会完全遗忘,这就是典型的指数衰减特征。不过时间如果足够长,有些事情可能是彻底想不起来的,比如我已经完全想不起来小学三年级上学期语文第六课讲的是啥了。
简单移动平均线MA,加权移动平均线SMA和指数移动平均线EMA的基本内容都已经讲完了,下面该详细的讲解这些指标的用处了,等到后面的文章中再慢慢讲解。
未完,待续……
标签: #ema算法