定義的全局變量只能取值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 (不貴!點擊查看價格!)
相關文章
-
沒有相關內容