TA的每日心情 | 开心 2022-1-29 15:03 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
movavg是一个取移动平均很好用的命令。: e) }4 ?. _& r; t7 E' w% X
之前对于一个股价序列wdata,为了取ma5和ma20,我不得不写好几个循环。9 Z+ _" g1 @6 S
其中ma5是7 Q7 A% m& S! w1 Q
for t=i-4:i: ]/ e0 W, z7 R" A3 l7 \
ma5(t,1)=wdata(i)/5+ma5(t,1);3 j8 C' K: g8 d `" |; g, f( o( c$ S
end5 h3 K8 ]2 o# _& b$ U' ^
还需要考虑到初始项,不能让数据发生溢出,比如出现wdata(0)或者wdata(-1)这样的项。; Z: j/ r5 V- L+ T9 m
而使用movavg命令的话,代码就简化成了2 W( D; ], B% a) N% ]* h
[ma5,ma20]=movavg(wdata,5,20);6 X) [' G" W- x! K$ v- O/ @
ma5就直接成为了时间段为5的移动平均项。其中ma5(1,1)=wdata(1,1)/5 ,ma5(2,1)=sum(wdata(1:2))/5。# b* e5 [" l; G- c
而不需要考虑最前端的数据了。拿来用的时候直接从ma5(20)与ma20(20)开始使用,数据就是正常的了。
) n$ `8 A2 p9 _6 y[Short, Long] = movavg(Asset, Lead, Lag, Alpha)
- ~5 K) x5 Q& r6 {7 ?, G最后一项可以添加alpha,默认为0,简单的移动平均。0.5意味着平方根权重的移动平均,1意味着线性移动平均,2意味着平方权重的移动平均。e意味着指数权重的移动平均。 |
|