以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请教自定义的移动平均如何实现  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=10757)

--  作者:macro
--  发布时间:2012/3/26 14:17:25
--  请教自定义的移动平均如何实现
开盘时MA的特殊处理,即不管它是否跳空,MA均从开盘第一笔开始计算,请问如何实现?下面的实现有何问题? thanks.
fc:=close;
fd:=day;
dc:=datacount;
VARIABLE:mysum[dc]=0,myma[dc]=0;
variable:j=0;
for i=1 to datacount do
begin
  if fd[i]>fd[i-1] then
    begin    
      myma[i] := fc[i];
      j := 1;
      mysum[i] := fc[i];
    end;    
  else
    begin    
      j := j + 1;
      if (j < n) then
        begin
          mysum[i] := mysum[i-1] + fc[i];
          myma[i] := mysum[i]/j;
        end;
      else
        begin
          myma[i] := (fc[i]+fc[i-1]+fc[i-2]+fc[i-3]+fc[i-4])/n;  //n暂定为5
        end;
    end;    
end

myma1: myma;



--  作者:just
--  发布时间:2012/3/26 14:40:27
--  

if barslast(date<>ref(date,1))+1 then begin

//从每天第一根K线开始算起。


--  作者:macro
--  发布时间:2012/3/26 15:09:11
--  
不好意思,还是不太明白,请给个详细实现,thanks.
--  作者:just
--  发布时间:2012/3/26 15:54:55
--  

ma5:=ma(c,5);

ma10:=ma(c,10);

if barslast(date<>ref(date,1))+1 then begin//从每天第一根K线开始算起

buy(cross(ma5,ma10),1,market);//当5周期均线上穿10周期均线时开多。

 


--  作者:macro
--  发布时间:2012/3/26 16:47:58
--  
请教:
当求n个周期内的最低值,每次计算从每天的第一根K线计算起,下面代码为何不正确?
ctl := barslast(date<>ref(date,1))+1;

if (ctl < n) then begin
  myllv := llv(low,ctl);
  end;
else begin
  myllv := llv(low,n);
  end;

myllv1: myllv;

但求HHV好象是正确的,为什么?

--  作者:just
--  发布时间:2012/3/26 17:16:03
--  

n:=barslast(date<>ref(date,1))+1

hh:hhv(h,n);

ll:llv(l,n);