夜雨聆风学习资料网

ARTICLE · 1271429

KDJ背离与共振提示指标(源码)

KDJ背离与共振提示指标(源码)

这条指标把KDJ、RSI、MACD和DMI这4套背离放进同一个画面:价格与指标走反方向时,用M、K、R、D这4个字母在最低价下方或最高价上方标出底背与顶背,再配合柱体把信号分区。

逻辑

随机值先按9周期取样,做2次3周期平滑得到快慢线;2条线金叉时记下底背的锚点,死叉时记下顶背的锚点。

相对强弱取6周期与24周期这2条,相减得到一条摆动线,柱体跟着摆动线的正负换色。

背离判定看价格与指标的反向。当前价格比上一次金叉时更低、指标反而更高,就算一次底背;反向就是顶背。

MACD用12与26周期的指数均线之差作快线,9周期平滑作慢线,同样各判一次背离。

DMI用14周期的真实波幅拆出正负方向线,配合同样的锚点比较,得到方向上的背离。

标记上,底背用字母写在最低价下方,顶背写在最高价上方,同时在参考线的上下沿画出柱体区分。

参数微调

9、3是随机值的取样与平滑周期,改大快慢线更钝。

6、12、24是相对强弱的3档周期,改小摆动线更灵敏。

12、26、9是MACD的快慢与信号周期,改小金叉更频繁。

温馨提示

1、指标:www.logic88.cn

2、本指标仅作为知识分享,不构成任何建议。

指标源码

{先算 KDJ 的原始 RSV:收盘减 9 日最低,除以 9 日高低差,再乘 100。}

JX_RSVRAW:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;

{把 RSV 做三次平滑得 K 线,再平滑一次得 D 线,K、D 加权得 J 线。}

JX_KDJK:=SMA(JX_RSVRAW,3,1);

JX_KDJD:=SMA(JX_KDJK,3,1);

JX_KDJJ:=3*JX_KDJK-2*JX_KDJD;

{备份昨收价,后面算 RSI 涨跌幅和真实波幅都要用到它。}

JX_LASTCLS := REF(C,1);

{用 6 周期算 RSI 快线:上涨幅度之和 除以 涨跌绝对幅度之和,再乘 100。}

JX_RSIFAST:=SMA(MAX(C-JX_LASTCLS,0),6,1)/SMA(ABS(C-JX_LASTCLS),6,1)*100;

JX_RSIMID:=SMA(MAX(C-JX_LASTCLS,0),12,1)/SMA(ABS(C-JX_LASTCLS),12,1)*100;

JX_RSISLOW:=SMA(MAX(C-JX_LASTCLS,0),24,1)/SMA(ABS(C-JX_LASTCLS),24,1)*100;

{输出 RSI 线画成彩色柱:快线减慢线,正值偏强、负值偏弱。}

RSI:JX_RSIFAST-JX_RSISLOW, COLORSTICK;

{记录上一次 K 上穿 D 至今的间隔根数,作为 KDJ 底背的时间锚点。}

JX_KDGXBR:=BARSLAST(REF(CROSS(JX_KDJK,JX_KDJD),1));

JX_KDBOTDIV:=REF(C,JX_KDGXBR+1)>C AND REF(JX_KDJK,JX_KDGXBR+1)<JX_KDJK AND CROSS(JX_KDJK,JX_KDJD);

JX_RSGXBR:=BARSLAST(REF(CROSS(JX_RSIFAST,JX_RSIMID),1));

JX_RSBOTDIV:=REF(C,JX_RSGXBR+1)>C AND REF(JX_RSIFAST,JX_RSGXBR+1)<JX_RSIFAST AND CROSS(JX_RSIFAST,JX_RSIMID);

JX_KDDXBR:=BARSLAST(REF(CROSS(JX_KDJD,JX_KDJK),1));

JX_KDTOPDIV:=REF(C,JX_KDDXBR+1)<C AND REF(JX_KDJK,JX_KDDXBR+1)>JX_KDJK AND CROSS(JX_KDJD,JX_KDJK);

JX_RSDXBR:=BARSLAST(REF(CROSS(JX_RSIMID,JX_RSIFAST),1));

JX_RSTOPDIV:=REF(C,JX_RSDXBR+1)<C AND REF(JX_RSIFAST,JX_RSDXBR+1)>JX_RSIFAST AND CROSS(JX_RSIMID,JX_RSIFAST);

{四条底背信号输出;NODRAW 表示只写进图例、不在图上画线。}

