
So I wasn’t allowing for a shape plot when the crossback is happening whilst the price is still below the band. I have to include these from now on, since this one took out yesterday’s high, but with a different color. Magenta would stand for a lower low / 2nd attempt is still coming.
On this image, there were 2 more lows, the last one 25 pips out.

The following was also in a pair, but the second low was 51 pips lower.

So yeah, a shot over the bow, but think lower still.
///shape long
if ((ExtATRBuffer[i]<52 && ExtATRBuffer[i+1]>52
&& ExtATRBuffer2[ArrayMinimum(ExtATRBuffer2,10,i)]>1.8
&& ExtATRBuffer[ArrayMaximum(ExtATRBuffer,10,i)]<64)
|| (((ExtATRBuffer[i]<42 && ExtATRBuffer[i+1]>42) || (ExtATRBuffer[i]<47 && ExtATRBuffer[i+1]>47))
&& Close[i+2]<iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_LOWER,i+2)
&& ((Close[i]>iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_LOWER,i)-50*Point && Close[i+3]<iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_LOWER,i+3))
|| Close[i+1]>iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_LOWER,i+1))
))
{
ObjectCreate("LINUS"+IntegerToString(i),OBJ_VLINE,2, Time[i], 0);
ObjectSet("LINUS"+IntegerToString(i),OBJPROP_COLOR,clrPurple);
ObjectSet("LINUS"+IntegerToString(i),OBJPROP_WIDTH,6);
ObjectSet("LINUS"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
ObjectSet("LINUS"+IntegerToString(i),OBJPROP_BACK,1);
if (Low[i]>iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_LOWER,i) && !((Low[i+1]<iMA(symbol,0,207,0,MODE_EMA,PRICE_LOW,i+1) && Close[i+1]>iMA(symbol,0,207,0,MODE_EMA,PRICE_LOW,i+1)) || (Low[i+2]<iMA(symbol,0,207,0,MODE_EMA,PRICE_LOW,i+2) && Close[i+2]>iMA(symbol,0,207,0,MODE_EMA,PRICE_LOW,i+2))))
{ObjectSet("LINUS"+IntegerToString(i),OBJPROP_COLOR,clrGray);
if (Low[i+1]-iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_LOWER,i+1)>240*Point)
{ObjectCreate("LINUSZZZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i],15);
ObjectSetText("LINUSZZZ"+IntegerToString(i),"Dip Below 8-24 pips=buy", 16, "Impact", clrGreen);}
}
if (((ExtATRBuffer[i]<42 && ExtATRBuffer[i+1]>42) ) && Close[i+2]<iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_LOWER,i+2) && Close[i+1]>iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_LOWER,i+1))
{ObjectSet("LINUS"+IntegerToString(i),OBJPROP_COLOR,clrGray);
ObjectCreate("LINUSZZZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i],15);
ObjectSetText("LINUSZZZ"+IntegerToString(i),"Dip Below 8-24 pips=buy", 16, "Impact", clrGreen);
if (Low[i+1]<iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_LOWER,i+1)) ObjectSet("LINUS"+IntegerToString(i),OBJPROP_COLOR,clrBlue);
}
ObjectCreate("LINUSZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i],85);
ObjectSetText("LINUSZ"+IntegerToString(i),"Shape long!", 16, "Impact", clrGreen);
ObjectCreate("LINUSZZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i],35);
ObjectSetText("LINUSZZ"+IntegerToString(i),"53/63/80=Break", 16, "Impact", clrGreen);
if (Close[i]>iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_LOWER,i)-50*Point && Close[i+3]<iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_LOWER,i+3)){ ObjectSet("LINUS"+IntegerToString(i),OBJPROP_COLOR,clrMagenta);
ObjectCreate("LINUSZZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i],35);
ObjectSetText("LINUSZZ"+IntegerToString(i),"Lower low / 2nd attempt", 16, "Impact", clrMagenta);
}
}