BrOutBB and come back under MA200

I expert,
I’m wrote a formula which gives me a brake out of the Bollinger Bands and which returns below the Moving Average 200 (MA200).

My buying signal is a Stokastics Cross below the MA200.

I check that the Top is larger than the MA200 ( HautOK, in the formula)

I check that the Bas is smaller than the MA200 (BasOK, in the formula)

This whole part of the formula seems correct

My problem is that I cannot find the Previous Low (BasBP in the formula)

BarBP= Ref(LLVBars(C,LastValue(BarBpT)), - BarH);

I estimated that the wave leading us to the Top should be, perhaps, 1.5*the length of the bearish wave leading us to the BUY

(BarBpT= int(BarH*1.5) ;)

To find the Previous Bottom, we place ourselves on the Top and we look for the LLVBars of the Close with a maximum length of BarBpT, which gives us:

BarBp= Ref(LLVBars(C,LastValue(BarBpT)), - BarH);

I must have made a mistake in the BarBp formula because its results are not good

Where is the bug in BarBp?

Thank's expert
Yves L.

type or paste code here
/*      BrOut BB Daily et PB sous Moy-3MA(100-200)	*/

V20= MA(V,20) ;	
V50= IIf(IsNull(MA(V,50)),V20,MA(V,50)) ;
V100= IIf(IsNull(MA(V,100)),V50,MA(V,100)) ;
V200= IIf(IsNull(MA(V,200)),V100,MA(V,200)) ;
VolMin= Min(Min(V20,V50),Min(V100,V200)) ;
Plot(VolMin,"V-Min",colorTeal,styleOwnScale );
function BBT(Ind,P)	{ bon= BBandTop(Ind,P,2) ; return bon ; } ;
function BBB(Ind,P)	{ bon= BBandBot(Ind,Dev,2) ; return bon ; } ;
function CrBB(Ind,P)	{ bon= Cross(C,BBT(Ind,P)) ; return bon ; } ;
function EcBB(Ind,P)	{ bon= BBandTop(Ind,P,2)-BBandBot(Ind,P,2) ; return bon ; } ;
function CrBbVol(Ind,P)	{ bon= CrBB(Ind,P) AND V>=VolMin ;  return bon ; } ;
CrBbD= (CrBBVol(C,15) OR CrBBVol(C,20)) AND V>= VolMin ;	
Plot(CrBbD,"CrBB-D+Vol",colorblue,styleOwnScale );
MA200= MA(C,200) ;
CrSto1= Cross(StochK(9,3),StochD(9,3,3)) AND LLV(StochK(9,3),5)<=55 ;
LongCrBbD= BarsSince(CrBbD) ;
//Plot(LongCrBbD,"Long-CrBB",colorblue,styleOwnScale );
// Limiter la longueur du haut ???????????????
BarH= HHVBars(C,LongCrBbD+2) ;
PHaut= Ref(C,-BarH) ;
Plot(BarH,"Bar-H",colorOrange,styleOwnScale );

BarBpT= int(BarH*1.5) ;
Plot(BarBpT,"Bar-BpT",colorOrange,styleOwnScale );
BarBP= Ref(LLVBars(C,LastValue(BarBpT)), - BarH) ;
BarBp= BarBp + BarH ;
Plot(BarBP,"Bar-BP-H",colorOrange,styleOwnScale );

BarBp= BarBp + BarH ;
Plot(BarBp,"BarBp",colorOrange,styleOwnScale );
PBp= Ref( C , -BarBp) ;

BarBas= LLVBars(C, BarH) ;
PBas= LLV(C, BarH) ;

Plot(PBP,"$BP",colorOrange,styleOwnScale );
Plot(PHaut,"\n$Haut",colorOrange,styleOwnScale );
Plot(PBas,"$Bas",colorOrange,styleOwnScale );

BasOK= Ref(Ma200,-BarBas)>=Pbas ;
HautOK= Ref(Ma200,-BarH)<=PHaut ;
BpOK= Ref(Ma200,-BarBP)>=PBP ;

CrSto2= BarsSince(CrSto1) <=5 AND BarsSince(BasOK)<=5 ;
CrSto2= CrSto2 AND Ref(CrSto2,-1)==0 ;
CrSto= CrSto1 OR CrSto2 ;
CrStoOK= CrSto AND HautOK AND BasOK AND BpOK AND BarH<=88 ;   

Buy=CrStoOK ;
Plot(Buy,"Buy",colorBlack,styleOwnScale|styleThick );