matlab算sma,MA-EMA-SMA-DMA 函数用法、算法、图例、区别

MA-EMA-SMA-DMA 函数区别

先看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;所以,它在计算平均值时,考虑了前一日的平均值,平滑系数是定的,它是利用今日的值与前一日的平均值的差,再考虑平滑系数,计算出来的平均值,所以也有叫异同平均的。因此,这两个平均算法是不同的,主要是对数组中的数据的权重侧重不同。理解了MA,EMA的含义后,就可以理解其用途了,简单的说,当要比较数值与均价的关系时,用MA就可以了,而要比较均价的趋势快慢时,用EMA更稳定;有时,在均价值不重要时,也用EMA来平滑和美观曲线。理解了MA和EMA的含义和用途后,后面几个函数就好理解了;因为EMA的平滑系数是定的,=2/(周期+1);如果要改变平滑系数咋办?这就用到了SMA;SMA(C,N,M)与EMA的区别就是增加了权重参数M,也就是用M代替EMA平滑系数中的2,这样我们可以根据需要调整当日数值在均价中的权重=M/N。(要求N>M);大家注意,权重系数在EMA与SMA中都是用数值与周期计算出来的小数,假设有一个小数可以直接代表权重,如何办?这就有了DMA;DMA(C,A)中A为权重值,公式如下:X=DMA(C,A)=A*X+(1-A)*X'(A小于1),可以发现,DMA与SMA原理是一至的,只是用一个小数直接代替了M/N;而在实用中,这个小数最有价值的就是换手率=V/CAPITAL;- F* ^& U( K4 Y$ ODMA(C,V/CAPITAL)的直接含义是用换手率作为权重系数,利用当日收盘价在均价中的比重计算均价;直观理解就是换手率越大,当日收盘价在均价中的作用越大!这样理解应该知道各函数的作用和用途了!

股票指标之EMA和MA差异(EMA SMA MA DMA)

2008-09-05 16:23

DMA(C,0.2) = (1-0.2)*DMA(REF(C,1),0.2) + 0.2*C;

SMA(C,3,1)= 2/3*SMA(REF(C,1),3,1) + 1/3*C;

EMA(C,3) = 1/3*EMA(REF(C,1),3) + 2/3*C;

MA(C,3) = (C+REF(C,1)+REF(C,2))/3;其实它们的用法差异绝对不仅仅在于上面的表象,也就是计算方法的差异。如果从程序的角度来看,分析软件里面提供的公式都是一种伪代码,它屏蔽了编程的难度,可以实现大众使用平台下的某些自定义化功能,最终它还是要解释为某种语言的代码来调用动态链接库(仅仅是猜想)。所以从上面来看,MA是唯一一个不需要迭代的均值函数,其他几种都需要迭代计算,需要全部的k线数据和多次运算,也就是在某些预警之类公式的时候要避免使用。如果有空的话可以对均线金叉的两种方式进行性能比较。1 C>MA(C,5); 2.C>EMA(C,5);看看哪个最先弹出预警。由于EMA,SMA和DMA会有迭代运算,所以在一些变量传入的时候计算也会不同。这样说不容易理解,看例子:LMA:MA(C,200);

LEMA:EMA(C,200);

MA的计算方法要求必须有199以上个周期才能计算,而EMA则可以从第一个周期就能有初始化数据,并且默认为迭代中的上个周期,所以它的数据是一直有的。

六种均线ma简单移动平均--ma(x,n)参数:x为数组,n为计算周期 说明: 求x的n日移动平均值。算法x1+x2+x3+...+xn)/n。例如:RSI

BIAS : (CLOSE-MA(CLOSE,6))/MA(CLOSE,6)*100;

