|
TRMA(X,N)求X在N周期内的三角移动平均
三角移动平均计算方法根据N的奇偶性而不同:
第1种当N为奇数时,先算(奇数+1)/2周期移动平均,得出值再算这个值的(奇数+1)/2周期的移动平均.
例1
TRMA5:TRMA(Close,5);//计算5个周期内收盘价的三角移动平均。(N不能被2整除)
实际算法//TRMA(Close,5)=MA(MA(Close,(5+1)/2)),(5+1)/2);
第2种当N为偶数,先算偶数/2周期移动平均,得出值再算这个值的(偶数/2+1)周期的移动平均。
例2:
TRMA10:TRMA(Close,10);// 计算10个周期内收盘价的三角移动平均。(N能被2整除)
实际算法:TRMA(Close,10)=MA(MA(Close,10/2),(10/2)+1));
以下代码通过易得程序化自定义函数实现TRMA三角移动平均函数,为您揭秘系统函数的神秘面纱并展示易得自定义函数的强大功能。
- function MyTRMA(X, N)
- begin
- if barpos < N then
- N := barpos;
- d := 0;
- r := intpart((N+1)/2);
- s := (n*n + n*2 + (mod(N,2)=1)) / 4;
- for i = 0 to n-1 do
- d := d + ref(c,i) * if(i<r, i+1, N-i);
- res := d / s;
- return res;
- end
- // a和b的值相同
- a:MyTRMA(c, 10); // 调用自定义函数MyTRMA
- b:TRMA(c, 10); // 调用系统TRMA函数
复制代码
|
|