以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  限制日交易次数为1结果整个2年内交易次数为1,怎么搞的?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=67761)

--  作者:cssfortune
--  发布时间:2014/7/23 17:46:14
--  限制日交易次数为1结果整个2年内交易次数为1,怎么搞的?

随便写了个日内策略,想限制一天内的交易次数为1次(多仓或者空仓,二选一,1次);但是测试了几次发现,整个测试期间2年才1笔交易!

代码如下,求解!!

 

VARIABLE:NUM=0;//统计交易次数用

MA1:MA(C,5);
MA2:MA(C,10);
BUYCOND:=CROSS(MA1,MA2);
BUYSHORTCOND:=CROSS(MA2,MA1);

 

IF TIME=OPENTIME(0) THEN NUM=0;//每天开盘时置0

 

IF TIME>091500 AND TIME<145500 AND HOLDING=0 AND NUM<=1 THEN //NUM<=1限制每天只能开仓1次
BEGIN
  BUY(BUYCOND,1,MARKET);
  NUM=NUM+1;//标记开仓一次
END

 

IF TIME>091500 AND TIME<145500 AND HOLDING=0 AND NUM<=1 THEN
BEGIN
  BUYSHORT(BUYSHORTCOND,1,MARKET);
  NUM=NUM+1;//标记开仓一次
END

IF TIME>=145500 THEN EXIT;//最后5分钟平仓


--  作者:cssfortune
--  发布时间:2014/7/23 21:59:14
--  

察觉了2个问题:

1、不能用NUM<=1来表达,而要用NUM<CS,INPUT:CS(1,1,2,1);

但是为啥???NUM不能直接和常数进行比较?参数CS不是视为常数?

2、语法错误;NUM赋值语句掉了冒号;

 


--  作者:jinzhe
--  发布时间:2014/7/24 8:41:53
--  

IF TIME>=145500 THEN EXIT;//最后5分钟平仓

 

这个不叫最后5分钟平仓

把这句删了,添加:

if time<=145500 then begin

    sell(1,0,market);

    sellshort(1,0,market);

end

 

if time=closetime(0) then num:=0;