易得程序化交易技术论坛

登录 | 注册

积分: 0 |用户组: 游客

搜索
查看: 2083|回复: 1

通过自定义函数实现TRMA三角移动平均

[复制链接]

22

主题

65

帖子

1423

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1423
发表于 2022-6-26 12:37:39 | 显示全部楼层 |阅读模式
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三角移动平均函数,为您揭秘系统函数的神秘面纱并展示易得自定义函数的强大功能。
  1. function MyTRMA(X, N)
  2. begin
  3.     if barpos < N then
  4.         N := barpos;

  5.     d := 0;
  6.     r := intpart((N+1)/2);
  7.     s := (n*n + n*2 + (mod(N,2)=1)) / 4;
  8.     for i = 0 to n-1 do
  9.         d := d + ref(c,i) * if(i<r, i+1, N-i);

  10.     res := d / s;
  11.     return res;
  12. end

  13. // a和b的值相同
  14. a:MyTRMA(c, 10);  // 调用自定义函数MyTRMA
  15. b:TRMA(c, 10);    // 调用系统TRMA函数
复制代码


回复

使用道具 举报

5

主题

15

帖子

411

积分

中级会员

Rank: 3Rank: 3

积分
411
发表于 2023-3-19 19:03:04 | 显示全部楼层
学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|易得程序化 ( 粤ICP备2022064048号 )

GMT+8, 2025-4-28 16:22 , Processed in 0.050954 second(s), 18 queries .

快速回复 返回顶部 返回列表