The importance of the last full candle outside the BB.
You either get a pullback to the 16 EMA for a continuation (with a break out beyond at some point), or multiple closes start to print on the other side of the 16 EMA for a reversal.
What do the Brits always say? Simples.

if ((High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) || (High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i))) &&
((High[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1) && Low[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1))
|| (High[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1) && Low[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1)))
){
ObjectCreate("KAROLYI"+DoubleToStr(i), OBJ_RECTANGLE, 0, Time[i+2], High[i+1] , Time[i+1], Low[i+1]);
ObjectSetInteger(0,"KAROLYI"+DoubleToStr(i),OBJPROP_COLOR,clrLemonChiffon);
j=i-1;
if (High[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1)){
while (j>0){
if (Close[j]<Low[i+1]) break;
j--;
}
ObjectCreate("KAROLYII"+DoubleToStr(i), OBJ_RECTANGLE, 0, Time[i+1], Low[i+1]+50*Point , Time[j], Low[i+1]);
ObjectSetInteger(0,"KAROLYII"+DoubleToStr(i),OBJPROP_COLOR,clrLemonChiffon);
}
else if (Low[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)){
while (j>0){
if (Close[j]>High[i+1]) break;
j--;
}
ObjectCreate("KAROLYII"+DoubleToStr(i), OBJ_RECTANGLE, 0, Time[i+1], High[i+1]-50*Point , Time[j], High[i+1]);
ObjectSetInteger(0,"KAROLYII"+DoubleToStr(i),OBJPROP_COLOR,clrLemonChiffon);
}
}