乐于分享
好东西不私藏

通达信公式源码分享|多维背离副图

通达信公式源码分享|多维背离副图

公式功能:

这是一个多维度背离分析+底部启动捕捉的综合性副图指标,整合以下六大功能模块:

1. MACD增强显示

  • DIF/DEA双线+强度着色

  • 低位金叉、二次金叉、三次金叉识别

2. 定量结构背离系统(核心)

  • 直接底背离/隔峰底背离(双底结构)

  • 直接顶背离/隔峰顶背离(双顶结构)

  • 背离钝化、消失、确认全程跟踪

3. RSI辅助买卖点

  • 超卖区(20)金叉买

  • 超买区(80)死叉卖

4. 九转序列(TD序列)

  • 上涨9转见顶提示

  • 下跌9转见底提示

5. 三指标背离共振

  • MACD+KDJ+RSI同时背离确认

6. 卧底藏龙选股

  • 超跌+异动+趋势确认,捕捉底部启动


源码:

{==========================================}

{ 一、MACD基础指标显示 }

{==========================================}

DIF:MACD.DIF,COLORLIGRAY;           { DIF线,浅灰色 }

DEA:MACD.DEA,COLORYELLOW;           { DEA线,黄色 }

强度:IF(DIF>DEA,DIF,DRAWNULL),COLORRED;      { DIF在DEA上方时显示DIF,红色 }

强度1:IF(DEA<DIF,DEA,DRAWNULL),COLORMAGENTA; { DEA在DIF下方时显示DEA,洋红色 }

MACD:(DIF-DEA)*2,COLORSTICK;        { MACD柱状线,红绿柱 }

MACD2:=MACD;                        { MACD赋值,用于后续引用 }

MJ:=MACD;                           { MACD别名,用于面积计算 }

{==========================================}

{ 二、MACD面积累计计算(用于背离判断)}

{==========================================}

S05:=SUM(MJ,0);                     { MACD从上市以来的累计和 }

QST:=BARSLAST(MJ<0 AND REF(MJ,1)>0)+1;  { 上次MACD由正转负到现在的周期 }

QXT:=BARSLAST(MJ>0 AND REF(MJ,1)<0)+1;  { 上次MACD由负转正到现在的周期 }

S5:=IF(MJ>0,S05-REF(S05,BARSLAST(MJ<0)),S05-REF(S05,BARSLAST(MJ>0)))/10;  { 当前红绿柱面积 }

ST:=IF(MJ>0,REF(QST,QXT)+QXT,REF(QXT,QST)+QST);  { 周期计算 }

RS5:=REF(S5,ST);                    { 参考前期面积 }

{==========================================}

{ 三、MACD金叉信号(低位、二次、三次)}

{==========================================}

低位金叉:=CROSS(DIF,DEA) AND DIF<-0.1;  { DIF上穿DEA且DIF在-0.1下方,低位金叉 }

JCCOUNT:=COUNT(CROSS(DIF,DEA),BARSLAST(DEA>=0));  { DEA<0以来的金叉次数 }

二次金叉:=CROSS(DIF,DEA) AND DEA<0 AND COUNT(JCCOUNT=2,21)=1;  { 21日内第2次金叉 }

DRAWICON(二次金叉,0,25);            { 二次金叉标记图标 }

三次金叉:=CROSS(DIF,DEA) AND DEA<0 AND COUNT(JCCOUNT=3,60)=1;  { 60日内第3次金叉 }

DRAWICON(三次金叉,0,26);            { 三次金叉标记图标 }

{==========================================}

{ 四、MACD底背离(传统定义)}

{==========================================}

A002:=BARSLAST(REF(CROSS(DIF,DEA),1));  { 上次金叉距离 }

底背离:=REF(CLOSE,A002+1)>CLOSE AND DIF>REF(DIF,A002+1) AND CROSS(DIF,DEA);  { 价格新低,DIF未新低,金叉 }

{==========================================}

{ 五、均线突破信号 }

{==========================================}

DRAWICON(LONGCROSS(CLOSE,MA(CLOSE,5),17),MACD2,1);  { 收盘价上穿5日均线持续17天 }

