TA的每日心情 | 开心 2022-1-29 15:03 |
|---|
签到天数: 2 天 [LV.1]初来乍到
|
movavg是一个取移动平均很好用的命令。
6 J7 N$ y3 d: p& |/ g4 U# R之前对于一个股价序列wdata,为了取ma5和ma20,我不得不写好几个循环。- H0 @3 o4 U5 F, i' u" z2 e
其中ma5是) ]7 x5 V7 `( s5 ^- c- h2 y5 m
for t=i-4:i
4 V& f5 [" S( Mma5(t,1)=wdata(i)/5+ma5(t,1);6 f1 N$ h) a* H
end/ K f8 s! h$ t# g# Q* u
还需要考虑到初始项,不能让数据发生溢出,比如出现wdata(0)或者wdata(-1)这样的项。* Z$ H2 K8 B n# X& U, x
而使用movavg命令的话,代码就简化成了
T9 `6 t+ q/ S; r0 ]3 `[ma5,ma20]=movavg(wdata,5,20);3 G s3 e8 x# c! _
ma5就直接成为了时间段为5的移动平均项。其中ma5(1,1)=wdata(1,1)/5 ,ma5(2,1)=sum(wdata(1:2))/5。! J, y* O: y& j' w, }
而不需要考虑最前端的数据了。拿来用的时候直接从ma5(20)与ma20(20)开始使用,数据就是正常的了。
' d0 y9 \. F, j3 A) \3 {6 D[Short, Long] = movavg(Asset, Lead, Lag, Alpha)( A# \8 d9 ^5 x# d* n7 B
最后一项可以添加alpha,默认为0,简单的移动平均。0.5意味着平方根权重的移动平均,1意味着线性移动平均,2意味着平方权重的移动平均。e意味着指数权重的移动平均。 |
|