您好:这样开仓可以,
我想根据前面的平仓类型选择下面的开仓方式是不是反过来就可以了?
variable:pc1=0;
if holding<0 then begin
sellshort(con1,1,market);
pc1:=0;
end
if pc1:=0 and con3 then begin
buyshort()
end
这是否表示前面我是pc1信号平仓的,如果前面一笔是pc1平仓类型 则我进行下面的开仓操作?
为什么我测试有问题?
您好:我试了还是不行,都是止损退出,分类信号都不起作用,帮忙看一下怎么回事?谢谢你啦!
INPUT:P(28,20,30,1),S(9,1,15,2),M(9,1,20,2);
VARIABLE:kd1n=0,kd2n=0,kd3n=0;
DIFF := EMA(CLOSE,S) - EMA(CLOSE,P);
DEA := EMA(DIFF,M);
MACD1 := 2*(DIFF-DEA);
CONDJ:=CROSS(DIFF,DEA);
CONDS:=CROSS(DEA,DIFF);
UPCROSS:=MACD1>0 AND REF(MACD1<0,1);
DWCROSS:=MACD1<0 AND REF(MACD1>0,1);
NN1:=BARSLAST(UPCROSS);//上次条件成立出现红柱位置
NN2:=REF(BARSLAST(UPCROSS),NN1+1);//上上次
NN3:=REF(BARSLAST(UPCROSS),NN1+NN2+1+1);
MM1:=BARSLAST(DWCROSS);//上次出现绿柱位置
MM2:=REF(BARSLAST(DWCROSS),NN1+1);//上上次
MM3:=REF(BARSLAST(DWCROSS),NN1+NN2+1+1);
r1:=REF(HHV(macd1,nn1+1),mm1+1);//前一个macd红柱的最高值
DIFFK1:=HHV(DIFF,NN1);//当前diff高值
DIFFK2:=REF(HHV(DIFF,NN1+1),MM1+1);//前一个diff的最高值
DIFFK3:=REF(HHV(DIFF,NN1+1),NN1+NN2+1+1);//再前一个的diff高值
pk1:=hhv(high,nn1);
pk2:=ref(hhv(high,nn1+1),mm1+1);
pk3:=ref(hhv(high,nn3),nn1+1+nn2+1);
hong1:=SUM(ABS(MACD1),NN1);//当前红柱面积
hong12:=sum(abs(macd1),mm1);
hong2:=SUM(ABS(MACD1),NN2+NN1+1)-hong12;//在前一个红柱面积
RP2:=REF(LLV(LOW,MM1+1),NN1+1);//前一个绿柱对应的价格低点
DIFFD1:=LLV(DIFF,MM1);
DIFFD2:=REF(LLV(DIFF,MM1+1),NN1+1);//前一个的diff低点
DIFFD3:=REF(LLV(DIFF,MM1+1),NN1+NN2+1+1);//再前一个diff低点
pd1:=llv(low,mm1);
pd2:=ref(llv(low,mm1+1),nn1+1);
pd3:=ref(llv(low,mm3),nn1+1);
lv1:=sum(abs(macd1),mm1);//绿柱面积
lv12:=sum(abs(macd1),nn1+1);
lv2:=sum(abs(macd1),nn1+1+mm2)-lv12;//前一个绿柱面积
h20:=ref(hhv(high,20),1);
//开多条件
kd1:= macd1<0 and pd1<pd2 and
(diff>ref(diff,1) and diffd1>diffd2) and
macd1>ref(macd1,1) and
ref(close,15)>ref(close,30);//DIFF没创新低
kd2:=macd1<0 and pd1<pd2 and
diff>ref(diff,1) and
(macd1>ref(macd1,1) and 2*lv1<lv2);//绿柱面积减小
kd3:=last(abs(macd1)<0.5,10,1) and last(abs(close-open)/close<0.001,15,5)
and (high-low)/close>0.0015 and close>open;
//平多条件
l20:=ref(llv(low,20),1);
dfx:=ref(high,1)>high and ref(high,1)>ref(high,2) and close<=open;//顶分型;
kk1:=macd1>0 and pk1>pk2 and
diff<diffk1 and diffk1<diffk2 and diff<ref(diff,1);
if holding>0 then begin
if close-enterprice<-5 then begin
止损1:sell(close<l20,0,market);
kd1n:=0;
kd2n:=0;
kd3n:=0;
end
if kd1n=1 then BEGIN
平多1:sell(kk1,0,market);
kd1n:=0;
end
if kd2n=1 then BEGIN
平多2:sell(dfx,0,market);
kd2n:=0;
end
if kd3n=1 then begin
平多3:sell(kk1,0,market);
kd3n:=0;
end
end
if holding=0 then BEGIN
if kd1 then BEGIN
开多1:buy(1,1,market);
kd1n:=1;
end
if kd2 then BEGIN
开多2:buy(1,1,market);
kd2n:=1;
end
if kd3 then begin
开多3:buy(1,1,market);
kd3n:=1;
end
end