EMA比SMA信号更准
理解了 MA、EMA 的含义后,就可以理解其用途了,简单的说,当要比较数值与均价的关系时,用 MA 就可以了,而要比较均价的趋势快慢时,用 EMA 更稳定;有时,在均价值不重要时,也用 EMA 来平滑和美观曲线。
EMA 指数移动平均
EMA 含义
EMA即指数平均数指标( Exponential Moving Average, EXPMA或EMA),也是一种趋向类指标。其构造原理是:对收盘价进行加权算术平均,用于判断价格未来走势的变动趋势。与MACD指标、DMA指标相比,EMA指标由于其计算公式中着重考虑了当天价格(当期)行情的权重,决定了其作为一类趋势分析指标,在使用中克服了MACD指标对于价格走势的滞后性缺陷,同时,也在一定程度上消除了DMA指标在某些时候对于价格走势所产生的信号提前性,是一个非常有效的分析指标。
EMA 定义式
由于x1 之前没有数据,我们补充定义 x0 = EMA比SMA信号更准 x-1 = x-2 = 。。。 = x1。 这样自然给出 EMAN(x1) = x1。从定义式可以看出 EMA 加权平均的特性。在 EMA 指标中,每天价格的权重系数以指数等比形式缩小。时间越靠近当今时刻,它的权重越大。说明 EMA 函数对近期的价格加强了权重比,更能及时反映近期价格波动情况。所以 EMA 比 MA EMA比SMA信号更准 EMA比SMA信号更准 更具参考价值。
EMA 递推式
EMA 二重 EMA 公式
从上式可以看出二重 EMA 满足交换律,即 EMAM[EMAN(xn)] = EMAN[EMAM(xn)]。 如果周期 M = N 相同,则分子分母同时为 0 变为不定式,可以用洛必达法则求极限。当 M ≠ N 时,公式的证明过程略去。主要用到定义式,将左边写成一个二重级数,换元后用等比级数求和,再对剩下结果进行整理即可得到。也可以根据递推式,用数学归纳法证明。
EMA 在 MACD 中的应用
注意到三个系数之和为零,故 MACD 可以看作是比较不同周期的 EMA 得出的股票涨跌趋势,也可以理解为股价的 “速度”。当 MACD 由负增到零称作 “金叉”,表示股价越过了最小值,即将迎来涨势;当 MACD 由正减到零称作 “死叉”,表示股价越过了最大值,即将迎来跌势。
深入理解EMA和SMA
置顶 永远的麦田 已于 2022-05-23 15:07:37 修改 4352 收藏 18
一直对EMA的理解都比较模糊,总是不能完全把握,因此,凡是牵涉到EMA的公式都搞不清其内在的数学模型是什么。刚好看到个文章,觉得写的很好。
参考内容:https://www.codeleading.com/article/9441142281/ EMA比SMA信号更准
后面有朋友提示写的函数错了,原因是针对原始的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)
MA、EMA、SMA、DMA、TMA、WMA
章志强 于 2013-06-25 16:50:55 发布 9210 收藏 21
MA(X,N)简单算术平均
求X的N日移动平均值,不分轻重,平均算。算法是:
(X1+X2+X3+…..+Xn)/N
例如:MA(C,20)EMA比SMA信号更准 表示20日的平均收盘价。C表示CLOSE。
EMA(X,N)指数平滑移动平均
求X的N日指数平滑移动平均,它真正的公式表达是:当日指数平均值=平滑系数*(当日指数值-昨日指数平均值)+昨日指数平均值;平滑系数=2/(周期单位+1);由以上公式推导开,得到:EMA(C,N)=2*C/(N+1)+(N-1)/(N+1)*昨天的指数收盘平均值;
算法是:若Y=EMA(X,N),则Y=[2*X+(N-1)*Y’]/(N+1),其中Y’表示上一周期的Y值。
EMA引用函数在计算机上使用递归算法很容易实现,但不容易理解。例举分析说明EMA函数。
SMA(C,N,M)移动平均
理解了MA和EMA的含义和用途后,后面几个函数就好理解了;因为EMA的平滑系数是定的,=2/(周期+1);如果要改变平滑系数咋办?这就用到了 SMA,与EMA的区别就是增加了权重参数M,也就是用M代替EMA平滑系数中的2,这样我们可以根据需要调整当日数值在均价中的权重=M/N。(要求N>M)
DMA(C,A)动态移动平均
注意,权重系数在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)的直接含义是用换手率作为权重系数,利用当日收盘价在均价中的比重计算均价,直观理解就是换手率越大,当日收盘价在均价中的作用越大!
TMA(X,N,M)递归移动平均
用法:tma(x,n,m),求x的递归移动平均,n、m为权重。算法:若y=tma(x,n,m) 则 y=(n*y'+m*x), 其中y'表示上一周期y值。初值为m*x。
例如:tma(close,0.9,0.1)表示求x的递归移动平均
WMA(X,A)加权移动平均
用法:wma(x,a),求x的加权移动平均。算法:若y=wma(x,a),则y=(n*x0+(n-1)*x1+(EMA比SMA信号更准 n- 2)*x2)+. +1*xn)/(n+(n-1)+(n-2)+. +1)x0表示本周期值,x1表示上一周期值。
MA是简单算术平均,MA(C,2)=(C1+C2)/2; MA(C,3)=(C1+C2+C3)/3;不分轻重,平均算;
_ EMA比SMA信号更准
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信号更准
因此,这两个平均算法是不同的,主要是对数组中的数据的权重侧重不同。
理解了MA,EMA的含义后,就可以理解其用途了,简单的说,当要比较数值与均价的关系时,用MA就可以了,而要比较均价的趋势快慢时,用EMA更稳定;有时,在均价值不重要时,也用EMA来平滑和美观曲线。
理解了MA和EMA的含义和用途后,后面几个函数就好理解了;
因为EMA的平滑系数是定的,=2/(周期+1);如果要改变平滑系数咋办?这就用到了SMA;
SMA(EMA比SMA信号更准 EMA比SMA信号更准 C,N,M)与EMA的区别就是增加了权重参数M,也就是用M代替EMA平滑系数中的2,这样我们可以根据需要调整当日数值在均价中的权重=M/N。(要求N>M);
大家注意,权重系数在EMA与SMA中都是用数值与周期计算出来的小数,假设有一个小数可以直接代表权重,如何办?这就有了DMA; EMA比SMA信号更准
DMA(C,A) 中A为权重值,公式如下:X=DMA(C,A)=A*X+(1-A)*X'(A小于1),可以发现,DMA与SMA原理是一至的,只是用一个小数直接代替了M/N;
而在实用中,这个小数最有价值的就是换手率=V/CAPITAL;DMA(EMA比SMA信号更准 C,V/CAPITAL)的直接含义是用换手率作为权重系数,利用当日收盘价在均价中的比重计算均价;
直观理解就是换手率越大,当日收盘价在均价中的作用越大!
这样理解应该知道各函数的作用和用途了!
【MA】:求简单移动平均
用法:MA(X,N),求X的N日移动平均值。
算法:(X1+X2+X3+. +Xn)/N EMA比SMA信号更准
例如:MA(CLOSE,10) 表示求10日均价。特例:MA(X,0)表示X所有数据的平均。
【EMA】:求指数平滑移动平均
用法:EMA(X,N),求X的N日指数平滑移动平均。
算法:若Y=EMA(X,EMA比SMA信号更准 N),则Y=[2*X+(N-1)*Y']/(N+1),其中Y'表示上一周期Y值。
例如:EMA(CLOSE,30) 表示求30日指数平滑均价。
【SMA】:求移动平均
用法:SMA(X,N,M),求X的N日移动平均,M为权重。
算法:若Y=SMA(X,N,EMA比SMA信号更准 M),则 Y=[M*X+(N-M)*Y']/N,其中Y'表示上一周期Y值,N必须大于M。
例如:SMA(CLOSE,30,1) 表示求30日移动平均价。
【DMA】:求动态移动平均
用法:DMA(X,A),求X的A日动态移动平均。
算法:若Y=DMA(X,A),则 Y=A*X+(1-A)*Y',其中Y'EMA比SMA信号更准 表示上一周期Y值,A必须小于1。
例如:DMA(CLOSE,VOL/CAPITAL) 表示求以换手率作平滑因子的平均价。
图例:
以300286安科瑞为例:
其前五天收盘价如下
第一天收盘价:C1=35.12;
第二天收盘价:C2=31.61;
第三天收盘价:C3=34.10;
第四天收盘价:C4=31.12;
第五天收盘价:C5=32.16;
MA(C,5)
第一天数值:M1=无数据
第二天数值:M2=无数据
第三天数值:M3=无数据
第四天数值:M4=无数据
第五天数值:M5=(C1+C2+C3+C4+C5)/N=(35.12+31.61+34.10+31.12+32.16)÷5=32.822
EMA(C,5)
第一天数值:E1=C1=35.120;
第二天数值:E2=[2*C2+(N-1)*E1]/(N+1)=(2×31.61+4×35.120)÷6=33.950
第三天数值:E3=[2*C3+(N-1)*E2]/(N+1)=(2×34.10+4×33.950)÷6=34.000
第四天数值:E4=[2*C4+(N-1)*E3]/(N+1)=(2×31.12+4×34.000)÷6=33.040
第五天数值:E5=[2*C5+(N-1)*E4]/(N+1)=(2×32.16+4×33.040)÷6=32.747
SMA(C,5,1)
第一天数值:S1=C1=35.120;
第二天数值:S2=[M*C2+(N-M)*S1]/N=(1×31.61+4×35.120)÷5=34.418
第三天数值:S3=[M*C3+(N-M)*S2]/N=(1×34.10+4×34.418)÷5=34.354
第四天数值:S4=[M*C4+(N-M)*S3]/N=(1×31.12+4×34.354)÷5=33.708
第五天数值:S5=[M*C5+(N-M)*S4]/N=(1×32.16+4×33.708)÷5=33.398
DMA(C,VOL/CAPITAL)
第一天VOL/CAPITAL:A1=0.830
第二天VOL/CAPITAL:A2=0.386
第三天VOL/CAPITAL:A3=0.282
第四天VOL/CAPITAL:A4=0.257
第五天VOL/CAPITAL:A5=0.157
第一天数值:D1=C1=35.120;
第二天数值:D2=A2*C2+(1-A2)*D1=0.386×31.61+(EMA比SMA信号更准 1-0.386)×35.120=33.767
第三天数值:D3=A3*C3+(1-A3)*D2=0.282×34.10+(1-0.282)×33.767=33.861
第四天数值:D4=A4*C4+(1-A4)*D3=0.257×31.12+(1-0.257)×33.861=33.157
第五天数值:D5=A5*C5+(1-A5)*D4=0.157×32.16+(1-0.157)×33.157=33.001
深入理解EMA和SMA
置顶 EMA比SMA信号更准 永远的麦田 已于 2022-05-23 15:07:37 修改 4353 收藏 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) EMA比SMA信号更准
因此代码可以整理为:
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)