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;
那这样写,除了开仓后未平仓前无法反向开仓,还有别的可能存在的冲突吗?
if holdingd=0 and 开多条件2=1 THEN BEGIN
这样句子,每句都要加上holding判断
if holdingd=0 and 开多条件2=1 and holding=0 THEN BEGIN
毕竟holdingd不是实际的信号持仓,要用holding来限定住实际的信号持仓,根据我上面讲的,一旦出现双向开仓的情况,holdingd的值是会有误差的
开仓时都增加了holding=0,改成如下后,未平仓前就不会再开仓了,最多持有1手。按之前的写法可以同时持仓2手。之前的写法测试结果会更好。
if holdingd=0 and holding=0 and 开多条件2=1 THEN BEGIN;
您说出现双向开仓的情况,holdingd的值是会有误差 ,您指的双向开仓是1个策略开多,另外1个策略开空吗?这种情况在测试中没有发生。
用全局变量holdingd来限定持仓,在1个策略开多,另外1个策略也开多的情况下会出现误差吗?
开多holding判断写成holding>=0
开空holding判断写成holding<=0
明白,谢谢