VARIABLE:rc[]=0;
refc:=ref(close,1);
if date<>ref(date,1) then
begin
rc:=refc;
ddc:=HHV(rC,cm);
kkc:=LLV(rC,cm);
end
!DDC:DDC;
!kkC:KKC;
这段代码的本意是自己计算CM日的最高价和最低价,用RC数组存放昨日收盘价,然后用HHV和LLV来求数组最近CM个数值的最大值和最小值。
今天发现一个问题,15至60分钟周期上,这个KKC每次来个TICK都会变化,不断变大直到和DDC一样,这是什么问题啊,
日线上还以算算,分钟线上这两个就是一样的,分钟线上rc不就是一直是一样的除非换日了?
[此贴子已经被作者于2015/3/23 10:11:50编辑过]
refc:=ref(close,1);
if date<>ref(date,1) then
begin
ddc:=HHV(refC,cm);
kkc:=LLV(refC,cm);
end
老大,你这样写,第一我看不懂意思,第二根本通不过,统计函数对序列变量不能用在控制语句里面。所以,我在换日时,把昨天的收盘价赋值给空数组RC,换一次日进一个数据,然后在对RC进行统计运算,这样就可以在控制里面实现运算,而且实现了我要在小周期里面计算日线最高最低价的本意。在进行历史测试时,没有问题。今天挂上动态行情测试,结果发现随着行情数据刷新,KKC不断被刷新,直到和DDC相同。并且,公式刷新之后,恢复正常值,然后又开始变,但也不总是出现这种现象,有时不能再现。
这个问题已经解决,每次赋值前,用SETUBOUND强行设置数组上届。
VARIABLE:DAYS=0,RC[]=0;
refc:=ref(close,1);
if date<>ref(date,1) then
begin
DAYS:=DAYS+1;
SETUBOUND(rc,days);
rc:=refc;
ddc:=HHV(rC,cm);
kkc:=LLV(rC,cm);
end
[此贴子已经被作者于2015/3/23 14:14:28编辑过]