通达信指标公式编写教程17:如何给两条或三条均线围成的区域涂颜色(图解)

拾荒网 其它指标 11

在第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日均线形成的价托,写的方法是一样的,你可以自己仿写。这是来自拾 荒网10Huang.CN,专注短线技术技巧进阶。我这里就写一 个了,否则主图画面会很乱。

直接上源码了,方法和上面写彩带的方法类似,但因为有了三条线参与,还是费了些心思才搞定的。

…… …… …… …… ……

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日均线形成的价托,而左边的黄色区域只满足一半的条件,就构不成价托了。

小结:

今天我们学习了给某个区域涂颜色的方法,通过今天的学习,还会对人家所谓的神奇指标所呈现的彩带区域感到震惊吗?

不过这个是有难度的,并不是任意形状都能做到的。关于给某个区域涂颜色的方法就到此为止吧,请不要再想些很奇怪的区域叫我来编写公式啦。

标签: 通达信指标编写