Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共11 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:奇怪问题:多品种后台监控程序,有两行代码会导致程序计算错误

1楼
paulshen 发表于:2012/10/24 19:56:11

下面的代码,运行在后序列模式下,用于监控多个品种。运行时,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);

2楼
lichenghu 发表于:2012/10/25 9:08:34
您稍等,我们这边看下。
3楼
jinzhe 发表于:2012/10/25 9:10:09
感觉上是需要全局变量来定义初始变量
4楼
王锋 发表于:2012/10/25 9:43:20

只是后台才有问题还是图表也同样出问题?

5楼
paulshen 发表于:2012/10/25 11:44:29

我没试图表方式。

6楼
paulshen 发表于:2012/10/25 11:44:57
后台是可以稳定重现的。
7楼
董小球 发表于:2012/10/25 16:02:41
楼主,你代码的问题主要是因为选择了序列模式,如果选择逐K模式就没有问题了,

你的代码里有一些统计性质的函数,必须要在逐K模式下才能正常运行。
8楼
paulshen 发表于:2012/10/25 18:53:28
以下是引用董小球在2012-10-25 16:02:41的发言:
楼主,你代码的问题主要是因为选择了序列模式,如果选择逐K模式就没有问题了,

你的代码里有一些统计性质的函数,必须要在逐K模式下才能正常运行。

程序里没几个函数啊,那个函数必须在逐K线模式下运行?

9楼
董小球 发表于:2012/10/26 8:46:27
比如MAX

是不是换成逐K就好了?
10楼
王锋 发表于:2012/10/26 11:58:01

该问题已经查明确实属于编译BUG,问题已经得到修正,下个升级版中会解决,感谢用户提交的问题报告

共11 条记录, 每页显示 10 条, 页签: [1] [2]


Powered By Dvbbs Version 8.3.0
Processed in 0.03223 s, 2 queries.