那个的是开多的。仓位方向不一样,判断逻辑都要反过来的。原先判断上破,现在改成下破,原先是macd金叉,现在是改成死叉
[PEL] 复制代码 //中间变量
variable:zs=c,minll=c;
//顾比倒数线
DISTL:=NEWLBARS(L,1);
DISTH:=NEWHBARS(H,1);
HI20:=REF(HHV(H,20),1);
LO20:=REF(LLV(L,20),1);
GBD1:=REF(L,DISTL);
GBD2:=REF(GBD1,DISTL);
GBD:=IF(GBD2>0,MAX(LLV(L,20),GBD2),LLV(L,20));
GBG1:=REF(H,DISTH);
GBG2:=REF(GBG1,DISTH);
GBG:=IF(GBG2>0,MIN(HHV(H,20),GBG2),HHV(H,20));
//SAR指标
Sar1:SAR(10,2,20),CIRCLEDOT;
//MACD指标
DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);
DEA := EMA(DIFF,9);
MACD := 2*(DIFF-DEA);
//交易条件
con1:=any(ref(Sar1<l,1) and Sar1>L,3)=1; //最近3周期,有SAR向下突破K线
con2:=any(cross(dea,diff),3)=1 and diff<5; //最近3周期,MACD在0线附近死叉
//下单模块
//止盈止损平仓:下破移动止损线后离场
if holding<0 and (c>zs) then sellshort(1,1,limitr,c);
//开多仓:SAR向上突破K线,MACD在0线附近金叉
if con1 and con2 and holding=0 then
begin
buyshort(1,1,limitr,c);
zs:=GBG; //调用顾比倒数线做为止损
minll:=l; //记录当时的低点
end
if holding<0 and l<minll then //创新低后,重新定位离场位,以实现浮动止损
begin
zs:=GBG;
minll:=l;
end
止损线:zs;
|