TA的每日心情 | 开心 2022-1-29 15:03 |
|---|
签到天数: 2 天 [LV.1]初来乍到
|
movavg是一个取移动平均很好用的命令。7 b$ E/ p6 c; g/ g
之前对于一个股价序列wdata,为了取ma5和ma20,我不得不写好几个循环。7 ]4 M# F! Q+ p2 A* J
其中ma5是3 R8 h* B. N+ Y* V9 F ~# c* J5 v
for t=i-4:i5 C5 ~3 c: G9 M1 b9 g& s4 ?: G
ma5(t,1)=wdata(i)/5+ma5(t,1);
3 z" N' G& l( K0 \3 f0 k) `end
0 R. m, X5 w( R8 s5 q! |还需要考虑到初始项,不能让数据发生溢出,比如出现wdata(0)或者wdata(-1)这样的项。
6 C4 o& n- G8 u3 v: P0 R, J而使用movavg命令的话,代码就简化成了
. C# c) F1 J+ [1 ^* I8 l[ma5,ma20]=movavg(wdata,5,20);
! F" }! M3 a' G" n) W8 [ma5就直接成为了时间段为5的移动平均项。其中ma5(1,1)=wdata(1,1)/5 ,ma5(2,1)=sum(wdata(1:2))/5。
0 }6 D2 m- l% g! y( |+ E而不需要考虑最前端的数据了。拿来用的时候直接从ma5(20)与ma20(20)开始使用,数据就是正常的了。% w8 o* x7 N$ l" T; w
[Short, Long] = movavg(Asset, Lead, Lag, Alpha)
' i$ W9 [6 H3 J8 b' g, j' l: u最后一项可以添加alpha,默认为0,简单的移动平均。0.5意味着平方根权重的移动平均,1意味着线性移动平均,2意味着平方权重的移动平均。e意味着指数权重的移动平均。 |
|