以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  后台程序化不会平仓的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=2530)

--  作者:yongle476
--  发布时间:2010/8/19 10:21:24
--  后台程序化不会平仓的问题

各位老师,我的这个后台自动化交易不会平仓,只会开仓,麻烦各位给修改一下,并说明问题出在什么地方,先行谢过,代码如下:


 

资产:TASSET,LINETHICK0;
可用现金:TCASH,LINETHICK0;
持仓:THOLDING,LINETHICK0;
//准备中间变量
B:=MA(C,5),COLORWHITE;
D:=MA(C,20),COLORGREEN;
S:=CROSS(B, D);
X:=CROSS(D,B);
//建立多头条件
long:=S and time>090020 and time<145200;

 if long then      
    begin          {要先平仓,再开仓}
    tsellshort(long,tholding<0,0,lmt,c),ORDERQUEUE;
    tbuy(long,1,lmt,c),ORDERQUEUE;
    end
 
 //建立空头条件
short:=X and time>090020 and time<145200;
if short then      
   begin          {要先平仓,再开仓}
   tsell(short,tholding>0,0,lmt,c),ORDERQUEUE;
   tbuyshort(short,1,lmt,c),ORDERQUEUE;
   end

  //收盘前平仓
 tsell(time>145500 and tholding>0,0,lmt,c);
 tsellshort(time>145500 and tholding<0,0,lmt,c);


--  作者:董小球
--  发布时间:2010/8/19 13:39:40
--  
即做空又做多一正一负 THOLDING 有可能等于0
--  作者:admin
--  发布时间:2010/8/19 15:04:02
--  

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332

看问题15

 

此外,告诫初级用户,使用DEBUGFILE调试你的代码是最基础的基本要求,连这个都不知道的或者不会用的,不要随便上来就用后台自动交易,以免给你后面的工作带来不快乐。


--  作者:fly
--  发布时间:2010/8/19 16:03:23
--  

楼主的多头空头平仓语句有问题。如:

 

 tsellshort(long,tholding<0,0,lmt,c),ORDERQUEUE;

应改成: tsellshort(long and tholding<0,0,lmt,c),ORDERQUEUE;

另外,如果是模拟的,可能有一分钟延迟,建议把开仓时间改为090100---145200


--  作者:yongle476
--  发布时间:2010/8/19 20:49:23
--  
谢谢fly及各位老师的指点, 原先是tsellshort(tholding<0,0,lmt,c);它不会平,后来才改成上面那样的。按你们说的改了明天再试试。