TA的每日心情 | 开心 2022-1-29 15:03 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
movavg是一个取移动平均很好用的命令。* i, B! M; k; y- _' {
之前对于一个股价序列wdata,为了取ma5和ma20,我不得不写好几个循环。& N$ c ?" `4 f7 w: T) k
其中ma5是
2 p0 F; [6 ^7 ]( D" D" Vfor t=i-4:i
3 g( Y6 S7 m- J2 D4 ema5(t,1)=wdata(i)/5+ma5(t,1);
! ^0 ]2 s1 D8 ~end
, D7 Y7 Y+ M; B! Q5 d+ M还需要考虑到初始项,不能让数据发生溢出,比如出现wdata(0)或者wdata(-1)这样的项。) y* O# y2 V& d/ v
而使用movavg命令的话,代码就简化成了/ M: y' f3 n& b/ L/ L
[ma5,ma20]=movavg(wdata,5,20);
. L0 }/ j& L3 e$ |1 ~' mma5就直接成为了时间段为5的移动平均项。其中ma5(1,1)=wdata(1,1)/5 ,ma5(2,1)=sum(wdata(1:2))/5。
- X( D* t* m: P& s" L k) `1 ]而不需要考虑最前端的数据了。拿来用的时候直接从ma5(20)与ma20(20)开始使用,数据就是正常的了。
" L& v2 _" d2 }3 t# R: @5 K[Short, Long] = movavg(Asset, Lead, Lag, Alpha)$ U; d1 A, I; L5 b6 @0 O" P2 ?
最后一项可以添加alpha,默认为0,简单的移动平均。0.5意味着平方根权重的移动平均,1意味着线性移动平均,2意味着平方权重的移动平均。e意味着指数权重的移动平均。 |
|