(大家好,我是稳健投资人。如果您对这里的话题感兴趣的话,请点击上方的“关注”,以方便下次快速找到我。)
朋友好们!
在第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线};
…… …… …… …… ……
上图就是按照公式,将5日、10日均线从金叉到死叉的区域涂成黄色,再将5日、10日均线从死叉到金叉的区域涂成洋红色,好漂亮的一条彩带,是不是很神奇!
二、将价托的区域涂上颜色的方法:
随缘份**667提出问题:老师可以帮写一个通达信软件用的就是5金叉10,然后金叉20,形成的三角形就是价托,5金叉10,然后金叉20。20金叉40再金叉60,又形成三角形,60金叉120,再金叉250,又形成三角形。我要在三角形里填充颜色。这 样 的均线主图指标。
何谓价托?
就是5日均线从下向上穿越10日均价线所形成的金叉点A;5日均价线从下向上穿越20日均价线所形成的金叉点B; 10日均价线从下向上穿越20日均价线所形成的金叉点C;由A、B、C三个点组成一个封闭的三角形,这个三角形就称为“价托”。
下面就把5、10、20日均线形成的价托公式写出来,至于20、40、60日均线和60、120、250日均线形成的价托,写的方法是一样的,你可以自己仿写。我这里就写一 个了,否则主图画面会很乱。
直接上源码了,方法和上面写彩带的方法类似,但因为有了三条线参与,还是费了些心思才搞定的。
…… …… …… …… ……
MA5:MA(C,5);
MA10:MA(C,10);
MA20:MA(C,20);
ZB:=MA5>=MA10 AND MA5<MA20 AND MA10<MA20;
{5日、10日线在20日线下方且5日线大于等于10线的部分,即价托的左半部}
YB:=MA20>=MA10 AND MA5>MA20 AND MA5>MA10;
{价托的右半部}
STICKLINE(ZB,MA5,MA10,4,0),COLORYELLOW;
{价托的左半部,在5日线至10日线之间画粗细为4的黄色柱状线}
STICKLINE(YB,MA10,MA20,4,0),COLORMAGENTA;
{价托的右半部,在10日线至20日线之间画粗细为4的洋红色柱状线}
DRAWKLINE(H,O,L,C);
{画K线,防止色带掩盖K线};
…… …… …… …… ……
从上图中,大家可以看到,这个价托实际上是由两块构成的,右边两个由黄色和洋红色合作构成的就是一个5、10、20日均线形成的价托,而左边的黄色区域只满足一半的条件,就构不成价托了。
小结:
今天我们学习了给某个区域涂颜色的方法,通过今天的学习,还会对人家所谓的神奇指标所呈现的彩带区域感到震惊吗?
不过这个是有难度的,并不是任意形状都能做到的。关于给某个区域涂颜色的方法就到此为止吧,请不要再想些很奇怪的区域叫我来编写公式啦。
(原创不易,请朋友们帮忙点赞、收藏、转发哦!赠人玫瑰,留有余香!)