该指标用于在日线图上叠加显示周线和月线级别的MACD及KDJ数据,并控制其显示范围。
核心功能:
1. 日线MACD:显示最近55个交易日的日线MACD(DIF、DEA、MACD柱)。
2. 周线MACD:从日线图倒数第61根K线位置开始,显示40个周期的周线MACD(DIF、DEA、MACD柱)。
3. 月线MACD:从日线图倒数第135根K线位置开始,显示20个周期的月线MACD(DIF、DEA)。
4. 周线KDJ:在周线MACD显示区域内,同步引用周线级别的KDJ(K、D、J)值。
5. 月线KDJ:在月线MACD显示区域内,同步引用月线级别的KDJ(K、D、J)值。
显示逻辑:
通过`CURRBARSCOUNT`、`TOTALBARSCOUNT`、`BARSCOUNT`等函数计算当前K线位置,并利用`REFX`、`SUMBARS`等函数进行复杂的周期对齐和偏移计算,确保周、月数据在日线图上的时间点正确对应。
使用`IF`条件函数配合`DRAWNULL`,严格控制各指标线只在设定的时间窗口内绘制,窗口之外不显示。
在周线MACD显示区域的末端标注“周”字文本。
公式类型: 副图指标。
ZQ:=CURRBARSCOUNT<55;{设置日MACD显示周期数为最后90天}
P:=61;{设定从倒数第150根K线开始显示周MACD}
Q:=50;{设定周周MACD显示周期数为40周}
P1:=135;{设定从倒数第135根K线开始显示月MACD}
Q1:=20;{设定月MACD显示周期数为20个月}
YDIF:=MACD.DIF#MONTH;
YDEA:=MACD.DEA#MONTH;
ZDIF:=MACD.DIF#WEEK;
ZDEA:=MACD.DEA#WEEK;
ZK:=KDJ.K#WEEK;
ZD:=KDJ.D#WEEK;
ZJ:=KDJ.J#WEEK;
YK:=KDJ.K#MONTH;
YD:=KDJ.D#MONTH;
YJ:=KDJ.J#MONTH;
ZQZ:=TOTALBARSCOUNT;
ZQ1:=BARSCOUNT(C);
KX1:=ZQZ-ZQ1;{周K线显示开始位置按倒数K线数计算}
N1:=KX1;{周K线显示开始位置}
K6:=C#WEEK;{周K线周期}
K7:=K6>REF(K6,1);{周K线更后}
K8:=SUM(K7,0);{当前周K线位置}
K9:=CONST(K8)-K8;
ZH:=ISLASTBAR;
SU:=IF(ZH,0,SUMBARS(K7,N1-K9)-1);
Z1:=REF(ZDIF,SU);Z2:=REF(ZDEA,SU);
Z11:=REFX(Z1,P);Z22:=REFX(Z2,P);
W2:=KX1<P+Q;
周DIF:IF(W2,Z11,DRAWNULL),COLORMAGENTA;
周DEA:IF(W2,Z22,DRAWNULL),COLOR0080FF,LINETHICK1;
周MACD:IF(W2,(Z11-Z22)*2,DRAWNULL),COLORSTICK;
KK6:=H#MONTH;
KK7:=KK6>REF(KK6,1);
KK8:=SUM(KK7,0);
KK9:=CONST(KK8)-KK8;
SU1:=IF(ZH,0,SUMBARS(KK7,KX1-KK9)-1);
Y1:=REF(YDIF,SU1);Y2:=REF(YDEA,SU1);
Y11:=REFX(Y1,P1);Y22:=REFX(Y2,P1);
W22:=KX1<P1+Q1;
DI:=EMA(CLOSE,12)-EMA(CLOSE,26);
DIF:IF(ZQ,DI,DRAWNULL), COLORWHITE;
DEA:IF(ZQ,EMA(DIF,9),DRAWNULL), COLORYELLOW;
MACD:IF(ZQ,2*(DIF-DEA),DRAWNULL), COLORSTICK;
DRAWTEXT(KX1=P+Q-2,DI,'周');
ZQ赋值:到最后交易的周期<55
P赋值:61
Q赋值:50
P1赋值:135
Q1赋值:20
YDIF赋值:平滑异同平均线的DIF[取月线数据]
YDEA赋值:平滑异同平均线的DEA[取月线数据]
ZDIF赋值:平滑异同平均线的DIF[取周线数据]
ZDEA赋值:平滑异同平均线的DEA[取周线数据]
ZK赋值:KDJ的K[取周线数据]
ZD赋值:KDJ的D[取周线数据]
ZJ赋值:KDJ的J[取周线数据]
YK赋值:KDJ的K[取月线数据]
YD赋值:KDJ的D[取月线数据]
YJ赋值:KDJ的J[取月线数据]
ZQZ赋值:总的周期数
ZQ1赋值:收盘价的有效数据周期数
KX1赋值:ZQZ-ZQ1
N1赋值:KX1
K6赋值:收盘价[取周线数据]
K7赋值:K6>1日前的K6
K8赋值:K7的历史累和
K9赋值:K8的最后一日取值设为常数-K8
ZH赋值:是否最后一个周期
SU赋值:如果ZH,返回0,否则返回K7累加至N1-K9的天数-1
Z1赋值:SU日前的ZDIF
Z2赋值:SU日前的ZDEA
Z11赋值:P日后的Z1
Z22赋值:P日后的Z2
W2赋值:KX1输出周DIF:如果W2,返回Z11,否则返回无效数,画洋红色
输出周DEA:如果W2,返回Z22,否则返回无效数,COLOR0080FF,线宽为1
输出周MACD:如果W2,返回(Z11-Z22)*2,否则返回无效数,COLORSTICK
KK6赋值:最高价[取月线数据]
KK7赋值:KK6>1日前的KK6
KK8赋值:KK7的历史累和
KK9赋值:KK8的最后一日取值设为常数-KK8
SU1赋值:如果ZH,返回0,否则返回KK7累加至KX1-KK9的天数-1
Y1赋值:SU1日前的YDIF
Y2赋值:SU1日前的YDEA
Y11赋值:P1日后的Y1
Y22赋值:P1日后的Y2
W22赋值:KX1DI赋值:收盘价的12日指数移动平均-收盘价的26日指数移动平均
输出DIF:如果ZQ,返回DI,否则返回无效数, 画白色
输出DEA:如果ZQ,返回DIF的9日指数移动平均,否则返回无效数, 画黄色
输出平滑异同平均线:如果ZQ,返回2*(DIF-DEA),否则返回无效数, COLORSTICK
当满足条件KX1=P+Q-2时,在DI位置书写文字