{==========================================}

{ 六、文字标注 }

{==========================================}

DRAWTEXT(二次金叉>低位金叉,DIF,’金2′),COLORRED;  { 二次金叉文字 }

{==========================================}

{ 七、RSI指标买卖点(副图叠加)}

{==========================================}

C81:=REF(C,1);                      { 昨日收盘价 }

RN:=9;                              { RSI周期 }

RSI1:=SMA(MAX(C-C81,0),RN,1)/SMA(ABS(C-C81),RN,1)*100;  { 9日RSI }

低点:=CROSS(RSI1,20);               { RSI上穿20,超卖区金叉 }

STICKLINE(低点,0.1,0,0.3,0),COLORYELLOW;  { 黄色柱标记 }

DRAWICON(低点, 0.15,1);             { 向上箭头 }

DRAWTEXT(低点, 0.14,’←底’),COLORYELLOW;  { “底”字标注 }

顶:=CROSS(80,RSI1);                 { RSI下穿80,超买区死叉 }

DRAWICON(顶, DIF*1.15,2);           { 向下箭头 }

DRAWTEXT(顶, DIF*1.1,’←减’),COLORGREEN;  { “减/清仓”提示 }

{==========================================}

{ 八、定量结构:底部结构预警(直接底背离+隔峰底背离)}

{==========================================}

死叉:=CROSS(DEA,DIF);               { DEA上穿DIF,死叉 }

N1:=BARSLAST(死叉),NODRAW;          { 上次死叉距离 }

N2:=REF(BARSLAST(死叉),N1+1),NODRAW;  { 上上次死叉距离 }

N3:=REF(BARSLAST(死叉),N2+N1+2),NODRAW;  { 上上上次死叉距离 }

CL1:=LLV(C,N1+1),NODRAW;            { 最近死叉后最低收盘价 }

DIFL1:=LLV(DIF,N1+1),NODRAW;        { 最近死叉后最低DIF }

CL2:=REF(CL1,N1+1),NODRAW;          { 上次死叉区间最低收盘价 }

DIFL2:=REF(DIFL1,N1+1),NODRAW;      { 上次死叉区间最低DIF }

CL3:=REF(CL2,N1+1),NODRAW;          { 上上次死叉区间最低收盘价 }

DIFL3:=REF(DIFL2,N1+1),NODRAW;      { 上上次死叉区间最低DIF }

{ 数值归一化处理,消除数量级差异 }

PDIFL2:=IF(DIFL2>0,INTPART(LOG(DIFL2))-1,INTPART(LOG(-DIFL2))-1);

MDIFL2:=INTPART(DIFL2/POW(10,PDIFL2));

PDIFL3:=IF(DIFL3>0,INTPART(LOG(DIFL3))-1,INTPART(LOG(-DIFL3))-1);

MDIFL3:=INTPART(DIFL3/POW(10,PDIFL3));

MDIFB2:=INTPART(DIF/POW(10,PDIFL2));

MDIFB3:=INTPART(DIF/POW(10,PDIFL3));

{ 直接底背离:相邻两个死叉区间,价格新低,DIF未新低 }

直接底背离:=(CL1<CL2) AND (MDIFB2>MDIFL2) AND (MACD<0 AND REF(MACD,1)<0) AND MDIFB2<=REF(MDIFB2,1);

{ 隔峰底背离:间隔一个死叉区间,价格新低,DIF未新低 }

隔峰底背离:=(CL1<CL3 AND CL3<CL2) AND (MDIFB3>MDIFL3) AND (MACD<0 AND REF(MACD,1)<0) AND MDIFB3<=REF(MDIFB3,1);

B6:直接底背离 OR 隔峰底背离,NODRAW;  { 底背离信号 }

BG:((MDIFB2>REF(MDIFB2,1))*REF(直接底背离,1)) OR ((MDIFB3>REF(MDIFB3,1))*REF(隔峰底背离,1)),NODRAW;  { 底背离确认 }

底背离消失:=(REF(直接底背离,1) AND DIFL1<=DIFL2) OR (REF(隔峰底背离,1) AND DIFL1<=DIFL3);  { 底背离失效 }

