N1:=5;
N2:=10;
N3:=25;
N4:=14;
N5:=26;
// 基础指标计算(只计算不显示)
MA5:MA(CLOSE,N1),NODRAW;
MA10:MA(CLOSE,N2),NODRAW;
MA25:MA(CLOSE,N3),NODRAW;
// MACD指标
DIF:EMA(CLOSE,12)-EMA(CLOSE,26),NODRAW;
DEA:EMA(DIF,9),NODRAW;
MACD:(DIF-DEA)*2,NODRAW;
// KD指标
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:SMA(RSV,3,1),NODRAW;
D:SMA(K,3,1),NODRAW;
// CCI指标
TYP:=(HIGH+LOW+CLOSE)/3;
CCI:(TYP-MA(TYP,14))/(0.015*AVEDEV(TYP,14)),NODRAW;
// 布林带
MID_BOLL:MA(CLOSE,N5),NODRAW;
UPPER_BOLL:MID_BOLL+2*STD(CLOSE,N5),NODRAW;
LOWER_BOLL:MID_BOLL-2*STD(CLOSE,N5),NODRAW;
// RSI指标
LC:=REF(CLOSE,1);
RSI1:SMA(MAX(CLOSE-LC,0),N4,1)/SMA(ABS(CLOSE-LC),N4,1)*100,NODRAW;
// EMA20
EMA20:EMA(CLOSE,20),NODRAW;
// 成交量
VOLUME:VOL,NODRAW;
// 一、均线MA共振
COND1_空:=CROSS(MA10,MA5) AND COUNT(MACD<0,2)>=1 AND REF(MACD>0,1);
COND1_多:=CROSS(MA5,MA10) AND COUNT(MACD>0,2)>=1 AND REF(MACD<0,1);
// 二、MAKD共振
COND2_空:=COUNT(MACD<0,2)>=1 AND REF(MACD>0,1) AND CROSS(D,K);
COND2_多:=COUNT(MACD>0,2)>=1 AND REF(MACD<0,1) AND CROSS(K,D);
// 三、MACD水下首轮
COND3_空:=DIF<0 AND DEA<0 AND CROSS(DEA,DIF) AND COUNT(CROSS(DEA,DIF),BARSLAST(DIF>0))=1;
COND3_多:=DIF>0 AND DEA>0 AND CROSS(DIF,DEA) AND COUNT(CROSS(DIF,DEA),BARSLAST(DIF<0))=1;
// 四、布林CCI共振
COND4_空:=(CROSS(LOWER_BOLL,CLOSE) OR REF(CROSS(LOWER_BOLL,CLOSE),1)) AND
(CROSS(-100,CCI) OR REF(CROSS(-100,CCI),1));
COND4_多:=(CROSS(CLOSE,UPPER_BOLL) OR REF(CROSS(CLOSE,UPPER_BOLL),1)) AND
(CROSS(CCI,100) OR REF(CROSS(CCI,100),1));
// 五、布林MA共振
COND5_空:=MID_BOLL<REF(MID_BOLL,1) AND CROSS(LOWER_BOLL,CLOSE) AND CROSS(DEA,DIF);
COND5_多:=MID_BOLL>REF(MID_BOLL,1) AND CROSS(CLOSE,UPPER_BOLL) AND CROSS(DIF,DEA);
// 六、MACCI共振
COND6_空:=MA25<REF(MA25,1) AND CROSS(-100,CCI);
COND6_多:=MA25>REF(MA25,1) AND CROSS(CCI,100);
// 七、布林带RSI共振
COND7_空:=CROSS(UPPER_BOLL,CLOSE) AND CROSS(60,RSI1);
COND7_多:=CROSS(CLOSE,LOWER_BOLL) AND CROSS(RSI1,40);
// 八、威科夫操盘术
COND8_空:=COUNT(EMA20>REF(EMA20,1),10)>=6 AND CROSS(EMA20,CLOSE) AND VOLUME>HHV(VOLUME,10);
COND8_多:=COUNT(EMA20<REF(EMA20,1),10)>=6 AND CROSS(CLOSE,EMA20) AND VOLUME>HHV(VOLUME,10);
// 九、CCI背离
// CCI底背离
CCI_LOW1:=LLV(CCI,20);
BAR1:=BARSLAST(CCI=CCI_LOW1);
CCI_LOW2:=LLV(CCI,BAR1+10);
BAR2:=BARSLAST(CCI=CCI_LOW2);
COND9_多:=CLOSE>OPEN AND
REF(CCI,1)<-100 AND
CCI_LOW2<CCI_LOW1 AND
LLV(LOW,BAR2)<LLV(LOW,BAR1) AND
HHV(CCI,BAR1)>-100 AND HHV(CCI,BAR1)<0 AND
BAR1-BAR2>5;
// CCI顶背离
CCI_HIGH1:=HHV(CCI,20);
BAR3:=BARSLAST(CCI=CCI_HIGH1);
CCI_HIGH2:=HHV(CCI,BAR3+10);
BAR4:=BARSLAST(CCI=CCI_HIGH2);
COND9_空:=CLOSE<OPEN AND
REF(CCI,1)>100 AND
CCI_HIGH2>CCI_HIGH1 AND
HHV(HIGH,BAR4)>HHV(HIGH,BAR3) AND
LLV(CCI,BAR3)<100 AND LLV(CCI,BAR3)>0 AND
BAR3-BAR4>5;
// 综合多空条件
总多信号:=COND1_多 OR COND2_多 OR COND3_多 OR COND4_多 OR COND5_多 OR COND6_多 OR COND7_多 OR COND8_多 OR COND9_多;
总空信号:=COND1_空 OR COND2_空 OR COND3_空 OR COND4_空 OR COND5_空 OR COND6_空 OR COND7_空 OR COND8_空 OR COND9_空;
// 用箭头替代文字提示
DRAWICON(总多信号,LOW,4),VALIGN0; // 向下箭头,红色
DRAWICON(总空信号,HIGH,5); // 向上箭头,绿色
// 阶梯划线功能
HH1:=IFELSE(H<REF(H,1)&&REF(H,1)<REF(H,2),REF(H,2),0);
LL1:=IFELSE(L>REF(L,1)&&REF(L,1)>REF(L,2),REF(L,2),0);
HH2:=VALUEWHEN(HH1>0,HH1);
LL2:=VALUEWHEN(LL1>0,LL1);
K1:=IFELSE(CLOSE>HH2,-3,IFELSE(CLOSE<LL2,1,0));
K2:=VALUEWHEN(K1<>0,K1);
G:=IFELSE(K2=1,HH2,LL2);
DRAWLASTBARNUMBER(G,G,0,COLORCYAN);

