跨周期引用代码:
KPX:=STKINDI('','SPJ.开盘线',0,ZQ);
DRAWSL(N1<>0,KPX,0,1,1),COLORFFFF;
跨周期引用今开盘数据时划的开盘线,在序列模式下是错误的(不是小错,是大错,更本就不是开盘线)!但在逐周期模式下是正确的。
版主,其他的代码不便公开,就是这一条调用跨周期开盘线的代码与其他代码合用,在序列模式下所划的开盘线位置严重错误!(如果用“逐周期模式”,则整个指标无法使用,有0值线。)
同样的这个指标代码,我以前用在飞狐下是正常的,而且所画指标线的起点无异常;但在金字塔下,除开盘线不正常外,所画指标线的起点有异常!起点的10-20个K线单位的指标线数值为0,之后才正常显示(开盘线除外)。很可能是“序列模式”的计算方式或方法有BUG,你可以对比一下飞狐的计算模式。
由于你不能给出一个说明问题的公式,我们无法得知是你的公式系统问题还是我们的软件问题。
另外,逐周期模式和序列模式本身有区别,故有时引用公式时会有差别
有的问题不是换一下写法就好解决问题的。
请版主测试一下加入“跨周期引用”在5分钟图里画日开盘线,就能看到错误了!
INPUT:N1(0.2,0.1,100),N2(1,0,1),ZQ(6,-1,20);
fc:=c;
fo:=o;
cc:0*c,linethick0;
oo:0*c,linethick0;
t1:=0*c;
t2:=0*c;
for i=1 to datacount do begin
if i=1 and fc[i]>fo[i] then
cc[i]:=fc[i];
oo[i]:=fc[i];
if i=1 and fc[i]<fo[i] then
cc[i]:=fc[i];
oo[i]:=fc[i];
if i>1 then
cc[i]:=cc[i-1];
oo[i]:=oo[i-1];
if i>1 and fc[i]>cc[i]*(1+n1/100) then begin
cc[i]:=cc[i-1]*(1+n1/100);
oo[i]:=cc[i-1];
end;
if i>1 and fc[i]<oo[i]/(1+n1/100) then begin
oo[i]:=oo[i-1]/(1+n1/100);
cc[i]:=oo[i-1];
end;
if oo[i]=oo[i-1] then
t1[i]:=t1[i-1]+1;
if cc[i]=cc[i-1] then
t2[i]:=t2[i-1]+1;
end;
o1:=ref(oo,t1+1);
c1:=ref(cc,t2+1);
STICKLINE(c1=oo,cc,oo,8,1)COLORRED;
STICKLINE(o1=cc,cc,oo,8,1)COLORCYAN;
{加入跨周期引用画日开盘线}
QSX:=STKINDI('','KPX.开盘线',0,ZQ); //引用KPX指标的任意(ZQ)周期开盘线;
DRAWSL(N2<>0,QSX,0,2,1),COLORFF00FF;
/////////
说明:引用的KPX指标内容
开盘线:OPEN;
函数STKINDI的使用有问题.
STKINDI('','KPX.开盘线',0,ZQ); 第四个参数:周期类型.如果要引用的是日K线上的开盘价,可改为QSX:=STKINDI('','KPX.开盘线',0,6);
关于跨周期引用的注意事项,请参看http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332问题17
"ZQ"是参数(6,-1,20),怎么你不按你改的亲自验证一下就下结论说没有错误呢?不信你改为6试试?