欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 定义的全局变量只能取值1或0,但DEBUGFILE显示值成了-1,请问什么原因务请回复!

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有5517人关注过本帖平板打印复制链接

主题:定义的全局变量只能取值1或0,但DEBUGFILE显示值成了-1,请问什么原因务请回复!

帅哥哟,离线,有人找我吗?
ydian
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:49 积分:250 威望:0 精华:0 注册:2013/2/28 21:31:38
  发帖心情 Post By:2013/6/27 16:22:32 [只看该作者]

以下是引用王锋在2013/6/26 18:14:55的发言:

建议你将相关的测试代码一并发出来,这样我们才能帮你找出问题

再次确认今天的测试结果,日志记录输出的变量值仍然为-1。下面是随手摘录的日志片断和公式完整代码(实际上我还有同一台电脑和不同电脑的其他公式使用了一样的处理并作了日志记录,日志记录变量值也是-1,需要的话可以通知我远程):

日志片断如下:

2013-06-27 14:55:15.386    IF外IFPKKD=-1
2013-06-27 14:55:15.386    IF外IFPDKK=-1
2013-06-27 14:55:15.401    IF外CALLSTOCKIF00VTHIGH=2126.60
2013-06-27 14:55:15.401    IF外CALLSTOCKIF00VTLOW=2111.60
2013-06-27 14:55:15.401    IF外DYNAINFO(207)145516.00000
2013-06-27 14:55:20.355    IF外HPPOINTIF=2185.00
2013-06-27 14:55:20.355    IF外LPPOINTIF=1998.80
2013-06-27 14:55:20.370    IF外IFPKKD=-1
2013-06-27 14:55:20.370    IF外IFPDKK=-1
2013-06-27 14:55:20.370    IF外CALLSTOCKIF00VTHIGH=2126.60
2013-06-27 14:55:20.370    IF外CALLSTOCKIF00VTLOW=2111.60
2013-06-27 14:55:20.370    IF外DYNAINFO(207)145521.00000
2013-06-27 14:55:28.370    IF外HPPOINTIF=2185.00
2013-06-27 14:55:28.370    IF外LPPOINTIF=1998.80

 

完整公式代码如下:


RUNMODE:1;
INPUT:offset(2,1,40,1);
INPUT:initialasset(10000000,1000000,100000000,1000000);
GLOBALVARIABLE:AccountID='803918';  //指定交易账户

ACCOUNTONLINE:=TACCOUNT2(3,'803918')>0;
IF ACCOUNTONLINE=0 THEN DEBUGFILE('D:\HLPYIF_OFFLINE.TXT','803918不在线.0f',0);
IF ACCOUNTONLINE=0 THEN EXIT;  //当帐户不在线时停止执行后面语句

TRADETIME:=(DYNAINFO(207)>091502) AND (DYNAINFO(207)<151458); //限定交易时间内交易
IF TRADETIME<>1 THEN EXIT;

//GLOBALVARIABLE:IFBUYHOLDHY=1;
//GLOBALVARIABLE:IFSELLHOLDHY=1;
GLOBALVARIABLE:IFPKKD=1;
GLOBALVARIABLE:IFPDKK=1;

MULTIPIF:=300;

LOTSIF:=INTPART(initialasset/CALLSTOCK('IF00',vtCLOSE,5,-1)/MULTIPIF/9);

 

//IF (DYNAINFO(207)>=091500 AND DYNAINFO(207)<091600) OR (DYNAINFO(207)>=101500 AND DYNAINFO(207)<101600) OR (DYNAINFO(207)>=111500 AND DYNAINFO(207)<111600) OR (DYNAINFO(207)>=131500 AND DYNAINFO(207)<131600) OR (DYNAINFO(207)>=141500 AND DYNAINFO(207)<141600) THEN EXIT;
//错开换月时间

