下面的代码,运行在后序列模式下,用于监控多个品种。运行时,ATR等输出为空,通过删减代码,最后确定引起该问题的是标有***的几行代码。可以稳定重现,专业版2.93。请金字塔的朋友看一下。我怀疑是编译中的问题。
INPUT:AP(5,1,20,1);
INPUT:PS(1.7,0.2,5,0.1);
INPUT:PB(1.7,0.2,5,0.1);
INPUT:ND(4,1,100,1);
INPUT:DF(1,0,1,1);
INPUT:NA(20,1,100,1);
INPUT:SLA(0.5,0.1,100,1);
INPUT:TU(12,2,100,1);
INPUT:AN(0.5,0.1,2,1);
FILEPATH:='D:\DEBUGFILE\TestBug.TXT';
DEBUGFILE(FILEPATH,'Test:%.0f',100); //***此行和后面的代码会导致ATR计算无结果
CTIF:=1;
CT:=1;
//ATR
NA1:=IF(BARPOS<NA+1,BARPOS,NA);
//由于后面两行代码,,见debugfile输出祷刂担鹍ebugfile输出
TR1:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
TTR:=high;
TTA:=abs(high-low);
ATR1:=MA(TR1,NA1);
ATR:=if(barpos=1,ATR1,ref(ATR1,1)),linethick0;
SL:=ATR*SLA;
//***下面这两行代码会导致上面的计算结果均为空,见debugfile输出!
if CTIF then begin
end
DEBUGFILE(FILEPATH,'=======',0);
DEBUGFILE(FILEPATH,'parameters-----',0);
DEBUGFILE(FILEPATH,'MP_AP:%.0f',AP);
DEBUGFILE(FILEPATH,'MP__ND:%.0f',ND);
DEBUGFILE(FILEPATH,'MP__PB:%.2f',PB);
DEBUGFILE(FILEPATH,'MP__PS:%.2f',PS);
DEBUGFILE(FILEPATH,'MP__DF:%.2f',DF);
DEBUGFILE(FILEPATH,'MP__NA:%.2f',NA);
DEBUGFILE(FILEPATH,'MP__SLA:%.2f',SLA);
DEBUGFILE(FILEPATH,'MP__TU:%.2f',TU);
DEBUGFILE(FILEPATH,'MP__AN:%.2f',AN);
DEBUGFILE(FILEPATH,'MP__SN:%.2f',SN);
DEBUGFILE(FILEPATH,'MP__TTR:%.2f',TTR);
DEBUGFILE(FILEPATH,'MP__TTA:%.2f',TTA);
DEBUGFILE(FILEPATH,'MP__TR1:%.2f',TR1);
DEBUGFILE(FILEPATH,'MP__ATR1:%.2f',ATR1);
DEBUGFILE(FILEPATH,'MP__ATR:%.2f',ATR);
只是后台才有问题还是图表也同样出问题?
我没试图表方式。
程序里没几个函数啊,那个函数必须在逐K线模式下运行?
该问题已经查明确实属于编译BUG,问题已经得到修正,下个升级版中会解决,感谢用户提交的问题报告