(15) M A C D指标顶、底背离的选股及在主图上的显示
(大家好,我是稳健投资人。如果您对这里的话题感兴趣的话,请点击上方的“关注”,以方便下次快速找到我。)
朋友们好!
前面两讲,我们学习了MACD指标的变色公式、MACD零上金叉和MACD底背离的条件选股公式的写法,文章发布后,反映比较强烈。
JIN**HE说:“姐,帮帮忙,再给写一下顶背离吧,我几次都是过山车,钱回撤。”
因为中国股市不能做空,所以个人认为运用MACD顶背离进行选股的意义不大。
但既然有需求,那就试着写一个MACD顶背离的指标公式,并把“顶背”两字显示在主图上。
一、MACD顶背离的指标公式:
将上一讲的底背离公式源码:
…… …… …… …… ……
DIF:=EMA(CLOSE,12)-EMA(CLOSE,26);
{收盘价的12日指数移动平均-收盘价的26日指数移动平均}
DEA:=EMA(DIF,9); {DIF的9日指数移动平均}
JC:=CROSS(DIF,DEA); {DIF金叉DEA}
JC1:=BARSLAST(JC); {上次JC距今天数}
JC2:=BARSLAST(REF(JC,1)); {上次金叉前1日的JC距今天数}
GJ:=MA(C,10)<MA(C,20) AND MA(C,20)<MA(C,60);
{10、20、60日均线空头排列}
JC AND GJ AND REF(DIF,JC1)>REF(DIF,JC2) AND EVERY(DEA<0,JC2) AND REF(C,JC1)<REF(C,JC2);
{当日DIF金叉DEA,且短均线空头排列,且本次金叉时DIF的值比上次金叉时大,且上次DIF金叉DEA以来DEA都小于0,且本次DIF金叉DEA时的最低价小于上次DIF金叉DEA时的最低价}
…… …… …… …… ……
改写成顶背离公式(金叉改为死叉,空头改为多头):
…… …… …… …… ……
DIF:=EMA(CLOSE,12)-EMA(CLOSE,26);
{收盘价的12日指数移动平均-收盘价的26日指数移动平均}
DEA:=EMA(DIF,9); {DIF的9日指数移动平均}
SC:=CROSS(DEA,DIF); {DIF死叉DEA}
SC1:=BARSLAST(SC); {上次SC距今天数}
SC2:=BARSLAST(REF(SC,1)); {上次死叉前1日的SC距今天数}
GJ:=MA(C,10)>MA(C,20) AND MA(C,20)>MA(C,60);
{10、20、60日均线多头排列}
XG:=SC AND GJ AND REF(DIF,SC1)<REF(DIF,SC2) AND EVERY(DEA>0,SC2) AND REF(H,SC1)>REF(H,SC2);
{当日DIF死叉DEA,且短均线多头排列,且本次金叉时DIF的值比上次金叉时小,且上次DIF金叉DEA以来DEA都大于0,且本次DIF死叉DEA时的最高价大于上次DIF金叉DEA时的最高价}
…… …… …… …… ……
二、MACD顶背离的条件选股方法:
1、将上面的MACD顶背离的公式直接复制到新建立条件选股公式中去,进行条件选股即可。
2、直接利用上面的公式进行综合选股:(15-9)
三、当股价发生顶、底背离时,用文字在主图上显示出来:
先看顶背离,就在刚才的临时文件中改写。
其实在主图上显示文字我们不是第一次了,大家还有印象吗?
1、先改写最后一句,把输出改成赋值,即在XG:后面加等号,然后在主图上不显示这条线,该用哪个函数呢?
(DRAWNULL 返回无效数 【引用函数】),在下面句子最后的分号前写上”, DRAWNULL”
XG:=SC AND GJ AND REF(DIF,SC1)<REF(DIF,SC2) AND EVERY(DEA>0,SC2) AND REF(H,SC1)>REF(H,SC2), DRAWNULL;
2、在主图上显示文字:
要用到函数:DRAWTEXT 显示文字 【绘图函数】
DRAWTEXT(,,),括号里要填写三项:第一顶是满足的条件,第二项是位置,第三项是文字:
DRAWTEXT(XG,H, '顶背');
把这两句话写到临时公式里,在右上角的【画线方法】的下拉菜单选择“主图叠加”:
…… …… …… …… ……
DIF:=EMA(CLOSE,12)-EMA(CLOSE,26);
{收盘价的12日指数移动平均-收盘价的26日指数移动平均}
DEA:=EMA(DIF,9); {DIF的9日指数移动平均}
SC:=CROSS(DEA,DIF); {DIF死叉DEA}
SC1:=BARSLAST(SC); {上次SC距今天数}
SC2:=BARSLAST(REF(SC,1)); {上次死叉前1日的SC距今天数}
GJ:=MA(C,10)>MA(C,20) AND MA(C,20)>MA(C,60);
{10、20、60日均线多头排列}
XG:=SC AND GJ AND REF(DIF,SC1)<REF(DIF,SC2) AND EVERY(DEA>0,SC2) AND REF(H,SC1)>REF(H,SC2), NODRAW;
{当日DIF死叉DEA,且短均线多头排列,且本次金叉时DIF的值比上次金叉时小,
且上次DIF金叉DEA以来DEA都大于0,且本次DIF死叉DEA时的最高价大于上次DIF金叉DEA时的最高价}
DRAWTEXT(XG,H,'顶背')
{满足“XG”条件时,在最高价处,显示“顶背”}
…… …… …… …… ……
鼠标放到到主图K 线图中,点击后,输入“LS”,调出刚才编写的“临时”,画线方法选择“主图叠加”:
还可以把“顶背”两个字的颜色变成黄色醒目一些,位置再抬高点:H+0.1,然后再这个“临时”文件中的源码复制、粘贴到主图中去.
再将上一讲的底背离指标也改写到主图中去,过程就不详细说了,直接上源码,都是测试通过的。
我的均线系统2:
…… …… …… …… ……
MA5:MA(C,5),COLORWHITE; {5日移动平均线}
MA10:MA(C,10),COLORYELLOW; {10日移动平均线}
MA25:MA(C,25),COLORLIBLUE; {25日移动平均线}
MA60:MA(C,60),COLORRED;
MA120:MA(C,120),COLORBLUE; {120日移动平均线}
MA250:MA(C,250),COLORLIGRAY; {250日移动平均线}
IF(MA5<REF(MA5,1),MA5,DRAWNULL),COLORWHITE,LINETHICK2;
IF(MA10<REF(MA10,1),MA10,DRAWNULL),COLORYELLOW,LINETHICK2;
IF(MA25<REF(MA25,1),MA25,DRAWNULL),COLORLIBLUE,LINETHICK2;
IF(MA60<REF(MA60,1),MA60,DRAWNULL),COLORRED,LINETHICK2;
{今日的60日平均价大于昨天的60日平均价,则返回MA60,用红色2号粗线显示};
IF(MA120<REF(MA120,1),MA120,DRAWNULL),COLORBLUE,LINETHICK2;
IF(MA250<REF(MA250,1),MA250,DRAWNULL),COLORLIGRAY,LINETHICK2;
涨停:
STICKLINE(C>=REF(C,1)*1.099,CLOSE,OPEN,2,0),COLORRED;
{当涨停板时,在收盘价和开盘价位置之间画红色柱状线,宽度为2的实心柱}
跌停:
STICKLINE(C<=REF(C,1)*0.901,CLOSE,OPEN,2,0),COLORBLUE;
{当跌停板时,在收盘价和开盘价位置之间画蓝色柱状线,宽度为2.5的实心柱};
DRAWTEXT_FIX(1,0,0,0,'地区:'),COLORRED;DRAWTEXT_FIX(1,0.03,0,0,DYBLOCK),COLORRED;
DRAWTEXT_FIX(1,0.1,0,0,'行业:'),COLORGREEN;DRAWTEXT_FIX(1,0.13,0,0,HYBLOCK),COLORGREEN;
DRAWTEXT_FIX(1,0.19,0,0,'概念:'),COLORFF00FF;DRAWTEXT_FIX(1,0.22,0,0,GNBLOCK),COLORFF00FF;
DIF:=EMA(CLOSE,12)-EMA(CLOSE,26);
{收盘价的12日指数移动平均-收盘价的26日指数移动平均}
DEA:=EMA(DIF,9); {DIF的9日指数移动平均}
SC:=CROSS(DEA,DIF); {DIF死叉DEA}
SC1:=BARSLAST(SC); {上次SC距今天数}
SC2:=BARSLAST(REF(SC,1)); {上次死叉前1日的SC距今天数}
GJ:=MA(C,10)>MA(C,20) AND MA(C,20)>MA(C,60);
{10、20、60日均线多头排列}
XG:=SC AND GJ AND REF(DIF,SC1)<REF(DIF,SC2) AND EVERY(DEA>0,SC2) AND REF(H,SC1)>REF(H,SC2), NODRAW;
{当日DIF死叉DEA,且短均线多头排列,且本次金叉时DIF的值比上次金叉时小,且上次DIF金叉DEA以来DEA都大于0,且本次DIF死叉DEA时的最高价大于上次DIF金叉DEA时的最高价}
DRAWTEXT(XG,H+0.1,'顶背'),COLORYELLOW;
{满足“XG”条件时,在最高价+0.1处,显示“顶背”}
JC:=CROSS(DIF,DEA); {DIF金叉DEA}
JC1:=BARSLAST(JC); {上次JC距今天数}
JC2:=BARSLAST(REF(JC,1)); {上次金叉前1日的JC距今天数}
GJ2:=MA(C,10)<MA(C,20) AND MA(C,20)<MA(C,60);{10、20、60日均线空头排列}
XG2:=JC AND GJ2 AND REF(DIF,JC1)>REF(DIF,JC2) AND EVERY(DEA<0,JC2) AND REF(L,JC1)<REF(L,JC2);
{当日DIF金叉DEA,且短均线空头排列,且本次金叉时DIF的值比上次金叉时大,且上次DIF金叉DEA以来DEA都小于0,且本次DIF金叉DEA时的最低价小于上次DIF金叉DEA时的最低价};
DRAWTEXT(XG2,L-0.1,'底背'),COLORMAGENTA;
{满足“XG2”条件时,在最低价-0.1处,显示“底背”}
…… …… …… …… ……
注意1:源码中凡是用浅灰色显示的文字都是解释,为的是便于大家看公式方便,如果你常得文字太多,都是可以删去的。
注意2:图中所有均线都将其改成向下时用粗线显示,向上是用同色的细线显示,这样多头市场和空头市场可以一目了然,方便我们看盘。
注意3:不管是“顶背离”“底背离”信号,都不含未来函数。
出现了“顶背离”信号后,如果后市多头做多意愿强烈,放量上冲,那“顶背离”就有可能化解,特别是股价涨幅不多时,这种“顶背离”被化解的还是蛮多的。
但如果股价涨得太多了,那出现“顶背离”信号时,要有“宁可错过,不能做错”的心态,逃命要紧。
对“底背离”信号的理解正好反过来,大家自行去理解吧。
今天就到这里了,下次再见!
(原创不易,请朋友们帮忙点赞、收藏、转发哦!赠人玫瑰,留有余香!)