//IF交易指令
HPPOINTIF:=HHV(CALLSTOCK('IF00',vtHIGH,5,-offset),6);//高点
LPPOINTIF:=LLV(CALLSTOCK('IF00',vtLOW,5,-offset),6);//低点
PrebuyholdIF:=TBUYHOLDINGEX(AccountID,'IF00',1);//持有当前连续合约的多仓数
PresellholdIF:=TSELLHOLDINGEX(AccountID,'IF00',1); //持有当前连续合约的空仓数
DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF外HPPOINTIF=%.2f',HPPOINTIF);
DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF外LPPOINTIF=%.2f',LPPOINTIF);
DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF外IFPKKD=%.0f',IFPKKD);
DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF外IFPDKK=%.0f',IFPDKK);
DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF外CALLSTOCKIF00VTHIGH=%.2f',CALLSTOCK('IF00',vtHIGH,5,0));
DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF外CALLSTOCKIF00VTLOW=%.2f',CALLSTOCK('IF00',vtLOW,5,0));
DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF外DYNAINFO(207)%.5f',DYNAINFO(207));

//IF交易触发条件
HBIF:=CALLSTOCK('IF00',vtHIGH,5,0)>HPPOINTIF;
LBIF:=CALLSTOCK('IF00',vtLOW,5,0)<LPPOINTIF;
//IF开始交易/涨跌停板未处理
IF HBIF AND IFPKKD=1  THEN //平空开多
BEGIN
  DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF内CALLSTOCKIF00VTHIGH=%.2f',CALLSTOCK('IF00',vtHIGH,5,0));
  DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF内HPPOINTIF=%.2f',HPPOINTIF);
  DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF内LPPOINTIF=%.2f',LPPOINTIF);
  DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF内IFPKKD=%.0f',IFPKKD);
  DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF内IFPDKK=%.0f',IFPDKK);
  DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF内DYNAINFO(207)%.5f',DYNAINFO(207));
  SENDMAIL(1,'yangdian@simpleasset.com;ztb2@hotmail.com;anniesun@hotmail.com','清华同方台式机金字塔公式HLPYIF公式语句定义的IF交易指令预警邮件','预警时间:'&NUMTOSTR(DYNAINFO(207),0)&'  品种:IF'&'  交易动作:平空开多'&'  预警价格:'&NUMTOSTR(CALLSTOCK('IF00',vtHIGH,5,0),2));
  IFPKKD:=0;//已发指令记录,防固定轮询追单
  IF PresellholdIF>0 THEN
  TSELLSHORT(1,PresellholdIF,MKT,0,0,AccountID,'IF00');  //平空,平空手数取此前持有的空单手数
  IF PrebuyholdIF=0 THEN
  TBUY(1,LOTSIF,MKT,0,0,AccountID,'IF00');//开多,开多手数根据最新价格计算
END
  
IF LBIF AND IFPDKK=1 THEN //平多开空,第二个条件防固定轮询追单
BEGIN
  DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF内CALLSTOCKIF00VTLOW=%.2f',CALLSTOCK('IF00',vtLOW,5,0));
  DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF内HPPOINTIF=%.2f',HPPOINTIF);
  DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF内LPPOINTIF=%.2f',LPPOINTIF);
  DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF内IFPKKD=%.0f',IFPKKD);
  DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF内IFPDKK=%.0f',IFPDKK);
  DEBUGFILE('D:\HLPYIFRECORD\HLPYIF.TXT','IF内DYNAINFO(207)%.5f',DYNAINFO(207));
  SENDMAIL(1,'yangdian@simpleasset.com;ztb2@hotmail.com;anniesun@hotmail.com','清华同方台式机金字塔公式HLPYIF公式语句定义的IF交易指令预警邮件','预警时间:'&NUMTOSTR(DYNAINFO(207),0)&'  品种:IF'&'  交易动作:平多开空'&'  预警价格:'&NUMTOSTR(CALLSTOCK('IF00',vtLOW,5,0),2));
  IFPDKK:=0;
  IF PrebuyholdIF>0 THEN
  TSELL(1,PrebuyholdIF,MKT,0,0,AccountID,'IF00');   //平多,平多手数取此前持有的多单手数
  IF PresellholdIF=0 THEN
  TBUYSHORT(1,LOTSIF,MKT,0,0,AccountID,'IF00');     //开空,开空手数根据最新净资产和价格计算
END
/////////////////////////////////IF公式段结束/////////////////////////////////////////////////


 回到顶部
总数 20 1 2 下一页