Y=a*X+(1-a)*Y'
注:其中Y'表示上一周期Y值,a值在[0,1]
X为函数中的Exp表达式,a为函数中的Expa衰减因子表达式。
范例01:
//计算SH603260在20180827日收盘价的按当日换手率加权的动态移动平均。
endt:=20180827T;
Setsysparam(pn_stock(),'SH603260');
setsysparam(pn_cycle(),cy_day());
Setsysparam(pn_date(),endt);
setsysparam(pn_rate(),1);
setsysparam(pn_rateday(),endt);
return DSMA_II(@close(),@stockhsl3()/100); //不做缓存
//结果:64.7879157815069
范例02:
//取股票在一段时间内收盘价的动态移动平均。
begt:=20180801T;
endt:=20180827T;
Setsysparam(pn_stock(),'SH603260');
setsysparam(pn_cycle(),cy_day());
Setsysparam(pn_date(),endt);
setsysparam(pn_rate(),1);
setsysparam(pn_rateday(),endt);
n:=tradedays(begt,endt);
return nday(n,'date',sp_time(),'dma',DSMA_II(@close(),@stockhsl3()/100,'close&stockhsl3')); //缓存
//结果:
date |
dma |
2018-08-01 |
71.389605 |
2018-08-02 |
71.036233 |
2018-08-03 |
70.791032 |
2018-08-06 |
69.995466 |
2018-08-07 |
69.286921 |
2018-08-08 |
68.635414 |
2018-08-09 |
68.112177 |
2018-08-10 |
67.714617 |
2018-08-13 |
67.430301 |
2018-08-14 |
67.222879 |
2018-08-15 |
66.991303 |
2018-08-16 |
66.754820 |
2018-08-17 |
66.086628 |
2018-08-20 |
65.782006 |
2018-08-21 |
65.530975 |
2018-08-22 |
65.322343 |
2018-08-23 |
65.124006 |
2018-08-24 |
64.955957 |
2018-08-27 |
64.787916 |
范例03:
setsysparam(pn_stock(),'SZ002926');//SZ002926
setsysparam(pn_date(),20200113T); //20180312T
setsysparam(pn_rate(),1);
setsysparam(pn_rateday(),20200113T);
N:=30;
AA:=@(2*CLOSE()+LOW()+HIGH())/4;
BB:=@MA(CLOSE(),N);
CC:=@(ABS(eval(AA)-eval(BB))/eval(BB));
DD:=@stockzf3()/100;
//第三个参数:若需要缓存,请注意,缓存标志是用户自己定义的串,不同表达式(表达式一,表达式二有任何不一致时)缓存字符串必须不一样,否则会计算错误
//第四个参数:只向历史推导100次->对于表达式算法较为复杂的可考虑此用法
t1:= DSMA_II(AA,CC,'aa');
t2:= DSMA_II(AA,CC,'cc',100);
t3:= DSMA_II(AA,DD,'dd',100);
return array(t1,t2,t3);
//结果:array(10.65002510798311,10.6416859095779,9.390332085877599)