KDJ底背:JX_KDBOTDIV>0,COLORRED,NODRAW;

RSI底背:JX_RSBOTDIV>0,COLORYELLOW,NODRAW;

KDJ顶背:JX_KDTOPDIV>0,COLORBLUE,NODRAW;

RSI顶背:JX_RSTOPDIV>0,COLORGREEN,NODRAW;

{MACD 三线:DIF 为快慢均线差,DEA 为其均线,柱为两者差的 2 倍。}

JX_MACDDIF:=EMA(CLOSE,12)-EMA(CLOSE,26),COLORYELLOW;

JX_MACDDEA:=EMA(JX_MACDDIF,9),COLORCYAN;

JX_MACDBAR:=2*(JX_MACDDIF-JX_MACDDEA),COLORSTICK;

JX_TRSUM14:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14);

JX_HIGHDF:=HIGH-REF(HIGH,1);

JX_LOWDF:=REF(LOW,1)-LOW;

JX_PLUSDM:=SUM(IF(JX_HIGHDF>0 AND JX_HIGHDF>JX_LOWDF,JX_HIGHDF,0),14);

JX_MINUSDM:=SUM(IF(JX_LOWDF>0 AND JX_LOWDF>JX_HIGHDF,JX_LOWDF,0),14);

JX_PLUSDI:=JX_PLUSDM*100/JX_TRSUM14;

JX_MINUSDI:=JX_MINUSDM*100/JX_TRSUM14;

{MACD 背离:先取交叉到现在间隔根数,再判定顶背与底背两种形态。}

JX_MACDGXBR:=BARSLAST(REF(CROSS(JX_MACDDIF,JX_MACDDEA),1));

JX_MACDBTDV:=REF(CLOSE,JX_MACDGXBR+1)>CLOSE && REF(JX_MACDDIF,JX_MACDGXBR+1)<JX_MACDDIF && CROSS(JX_MACDDIF,JX_MACDDEA);

JX_MACDDXBR:=BARSLAST(REF(CROSS(JX_MACDDEA,JX_MACDDIF),1));

JX_MACDTPDV:=REF(CLOSE,JX_MACDDXBR+1)<CLOSE && REF(JX_MACDDIF,JX_MACDDXBR+1)>JX_MACDDIF && CROSS(JX_MACDDEA,JX_MACDDIF);

JX_DMIDXBR:=BARSLAST(REF(CROSS(JX_MINUSDI,JX_PLUSDI),1));

JX_DMITPDV:=REF(C,C+1)<C AND REF(JX_MINUSDI,JX_DMIDXBR+1)>JX_MINUSDI AND CROSS(JX_MINUSDI,JX_PLUSDI);

JX_DMIGXBR:=BARSLAST(REF(CROSS(JX_PLUSDI,JX_MINUSDI),1));

JX_DMIBTDV:=REF(C,JX_DMIGXBR+1)>C AND REF(JX_PLUSDI,JX_DMIGXBR+1)<JX_PLUSDI AND CROSS(JX_PLUSDI,JX_MINUSDI);

MACD底背:JX_MACDBTDV>0,NODRAW;

DMI底背:JX_DMIBTDV>0,NODRAW;

MACD顶背:JX_MACDTPDV>0,COLOR00FF00,NODRAW;

DMI顶背:JX_DMITPDV>0,COLORRED,NODRAW;

DRAWTEXT(MACD底背,RSI,'M低'),COLORRED;

DRAWTEXT(KDJ底背,RSI,'K低'),COLORFF00FF;

DRAWTEXT(RSI底背,RSI,'R低'),COLORYELLOW;

DRAWTEXT(DMI底背,RSI,'D低'),COLORRED;

DRAWTEXT(MACD顶背,RSI,'M顶'),COLOR00FF00;

DRAWTEXT(KDJ顶背,RSI,'K顶'),COLORFFCC66;

DRAWTEXT(RSI顶背,RSI,'R顶'),COLORWHITE;

DRAWTEXT(DMI顶背,RSI,'D顶'),COLORMAGENTA;

{在触发底背或顶背的位置画短柱,向下为底、向上为顶,颜色区分来源。}

STICKLINE(JX_KDBOTDIV>0 ,-25,0,5,0),COLORRED;

STICKLINE(JX_RSBOTDIV>0 ,-25,0,5,0),COLORYELLOW;

STICKLINE(JX_KDTOPDIV>0 ,25,0,5,0),COLORBLUE;

STICKLINE(JX_RSTOPDIV>0,25,0,5,0),COLORGREEN;

相关学习资料