定义的全局变量只能取值1或0,但DEBUGFILE显示值成了-1,请问什么原因务请回复! [金字塔]
- 咨询内容:
在后台程式化(固定时间间隔,5秒轮询一次)公式语句中定义了两个变量:
GLOBALVARIABLE:IFPKKD=1;
GLOBALVARIABLE:IFPDKK=1;并设定,交易指令发生以后,上面对应的变量取值为0。也就是说,上面两个全局变量按道理取值只能是1或0,但是DEBUGFILE输出的日志记录显示这两个变量是-1(实际情况是有时候为1或0,大部情况是-1),请问这是为什么?务请金字塔相关人员有个准确回复!
下面是全部公式语句:
//RUNMODE:0;
INPUT:offset(2,1,40,1);
INPUT:initialasset(10000000,1000000,100000000,1000000);
GLOBALVARIABLE:AccountID='807697'; //指定交易账户ACCOUNTONLINE:=TACCOUNT2(3,'807697')>0;
IF ACCOUNTONLINE=0 THEN DEBUGFILE('D:\HLPYIF_OFFLINE.TXT','807697不在线.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公式段结束///////////////////////////////////////////////// - 金字塔客服:
补充:使用的是序列模式
- 用户回复:
明日开盘后测试
- 网友回复:
后台怎么用 GLOBALVARIABLE?这个函数是图表使用的。
后台使用EXTGBDATASET EXTGBDATA
- 网友回复:
以下是引用RogarZ在2013/6/24 16:13:39的发言:
后台怎么用 GLOBALVARIABLE?这个函数是图表使用的。
后台使用EXTGBDATASET EXTGBDATA
EXTGBDATASET EXTGBDATA全局变量将读变量值存在硬盘,类似于注册表变量,关机之后变量值仍然存在,如果不同公式用同一变量名,将发生紊乱。但没有在你们的任何资料上看到过后台只能用EXTGBDATASET EXTGBDATA,并且参加过数次你们在上海的培训,专门与培训老师作过交流,专门请教过培训老师GLOBALVARIBLE的用法,专门请教过GLOBALVARIBLE用于后台程序化交易的问题。如果真的后台不能用GLOBALVARIBLE,请金字塔方面给出一个权威的答复或说明,并建议在手册和软件自带的函数说明里明确。
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容