TA的每日心情 | 开心 2022-1-29 15:03 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
movavg是一个取移动平均很好用的命令。
- @& S, {4 P1 x+ p! T之前对于一个股价序列wdata,为了取ma5和ma20,我不得不写好几个循环。
" C. P: K: n( x4 P$ y6 c其中ma5是
0 j3 O# S6 c0 ]: Q4 a( C' x$ F6 nfor t=i-4:i4 A" Z5 b6 @% c3 k: J/ c; N% z, S% w
ma5(t,1)=wdata(i)/5+ma5(t,1);$ O2 @" H% a r5 @- o7 p+ N& ]6 j
end2 l/ K# w* o- n/ ]9 ?/ k5 X
还需要考虑到初始项,不能让数据发生溢出,比如出现wdata(0)或者wdata(-1)这样的项。
) C9 r- O5 q% \% F而使用movavg命令的话,代码就简化成了% f7 ]+ b4 z8 V' p5 K* n
[ma5,ma20]=movavg(wdata,5,20);2 {+ m4 t1 B j0 Q' r' v* j" e
ma5就直接成为了时间段为5的移动平均项。其中ma5(1,1)=wdata(1,1)/5 ,ma5(2,1)=sum(wdata(1:2))/5。# u+ ?4 C- v! N
而不需要考虑最前端的数据了。拿来用的时候直接从ma5(20)与ma20(20)开始使用,数据就是正常的了。
j- ] c% s6 S( A) s6 V7 S[Short, Long] = movavg(Asset, Lead, Lag, Alpha)
2 ?% B3 c1 j$ h最后一项可以添加alpha,默认为0,简单的移动平均。0.5意味着平方根权重的移动平均,1意味着线性移动平均,2意味着平方权重的移动平均。e意味着指数权重的移动平均。 |
|