请教老师,对应条件开,平仓怎么写? 多,空仓并存;我做的只会开空,不会开多,请帮忙改一下,谢谢!
variable:b1=0,b2=0,b3=0,b4=0,b5=0,s1=0,s2=0,s3=0,s4=0,s5=0;
M7:=eMA(C,30);
M6:=eMA(C,20);
M5:=eMA(C,10);
M4:=eMA(C,5);
max74:max(max(max(m4,m5),m6),m7),COLORMAGENTA,linethick2;
j1:ema(c,3);
min74:min(min(min(m4,m5),m6),m7),COLORred,linethick2;
kcw:=1;
//||开多1*********************************||
if b1=0&&j1>min74 then
begin
b1:=1;
buy(1,kcw,thisclose);
end
//||平多1*********************************||
if HOLDING<>0&&b1=1&&j1<min74 then
begin
SELL(1,kcw,THISCLOSE);
b1:=0;
end
//||开空1*********************************||
if s1=0&&j1<min74 then
begin
s1:=1;
BUYSHORT(1,kcw,thisclose);
end
//||平空1*********************************||
if HOLDING<>0&&s1=1&&j1>min74 then
begin
SELLSHORT(1,kcw,THISCLOSE);
s1:=0;
end
//||开多2*********************************||
if b2=0&&j1>max74 then
begin
b2:=2;
buy(1,kcw,thisclose);
end
//||平多2*********************************||
if HOLDING<>0&&b2=2&&j1<max74 then
begin
SELL(1,kcw,THISCLOSE);
b2:=0;
end
//||开空2*********************************||
if s2=0&&j1<max74 then
begin
s2:=2;
BUYSHORT(1,kcw,thisclose);
end
//||平空2*********************************||
if HOLDING<>0&&s2=2&&j1>max74 then
begin
SELLSHORT(1,kcw,THISCLOSE);
s2:=0;
end
if b1=0&&j1>min74 then
begin
b1:=1;
buy(1,kcw,thisclose);
end
开仓的修改为:
if b1=0 and j1>min74 and holding=0 then
begin
b1:=1;
buy(1,kcw,thisclose);
end
即添加holding=0 这个条件,开多开空都要加
平仓的修改为:
if HOLDING<0 and s2=2 and j1>max74 then
begin
SELLSHORT(1,kcw,THISCLOSE);
s2:=0;
end
if HOLDING>0 and b1=1 and j1<min74 then
begin
SELL(1,kcw,THISCLOSE);
b1:=0;
end
即平多的改为holding>0 ,平空的改为holding<0
谢谢回复!但是这样只会开1单,应该要开2单同方向的才行。
改过了,但只会开一个方向,要么开多,要只开空。不知什么原因?
variable:b1=0,b2=0,b3=0,b4=0,b5=0,s1=0,s2=0,s3=0,s4=0,s5=0;
M7:=eMA(C,40);
M6:=eMA(C,30);
M5:=eMA(C,20);
M4:=eMA(C,10);
max74:max(max(max(m4,m5),m6),m7),COLORMAGENTA,linethick2;
j1:ema(c,3);
min74:min(min(min(m4,m5),m6),m7),COLORred,linethick2;
kcw:=1;
//||开多1*********************************||
if holding<=1&&b1=0&&j1>min74 then
begin
b1:=1;
buy(1,kcw,thisclose);
end
//||平多1*********************************||
if HOLDING>0&&b1=1&&j1<min74 then
begin
SELL(1,kcw,THISCLOSE);
b1:=0;
end
//||开空1*********************************||
if holding>=-1&&s1=0&&j1<min74 then
begin
s1:=1;
BUYSHORT(1,kcw,thisclose);
end
//||平空1*********************************||
if HOLDING<0&&s1=1&&j1>min74 then
begin
SELLSHORT(1,kcw,THISCLOSE);
s1:=0;
end
//||开多2*********************************||
if holding<=1&&b2=0&&j1>max74 then
begin
b2:=2;
buy(1,kcw,thisclose);
end
//||平多2*********************************||
if HOLDING>0&&b2=2&&j1<max74 then
begin
SELL(1,kcw,THISCLOSE);
b2:=0;
end
//||开空2*********************************||
if holding>=-1&&s2=0&&j1<max74 then
begin
s2:=2;
BUYSHORT(1,kcw,thisclose);
end
//||平空2*********************************||
if HOLDING<0&&s2=2&&j1>max74 then
begin
SELLSHORT(1,kcw,THISCLOSE);
s2:=0;
end
持仓:holding,linethick0;
资产:asset,noaxis,colorgray,PRECISION0;
可用现金:cash(0),linethick0,PRECISION0;
variable:b1=0,b2=0,b3=0,b4=0,b5=0,s1=0,s2=0,s3=0,s4=0,s5=0;
M7:=eMA(C,40);
M6:=eMA(C,30);
M5:=eMA(C,20);
M4:=eMA(C,10);
max74:max(max(max(m4,m5),m6),m7),COLORMAGENTA,linethick2;
j1:ema(c,3);
min74:min(min(min(m4,m5),m6),m7),COLORred,linethick2;
kcw:=1;
//||开多1*********************************||
if holding>=0 && b1=0 && j1>min74 then
begin
b1:=1;
buy(1,kcw,thisclose);
end
//||平多1*********************************||
if HOLDING>0&&b1=1&&j1<min74 then
begin
SELL(1,kcw,THISCLOSE);
b1:=0;
end
//||开空1*********************************||
if holding<=0&&s1=0&&j1<min74 then
begin
s1:=1;
BUYSHORT(1,kcw,thisclose);
end
//||平空1*********************************||
if HOLDING<0&&s1=1&&j1>min74 then
begin
SELLSHORT(1,kcw,THISCLOSE);
s1:=0;
end
//||开多2*********************************||
if holding>=0&&b2=0&&j1>max74 then
begin
b2:=2;
buy(1,kcw,thisclose);
end
//||平多2*********************************||
if HOLDING>0&&b2=2&&j1<max74 then
begin
SELL(1,kcw,THISCLOSE);
b2:=0;
end
//||开空2*********************************||
if holding<=0&&s2=0&&j1<max74 then
begin
s2:=2;
BUYSHORT(1,kcw,thisclose);
end
//||平空2*********************************||
if HOLDING<0&&s2=2&&j1>max74 then
begin
SELLSHORT(1,kcw,THISCLOSE);
s2:=0;
end
原因:上面我要求你改holding=0为holding>=0和holding<0
你没照着改