来函数检测结果如下:
该公式没有未来函数


XA:=DATE<=20240115;

DIF:(EMA(C,12)*XA-EMA(C,26))*XA,COLORF0F0F0;

DEA:EMA(DIF,9)*XA,COLOR00DCDC;

MACD:2*(DIF-DEA)*XA,COLORSTICK;

STICKLINE(MACD>REF(MACD,1) AND MACD>=0,MACD,0,10/3,0),COLORRED;

STICKLINE(MACD>REF(MACD,1) AND MACD<0,MACD,0,10/3,1),COLORRED;

FH1:=REF(MACD,1)<REF(MACD,2) AND REF(MACD,2)<REF(MACD,3) AND REF(MACD,3)<REF(MACD,4);

FH2:=MACD>=0 AND COUNT(MACD>REF(MACD,1),1)=1;

FH3:=FH1 AND FH2 AND EMA(C,13)>REF(EMA(C,13),1);

FH4:=FH1 AND FH2 AND ABS((DIF-DEA)/C)<0.018;

FH5:=FH1 AND FH2 AND MACD<0.10;

STICKLINE(FH3 OR FH4 OR FH5,0,MACD,10/3,0),COLORMAGENTA;

STICKLINE(MACD<=REF(MACD,1)AND MACD<0,0,MACD,10/3,0),COLORGREEN;

STICKLINE(MACD<REF(MACD,1)AND MACD>0,0,MACD,10/3,1),COLORYELLOW;

红中红:FH3 OR FH4 OR FH5,NODRAW;

MACD2:=MACD*XA;

MJ:=MACD*XA;

S05:=SUM(MJ,0);

QST:=BARSLAST(MJ<0 AND REF(MJ,1)>0)+1;

QXT:=BARSLAST(MJ>0 AND REF(MJ,1)<0)+1;

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)*XA;

低位金叉:=CROSS(DIF,DEA) AND DIF<-0.1;

JCCOUNT:=COUNT(CROSS(DIF,DEA),BARSLAST(DEA>=0));

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

DRAWICON(二次金叉,0,25);

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

DRAWICON(三次金叉,0,26);

A002:=BARSLAST(REF(CROSS(DIF,DEA),1));

底背离:=REF(CLOSE,A002+1)>CLOSE AND DIF>REF(DIF,A002+1) AND CROSS(DIF,DEA);

DRAWICON(LONGCROSS(CLOSE,MA(CLOSE,5),17),MACD2,1);

DRAWTEXT(二次金叉>低位金叉,DIF,'金2'),COLORRED;

C81:=REF(C,1);

RN:=9;

RSI1:=SMA(MAX(C-C81,0),RN,1)/SMA(ABS(C-C81),RN,1)*100;

低点:=CROSS(RSI1,20);

STICKLINE(低点,0.1,0,0,0),COLORYELLOW;

DRAWICON(低点, 0.15,1);

DRAWTEXT(低点, 0.14,'←底'),COLORYELLOW;

顶:=CROSS(80,RSI1);

DRAWICON(顶, DIF*1.15,2);

DRAWTEXT(顶, DIF*1.1,'←减/清仓'),COLORGREEN;

死叉:=CROSS(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;

CL2:=REF(CL1,N1+1),NODRAW;

DIFL2:=REF(DIFL1,N1+1),NODRAW;

CL3:=REF(CL2,N1+1),NODRAW;

DIFL3:=REF(DIFL2,N1+1),NODRAW;

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));

直接底背离:=(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);

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);

金叉:=CROSS(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;

CH2:=REF(CH1,M1+1),NODRAW;

DIFH2:=REF(DIFH1,M1+1),NODRAW;

CH3:=REF(CH2,M1+1),NODRAW;

DIFH3:=REF(DIFH2,M1+1),NODRAW;

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));

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

隔峰顶背离:=(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);

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));

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));

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));

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

DRAWTEXT_FIX(C>O,0.01,0,0,'公式源码HTTP://'),COLOR333333;

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;

DRAWTEXT(D2>0,DIF*1.2,'K顶'),COLORFFCC66;

