Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[求助]请问有什么函数可以替代文华的TRMA三角移动平均?或者最接近的是哪个?

1楼
douba22 发表于:2011/2/11 9:12:00
[求助]请问有什么函数可以替代文华的TRMA三角移动平均?或者最接近的是哪个?如果要自己编函数我就不会了。
[此贴子已经被作者于2011-2-11 9:12:32编辑过]
2楼
阿火 发表于:2011/2/11 9:50:06
详细解释一下TRMA的意思。
3楼
douba22 发表于:2011/2/11 10:55:21

TRMA(X,N) 求X在N周期内的三角移动平均。
三角移动平均计算方法:第1种可能先算(奇数+1)/2周期移动平均,得出值再算这个值的(奇数+1)/2周期的移动平均. 第2种可能先算偶数/2周期移动平均,得出值再算这个值的(偶数/2+1)周期的移动平均,也就是先判断一下N是奇数还是偶数,然后再选对应的计算式。

4楼
z7c9 发表于:2011/2/12 17:16:03

图片点击可在新窗口打开查看

 

runmode:1;
input:n(5,1,100,1);
variable:t1=0,t2=0;
var1:=close;

if mod(n,2)=1 then begin
 p1:=(n+1)/2;
 p2:=(n+1)/2;
end

if mod(n,2)=0 then begin
 p1:=n/2;
 p2:=n/2+1;
end

for i=1 to datacount do begin
 t1:=t1+var1[i];
 if i>=p1 then begin
  if i>p1 then
   t1:=t1-var1[i-p1];
  ma1[i]:=t1/p1; 
 end
end

for i=1 to datacount do begin
 t2:=t2+ma1[i];
 if i>=p2 then begin
  if i>p2 then
   t2:=t2-ma1[i-p2];
  ma2[i]:=t2/p2; 
 end
end

trma:ma2,colorred,linethick2;

[此贴子已经被作者于2011-2-12 18:56:51编辑过]
5楼
douba22 发表于:2011/2/13 10:03:21
非常感谢!
6楼
z7c9 发表于:2011/2/13 12:50:38

 

逐周期版本:

 

runmode:0;
input:n(5,1,100,1);
bound:=datacount;
variable:t1=0,t2=0,ma1[bound]=0;
var1:=close;

if mod(n,2)=1 then begin
 p1:=(n+1)/2;
 p2:=(n+1)/2;
end

if mod(n,2)=0 then begin
 p1:=n/2;
 p2:=n/2+1;
end

if barpos=1 then begin 
  for i=1 to datacount do begin
   t1:=t1+var1[i];
    if i>=p1 then begin
      if i>p1 then
      t1:=t1-var1[i-p1];
    ma1[i]:=t1/p1;     
  end
 end 
end

if barpos<=p2 then exit;

ma2:=ma1[barpos];
for i=1 to p2-1 do
 ma2:=ma2+ma1[barpos-i];
ma2:=ma2/p2;

trma:ma2,colorred,linethick2; 

7楼
admin 发表于:2011/2/13 12:53:16

n:=10;
if barpos < n then
  N:=barpos;
d:=c*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);


j:d/s;

 

这是另一个实现版本,可以同时在序列和逐周期运行

8楼
z7c9 发表于:2011/2/13 13:05:38
以下是引用admin在2011-2-13 12:53:16的发言:

n:=10;
if barpos < n then
  N:=barpos;
d:=c*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);


j:d/s;

 

这是另一个实现版本,可以同时在序列和逐周期运行

不错,学习了。

共8 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.01953 s, 3 queries.