请教添加最近金叉之后的最大的DIFF标示问题。 (文华财经WH6赢顺V6.7)

投资者咨询:请教添加最近金叉之后的最大的DIFF标示问题。 (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2019-4-22 11:56
 

DIFF :EMA(CLOSE,12) - EMA(CLOSE,26);//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA :=EMA(DIFF,9);//DIFF的M个周期指数平滑移动平均
MACD:2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线
J:=CROSS(DIFF,DEA);
S:=CROSSDOWN(DIFF,DEA);
N1:=BARSLAST(J)+1;
N2:=BARSLAST(S)+1;
P:=BACKSET(J,LLVBARS(MACD, N2)+1);
Q:=BACKSET(S,HHVBARS(MACD, N1)+1);
K:=BACKSET(ISLASTBAR,HHVBARS(ABS(MACD),MIN(N1, N2))+1);
STICKLINE(CROSS(P,0.5),MACD,0,COLORYELLOW,0);
STICKLINE(CROSS(Q,0.5),MACD,0,COLORYELLOW,0);
STICKLINE(CROSS(K,0.5),MACD,0,COLORYELLOW,0);
CROSS(MACD,0),SOUND('A');
CROSSDOWN(MACD,0),SOUND('B');

 


MHD:VALUEWHEN(CROSSDOWN(DIFF,DEA),HHV(DIFF,N1)),NODRAW;//上次MACD红柱期间DIFF最大值
MLD:VALUEWHEN(CROSS(DIFF,DEA),LLV(DIFF,N2)),NODRAW;
A:=BACKSET(S,HHVBARS(DIFF,N1)+1);
B:=BACKSET(J,LLVBARS(DIFF,N2)+1);
DRAWICON(CROSS(A,0.5),DIFF,1),VALIGN2;
DRAWICON(CROSS(B,0.5),DIFF,2),VALIGN0;

投资者咨询:请教添加最近金叉之后的最大的DIFF标示问题。 (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2019-4-22 11:56
 老师你好,我根据论坛的贴子改写了一个公式,可有个问题需要得到老师的帮助,红柱期间的最大的DIFF值的笑脸及绿柱期间的哭脸标示,都是在从金叉到死叉或从死叉到金叉的过程,我想把最近金叉到当前的最大的DIFF值处也以笑脸的方式标识出来,当然,标识的位置是变化的,当下一根线对应的DIFF大于已经标识的值时,则标识位置换到下一根线处,一直到不再大于标识位置的DIFF值时,标识的位置才能固定不变。哭脸同理,不知我表达明白了吗?谢谢老师。
技术人员回复
日期:2019-4-22 13:04

参考:

 

DIFF :EMA(CLOSE,12) - EMA(CLOSE,26);//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA :=EMA(DIFF,9);//DIFF的M个周期指数平滑移动平均
MACD:2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线
J:=CROSS(DIFF,DEA);
S:=CROSSDOWN(DIFF,DEA);
N1:=BARSLAST(J)+1;
N2:=BARSLAST(S)+1;
P:=BACKSET(J,LLVBARS(MACD, N2)+1);
Q:=BACKSET(S,HHVBARS(MACD, N1)+1);
K:=BACKSET(ISLASTBAR,HHVBARS(ABS(MACD),MIN(N1, N2))+1);
STICKLINE(CROSS(P,0.5),MACD,0,COLORYELLOW,0);
STICKLINE(CROSS(Q,0.5),MACD,0,COLORYELLOW,0);
STICKLINE(CROSS(K,0.5),MACD,0,COLORYELLOW,0);
CROSS(MACD,0),SOUND('A');
CROSSDOWN(MACD,0),SOUND('B');

 


MHD:VALUEWHEN(CROSSDOWN(DIFF,DEA),HHV(DIFF,N1)),NODRAW;//上次MACD红柱期间DIFF最大值
MLD:VALUEWHEN(CROSS(DIFF,DEA),LLV(DIFF,N2)),NODRAW;
A:=BACKSET(S||MACD>0&&ISLASTBAR,HHVBARS(DIFF,N1)+1);
B:=BACKSET(J||MACD<0&&ISLASTBAR,LLVBARS(DIFF,N2)+1);
DRAWICON(CROSS(A,0.5),DIFF,1),VALIGN2;
DRAWICON(CROSS(B,0.5),DIFF,2),VALIGN0;