[求助]标识MACD (文华财经WH6赢顺V6.7)

投资者咨询:[求助]标识MACD (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-5-21 15:46
老师好!

     请老师帮忙:  

     1、我想在MACD的每个红绿柱区间MACD最大值(最小值)处标识出该区域的面积数值。

     2、MACD最大值(最小值)到MACD下穿(上穿)0轴之间的周期数。即MACD最大值到MACD红柱变绿柱之间的距离。

DIFF : EMA(CLOSE,12) - EMA(CLOSE,26),COLORWHITE,LINETHICK1;//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA :EMA(DIFF,9),COLORYELLOW,LINETHICK1;//DIFF的M个周期指数平滑移动平均
MACD:=2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线

FILLRGN(MACD > 0,MACD,0, COLORRED); 
FILLRGN(MACD < 0,MACD,0,COLOR006600); 
DRAWCOLORLINE(1,MACD,COLORCYAN,COLORCYAN),LINETHICK2;

//************红绿柱面积*****************************************************************
AMACD:=ABS(MACD),NOTEXT;//(柱线长度之和的绝对值)

红柱面积:= VALUEWHEN(MACD>0,SUM(AMACD,BARSLAST(MACD<0))),COLORRED;
绿柱面积:= VALUEWHEN(MACD<0,SUM(AMACD,BARSLAST(MACD>0))),COLORGREEN;

//***********************画出MACD的最大值***********************************************
MAAA:=MACD>0;
MBBB:=MACD<0;
MNNN:=BARSLAST(CROSS(MAAA,0.5))+1;
MMMM:=BARSLAST(CROSS(MBBB,0.5))+1;

MACD最大值:=BACKSET(CROSSDOWN(MAAA,0.5)||ISLASTBAR&&MAAA,HHVBARS(MACD,MNNN)+1);//求出MACD最大值
MACD最小值:=BACKSET(CROSSDOWN(MBBB,0.5)||ISLASTBAR&&MBBB,LLVBARS(MACD,MMMM)+1);//求出MACD最小值

DRAWLINE(MACD最大值>REF(MACD最大值,1),MACD,1,0,COLORWHITE),LINETHICK3;//画出MACD最大值处
DRAWLINE(MACD最小值>REF(MACD最小值,1),MACD,1,0,COLORYELLOW),LINETHICK3;//画出MACD的最小值处

技术人员回复
日期:2018-5-21 16:11

由于在红柱区间MACD最大值位置,红柱还没走完,取不到整个红柱区的面积的,

 

下面编写中最大值位置标注的面积值是,本次红柱开始到当前标注位置的面积和,参考:

 

DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:EMA(DIFF,9);
MACD:2*(DIFF-DEA),COLORSTICK;
JC:=CROSS(DIFF,DEA);
SC:=CROSSDOWN(DIFF,DEA);
N1:=BARSLAST(JC)+1;
N2:=BARSLAST(SC)+1;
MJ:=VALUEWHEN(DIFF>DEA,SUM(MACD,N1));//红柱期间MACD面积
MS:=VALUEWHEN(DIFF<DEA,-1*SUM(MACD,N2));//绿柱期间MACD面积
M:REF(HHVBARS(MACD,N1),N2),NODRAW;//红柱MACD最大值到死叉的距离
A:=BACKSET(SC,M+2),NODRAW;
N:REF(LLVBARS(MACD,N2),N1),NODRAW;//绿柱MACD最小值到金叉的距离
B:=BACKSET(JC,N+2),NODRAW;
DRAWNUMBER(CROSS(A,0.5),MACD,MJ,2,COLORRED);
DRAWNUMBER(CROSS(B,0.5),MACD,MS,2,COLORGREEN),VALIGN0;

 

   
投资者咨询:[求助]标识MACD (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-5-21 15:46
 熙怡老师好!

       这样的数值不完整。

       为了取得完整的数据,在MACD上穿和下穿0轴处,对前面的红柱区(绿柱区)进行标识。麻烦熙怡老师了,谢谢!

       其实如果标注数值的函数增加类似KTEXT函数的“POSITION”功能参数,或增加数值变字符串、字符串累加这2个函数,就能解决了。

       另外请教熙怡老师:

          MACD最大值(最小值)到MACD下穿(上穿)0轴之间的周期数。即MACD最大值到MACD红柱变绿柱之间的距离

          应该怎样编写?


技术人员回复
日期:2018-5-22 19:48
这样看下:

DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:EMA(DIFF,9);
MACD:2*(DIFF-DEA),COLORSTICK;
JC:=CROSS(DIFF,DEA);
SC:=CROSSDOWN(DIFF,DEA);
N1:=BARSLAST(JC)+1;
N2:=BARSLAST(SC)+1;
MJ:=VALUEWHEN(DIFF>DEA,SUM(MACD,N1));//红柱期间MACD面积
MS:=VALUEWHEN(DIFF<DEA,-1*SUM(MACD,N2));//绿柱期间MACD面积
M:REF(HHVBARS(MACD,N1),N2),NODRAW;//红柱MACD最大值到死叉的距离
A:=BACKSET(SC,M+2),NODRAW;
N:REF(LLVBARS(MACD,N2),N1),NODRAW;//绿柱MACD最小值到金叉的距离
B:=BACKSET(JC,N+2),NODRAW;
DRAWNUMBER(CROSS(A,0.5),MACD,MJ,2,COLORRED);
DRAWNUMBER(CROSS(B,0.5),MACD,MS,2,COLORGREEN),VALIGN0;
DRAWNUMBER(JC,MACD,LLVBARS(MACD,N2),0,COLORYELLOW);
 DRAWNUMBER(SC,MACD,HHVBARS(MACD,N1),0,COLORYELLOW);
投资者咨询:[求助]标识MACD (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-5-21 15:46
桃矢老师好!

      在MACD最大值处标注的数值是从MACD金叉0轴到MACD最大值处的面积值,而不是MACD整个红柱区域的面积值。

      熙怡老师说:无法在MACD最大值处标注MACD整个红柱区域的数值,因为红柱区域还未走完。

      我在3楼说的意思是可以等到MACD红柱走完,再在MACD下穿0轴处,对前面的红柱区(绿柱区)进行标识。这样标识的就是整个MACD红柱的面积了。

      麻烦您再给改下,谢谢!


 
技术人员回复
日期:2018-5-22 21:11
 您这样的思路是不符合逻辑的

MACD的面积就是取红柱/绿柱区间的MACD加总,数值是会一直增大的,也就是最大值一定是在最后一根柱线位置的

因此上面给您编写的是取红绿柱区间最大柱线所在位置到下一个红绿柱周期数的

您再理解下
投资者咨询:[求助]标识MACD (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-5-21 15:46
 桃矢老师:

       您还是没明白我的意思,我是想标识红绿区域的面积数值,而不是“红绿柱区间最大柱线所在位置到下一个红绿柱周期数的面积”!

        我明白“MACD的面积数值是会一直增大的,也就是最大值一定是在最后一根柱线位置”。我原想是想将这个(面积的)最大值标注在MACD最大值处,既然做不到,那就标注在最后一根柱线位置。

        红绿柱区间最大柱线所在位置到下一个红绿柱周期数是我在1楼提出的第2个问题,这两个问题没有必然的联系。

       请您再看下,谢谢!
技术人员回复
日期:2018-5-22 21:40
DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:EMA(DIFF,9);
MACD:2*(DIFF-DEA),COLORSTICK;
JC:=CROSS(DIFF,DEA);
SC:=CROSSDOWN(DIFF,DEA);
N1:=BARSLAST(JC)+1;
N2:=BARSLAST(SC)+1;
MJ:=VALUEWHEN(DIFF>DEA,SUM(MACD,N1));//红柱期间MACD面积
MS:=VALUEWHEN(DIFF<DEA,-1*SUM(MACD,N2));//绿柱期间MACD面积
M:REF(HHVBARS(MACD,N1),N2),NODRAW;//红柱MACD最大值到死叉的距离
A:=BACKSET(SC,M+2),NODRAW;
N:REF(LLVBARS(MACD,N2),N1),NODRAW;//绿柱MACD最小值到金叉的距离
B:=BACKSET(JC,N+2),NODRAW;
DRAWNUMBER(CROSS(A,0.5),MACD,MJ,2,COLORRED);
DRAWNUMBER(CROSS(B,0.5),MACD,MS,2,COLORGREEN),VALIGN0;
DRAWNUMBER(JC,MACD,MS,2,COLORYELLOW);
 DRAWNUMBER(SC,MACD,MJ,2,COLORYELLOW);