[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你自行考虑下是否需要修改下定义方式。 |