股票ema如何计算?
公式(以12个周期为例): 先算出12个周期的移动平均线,再求其标准差,最后确定EMA的值。
例子: 现在要计算60日EMA,先算12个周期之内的60日的移动平均线 MA_{60}=\frac{(\sum^{n}_{i=1}{ma_i})}{n} (其中,n为周期数;各周期的移动平均线 ma_i 如下表1) 将以上数据带入到公式中即可计算得出需要计算的EMA数值。 EMA_{60}=exp(\frac{ln(1+\sum^n_{i=1}{(ma_i/m)} ) $n$. 但是这里存在一个问题。如果某几个周期里的收盘价波动较大,那么该周期的ma和sigma就会很大,进而导致EXP(INF)会爆炸,程序无法运行。因此我们需要对数据做处理。
首先对数据和公式进行赋值: 然后利用函数计算出各期的E、D、S 接下来需要解决一个问题,就是当D大于临界直时,用更小的值代替较大的奇异值,使得其满足条件,继续接下来的运算。我采用的是如果D>5就认为出现奇异值,并返回(-1)^((D-1)/2)作为替代值。
这里之所以采用(-1)^((D-1)/ 2)是考虑到如果D为奇数时,(-1)^((D-1)/4)已经是最小值了,而(-1)^((D-1)/3)显然比它大,这样就保证了当D为奇数时,其值为最小值,而当D为偶数时,其值最大不超过1。这样计算出来的EMD序列既保证了连续性又避免了突变。(注:我对EXL函数不熟,所以直接用VBA编程解决了问题)。