TA的每日心情 | 开心 2022-1-29 15:03 |
|---|
签到天数: 2 天 [LV.1]初来乍到
|
movavg是一个取移动平均很好用的命令。
~; d4 s8 L, n6 o之前对于一个股价序列wdata,为了取ma5和ma20,我不得不写好几个循环。* u9 h0 q D! g* ^
其中ma5是 H- I; v( Y7 b) U) Q# A7 i0 ~& Y
for t=i-4:i" n: T) z3 [$ y9 X3 k3 N8 @$ p
ma5(t,1)=wdata(i)/5+ma5(t,1);
. w" a% S# D0 N+ s1 s3 {* bend. a9 Z, p( ^8 Q8 \8 G9 Z# m4 `
还需要考虑到初始项,不能让数据发生溢出,比如出现wdata(0)或者wdata(-1)这样的项。1 U1 K) O8 p$ z P d
而使用movavg命令的话,代码就简化成了8 d, L# G* b$ T5 D7 v
[ma5,ma20]=movavg(wdata,5,20);
4 M3 l' s, q3 Fma5就直接成为了时间段为5的移动平均项。其中ma5(1,1)=wdata(1,1)/5 ,ma5(2,1)=sum(wdata(1:2))/5。, e8 {; W. K3 o7 W1 G
而不需要考虑最前端的数据了。拿来用的时候直接从ma5(20)与ma20(20)开始使用,数据就是正常的了。3 Q; f ?) `3 a) M- D& E
[Short, Long] = movavg(Asset, Lead, Lag, Alpha)4 G5 ?0 N4 q* a' D# Y$ q
最后一项可以添加alpha,默认为0,简单的移动平均。0.5意味着平方根权重的移动平均,1意味着线性移动平均,2意味着平方权重的移动平均。e意味着指数权重的移动平均。 |
|