一个均值权重的算法,不知如何用程序表达
在onbar中,目前常用的15日收盘价均价算法如下,变量都已经声明OK
aa = xaverage(close ,15) 这个没问题
后续有个算法是 加权模式
目前我们求一个 bb, 她的算法表达如下, 加权系数,没问题,就是不知道如何通过程序表达bb
bb == 0.2* aa t+ 0.8* aa t-1
用表格数据来表达算法
时间向后推 T1=第16根bar T2= T1+1 bar T3= T2+1 bar ...... | aa (15) 15根bar的收盘均价 | bb |
T=1 第16根bar | 50 | 50(初始值) |
T=2 第17根棒 | 52 | 0.2*52+0.8*50==50.4 ==bb |
T=3 | 48 | 0.2*48 + 0.8*50.4 == 49.92(t3的bb值) |
T=4 | 55 | 0.2*55 + 0.8*49.92 ==11+39.93==50.93 |
这个算法用程序,应该如何表达
看下系统的指数平均 就是你这个需求
price就是你的aa
factor可以按照你的需求设置成参数
6
感谢大神,参照大神给的架构,现在的写法如下,请大神过目,是否ok
Params
Numeric ts(0.2);
Numeric dif(15);
Vars
Series<Numeric> aa ;
Series<Numeric> bb ;
Events
OnBarOpen(ArrayRef<Integer> indexs)
{
aa = XAverage(Close,dif); // 15日 收盘均价
if(CurrentBar == 0) aa = Price;
Else
{
bb= ts*aa + (1-ts)*aa[1];
}
}
大哥 这可不是我的 是系统自带的
打开策略管理 策略应用 旁边就是用户函数 里面很多案例可以学习和使用
CurrentBar == 0是第一根bar哦,看你初始的设计 是从第16根bar开始算
另外,根据你的设计,aa是算的指数平均值,bb是指数平均的移动加权。
使用的时候好像弄混了。
OnBarOpen(ArrayRef<Integer> indexs)
{
aa = XAverage(Close,dif); // 15日 收盘均价
if(CurrentBar == dif+1) bb = aa;
Else if(CurrentBar > dif)
{
bb= ts*aa + (1-ts)*aa[1];
}
}
写得不太严谨哈 老师说要把所有的情况都考虑到哈 ,我没有写CurrentBar < dif+1的情况
还有没有bug我也不确定 你自己试试 我只能看出这么多
*Else if(CurrentBar > dif+1)
ok,逻辑能够通顺,应该是想要的部分。。编译没有问题,后续弄完后,在测试。。十分感谢。。十分感谢。。
请教各位大神老师,求教