EMA是金字塔缺省提供的函数,具体定义如下:
EMA(X,N),求X的N日指数平滑移动平均。算法:若Y=EMA(X,N)
则Y=[2*X+(N-1)*Y']/(N+1),其中Y'表示上一周期Y值。
我现在想自定义EMA,把权重更改,比如
Y=[2.5*X+(N-1.5)*Y']/(N+1),其中Y'表示上一周期Y值。
请问怎么实现啊?
以下是引用jinzhe在2012-6-20 14:48:27的发言:
上一周期的y值就是ref(y,1);
问题的关键是:Y怎么定义?因为这个公式会循环引用Y,如果没有实现定义好,编译不会通过。
我现在的解决方法是在开头实现定义
variable: tmp;
N:=20;
Y:=0; //
必须要初始赋值,怎么赋值?tmp:=ref(Y,1); //
Y必须要实现定义Y=[2.5*C+(N-1.5)*tmp]/(N+1);
我实现的方法不对,尽管能够编译通过,但tmp永远为0...
金字塔能够实现EMA,说明肯定是可以实现的,特此求教。
input:n(20);
y:=c;
Y:=(2.5*C+(N-1.5)*ref(y,1))/(N+1);
[此贴子已经被作者于2012-6-20 15:29:13编辑过]
谢了。已经搞定。
input:N(20);
variable: Y=0;
Y:=(2.5*C+(N-1.5)*Y)/(N+1);
MY_EMA: Y;