DRAWTEXT(TFILTER(B6,MACD>0,1),(DIF+MACD),’钝化’),COLORRED;  { 底背离钝化提示 }

STICKLINE(B6 OR BG,DIF,DEA,1,-1),COLORRED;  { 底背离区间红色填充 }

DRAWTEXT(TFILTER(底背离消失,B6,1),(DIF+MACD),’消失’),COLORYELLOW;  { 底背离消失提示 }

DRAWTEXT(TFILTER(BG,MACD>0,1),DIF*1.1,’M底背’),COLORMAGENTA;  { M底背确认 }

{==========================================}

{ 九、定量结构:顶部结构预警(直接顶背离+隔峰顶背离)}

{==========================================}

金叉:=CROSS(DIF,DEA);               { DIF上穿DEA,金叉 }

M1:=BARSLAST(金叉),NODRAW;          { 上次金叉距离 }

M2:=REF(BARSLAST(金叉),M1+1),NODRAW;  { 上上次金叉距离 }

M3:=REF(BARSLAST(金叉),M2+M1+2),NODRAW;  { 上上上次金叉距离 }

CH1:=HHV(C,M1+1),NODRAW;            { 最近金叉后最高收盘价 }

DIFH1:=HHV(DIF,M1+1),NODRAW;        { 最近金叉后最高DIF }

CH2:=REF(CH1,M1+1),NODRAW;          { 上次金叉区间最高收盘价 }

DIFH2:=REF(DIFH1,M1+1),NODRAW;      { 上次金叉区间最高DIF }

CH3:=REF(CH2,M1+1),NODRAW;          { 上上次金叉区间最高收盘价 }

DIFH3:=REF(DIFH2,M1+1),NODRAW;      { 上上次金叉区间最高DIF }

{ 数值归一化 }

PDIFH2:=IF(DIFH2>0,INTPART(LOG(DIFH2))-1,INTPART(LOG(-DIFH2))-1);

MDIFH2:=INTPART(DIFH2/POW(10,PDIFH2));

PDIFH3:=IF(DIFH3>0,INTPART(LOG(DIFH3))-1,INTPART(LOG(-DIFH3))-1);

MDIFH3:=INTPART(DIFH3/POW(10,PDIFH3));

MDIFT2:=INTPART(DIF/POW(10,PDIFH2));

MDIFT3:=INTPART(DIF/POW(10,PDIFH3));

{ 直接顶背离:相邻两个金叉区间,价格新高,DIF未新高 }

直接顶背离:=(CH1>CH2) AND (MDIFT2<MDIFH2) AND (MACD>0 AND REF(MACD,1)>0) AND MDIFT2>=REF(MDIFT2,1);

{ 隔峰顶背离:间隔一个金叉区间,价格新高,DIF未新高 }

隔峰顶背离:=(CH1>CH3 AND CH3>CH2) AND (MDIFT3<MDIFH3) AND (MACD>0 AND REF(MACD,1)>0) AND MDIFT3>=REF(MDIFT3,1);

T6:直接顶背离 OR 隔峰顶背离,NODRAW;  { 顶背离信号 }

TG:((MDIFT2<REF(MDIFT2,1))*REF(直接顶背离,1)) OR ((MDIFT3<REF(MDIFT3,1))*REF(隔峰顶背离,1)),NODRAW;  { 顶背离确认 }

顶背离消失:=(REF(直接顶背离,1) AND DIFH1>=DIFH2) OR (REF(隔峰顶背离,1) AND DIFH1>=DIFH3);  { 顶背离失效 }

DRAWTEXT(TFILTER(T6,MACD<0,1),(DIF+MACD),’钝化’),COLORGREEN;  { 顶背离钝化提示 }

DRAWTEXT(TFILTER(顶背离消失,T6,1),(DIF+MACD),’消失’),COLORYELLOW;  { 顶背离消失提示 }

STICKLINE(T6 OR TG,DIF,DEA,1,-1),COLORLIGREEN;  { 顶背离区间绿色填充 }

DRAWTEXT(TFILTER(TG,MACD<0,1),DIF*1.02,’M顶背’),COLORMAGENTA;  { M顶背确认 }

