那个的是开多的。仓位方向不一样,判断逻辑都要反过来的。原先判断上破,现在改成下破,原先是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; 
 
 |