开盘时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;
if barslast(date<>ref(date,1))+1 then begin
//从每天第一根K线开始算起。
不好意思,还是不太明白,请给个详细实现,thanks.
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周期均线时开多。
请教:
当求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好象是正确的,为什么?
n:=barslast(date<>ref(date,1))+1
hh:hhv(h,n);
ll:llv(l,n);