{==========================================}

{ 十、九转序列(汤姆·德马克TD序列)}

{==========================================}

{ 上涨9转:连续9天收盘价高于4天前收盘价 }

A001:=C>REF(C,4);

NT:=BARSLASTCOUNT(A001);            { 连续满足A001的天数 }

TJ11:=NT=9;                         { 第9天 }

TJ13:=ISLASTBAR AND BETWEEN(NT,5,8);  { 当前是最后1天且天数在5-8之间 }

AY:=(BACKSET(TJ11>0,9)OR BACKSET(TJ13>0,NT))*NT;  { 标记9转序列 }

DRAWTEXT(AY>0,MACD*1.02,VAR2STR(AY,0)),COLORLIRED;  { 显示数字 }

DRAWTEXT(NT=9,MACD*1.02,’9′),COLORGREEN;  { 第9天标记绿色”9″ }

{ 下跌9转:连续9天收盘价低于4天前收盘价 }

B001:=C<REF(C,4);

NT0:=BARSLASTCOUNT(B001);           { 连续满足B001的天数 }

TJ21:=NT0=9;                        { 第9天 }

TJ23:=ISLASTBAR AND BETWEEN(NT0,5,8);  { 当前是最后1天且天数在5-8之间 }

AY1:=(BACKSET(TJ21>0,9) OR BACKSET(TJ23>0,NT0))*NT0;  { 标记9转序列 }

DRAWTEXT(AY1>0,MACD*0.98,VAR2STR(AY1,0)),COLORGREEN;  { 显示数字 }

DRAWTEXT(NT0=9,MACD*0.98,’9′),COLORRED;  { 第9天标记红色”9″ }

{==========================================}

{ 十一、DMI指标(未完整显示)}

{==========================================}

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

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

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

PDM:=SUM(IF(HD>0 AND HD>LD,HD,0),14);

MDM:=SUM(IF(LD>0 AND LD>HD,LD,0),14);

PDI:=PDM*100/TRR;

MDI:=MDM*100/TRR;

{==========================================}

{ 十二、MACD+KDJ+RSI三指标背离共振 }

{==========================================}

{ MACD底背离 }

A1:=BARSLAST(REF(CROSS(“MACD.DIF”(12,26,9),”MACD.DEA”(12,26,9)),1));

B1:=REF(C,A1+1)>C AND REF(“MACD.DIF”(12,26,9),A1+1)<“MACD.DIF”(12,26,9) AND CROSS(“MACD.DIF”(12,26,9),”MACD.DEA”(12,26,9));

{ KDJ底背离 }

A2:=BARSLAST(REF(CROSS(“KDJ.K”(9,3,3),”KDJ.D”(9,3,3)),1));

B2:=REF(C,A2+1)>C AND REF(“KDJ.K”(9,3,3),A2+1)<“KDJ.K”(9,3,3) AND CROSS(“KDJ.K”(9,3,3),”KDJ.D”(9,3,3));

{ RSI底背离 }

A3:=BARSLAST(REF(CROSS(“RSI.RSI1″(6,12,24),”RSI.RSI2″(6,12,24)),1));

B3:=REF(C,A3+1)>C AND REF(“RSI.RSI1″(6,12,24),A3+1)<“RSI.RSI1″(6,12,24) AND CROSS(“RSI.RSI1″(6,12,24),”RSI.RSI2″(6,12,24));

{ MACD顶背离 }

C1:=BARSLAST(REF(CROSS(“MACD.DEA”(12,26,9),”MACD.DIF”(12,26,9)),1));

D1:=REF(C,C1+1)<C AND REF(“MACD.DIF”(12,26,9),C1+1)>”MACD.DIF”(12,26,9) AND CROSS(“MACD.DEA”(12,26,9),”MACD.DIF”(12,26,9));

{ KDJ顶背离 }

C2:=BARSLAST(REF(CROSS(“KDJ.D”(9,3,3),”KDJ.K”(9,3,3)),1));

