以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  序列模式下degbugfile有问题?  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=4671)

--  作者:paulshen
--  发布时间:2010/12/31 21:07:07
--  序列模式下degbugfile有问题?

我的公式在序列模式下,交易正常,就是debugfile输出的数据不对。下面是用来输出的公式:

 

FILEPATH:=\'D:\\DEBUGFILE\\TTRLITEzS.TXT\'; DEBUGFILE(FILEPATH,\'=======\',0);

DEBUGFILE(FILEPATH,\'Time:\'&numtostr(Time,3)&\' cTime:\'&numtostr(currentTIME,3),0);

DEBUGFILE(FILEPATH,\'O:\'& numtostr(o,1)&\' H:\'&numtostr(h,1)&\' L:\'&numtostr(L,1)&\' C:\'&numtostr(C,1)&\' DY28:\'&numtostr(dynainfo(28),1)&\' DY34:\'&numtostr(dynainfo(34),1),0);

DEBUGFILE(FILEPATH,\'HV12:\'&numtostr(HV12,2)&\' LV12:\'&numtostr(LV12,2)&\' THV2:\'&numtostr(THV2,2)&\' TLV2:\'&numtostr(TLV2,2)&\' XHV:\'&numtostr(XHV,2)&\' XLV:\'&numtostr(XLV,2),0);

DEBUGFILE(FILEPATH,\'SPK:\'&numtostr(SPK,1)&\' BPK:\'&numtostr(BPK,1)&\' TSubmit(0):\'&numtostr(TSUBMIT(0),2),0);

DEBUGFILE(FILEPATH,\'LSL:\'&numtostr(LSL,1)&\' SSL:\'&numtostr(SSL,1)&\' SL:\'&numtostr(SL,1)&\' MS:\'&numtostr(MS,1)&\' SL:\'&numtostr(SL,1),0);

DEBUGFILE(FILEPATH,\'TH:\'&numtostr(THOLDING,0)&\' TodayTH:\'&numtostr(todayHOLDING,0)&\' TH2:\'&numtostr(THOLDING2,0)&\' TV2B:\'&numtostr(EXTGBDATA(\'TV2B\'),0),0);

DEBUGFILE(FILEPATH,\'TAP:\'&numtostr(TAVGENTERPRICE,1)&\' TEP:\'&numtostr(TENTERPRICE,1),0);

DEBUGFILE(FILEPATH,\'cXHV:\'&numtostr(cXHV,0)&\' cXLV:\'&numtostr(cXLV,0)&\' TDAMT:\'&numtostr(TDAMT,0)&\' PL:\'&numtostr(PL,2)&\' PS:\'&numtostr(PL,2)&\' TD:\'&numtostr(TD,0)&\' OAMT:\'&numtostr(OAMT,0),0);

DEBUGFILE(FILEPATH,\'WP:\'&numtostr(WP,0)&\' MATR:\'&numtostr(MATR,1)&\' OP_S:\'&numtostr(OP_S,0)&\' OP_L:\'&numtostr(OP_L,0)&\' PR:\'&numtostr(PR,1)&\' OA:\'&numtostr(OA,0),0);

 

在周期模式下,可正常输出下面内容:

 

2010-12-31 20:56:21.627 =======

2010-12-31 20:56:21.627 Time:151500.000 cTime:205621.000

2010-12-31 20:56:21.631 O:3159.2 H:3159.4 L:3155.0 C:3157.0 DY28:3156.8 DY34:3157.0

2010-12-31 20:56:21.631 HV12:3161.00 LV12:3125.80 THV2:3113.32 TLV2:3144.68 XHV:3131.71 XLV:3155.09

2010-12-31 20:56:21.639 SPK:0.0 BPK:0.0 TSubmit(0):0.00

2010-12-31 20:56:21.639 LSL:0.0 SSL:0.0 SL:1.0 MS:9.0 SL:1.0

2010-12-31 20:56:21.639 TH:0 TodayTH:0 TH2:0 TV2B:0

2010-12-31 20:56:21.643 TAP:0.0 TEP:3157.2

2010-12-31 20:56:21.643 cXHV:0 cXLV:1 TDAMT:0 PL:1.00 PS:1.00 TD:0 OAMT:3

2010-12-31 20:56:21.643 WP:1 MATR:5.9 OP_S:1 OP_L:0 PR:1.5 OA:3

 

而在序列模式下,只能输出下面几行,而且LSL和SSL为空值:

 

2010-12-31 20:56:36.570 =======

2010-12-31 20:56:36.726 LSL:-1.$ SSL:-1.$ SL:1.0 MS:9.0 SL:1.0

2010-12-31 20:56:36.726 TH:0 TodayTH:0 TH2:0 TV2B:0

2010-12-31 20:56:36.730 TAP:0.0 TEP:3157.2

 

请帮忙看看是什么问题。

 

另外,序列模式实盘能正常使用吗?

 

[此贴子已经被作者于2010-12-31 21:12:54编辑过]

--  作者:阿火
--  发布时间:2010/12/31 21:34:52
--  
你好像少了点东西 %.0f  (表示小数点位数),加进去试试看
--  作者:paulshen
--  发布时间:2010/12/31 21:55:43
--  
这种用法是不需要加%.0f的呀。
--  作者:admin
--  发布时间:2010/12/31 21:59:59
--  

好像公式代码不全,楼主可否给出一个可以在我们这边复现故障的代码?


--  作者:paulshen
--  发布时间:2010/12/31 22:27:29
--  

感谢这么及时的回复!

 

我看看能否贴全公式。最主要的是在序列下一切都和周期一下一样正常工作,仅仅是debugfile有问题。


--  作者:z7c9
--  发布时间:2011/1/1 19:22:08
--  
确实有问题,msgout和debugfile在序列模式下不能正常输出数据。
--  作者:paulshen
--  发布时间:2011/1/4 12:21:03
--  BUG: debugfile在序列模式下输出不正常

贴一个能运行并重现问题的公式:

//用于后台交易的优化
INPUT:AP(3,1,20,1);
INPUT:SL(9,5,30,1);
INPUT:tOA(1,1,300,1);

//时间条件
OT:=CURRENTTIME>91500;//Cannot use \'=91500\' OPENTIME(1);

//仓位条件
OAT:=tOA;
FILEPATH:=\'D:\\DEBUGFILE\\TSTS-TestDebugFile.TXT\';
//------------------------------------------------------------
//技术指标=======================================================

//适应周期和序列两种模式
RUNMODE:1;
if not(islastbar)then exit;

D:=datacount;
variable:I=0,J=0,K=0,M=0,N=0,Q=0;
variable:STL[D]=0,STH[D]=0;

for I=5 to datacount do begin
 STHH[I]:=HIGH[I-1];
 STLL[I]:=LOW[I-1];
end

 

{开平仓条件}
BO:=cross(high,STHH);
SO:=cross(STLL,low);

{平仓条件}
BC:=cross(high,STHh);
SC:=cross(STLL,low);

//初始化仓位全局变量
if date<>ref(date,1) and islastbar then begin
 EXTGBDATASET(\'TSTS\',Tholding);
end

//--------------------交易指令-----------------------------
SPR:=C-AP*MINDIFF;//卖出价
BPR:=C+AP*MINDIFF;//买入价
SPR:=if(SPR<LOW,C,SPR);
BPR:=if(BPR>HIGH,C,BPR);
 

//多单止损 - 初始止损信号
AVG:=tAVGENTERPRICE;
SLL:=AVG-SL;
S_SL:=if(AVG=0,0,C<=SLL);

//平多开空

//空单止损 - 初始止损信号
AVG:=tAVGENTERPRICE;
SLH:=AVG+SL;
B_SL:=if(AVG=0,0,C>=SLH);

DEBUGFILE(FILEPATH,\'=======\',0);
DEBUGFILE(FILEPATH,\'Time:\'&numtostr(Time,3)&\' cTime:\'&numtostr(currentTIME,3),0);
DEBUGFILE(FILEPATH,\'O:\'& numtostr(o,1)&\' H:\'&numtostr(h,1)&\' L:\'&numtostr(L,1)&\' C:\'&numtostr(C,1),0);
DEBUGFILE(FILEPATH,\'BO:\'&numtostr(BO,1)&\' BC:\'&numtostr(BC,1)&\' SO:\'&numtostr(SO,1)&\' SC:\'&numtostr(SC,1),0);
DEBUGFILE(FILEPATH,\'TH:\'&numtostr(THOLDING,1)&\' TodayTH:\'&numtostr(todayHOLDING,1)&\' TH2:\'&numtostr(THOLDING2,1)&\' TSTS:\'&numtostr(EXTGBDATA(\'TSTS\'),0),0);
DEBUGFILE(FILEPATH,\'STHH:\'&numtostr(STHH,2)&\' STLL:\'&numtostr(STLL,2)&\' SLH:\'&numtostr(SLH,2)&\' SLL:\'&numtostr(SLL,2)&\' datacount:\'&numtostr(datacount,0),0);
DEBUGFILE(FILEPATH,\'S_SL:\'&numtostr(S_SL,1)&\' B_SL:\'&numtostr(B_SL,1)&\' OAT:\'&numtostr(OAT,0)&\' BP:\'&numtostr(barpos,0)&\' OT:\'&numtostr(OT,0),0);

 周期模式输出:

2011-01-04 12:13:49.327    =======
2011-01-04 12:13:49.327    Time:113000.000 cTime:121349.000
2011-01-04 12:13:49.327    O:3190.6 H:3199.4 L:3190.2 C:3199.2
2011-01-04 12:13:49.327    BO:1.0 BC:1.0 SO:0.0 SC:0.0
2011-01-04 12:13:49.327    TH:0.0 TodayTH:0.0 TH2:0.0 TSTS:0
2011-01-04 12:13:49.327    STHH:3195.60 STLL:3188.60 SLH:9.00 SLL:-9.00 datacount:95
2011-01-04 12:13:49.327    S_SL:0.0 B_SL:0.0 OAT:1 BP:95 OT:1

序列模式:

2011-01-04 12:15:26.717    =======
2011-01-04 12:15:26.733    TH:0.0 TodayTH:0.0 TH2:0.0 TSTS:1

 

这个问题其实是很容易重现的。不明白金字塔的朋友为什么就重现不了,难道你们根本就不做测试,完全依赖用户去测?

[此贴子已经被作者于2011-1-4 12:21:53编辑过]

--  作者:admin
--  发布时间:2011/1/4 12:23:43
--  
不是金字塔不愿意测试,而是有些问题只是在特定的情况出现,这种情况只有发现的用户才知道怎么能够复现
--  作者:paulshen
--  发布时间:2011/1/4 12:28:56
--  BUG:正式版断线再连后提示用户名和密码错

嗯,不过我用了两天序列模式,就发现了4个很明显的BUG。


--  作者:paulshen
--  发布时间:2011/1/6 11:24:56
--  

这个问题希望能尽快解决并发布一个更新。目前在序列模式下,调试起来很困难。

 

还有另外两个问题(在群里报告过了),也希望能尽快发布一个更新:

1. 公式不能同时在序列和周期下跑(运行文档里的例子)

2. 序列下,较多序列数据时,出现内存溢出

 

谢谢!

[此贴子已经被作者于2011-1-6 11:25:12编辑过]