以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  止损语句执行不了  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=185199)

--  作者:datuanyuan
--  发布时间:2021/4/14 16:43:52
--  止损语句执行不了
老师:
您好!
在策略测试中,止损语句执行不了,请求帮助解决,只好尾盘平仓。具体代码如下:
//交易系统

IF TIME>=093000 AND TIME<145500 THEN BEGIN
   开多:BUY(开多条件,手数,market);
   开空:BUYSHORT(开空条件,手数,market);       
END
 
IF 多头止损条件 AND HOLDING>0 THEN BEGIN
   多头止损:SELL(1,手数,MARKET);
END 
  
IF 空头止损条件 AND HOLDING<0 THEN BEGIN
           空头止损:SELL(1,手数,MARKET);
        END
        
  IF TIME>=093000 AND TIME<=145500 THEN BEGIN
  
   平多:SELL(平多条件,手数,market);
        
   平空:SELLSHORT(平空条件,手数,market);
END

收盘平多:SELL(time>=145500 AND HOLDING>0,手数,MARKET);
收盘平空:SELLSHORT(time>=145500 AND HOLDING<0,手数,MARKET);

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;


--  作者:FireScript
--  发布时间:2021/4/14 16:49:17
--  
1.IF 空头止损条件 AND HOLDING<0 THEN BEGIN
           空头止损:SELLSHORT(1,手数,MARKET);
        END

空头平仓语句这里写错了。


2.开仓条件需要有限制。如果不这样的话,可能会多次开仓,除非是你本身就需要这样的。这个你自行考虑下。

开多:BUY(开多条件 and holding=0,手数,market);
开空:BUYSHORT(开空条件 and holding=0,手数,market); 


3.TIME>=093000 AND TIME<145500
这个时间不对(如果你时区是默认的没改过的话)。
你看下这个帖子:http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=87464
得加4个小时转换下。


你代码也不是完整 目前是看到这么多问题了就。