以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请教2个策略叠加的写法  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=145380)

--  作者:daviwang
--  发布时间:2016/12/28 10:14:41
--  请教2个策略叠加的写法
思路是2个策略叠加,分别用开多条件1,开多条件2等,我想2个策略各开各的仓位,互相不影响,这样写有没有问题?为什么这样运行后总的开仓数量不等于2个策略开仓数量的和,开仓数量比单个策略里开仓数量稍多的那个还少?

VARIABLE:holding1=0,HOLDINGd=0;

开多条件2:=**;

平多条件2:=**;

开空条件2:=**;

平空条件2:=c** ;

多仓止损条件2:=**;

空仓止损条件2:=**;


if   holdingd=0 and 开多条件2=1  THEN BEGIN;

buy(1,1,MARKETR);

holdingd:=1;

end;


if   holdingd=0 and  开空条件2=1 THEN BEGIN;

BUYSHORT(1,1,MARKETR);

holdingd:=-1;

end;


if  holdingd=1 and (平多条件2=1 or 多仓止损条件2=1) THEN BEGIN;

sell(1,1,MARKETR);

HOLDINGd:=0;

end;


if  holdingd=-1 and (平空条件2=1 or 空仓止损条件2=1) THEN BEGIN;

SELLSHORT(1,1,MARKETR);

HOLDINGd:=0;

end;

开多条件1:=**;

平多条件1:=c**;

开空条件1:=c**;

平空条件1:=** ;

多仓止损条件1:=c**;

空仓止损条件1:=c**;


if holding1=0 and 开多条件1=1  THEN BEGIN;

buy(1,1,MARKETR);

Holding1:=1;

end;


if holding1=0 and  开空条件1=1 THEN BEGIN;

BUYSHORT(1,1,MARKETR);

holdingh:=-1;

end;


if  holding1=1 and (平多条件1=1 or 多仓止损条件1=1) THEN BEGIN;

sell(1,1,MARKETR);

Holding1:=0;

end;


if  holding1=-1 and (平空条件1=1 or 空仓止损条件1=1) THEN BEGIN;

SELLSHORT(1,1,MARKETR);

Holding1:=0;

end;





--  作者:jinzhe
--  发布时间:2016/12/28 10:20:47
--  
有多又有空的两个策略加一起能难实现你要的。因为当策略1出开多信号而策略2出开空信号时,是做不到即开多又开空的
--  作者:daviwang
--  发布时间:2016/12/28 10:29:11
--  

那这样写,除了开仓后未平仓前无法反向开仓,还有别的可能存在的冲突吗?


--  作者:jinzhe
--  发布时间:2016/12/28 10:34:04
--  

if   holdingd=0 and 开多条件2=1  THEN BEGIN

这样句子,每句都要加上holding判断

 

if   holdingd=0 and 开多条件2=1 and holding=0  THEN BEGIN

 

毕竟holdingd不是实际的信号持仓,要用holding来限定住实际的信号持仓,根据我上面讲的,一旦出现双向开仓的情况,holdingd的值是会有误差的


--  作者:daviwang
--  发布时间:2016/12/28 10:42:26
--  

开仓时都增加了holding=0,改成如下后,未平仓前就不会再开仓了,最多持有1手。按之前的写法可以同时持仓2手。之前的写法测试结果会更好。

if   holdingd=0 and holding=0 and 开多条件2=1  THEN BEGIN;


--  作者:daviwang
--  发布时间:2016/12/28 10:48:25
--  

您说出现双向开仓的情况,holdingd的值是会有误差 ,您指的双向开仓是1个策略开多,另外1个策略开空吗?这种情况在测试中没有发生。

 

用全局变量holdingd来限定持仓,在1个策略开多,另外1个策略也开多的情况下会出现误差吗?


--  作者:jinzhe
--  发布时间:2016/12/28 11:14:48
--  

开多holding判断写成holding>=0

开空holding判断写成holding<=0


--  作者:daviwang
--  发布时间:2016/12/28 11:19:34
--  

明白,谢谢