| [PEL]  复制代码 variable:rsum=0;   //rsum红柱总和
variable:rlong=0;  //rlong最长红柱
variable:rh=0;   //rlow红柱区域最低高价
//中间变量
//macd指标
diff := ema(close,12) - ema(close,26);
dea  := ema(diff,9);
macd := 2*(diff-dea);
gnum:=barslast(ref(macd>0,1) and macd<0);     //红转绿
bnum:=barslast(ref(macd<0,1) and macd>0);    //绿转红
if ref(macd,1)<0 and macd>0 then
begin
   rsum:=0;                                                           
   rlong:=0;                                                          
   rh:=h;                                                      
end
if macd>0 then
begin
   rsum:=rsum+macd;                                          //累加
   if abs(macd)>abs(rlong) then rlong:=macd; //如果柱更长,则记录
   if h>rh then rh:=h;                          
end
numb:=max(gnum,bnum)+1;
//交易条件
con1:=abs(rsum)<abs(ref(rsum,numb));      //面积小于前一波--面积
con2:=abs(rlong)<abs(ref(rlong,numb));    //柱子长度小于前一波
con3:=rh>ref(rh,numb);                     //价格大于前一波-----价格创新高
//下单模块
//当绿柱开始收缩时(熊市即将结束,可能反转向上(或低位盘整)),如果出现低背离,则少量建仓
if all(macd>0,3) and ref(macd,1)>macd and ref(macd,1)>ref(macd,2) then
begin
   if con1 and con2 and con3 then buyshort(abs(holding)<2,2,market);       
end
if ref(macd>0,1) and macd<0 then
begin
    if con1 and con2 and con3  then 加:buyshort(abs(holding)<2,2,market);    
end
if  cross(macd,0) and diff>0 then sellshort(holding<0,holding,market);
反向差不多是这样的。剩下的你自行调整下即可。con1和con2你自行考虑下是否需要修改下定义方式。
 |