sma 移动平均--sma(x,n,m)参数:x为数组,n为计算周期,m为权重.若y=sma(x,n,m) 则 y=[m*x+(n-m)*y']/n, 其中y'表示上一周期y值,n必须大于m.把算法写成这个样子:y=m/n*x+(n-m)/n*y',就可以看出,当前周期数组值所占的权重是m/n,而上一周期y值所占的权重是(n-m)/n.注意,这两个权重相加,结果为1:m/n+(n-m)/n=1.看出来了吧?sma(x,n+1,2)=ema(x,n);例如:KDJ

RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;

K:SMA(RSV,3,1);

D:SMA(K,3,1);

J:3*K-2*D;

ema 指数平滑移动平均--ema(x,n)参数: x为数组,n为计算周期.n可以取到1,不过输出就没有加权的效果了.算法: 若y=ema(x,n) 则y=[2*x+(n-1)*y']/(n+1), 其中y'表示上一周期y值.把算法写成这个样子:y=2*x/(n+1)+(n-1)/(n+1)*y',就可以看出,当前周期数组值所占的权重是2/(n+1),而上一周期y值所占的权重是(n-1)/(n+1).注意,这两个权重相加,结果为1:2/(n+1)+(n-1)/(n+1)=1.例如:MACD

DIFF : EMA(CLOSE,12) - EMA(CLOSE,26);

DEA : EMA(DIFF,9);

MACD : 2*(DIFF-DEA), COLORSTICK

dma 动态移动平均--dma(x,a)若y=dma(x,a) 则 y=a*x+(1-a)*y',其中y'表示上一周期y值,a必须小于1.它与sma是一家的,看:y=m/n*x+(n-m)/n*y';y=a*x+(1-a)*y';前者说n必须大于m,后者说a必须小于1.然后两者就一样了:a=m/n.说“a为计算周期”似乎不妥,a要取小数才行.dma在第一根k线就开始起算,sma要到第二根k线开始起算dma(close,vol/capital)表示求以换手率作平滑因子的平均价。例如:以换手率作平滑因子的平均价dma(close,vol/capital)

tma递归移动平均。用法: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加权移动平均。用法:wma(x,a),求x的加权移动平均。算法:若y=wma(x,a),则y=(n*x0+(n-1)*x1+(n-2)*x2)+...+1*xn)/(n+(n-1)+(n-2)+...+1)x0表示本周期值,x1表示上一周期值。例如:多空线a:=(3*c+l+o+h)/6;

b20*a+19*ref(a,1)+18*ref(a,2)+17*ref(a,3)+16*ref(a,4)+15*ref(a,5)+14*ref(a,6)+13*ref(a,7)+12*ref(a,8)+11*ref(a,9)+10*ref(a,10)+9*ref(a,11)+8*ref(a,12)+7*ref(a,13)+6*ref(a,14)+5*ref(a,15)+4*ref(a,16)+3*ref(a,17)+2*ref(a,18)+ref(a,20))/210;

d:ma(b,m)实际上  b:wma(a,20); 就等于了上面很长的式子了.可试做:《莲花彩》简单移平均:ma(c,10);移平均:sma(c,10,2);指数平滑移平均:ema(c,10);加权移平均:wma(c,10);递归移平均:tma(c,0.9,0.1);动态移平均:dma(close,vol/capital);

Dma的函数算法:

DMA(X,A),求X的动态移动平均。

算法: 若Y=DMA(X,A)

则 Y=A*X+(1-A)*Y,其中Y表示上一周期Y值,A必须小于1。

EMA(X,N)的函数算法:

EMA(X,N),求X的N日指数平滑移动平均。

算法:若Y=EMA(X,N)

则Y=[2*X+(N-1)*Y]/(N+1),其中Y表示上一周期Y值。

SMA(X,N,M)的函数算法:

SMA(X,N,M),求X的N日移动平均,M为权重。

算法: 若Y=SMA(X,N,M)

则 Y=[M*X+(N-M)*Y)/N,其中Y表示上一周期Y值,N必须大于M。

WMA(X,n)的函数算法:

WMA(X,n),求X的加权移动平均。

算法: 若Y=WMA(X,n) 则Y=(N*X0+(N-1)*X1+(N-2)*X2)+...+1*XN)/

(N+(N-1)+(N-2)+...+1)X0表示本周期值,X1表示上一周期值...。

“MA” 为移动平均线. 一定时期内的K线收盘价(或高低价的一半等)格的平均值。通常指的是SMA

SMA(N)为N根K线内简单移动平均线。是N根K线收盘价移动平均值连线。计算方式为收盘价(1+2+3+...+N)/N。EMA(N)指数平滑平均线。是N根K线收盘价通过另一种统计方式计算出来的移动平均值。计算方式为(2*收盘价+(N-1)* X)/N+1。其中X为前一K线的的EMA值。在图表上可以加上两种均线对比一下,EMA相对SMA更为平滑。两都的区别只是统计的方法不一样。SMA只是一个简单的计算平均方式。而单根K线的随机性相对较强,所以后期发展出来了WMA(加权移动平均)和EMA。其意义是最近期的K线价格对当前走势意义相对较大,而应该给予不同的权重。至于用法,最常用的是用来判断当前价格一定时期内的趋势。但更多的还是要见仁见智了。Ma别名: 简单移动平均所属类别: 引用函数参数数量: 2求简单移动平均。用法:

MA(X,N),求X的N日简单移动平均值。算法:(X1+X2+X3+...+Xn)/N例如:

