N:=0.33;//N为之字转向的百分比取值,您可以自己调整下数值
A:=ZIGZAG(H,N,1);
Q:=IF(H>A,H,H);
T:=ZIGZAG(Q,N,1),COLORLIGHTRED,DOT,NODRAW;
T1:=BARSLAST(T>REF(T,1)&&T>REFX(T,1))+1;
T2:=BARSLAST(T<REF(T,1)&&T<REFX(T,1))+1;
IF(T1<=T2,SUM(AVPRICE*V,T1)/SUM(V,T1),NULL),COLORRED;//峰到谷
//IF(T1>=T2,SUM(AVPRICE*V,T2)/SUM(V,T2),NULL),COLORRED;//谷到峰
AA:=ZIGZAG(L,N,1);
QQ:=IF(L<AA,L,L);
TT:=ZIGZAG(QQ,N,1),COLORLIGHTRED,DOT,NODRAW;
TT1:=BARSLAST(TT>REF(TT,1)&&TT>REFX(TT,1))+1;
TT2:=BARSLAST(TT<REF(TT,1)&&TT<REFX(TT,1))+1;
//IF(TT1<=TT2,SUM(AVPRICE*V,TT1)/SUM(V,TT1),NULL),COLORRED;//峰到谷
IF(TT1>=TT2,SUM(AVPRICE*V,TT2)/SUM(V,TT2),NULL),COLORRED;//谷到峰
DRAWNUMBER(TT<REF(TT,1)&&TT<REFX(TT,1),L-1*MINPRICE,L,0,COLORYELLOW),ALIGN2,VALIGN0;//谷价
DRAWNUMBER(T>REF(T,1)&&T>REFX(T,1),H+1*MINPRICE,H,0,COLORYELLOW),ALIGN2,VALIGN2;//峰价
DRAWNUMBER(TT<REF(TT,1)&&TT<REFX(TT,1),L-1*MINPRICE,(REF(H,TT1-1)-L)*100/REF(H,TT1-1),2,COLORCYAN),ALIGN0,VALIGN0;//谷%
DRAWNUMBER(T>REF(T,1)&&T>REFX(T,1),H+1*MINPRICE,(H-REF(L,T2-1))*100/REF(L,T2-1),2,COLORRED),ALIGN0,VALIGN2;//峰%
P1:=BACKSET(ISLASTBAR&&TT1<TT2,LLVBARS(L,TT1)+1);
Q1:=BACKSET(ISLASTBAR&&T1>T2,HHVBARS(H,T2)+1);
DRAWNUMBER(CROSS(Q1,0.5),H+1*MINPRICE,H,0,COLORYELLOW),ALIGN2,VALIGN2;//峰价
DRAWNUMBER(CROSS(P1,0.5),L-1*MINPRICE,L,0,COLORYELLOW),ALIGN2,VALIGN0;//谷价
DRAWNUMBER(CROSS(Q1,0.5),H+1*MINPRICE,(H-REF(L,T2-1))*100/REF(L,T2-1),2,COLORRED),ALIGN0,VALIGN2;//峰%
DRAWNUMBER(CROSS(P1,0.5),L-1*MINPRICE,(REF(H,TT1-1)-L)*100/REF(L,TT1-1),2,COLORCYAN),ALIGN0,VALIGN0;//谷%
//DRAWTEXT(T<REF(T,1)&&T<REFX(T,1),L-3*MINPRICE,' %'),COLORCYAN,ALIGN0;
//DRAWTEXT(T>REF(T,1)&&T>REFX(T,1),H+1*MINPRICE,' %'),COLORRED,ALIGN0;
结算价:IF(DAYBARPOS>1,SETTLE,NULL),COLORWHITE,NODRAW;
日波动率:(HHV(H,DAYBARPOS)-LLV(L,DAYBARPOS))/VALUEWHEN(DAYBARPOS=1,O)*100,COLORYELLOW,PRECIS2,NODRAW;

因为判断波峰波谷的基础数据不同
波峰是用最高价的之字转向来判断,而波谷是用最低价的之字转向来判断,这样的话就会出现两个波峰间出现多个波谷的情况
建议改为按同一个基础数据来判断波峰波谷,例如用收盘价判断
您考虑下