D2:=REF(C,C2+1)<C AND REF(“KDJ.K”(9,3,3),C2+1)>”KDJ.K”(9,3,3) AND CROSS(“KDJ.D”(9,3,3),”KDJ.K”(9,3,3));

{ RSI顶背离 }

C3:=BARSLAST(REF(CROSS(“RSI.RSI2″(6,12,24),”RSI.RSI1″(6,12,24)),1));

D3:=REF(C,C3+1)<C AND REF(“RSI.RSI1″,C3+1)>”RSI.RSI1” AND CROSS(“RSI.RSI2″,”RSI.RSI1”);

{ 三指标背离文字标注 }

DRAWTEXT(B2>0,DIF*1.2,’K底’),COLORFF00FF;  { KDJ底背离 }

DRAWTEXT(D2>0,DIF*1.2,’K顶’),COLORFFCC66;  { KDJ顶背离 }

DRAWTEXT(B3>0,DIF*1,’R底’),COLORYELLOW;   { RSI底背离 }

DRAWTEXT(D3>0,DIF*1,’R顶’),COLORFFFFFF;   { RSI顶背离 }

{==========================================}

{ 十三、卧底藏龙:底部启动选股信号 }

{==========================================}

TDJ1:=(H-L)/REF(C,1)>0.05;          { 当日振幅大于5% }

YUL1:=COUNT(TDJ1,5)>1;              { 5日内有2天以上振幅大于5% }

TU1:=CLOSE/MA(C,40)<0.74;           { 收盘价低于40日均线26%以上,超跌 }

启动1:=TDJ1 AND YUL1 AND TU1;       { 底部异动启动信号 }

ZC:=REF(CLOSE,1);

VAR1:=SMA(MAX(CLOSE-ZC,0),7,1)/SMA(ABS(CLOSE-ZC),7,1)*100;  { 7日RSI }

VAR2:=((MA(C,30)-LOW)/MA(C,60))*200;  { 30日与60日均线偏离度 }

GL1:=FILTER(REF(VAR1,1)<20 AND VAR1>REF(VAR1,1),5);  { RSI超卖区金叉 }

波段1:=FILTER(GL1 AND REF(启动1,1) AND VAR2>20 AND C>REF(C,1),10);  { 波段启动 }

MA5:=EMA(C,5);

EM5:=EMA(MA5,5);

VAR3:=ABS(MA5-EM5);

VAR4:=MA5-REF(MA5,1);

VAR5:=VAR4-REF(VAR4,1);

VAR6:=(VAR4+VAR5)/2;

TDF1:=POW(VAR3,1)*POW(VAR6,3);      { 趋势动量因子 }

NTDF1:=TDF1/HHV(ABS(TDF1),15);      { 归一化 }

确定1:=波段1 AND CROSS(NTDF1,-0.05);  { 趋势确认 }

选股1:FILTER(REF(启动1,1) AND (确定1 OR C>REF(C,1)) AND “MACD.MACD”(12,26,9)>-1.5,10),NODRAW;  { 综合选股 }

DRAWTEXT(选股1=0.4,0.3,’←选股’),COLORRED;  { “选股”文字标注 }

卧底1:(COUNT(选股1,13)>=1 AND (波段1 OR 确定1))*0.4,COLORRED;  { 卧底信号 }

DRAWTEXT(卧底1=0.4,0.3,’←卧底’),COLORRED;  { “卧底”文字标注 }

{==========================================}

{ 十四、涨停次数统计与提示 }

{==========================================}

A882:=(C-REF(C,1))/REF(C,1)*100;

A883:=COUNT(A882>8,120);            { 120日内涨停(涨幅>8%)次数 }

DRAWNUMBER_FIX(CURRBARSCOUNT=1,0.2,0,0,A883),COLORYELLOW;  { 固定位置显示数字 }

DRAWTEXT_FIX(CURRBARSCOUNT=1,0,0,0,’【关注级别大的股票】’),COLORYELLOW;  { 提示文字 }

DRAWTEXT_FIX(CURRBARSCOUNT=1,0.13,0,0,’级:’),COLORYELLOW;  { 级别标签 };

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 通达信公式源码分享|多维背离副图

评论 抢沙发

2 + 8 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