(大家好,我是稳健投资人。如果您对这里的话题感兴趣的话,请点击上方的“关注”,以方便下次快速找到我。)
朋友好们!
在第15讲,我们学习了M A C D指标顶、底背离的在主图上的显示,有朋友就提要求,能不能在MACD指标上标注顶、底背离?
时髦可乐**说:“老师:变色MACD上怎么加上顶、底背离和金叉、死叉,谢谢。”
其实这个很简单的,只须将顶、底背离的源码复制到MACD指标上,把位置改一下就行了。
…… …… …… …… ……
(M=12;N=26;P=9;)
DIFIF1:EMA(CLOSE,M) - EMA(CLOSE,N);
DEAEA1:EMA(DIFIF1,P);
MACD1:=2*(DIFIF1-DEAEA1),STICK;
MACD2:=EMA(MACD1,3);
STICKLINE(MACD1>MACD2 AND MACD1>0,0,MACD1,1,0),COLORRED;
STICKLINE(MACD1>MACD2 AND MACD1<0,0,MACD1,1,0),COLORGREEN;
STICKLINE(MACD1<MACD2,0,MACD1,1,0),COLORCBCBC0;
STICKLINE(MACD1>=0 OR MACD1<=0,0,0,50,1),COLORWHITE;
DIFIF1,COLOR33FF33,LINETHICK2;
DEAEA1,COLORYELLOW,LINETHICK2;
MACD:MACD1,NODRAW,COLORMAGENTA;
强:IF(DIFIF1>=DEAEA1,DIFIF1,DRAWNULL),COLORRED,LINETHICK2;
弱:IF(DEAEA1>=DIFIF1,DEAEA1,DRAWNULL),COLORFF9900,LINETHICK2;
SC:=CROSS(DEAEA1,DIFIF1); {DIFFFI1死叉DEAEA1}
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(DIFIF1,SC1)<REF(DIFIF1,SC2) AND EVERY(DEAEA1>0,SC2) AND REF(H,SC1)>REF(H,SC2), NODRAW;
{当日DIFF不1死叉DEAEA1,且短均线多头排列,且本次金叉时DIFFI1的值比上次金叉时小,
且上次DIFIF1金叉DEAEA1以来DEAEA1都大于0,且本次DIFIF1死叉DEAEA1时的最高价大于上次DIFIF1金叉DEA时的最高价}
DRAWTEXT(XG,DIFIF1 0.1,'顶背'),COLORYELLOW;
{满足"选股"条件时,在DIFIF1 0.1处,显示"顶背"};
JC:=CROSS(DIFIF1,DEAEA1); {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(DIFIF1,JC1)>REF(DIFIF1,JC2) AND EVERY(DEAEA1<0,JC2) AND REF(L,JC1)<REF(L,JC2);
{当日DIFIF1金叉DEAEA1,且短均线空头排列,且本次金叉时DIFIF1的值比上次金叉时大,
且上次DIFIF1金叉DEAEA1以来DEAEA1都小于0,且本次DIFIF1金叉DEAEA1时的最低价小于上次DIFIF1金叉DEAEA1时的最低价};
DRAWTEXT(XG2,DIFIF1-0.1,'底背'),COLORMAGENTA;
{满足"XG2"条件时,DIFIF1-0.1处,显示"底背"};
…… …… …… …… ……
注意:显示金叉、死叉的方法是一样的,篇幅所限,你自己试试吧。
一、两条指标线间的区域涂上颜色的方法
Alfre**7提出问题:“请教一下,如何将5日均线金叉10日均线到5日均线死叉10日均线之间的区域变成红色,通达信指标如何表达,谢谢老师编写一下。”
那我们就先来学习“将5日均线金叉10日均线,到5日均线死叉10日均线之间的区域涂上颜色的方法。
首先写出5日均线和10日均线:
MA1:MA(C,5);
MA2:MA(C,10);
下面我们要在特定的区域内画柱状线,还记得用哪个函数吗?
是STICKLINE 绘制柱线 属于【绘图函数】
用法: STICKLINE(COND,PRICE1,PRICE2,WIDTH,EMPTY),
括号中有五项:第一项COND是要满足的条件,第二项和第三项是位置,就是第二项位置1和第三项位置2的地方画柱状线,第四顶是柱状线的宽度最大为10,宽度画多少,可以用4试试,最后一项是柱状线的形状,0为实心线:
那我们试着在MA1和MA之间画实心柱状线:
STICKLINE(MA1>=MA2,MA1,MA2,4,0),COLORYELLOW;
{当MA1大于或等于MA2时,在MA1和MA2之间,画黄色柱,柱粗4,实心柱}
…… …… …… …… ……
MA1:MA(C,5);
MA2:MA(C,10);
STICKLINE(MA1>=MA2,MA1,MA2,4,0),COLORYELLOW;
{当MA1大于或等于MA2时,在MA1和MA2之间,画黄色柱,柱粗4,实心柱}
…… …… …… …… ……
将源码复制到临时文件中,【画线方法】为“主图叠加”
图形中将柱状线的宽度取的4,观察图形,发现K线被黄色柱子遮住部分,怎么办?再画一次K线吧。
还是在【绘图函数】里,有一个收盘画K线的函数:
DRAWKLINE(HIGH,OPEN,LOW,CLOSE),简写为:
DRAWKLINE(H,O,L,C),
…… …… …… …… ……
MA1:MA(C,5);
MA2:MA(C,10);
STICKLINE(MA1>=MA2,MA1,MA2,4,0),COLORYELLOW;
{当MA1大于或等于MA2时,在MA1和MA2之间,画黄色柱,柱粗4,实心柱}
STICKLINE(MA1<=MA2,MA1,MA2,4,0),COLORMAGENTA;
{当MA1小于或等于MA2时,在MA1和MA2之间,画洋红色柱,柱粗4,实心柱}
DRAWKLINE(H,O,L,C)
{画K线,防止色带掩盖K线};
…… …… …… …… ……