以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  奇怪问题:多品种后台监控程序,有两行代码会导致程序计算错误  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=30084)

--  作者: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);


--  作者:lichenghu
--  发布时间:2012/10/25 9:08:34
--  
您稍等,我们这边看下。
--  作者:jinzhe
--  发布时间:2012/10/25 9:10:09
--  Grid.ChangeCyc
感觉上是需要全局变量来定义初始变量
--  作者:王锋
--  发布时间:2012/10/25 9:43:20
--  如何在窗口内锁定某个品种

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


--  作者:paulshen
--  发布时间:2012/10/25 11:44:29
--  奇怪问题:多品种后台监控程序,有两行代码会导致程序计算错误

我没试图表方式。


--  作者:paulshen
--  发布时间:2012/10/25 11:44:57
--  奇怪问题:多品种后台监控程序,有两行代码会导致程序计算错误
后台是可以稳定重现的。
--  作者:董小球
--  发布时间:2012/10/25 16:02:41
--  
楼主,你代码的问题主要是因为选择了序列模式,如果选择逐K模式就没有问题了,

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

--  作者:paulshen
--  发布时间:2012/10/25 18:53:28
--  后台程序能允许同一根K线多次交易吗?我要自己控制交易次数。
以下是引用董小球在2012-10-25 16:02:41的发言:
楼主,你代码的问题主要是因为选择了序列模式,如果选择逐K模式就没有问题了,

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

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


--  作者:董小球
--  发布时间:2012/10/26 8:46:27
--  
比如MAX

是不是换成逐K就好了?

--  作者:王锋
--  发布时间:2012/10/26 11:58:01
--  

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