以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 -- 明白,谢谢 |