以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  MA(X,N),N的含义  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=69639)

--  作者:cssfortune
--  发布时间:2014/9/5 13:36:38
--  MA(X,N),N的含义
MA(X,N),请问N是包含当根K的计数,还是说在不包含当根K、之前N个K线的?
--  作者:netfox
--  发布时间:2014/9/5 13:38:36
--  
必须包含当根
--  作者:cssfortune
--  发布时间:2014/9/5 14:01:09
--  
好,那为啥我下面这段代码(海龟里面计算N的那个),N计算不出来?M,TR都计算的出来,就是N始终显示##.
//atrcyc是N计算的周期,默认为10;

  m:=ref(ma(tr,atrcyc),1);
  pretr:=ref(tr,1);

 if Barpos>=11 then 
   BEGIN 
   If Barpos=11 then 
   N:=M;
   If DayCount=5 or Barpos=11 then  
   begin 
   N:=(9*N+preTR)/10; //指数移动平均法
   DayCount:=0;
   end
   daycount:=daycount+1;
   END
//改成下面那样了,就能计算出来了;因为我的atrcyc参数默认为10;所以下面与上面的区别就是取了第12根K线,而不是第11根K线开始。
  m:=ref(ma(tr,atrcyc),1);
  pretr:=ref(tr,1);

 if Barpos>=(atrcyc+2) then //因为最开 m 取的是ref( ,1),所以从11开始不够,要从12开始??
   BEGIN 
   If Barpos=(atrcyc+2) then 
   N:=M;
   If DayCount=5 or Barpos=(atrcyc+2)then  //每5周期换一次or 每 atrcyc/2 周期换一次呢?这里仍用5周期换一次
   begin 
   N:=((atrcyc-1)*N+preTR)/atrcyc; //指数移动平均法
   DayCount:=0;
   end
   daycount:=daycount+1;
   END

--  作者:jinzhe
--  发布时间:2014/9/5 14:08:23
--  
你这个n初始值什么定义的?
--  作者:cssfortune
--  发布时间:2014/9/5 14:31:51
--  
初始值就是m, 然后在atrcyc+1开始、用指数移动平均法更换为atr, 其中tr取的也是前一期;
m:=ref(ma(tr,atrcyc),1);
pretr:=ref(tr,1);

--  作者:jinzhe
--  发布时间:2014/9/5 14:50:31
--  
是 TR需要多一个计算周期,你用CLOSE,HIGH之类的替代TR就完全不需要多一个计算周期
--  作者:cssfortune
--  发布时间:2014/9/5 15:26:50
--  
为啥?因为我取11的时候,preTR能计算显示出来啊,就是N算不出来。
比如,计算preTR的话,K=11的时候,用到K=9的close;K=12的时候,用到K=10的close, 并没有不满足啊、

--  作者:jinzhe
--  发布时间:2014/9/5 15:49:52
--  
你的daycount是怎么定义的?
--  作者:cssfortune
--  发布时间:2014/9/5 15:54:35
--  
初始值为0,每走一根K加1。如果加满了5,置0,走完这个K之前是又+1,即显示为1。
所以图表上它的取值范围是1-5. 
so ?

--  作者:jinzhe
--  发布时间:2014/9/5 16:14:45
--  
全局变量还是普通变量