一个模型里面有两个开、平仓条件,
比如:开仓条件1,平仓条件1
开仓条件2,平仓条件2
如何保证“开仓条件1 ”只会让“平仓条件1 ”来平仓,不会让平仓条件2来平仓?因为有时平仓条件1没达到,平仓条件2先达到了。
variable:n=0,m=0;
if 开仓条件1 and n=0 then begin
开仓语句;
n:=1;
end
if 平仓条件1 and n=1 and m<>1 then begin
平仓语句;
n:=0;
end
if 开仓条件2 and m=0 then begin
开仓语句;
m:=1;
end
if 平仓条件2 and m=1 and n<>1 then begin
平仓语句;
m:=0;
end
帮我看看下面的,当DMI 里ADX上升时,用SAR开、平仓;当ADX下降时用BOLL开、平仓。现在是想SAR开仓的,用SAR平;BOLL开仓的用BOLL 平。
ADXXS:=ADX>REF(ADX,1);//A.当ADX 上升时:
ADXXX:=ADX<=REF(ADX,1);//B.当ADX下降或走平时
KDA1:=C>SAR1 AND ADXXS;//开多,SAR 在30分钟K线下方。
KKA1:=C<SAR1 AND ADXXS;//开空,SAR 在30分钟K线上方。
variable:n=0,m=0;
IF N=0 THEN BEGIN
IF KDA1 AND HOLDING=0 THEN
BEGIN
开多1:BUY(HOLDING=0,SS,MARKETR),orderqueue;
END
IF KKA1 AND HOLDING=0 THEN
BEGIN
开空1:BUYSHORT(HOLDING=0,SS,MARKETR),orderqueue;
END
n:=1;
END
PDA1:=CROSS(SAR1,C)&&REF(KDA1,ENTERBARS)=1;//平多,当价格从上向下穿(小等于)SAR时
PKA1:=CROSS(C,SAR1)&&REF(KKA1,ENTERBARS)=1;//平空,当价格从下向上穿(大等于)SAR时。
IF N=1 AND M<>1 THEN BEGIN
IF PDA1 AND HOLDING>0 THEN
BEGIN
平多1:SELL(HOLDING>0,SS,MARKETR),orderqueue;
END
IF PKA1 AND HOLDING<0 THEN
BEGIN
平空1: SELLSHORT(HOLDING<0,SS,MARKETR),orderqueue;
END
n:=0;
END
KDB1:=L<LOWER && ADXXX;// 开多条件: 价格触及boll下轨,且ADX下降时买入
KKB1:=H>UPPER && ADXXX;// 开空条件: 价格触及boll上轨,且ADX下降时卖出
IF M:=0 THEN BEGIN
IF KDB1 AND HOLDING<=0 THEN
BEGIN
平空2:SELLSHORT(HOLDING<0,SS2,MARKETR),orderqueue;
开多2:BUY(HOLDING=0,SS2,MARKETR),orderqueue;
END
IF KKB1 AND HOLDING>=0 THEN
BEGIN
平多2:SELL(HOLDING>0,SS2,MARKETR),orderqueue;
开空2:BUYSHORT(HOLDING=0,SS2,MARKETR),orderqueue;
END
m:=1;
END
IF PKA1 AND HOLDING<0 THEN
BEGIN
平空1: SELLSHORT(HOLDING<0,SS,MARKETR),orderqueue;
END
n:=0;
END
这里两个的END是干什么用的?
我的模型里是两个开仓条件,三个平仓条件。平仓2,平仓3执行不对,帮我改改。谢了!
ADXXS:=ADX>REF(ADX,1);//A.当ADX 上升时:
ADXXX:=ADX<REF(ADX,1);//B.当ADX下降或走平时
KDA1:=C>SAR1 AND ADXXS;//开多,SAR 在K线下方。
KKA1:=C<SAR1 AND ADXXS;//开空,SAR 在K线上方。
PDA1:=CROSS(SAR1,C)&&REF(KDA1,ENTERBARS)=1;//平多,当价格从上向下穿SAR时
PKA1:=CROSS(C,SAR1)&&REF(KKA1,ENTERBARS)=1;//平空,当价格从下向上穿SAR时。
variable:n=0,m=0;
IF N=0 THEN BEGIN
开多1:BUY(KDA1 AND HOLDING=0,SS,MARKETR),orderqueue;
开空1:BUYSHORT(KKA1 AND HOLDING=0,SS,MARKETR),orderqueue;
n:=1;
END
IF N=1 AND M<>1 THEN BEGIN
平多1:SELL(PDA1 AND HOLDING>0,SS,MARKETR),orderqueue;
平空1: SELLSHORT(PKA1 AND HOLDING<0,SS,MARKETR),orderqueue;
n:=0;
END
KDB1:=L<LOWER && ADXXX;// 开多条件: 价格触及下轨买入
KKB1:=H>UPPER && ADXXX;// 开空条件: 价格触及上轨卖出
PDB1:=(H>UPPER||C<ENTERPRICE-12) AND REF(KDB1,ENTERBARS)=1;// 平多条件 ( 1).如买入后价格一直上行触及BOLL上轨,卖出平仓。并反向开空仓。
// (2).如买入后没触及上轨就又返身向下,则触及买入价-12点平仓。
PKB1:=(L<LOWER||C>ENTERPRICE+12) AND REF(KKB1,ENTERBARS)=1;//平空条件 ( 1).如卖出入后价格一直下行触及BOLL下轨,买入平仓。并反向开多仓。
// (2).如卖出后没触及下轨就又返身向上,则触及卖出价+12点平仓。
IF M:=0 THEN BEGIN
开空2:BUYSHORT(KKB1 AND HOLDING=0,SS2,MARKETR),orderqueue;
开多2:BUY(KDB1 AND HOLDING=0,SS2,MARKETR),orderqueue;
M:=1;
END
IF M:=1 AND N<>1 THEN BEGIN
平多2:SELL(KKB1 AND HOLDING>0,SS2,MARKETR),orderqueue;
平空2:SELLSHORT(KDB1 AND HOLDING<0,SS2,MARKETR),orderqueue;
平多3:SELL(PDB1 AND HOLDING>0,ss2,MARKETR),orderqueue;
平空3:SELLSHORT(PKB1 AND HOLDING<0,ss2,MARKETR),orderqueue;
m:=0;
END