通达信选股公式简介:
MACD钝化选股公式用于股票市场分析中的MACD(Moving Average Convergence Divergence,移动平均收敛发散指标)指标,并在此基础上增加了底部结构预警和底背离信号的检测。MACD是一种动量指标,显示了两个移动平均线之间的关系,通常用于识别趋势的变化。
公式效果图:
指标源码及源码注释:
SHORT:=12;{设置短期EMA周期为12}
LONG:=26;{设置长期EMA周期为26}
MID:=9;{设置中期EMA周期为9}
DIF:=100*(EMA(CLOSE,SHORT)-EMA(CLOSE,LONG));{计算DIF,即短期EMA与长期EMA之差乘以100}
DEA:=EMA(DIF,MID);{计算DEA,即DIF的中期EMA}
MACD:=(DIF-DEA)*2;{计算MACD,即DIF与DEA之差的两倍}
{底部结构预警}{公式网WWW.GUKOUDAI.COM}
死叉:=CROSS(DEA,DIF);{定义死叉,即DEA上穿DIF}
N1:=BARSLAST(死叉);{计算最近一次死叉的位置}
N2:=REF(BARSLAST(死叉),N1+1);{计算倒数第二次死叉与最近一次死叉的间隔}
N3:=REF(BARSLAST(死叉),N2+N1+2);{计算倒数第三次死叉与倒数第二次死叉的间隔}
CL1:=LLV(C,N1+1);{计算最近一次死叉后最低收盘价}
DIFL1:=LLV(DIF,N1+1);{计算最近一次死叉后DIF的最低值}
CL2:=REF(CL1,N1+1);{计算倒数第二次死叉与最近一次死叉之间的最低收盘价}
DIFL2:=REF(DIFL1,N1+1);{计算倒数第二次死叉与最近一次死叉之间的DIF最低值}
CL3:=REF(CL2,N1+1);{计算倒数第三次死叉与倒数第二次死叉之间的最低收盘价}
DIFL3:=REF(DIFL2,N1+1);{计算倒数第三次死叉与倒数第二次死叉之间的DIF最低值}
PDIFL2:=IF(DIFL2>0,INTPART(LOG(DIFL2))-1,INTPART(LOG(-DIFL2))-1);{计算DIFL2的整数部分}
MDIFL2:=INTPART(DIFL2/POW(10,PDIFL2));{计算DIFL2的十分位}
PDIFL3:=IF(DIFL3>0,INTPART(LOG(DIFL3))-1,INTPART(LOG(-DIFL3))-1);{计算DIFL3的整数部分}
MDIFL3:=INTPART(DIFL3/POW(10,PDIFL3));{计算DIFL3的十分位}
MDIFB2:=INTPART(DIF/POW(10,PDIFL2));{计算DIF相对于DIFL2的十分位}
MDIFB3:=INTPART(DIF/POW(10,PDIFL3));{计算DIF相对于DIFL3的十分位}
直接底背离:=(CL1<CL2 ) AND (MDIFB2>MDIFL2) AND (MACD<0 AND REF(MACD,1)<0) AND MDIFB2<=REF(MDIFB2,1);{定义直接底背离的条件}
隔峰底背离:=(CL1<CL3 AND CL3<CL2 ) AND (MDIFB3>MDIFL3) AND (MACD<0 AND REF(MACD,1)<0) AND MDIFB3<=REF(MDIFB3,1);{定义隔峰底背离的条件}
B:=直接底背离 OR 隔峰底背离;{定义底背离信号}
BG:=((MDIFB2>REF(MDIFB2,1))*REF(直接底背离,1)) OR ((MDIFB3>REF(MDIFB3,1))*REF(隔峰底背离,1));{定义背离信号的增强条件}
TFILTER(BG,MACD>0,1)&&BARSLAST(B);{应用TFILTER函数并结合BARSLAST函数过滤信号}