MA(CLOSE,20)表示求20日均价Sma别名: 移动平均所属类别: 引用函数参数数量: 3求移动平均。用法:

SMA(X,N,M),求X的N日移动平均,M为权重。算法:若Y=SMA(X,N,M) 则Y=(M*X+(N-M)*Y')/N, 其中Y'表示上一周期Y值,N必须大于M。例如:

SMA(CLOSE,20,1)表示求20日移动平均价Ema别名: 指数平滑移动平均所属类别: 引用函数参数数量: 2求指数平滑移动平均。用法:

EMA(X,N),求X的N日指数平滑移动平均。算法:若Y=EMA(X,N) 则Y=[2*X+(N-1)*Y']/(N+1), 其中Y'表示上一周期Y值。例如:

EMA(CLOSE,20)表示求20日指数平滑均价Dma别名: 动态移动平均所属类别: 引用函数参数数量: 2求动态移动平均。用法:

DMA(X,A),求X的动态移动平均。算法:若Y=DMA(X,A) 则Y=A*X+(1-A)*Y', 其中Y'表示上一周期Y值,A必须小于1。例如:

DMA(CLOSE,VOL/CAPITAL)表示求以换手率作平滑因子的平均价

ma

 简单移动平均--ma(x,n)

 参数:x为数组,n为计算周期 说明: 求x的n日移动平均值。算法:(x1+x2+x3+...+xn)/n。

例如:RSI

BIAS : (CLOSE-MA(CLOSE,6))/MA(CLOSE,6)*100;



sma

 移动平均--sma(x,n,m)

 参数:x为数组,n为计算周期,m为权重.若y=sma(x,n,m) 则y=/n, 其中y'表示上一周期y值,n必须大于m.把算法写成这个样子:y=m/n*x+(n-m)/n*y',就可以看出,当前周期数组值所占的权重是m/n,而上一周期y值所占的权重是(n-m)/n.注意,这两个权重相加,结果为1:m/n+(n-m)/n=1.看出来了吧?sma(x,n+1,2)=ema(x,n);

例如:KDJ

RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;

K:SMA(RSV,3,1);

D:SMA(K,3,1);

J:3*K-2*D;



ema

 指数平滑移动平均--ema(x,n)

 参数: x为数组,n为计算周期.n可以取到1,不过输出就没有加权的效果了.算法: 若y=ema(x,n) 则y=/(n+1), 其中y'表示上一周期y值.把算法写成这个样子:y=2*x/(n+1)+(n-1)/(n+1)*y',就可以看出,当前周期数组值所占的权重是2/(n+1),而上一周期y值所占的权重是(n-1)/(n+1).注意,这两个权重相加,结果为1:2/(n+1)+(n-1)/(n+1)=1.

例如:MACD

DIFF : EMA(CLOSE,12) - EMA(CLOSE,26);

DEA : EMA(DIFF,9);

MACD : 2*(DIFF-DEA), COLORSTICK



dma

 动态移动平均--dma(x,a)

 若y=dma(x,a) 则y=a*x+(1-a)*y',其中y'表示上一周期y值,a必须小于1.它与sma是一家的,看:y=m/n*x+(n-m)/n*y';y=a*x+(1-a)*y';前者说n必须大于m,后者说a必须小于1.然后两者就一样了:a=m/n.说“a为计算周期”似乎不妥,a要取小数才行.dma在第一根k线就开始起算,sma要到第二根k线开始起算dma(close,vol/capital)表示求以换手率作平滑因子的平均价。

例如:以换手率作平滑因子的平均价

dma(close,vol/capital)





tma

 递归移动平均。

 用法: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

 加权移动平均。

 用法:wma(x,a),求x的加权移动平均。算法:若y=wma(x,a),

则y=(n*x0+(n-1)*x1+(n-2)*x2)+...+1*xn)/(n+(n-1)+(n-2)+...+1)x0表示本周期值,x1表示上一周期值。

例如:

软件自带的多空指标:



a:=(3*c+l+o+h)/6;

b:(20*a+19*ref(a,1)+18*ref(a,2)+17*ref(a,3)+16*ref(a,4)+15*ref(a,5)+14*ref(a,6)

+13*ref(a,7)+12*ref(a,8)+11*ref(a,9)+10*ref(a,10)+9*ref(a,11)+8*ref(a,12)

+7*ref(a,13)+6*ref(a,14)+5*ref(a,15)+4*ref(a,16)+3*ref(a,17)+2*ref(a,18)+

ref(a,20))/210;

d:ma(b,10);



以上的b只要简单的用以下表示:

b:wma(close,20)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值