TA的每日心情 | 开心 2022-1-29 15:03 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
movavg是一个取移动平均很好用的命令。
9 Q2 I% @+ T; L$ q之前对于一个股价序列wdata,为了取ma5和ma20,我不得不写好几个循环。
5 w4 {0 g' T9 t/ ~8 X7 k其中ma5是" E% I5 a% Z/ O+ [6 H
for t=i-4:i
) ~4 c$ h& D( l$ l' w$ lma5(t,1)=wdata(i)/5+ma5(t,1);
8 V$ }! _4 t, Jend
! B: E1 D5 M' W- ~9 F; l还需要考虑到初始项,不能让数据发生溢出,比如出现wdata(0)或者wdata(-1)这样的项。# J/ l: J ?) |) b+ g
而使用movavg命令的话,代码就简化成了( ?7 A1 S1 D4 U" n" h
[ma5,ma20]=movavg(wdata,5,20);
8 R5 _) ~0 o( O+ H8 X+ Rma5就直接成为了时间段为5的移动平均项。其中ma5(1,1)=wdata(1,1)/5 ,ma5(2,1)=sum(wdata(1:2))/5。
2 o9 O* L8 e* Q8 `8 `而不需要考虑最前端的数据了。拿来用的时候直接从ma5(20)与ma20(20)开始使用,数据就是正常的了。& \2 j: m+ C5 u4 j4 K, T, @( S9 w
[Short, Long] = movavg(Asset, Lead, Lag, Alpha)# h& d7 q" _9 N5 g1 l0 _3 f8 E5 S
最后一项可以添加alpha,默认为0,简单的移动平均。0.5意味着平方根权重的移动平均,1意味着线性移动平均,2意味着平方权重的移动平均。e意味着指数权重的移动平均。 |
|