以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  不明原因的全局变量问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=137168)

--  作者:rockyan
--  发布时间:2016/7/27 14:40:24
--  不明原因的全局变量问题

问题写在下面了,原程序比较复杂,套用了系统策略,尽量简化了,问题性质一样,但是找不出原因

求解答

 

MA1:MA(CLOSE,5);
MA2:MA(CLOSE,15);

//交易条件

pk:=CROSS(MA1,MA2);//开多平空条件
pd:=CROSS(MA2,MA1);//开空平多条件
kd:=pk;
kk:=pd;
//交易系统


//VARIABLE:ss0=0;
bddw:=0.05;//mindiff,linethick0;
chsh:=1000;
date1:=1160721;
bardate1:barslast(date=date1),linethick0;
bzj:=c*chsh*0.07;
bj:=200000;

VARIABLE:hdto=0;
VARIABLE:hd0=0;
VARIABLE:hdk=0;
u00:hdto,linethick0;//如果下面红色的语句存在,全局变量hdto,读不出数
//u11:hd0,linethick0;
hdz:=(hd0+hdK)*chsh;
hdto:=hdto+hdz;
//u01:hdz,linethick0;
//u12:hdto,linethick0;
at:asset-hdto,linethick0;//减去累计的可能并不存在的盈利
setc:at-ref(at,bardate1),NOAXIS;
hd0:=0;hdk:=0;

hh0:= holding;
 
   ss:=floor((bj+setc)/bzj);
  手数:=ss;
 
xs0:=bddw*12;    
if pk  and hh0<0 then begin
  平空:SELLSHORT(PK,holding,limitr,C-xs0),IGNORECHECKPRICE;
    hd0:=xs0*abs(hh0);//统计可能不存在的盈利(用于回归Asset在thisclose状态下的数值)
 // u1:lycs,linethick0; }
end 
 // u0:lycs,linethick0;
if pd and hh0>0 then begin
   平多:SELL(PD,holding,LIMITR,c+xs0),IGNORECHECKPRICE; 
   hd0:=xs0*abs(hh0);

   //u2:lycs ,linethick0;
end  
 // u3:lycs,linethick0;     
 if date=1160722 then 手数:=1;
//if date>=date1 then begin

开多:BUY(KD and 手数>0 and state<1,手数,limit,C-xs0),IGNORECHECKPRICE;
hd0:=hd0+xs0*abs(手数);//这是问题由头,如果把这句和下面红色的语句去掉,一切正常,加了,就不行  
   // u4:lycs,linethick0;              
开空:BUYSHORT(KK  and 手数>0 and state>-1 , 手数,limit,C+xs0),IGNORECHECKPRICE;
hd0:=hd0+xs0*abs(手数);

 HH:=HOLDING;


--  作者:jinzhe
--  发布时间:2016/7/27 14:53:10
--  
最后两句hd0有区别吗?
--  作者:rockyan
--  发布时间:2016/7/27 15:06:24
--  

明白问题所在了,谢谢


--  作者:jinzhe
--  发布时间:2016/7/27 15:21:46
--  
嗯,用户调试出来的结果是什么?