|
MACD指标是市场上绝大多数投资者熟知的分析指标之一,甚至被称为指标之王。一般研判标准主要是围绕快速和慢速两条均线及红、绿柱线状况和它们的形态展开。但在具体运用时,会在运用的准确性、实效性、可操作性上有很多茫然的地方,本例采用MACD指标柱状图分析法,研判底背离的情况。 一、MACD底部背离的策略思路:
1,本波绿柱面积没有创新低:本波绿柱的面积小于前一波绿柱的面积。
2,本波绿柱长度没有创新低:本波绿柱过程中的MACD最低值大于前一波绿柱中的最低值。
3,行情价格出现了新低: 本波绿柱过程中的行情的最低价小于前一波绿柱中的最低价。
以上思路是严格的MACD底背离的判断,即价格新低,但柱子面积和柱子长度都没有新低。
代码基于金字塔 - //当绿柱开始收缩时(熊市即将结束,可能反转向上(或低位盘整)),如果出现低背离,则少量建仓
-
- IF all(macd<0,3) and ref(macd,1)<macd and ref(macd,1)<ref(macd,2) THEN
- IF 本波截止到目前的绿柱面积〈 前一波绿柱面积 //柱子面积没有新低
- + 本波绿柱过程中的MACD最低值 〉前一波绿柱中的最低值 //长度没有新低
- + 本波绿柱过程中的最低价 〈 前一波绿柱中的最低价 //价格新低
- THEN BUY.
-
- //绿柱消失、红柱开始放出时(下跌行情(或低位盘整)已经结束),如果出现低背离,则加仓
-
- IF ref(macd<0,1) and macd>0 THEN
- IF 前一波绿柱面积 〈 更前一波绿柱面积 //柱子面积没有新低
- + 最近一波绿柱过程中的MACD最低值 〉更前一波绿柱中的最低值 //长度没有新低
- + 最近一波绿柱过程中的最低价 〈 更前一波绿柱中的最低价 //价格新低
- THEN BUY。
复制代码
策略源码: - //全局变量
- variable:gsum=0; //gsum绿柱总和
- variable:glong=0; //glong最长绿柱
- variable:glow=0; //glow绿柱区域最低价
- //中间变量
- //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
- gsum:=0; //绿柱开始,清0
- glong:=0; //绿柱开始,清0
- glow:=low; //绿柱开始,初始化
- end
- if macd<0 then
- begin
- gsum:=gsum+macd; //累加
- if abs(macd)>abs(glong) then glong:=macd; //如果绿柱更长,则记录
- if low<glow then glow:=low; //如果价格更低,则记录
- end
-
- numb:=max(gnum,bnum)+1;
- //交易条件
- con1:=abs(gsum)<abs(ref(gsum,numb)); //面积小于前一波--面积没创新低
- con2:=abs(glong)<abs(ref(glong,numb)); //柱子长度小于前一波----长度没创新低
- con3:=glow<ref(glow,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 buy(1,1,market); //低背离,面积没创新低,长度没创新低,价格创新低
- end
-
- //绿柱消失、红柱开始放出时(下跌行情(或低位盘整)已经结束),如果出现低背离,则加仓
- if ref(macd<0,1) and macd>0 then
- begin
- if con1 and con2 and con3 then 加:buy(1,1,market); //低背离,面积没创新低,长度没创新低,价格创新低
- end
- //如果下破零轴,平仓离场
- if CROSS(0,MACD) and diff<0 then sell(holding>0,holding,market);
复制代码
|
|