分类
从入门到精通

什麼是EMA和MA?

胡慢慢 ​

什麼是EMA和MA?

? 先看MA和EMA,首先,它们都是求平均值,这应该没疑问吧;
MA是简单算术平均,MA(C,2)=(C1 C2)/2; MA(C,3)=(C1 C2 C3)/3;不分轻重,平均算;
EMA是指数平滑平均,它真正的公式表达是:当日指数平均值=平滑系数*(当日指数值-昨日指数平均值) 昨日指数平均值;平滑系数=2/(周期单位 1);由以上公式推导开,得到:EMA(C,N)=2*C/(N 1) (N-1)/(N 1)*昨天的指数收盘平均值;

仔细看:X=EMA(C,2)=2/3*C 1/3*REF(C,1); EMA(C,3)=2/4*C 2/4*X;所以,它在计算平均值时,考虑了前一日的平均值,平滑系数是定的,它是利用今日的值与前一日的平均值的差,再考虑平滑系数,计算出来的平均值,所以也有叫异同平均的。
因此,这两个平均算法是不同的,主要是对数组中的数据的权重侧重不同。

? 大家注意,权重系数在EMA与SMA中都是用数值与周期计算出来的小数,假设有一个小数可以直接代表权重,如何办?这就有了DMA;
DMA(C,A) 中A为权重值,公式如下:X=DMA(C,A)=A*X (1-A)*X'(A小于1),可以发现,DMA与SMA原理是一至的,只是用一个小数直接代替了M/N;
而在实用中,这个小数最有价值的就是换手率=V/CAPITAL;
DMA(C,V/CAPITAL)的直接含义是用换手率作为权重系数,利用当日收盘价在均价中的比重计算均价;

通达信中 MA, EMA, SMA, DMA 解释

I天辉I 于 2018-09-10 17:01:14 发布 9909 收藏 5

1、MA(X,N), -- move average

2、EMA(X,N) -- exponent move average

算法是:若Y=EMA(X,N),
则Y=〔2*X+(N-1)*Y’〕/(N+1),
其中Y’表示上一周期的Y值。
2 是平滑系数,表示今天的权重是2.
公式含义为。今天值乘以权重2,加上历史积累值 除以 天数加1, 因为当天权重加了1.

