TA的每日心情 | 开心 2022-1-29 15:03 |
|---|
签到天数: 2 天 [LV.1]初来乍到
|
movavg是一个取移动平均很好用的命令。& O& ?. v, H' l) P* f
之前对于一个股价序列wdata,为了取ma5和ma20,我不得不写好几个循环。
- \: W( x2 z$ K" p# Y" J" H其中ma5是8 N$ q: W5 | c: O4 }
for t=i-4:i
) K4 N! j( {3 P/ Yma5(t,1)=wdata(i)/5+ma5(t,1);. ?( @* K8 e$ M/ T% O7 v! A
end
O. G* {& O U }* N- T% @还需要考虑到初始项,不能让数据发生溢出,比如出现wdata(0)或者wdata(-1)这样的项。. Y/ F/ H9 @+ Q6 Q+ m/ c* ^) r
而使用movavg命令的话,代码就简化成了* h2 @7 c% {4 l, \$ h
[ma5,ma20]=movavg(wdata,5,20);
: l) m- C; y2 p P8 M# ama5就直接成为了时间段为5的移动平均项。其中ma5(1,1)=wdata(1,1)/5 ,ma5(2,1)=sum(wdata(1:2))/5。8 c5 {- y( O( @1 H7 R( D
而不需要考虑最前端的数据了。拿来用的时候直接从ma5(20)与ma20(20)开始使用,数据就是正常的了。
* l( M0 {' \5 P. ]6 A, F) i[Short, Long] = movavg(Asset, Lead, Lag, Alpha)8 L+ ?1 ?& t- i0 O
最后一项可以添加alpha,默认为0,简单的移动平均。0.5意味着平方根权重的移动平均,1意味着线性移动平均,2意味着平方权重的移动平均。e意味着指数权重的移动平均。 |
|