DRAWTEXT(B3>0,DIF*1,'R底'),COLORYELLOW;

DRAWTEXT(D3>0,DIF*1,'R顶'),COLORFFFFFF;

 


原理解析:
XA赋值:DATE<=20240115
输出DIF:(C的12日指数移动平均*XA-C的26日指数移动平均)*XA,COLORF0F0F0
输出DEA:DIF的9日指数移动平均*XA,COLOR00DCDC
输出MACD:2*(DIF-DEA)*XA,COLORSTICK
STICKLINE(MACD>1日前的MACD AND MACD>=0,MACD,0,10/3,0),画红色
STICKLINE(MACD>1日前的MACD AND MACD<0,MACD,0,10/3,1),画红色
FH1赋值:1日前的MACD<2日前的MACD AND 2日前的MACD<3日前的MACD AND 3日前的MACD<4日前的MACD
FH2赋值:MACD>=0 AND COUNT(MACD>1日前的MACD,1)=1
FH3赋值:FH1 AND FH2 AND C的13日指数移动平均>1日前的C的13日指数移动平均
FH4赋值:FH1 AND FH2 AND (DIF-DEA的绝对值/C)<0.018
FH5赋值:FH1 AND FH2 AND MACD<0.10
当满足条件FH3 OR FH4 OR FH5时,在0和MACD之间画柱状线
STICKLINE(MACD<=1日前的MACDAND MACD<0,0,MACD,10/3,0),画绿色
STICKLINE(MACD<1日前的MACDAND MACD>0,0,MACD,10/3,1),画黄色
输出红中红:FH3 OR FH4 OR FH5,NODRAW
MACD2:=MACD*XA
MJ赋值:MACD*XA
S05赋值:0的MJ日累和
QST赋值:上次MJ<0 AND 1日前的MJ>0距今天数+1
QXT赋值:上次MJ>0 AND 1日前的MJ<0距今天数+1
S5赋值:IF(MJ>0,S05-REF(S05,上次MJ<0距今天数),S05-REF(S05,BARSLAST(MJ>0)))/10
ST赋值:IF(MJ>0,QXT日前的QST+QXT,QST日前的QXT+QST)
RS5赋值:ST日前的S5*XA
低位金叉赋值:DIF上穿DEA AND DIF<-0.1
JCCOUNT赋值:COUNT(DIF上穿DEA,上次DEA>=0距今天数)
二次金叉赋值:DIF上穿DEA AND DEA<0 AND 统计21日满足JC=2的天数=1
当满足条件二次金叉时,在0和25之间画图标
三次金叉赋值:DIF上穿DEA AND DEA<0 AND 统计60日满足JC=3的天数=1
当满足条件三次金叉时,在0和26之间画图标
A002赋值:上次1日前的DIF上穿DEA距今天数
底背离赋值:A002+1日前的收盘价>收盘价 AND DIF>A002+1日前的DIF AND DIF上穿DEA
DRAWICON(LONGCROSS(收盘价,收盘价的5日简单移动平均,17),MACD2,1)
当满足条件二次金叉>低位金叉时,在DIF和'金2'位置书写文字
C81赋值:1日前的C
RN赋值:9
RSI1赋值:SMA(C-C81和0较大值,RN,1)/SMA(C-C81的绝对值,RN,1)*100
低点赋值:RSI1上穿20
当满足条件低点时,在0.1和0之间画柱状线
当满足条件低点时,在 0.15和1之间画图标
当满足条件低点时,在 0.14和'←底'位置书写文字
顶赋值:80上穿RSI1
当满足条件顶时,在 DIF*1.15和2之间画图标
当满足条件顶时,在 DIF*1.1和'←减/清仓'位置书写文字
死叉赋值:DEA上穿DIF
N1赋值:上次死叉距今天数,NODRAW
N2赋值:REF(上次死叉距今天数,N1+1),NODRAW
N3赋值:REF(上次死叉距今天数,N2+N1+2),NODRAW
CL1赋值:N1+1日内C最低值,NODRAW
DIFL1:=N1+1日内DIF最低值,NODRAW
CL2赋值:N1+1日前的CL1,NODRAW
DIFL2:=N1+1日前的DIFL1,NODRAW
CL3赋值:N1+1日前的CL2,NODRAW
DIFL3:=N1+1日前的DIFL2,NODRAW
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))
直接底背离赋值:(CL1MDIFL2) AND (MACD<0 AND 1日前的MACD<0) AND MDIFB2<=1日前的MDIFB2
隔峰底背离赋值:(CL1MDIFL3) AND (MACD<0 AND 1日前的MACD<0) AND MDIFB3<=1日前的MDIFB3
输出B6:直接底背离 OR 隔峰底背离,NODRAW
输出BG:((MDIFB2>1日前的MDIFB2)*1日前的直接底背离) OR ((MDIFB3>1日前的MDIFB3)*1日前的隔峰底背离),NODRAW
底背离消失:=(1日前的直接底背离 AND DIFL1<=DIFL2 ) OR (1日前的隔峰底背离 AND DIFL1<=DIFL3)
金叉赋值:DIF上穿DEA
M1赋值:上次金叉距今天数,NODRAW
M2赋值:REF(上次金叉距今天数,M1+1),NODRAW
M3赋值:REF(上次金叉距今天数,M2+M1+2),NODRAW
CH1赋值:M1+1日内C最高值,NODRAW
DIFH1:=M1+1日内DIF最高值,NODRAW
CH2赋值:M1+1日前的CH1,NODRAW
DIFH2:=M1+1日前的DIFH1,NODRAW
CH3赋值:M1+1日前的CH2,NODRAW
DIFH3:=M1+1日前的DIFH2,NODRAW
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))
直接顶背离:=(CH1>CH2 ) AND (MDIFT20 AND 1日前的MACD>0) AND MDIFT2>=1日前的MDIFT2
隔峰顶背离:=(CH1>CH3 AND CH3>CH2 ) AND (MDIFT30 AND 1日前的MACD>0) AND MDIFT3>=1日前的MDIFT3
输出T6:直接顶背离 OR 隔峰顶背离,NODRAW
输出TG:((MDIFT2<1日前的MDIFT2)*1日前的直接顶背离) OR ((MDIFT3<1日前的MDIFT3)*1日前的隔峰顶背离),NODRAW
顶背离消失:=(1日前的直接顶背离 AND DIFH1>=DIFH2 ) OR (1日前的隔峰顶背离 AND DIFH1>=DIFH3)
A2赋值:上次REF(CROSS("KDJ.K"(9,3,3距今天数,"KDJ.D"(9,3,3)),1))
B2赋值:A2+1日前的C>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))
A3赋值:上次REF(CROSS("RSI.RSI1"(6,12,24距今天数,"RSI.RSI2"(6,12,24)),1))
B3赋值:A3+1日前的C>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))
C2赋值:上次REF(CROSS("KDJ.D"(9,3,3距今天数,"KDJ.K"(9,3,3)),1))
D2赋值:C2+1日前的C"KDJ.K"(9,3,3) AND CROSS("KDJ.D"(9,3,3),"KDJ.K"(9,3,3))
C3赋值:上次REF(CROSS("RSI.RSI2"(6,12,24距今天数,"RSI.RSI1"(6,12,24)),1))
当满足条件C>O时,在横轴0.01纵轴0位置书写文字
D3赋值:C3+1日前的C"RSI.RSI1"
AND "RSI.RSI2"上穿"RSI.RSI1"
当满足条件B2>0时,在DIF*1.2和'K底'位置书写文字
当满足条件D2>0时,在DIF*1.2和'K顶'位置书写文字
当满足条件B3>0时,在DIF*1和'R底'位置书写文字
当满足条件D3>0时,在DIF*1和'R顶'位置书写文字
 

声明:本站所有资源,均为用户自主上传,仅作为学习交流之用,其版权归原作者或原出版社所有,本站不对所涉及的版权问题负法律责任。如有侵权,请联系我们删除!