EMA引用函数在计算机上使用递归算法很容易实现,但不容易理解。
例举分析说明EMA函数。
X是变量,每天的X值都不同,从远到近地标记,它们分别记为X1,X2,X3,….,Xn
如果N=1,则EMA(X,1)=〔2*X1+(什麼是EMA和MA? 1-1)*Y’〕/(1+1)=X1
如果N=2,则EMA(X,2)=〔2*X2+(2-1)*Y’〕/(2+1)=(2*X2+X1)/3
如果N=3,则EMA(X,3)=〔2*X3+(3-1)*Y’〕/(3+1)= (2*X3+2/3*(2*X2+*X1))什麼是EMA和MA? /4=(3*X3+2*X2+X1)/6
如果N=4,则EMA(X,4)=〔2*X4+(4-1)*Y’〕/(4+1)= (4*X4+3*X3+2*X2+X1)/10
这么神奇,找到规律了吗?
EMA(x,5) = (2*x5 + 4*y')/6 = (5*x5+4*x4+3*x3+2*x2+x1)/15;
任何时候, 分子的系数之后等于分母。 越靠近当前,系数越大。
它考虑的是当前的值要有较大的优先权,越远的值,贡献越小。

举例:
有一组数据(收盘价为):1,2,3,4,5,6,7,求其ma(c,5), EMA(c,5) 什麼是EMA和MA?
解答:对应上面数据,X1,X2,X3,X4,X5分别对应3、4、5、6、7
MA(c,5)=(3+4+5+6+7)/5=5
EMA(c,5)=(5*X5+4*X4+3*X3+2*X2+1*X1)/15=5.67

------------------------------------------------------------
3. SMA(X,N,M) X的M日加权移动平均,
M为权重,如Y=(X*M+Y'什麼是EMA和MA? *(N-M))/N
英文含义不知道,中文有的说是算术平均值。 我看还是加权平均值比较好。
SMA 就是把EMA(X,N) 中的权重2, 变成了一个可自己定义的变数。要求 M < N;
还是加权平均的意思。

4. DMA(X,A) -- dynamic move average

算法: 若Y=DMA(X,A)则 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必须小于1。
例如: DMA(CLOSE,VOL/CAPITAL) 表示求以换手率作平滑因子的平均价。
直观理解, 换手率越大,该收盘价对均价影响越大。 这个很好。

EMA(指数平均数指标)到底是什么?

胡慢慢 ​

假如我们现在有365天的温度,要求最近N天的平均温度值,其中 N \in [0, 365] 。

加权平均数

V_ = (\theta_1 + \theta_2 + \theta_ + . + \theta_) \div 365

指数加权平均是一种近似求平均的方法。

指数加权平均

v_ = \beta v_ 什麼是EMA和MA? + (1-\beta) \theta_

  • v_ : 约等于最近的 \frac天的平均温度值;(为啥是 \frac后面再讲)。
  • \theta_ :代表的是第t天的温度值;
  • \beta : 可调节的超参.

例如: \beta=0.9 ,t=100, v_ 什麼是EMA和MA? \approx 90到100这十天的平均温度。

v_ = \beta v_ + (1 - \beta) \theta_

v_ = \beta v_ + (1 - \beta) \theta_

v_ = \beta v_ + (1 - \beta) \theta_

设置不同的 \beta 会是什么样子呢?

\beta = 0.9 ,代表的是最近10天的平均温度值,对应下图中的红线.

\beta = 0.98 ,代表的是最近50天的平均温度值,对应下图中的绿线.

\beta = 0.5 ,代表的是最近2天的平均温度值,对应下图中的黄线,可以看到这时候和每天的温度值基本就是吻合的.什麼是EMA和MA?

我们把公式展开一下,看看这个算法是怎么作用于 \theta_ 的,以 v_ 为例。

v_= 0.1\theta_ + 0.9v_ \\ = 0.什麼是EMA和MA? 1\theta_ + 0.9( 0.1\theta_ + 0.9v_) \\ =. \\ = 0.1\theta_ + 0.1 * 0.9 \theta_ + 0.1 * 0.9 ^\theta_ + . + 0.1 * 0.9 ^\theta_

到这里我们就很清楚 v_ 实际上是对每天温度的加权平均,时间越近,权重越大,而且是指数式的,所以叫做指数加权平均。 假如我们以1/e为一个分界点,认为权重小于1/e对整个结果影响很小,权重指数衰减到这个值之后的项就可以忽略不计了,那当 \beta 取值的时候,多久才可以衰减到1/e呢?

深入理解EMA和SMA

置顶 永远的麦田 已于 2022-05-23 15:07:37 修改 4387 收藏 18

一直对EMA的理解都比较模糊,总是不能完全把握,因此,凡是牵涉到EMA的公式都搞不清其内在的数学模型是什么。刚好看到个文章,觉得写的很好。
参考内容:https://www.codeleading.com/article/9441142281/
后面有朋友提示写的函数错了,原因是针对原始的EMA公式的理解错误产生了偏差,然后上github上找到ema的c代码核对,发现先前的应该是理解错了,N是一个固定值,中间不应变化,具体C代码可参考:

https://github.com/TA-Lib/ta-lib/blob/master/src/ta_func/ta_EMA.c

https://www.joinquant.com/view/community/detail/3d88c84f05e5a3bd72f728a40e54edf4
说talib实现的经典的EMA功能的应该是采用将第N个值的EMA求值即采用简单的取平均值的方式。

1 EMA

公式:EMAtoday=α * Pricetoday + ( 1 - α ) * EMAyesterday;
其中,α为平滑指数,一般取作2/(N+1)
推导公式:EMA(X,N)=[2X+(N-1)Y’]/(N+1)
按tablib.EMA的处理方式,前N个EMA值皆为NAN,第N个EMA值为sum(c[:N]/N)
因此代码可以整理为:

2 SMA

理解了EMA的含义和用途后,后面SMA函数就好理解了;因为EMA的平滑系数是定的,=2/(周期+1);如果要改变平滑系数咋办?这就用到了 SMA,与EMA的区别就是增加了权重参数M,也就是用M代替EMA平滑系数中的2,这样我们可以根据需要调整当日数值在均价中的权重=M/N。(要求N>M)
推导公式:SMA(X,N,M)=[MX+(N+1-M)Y’]/(N+1)