Some impetus for flow chart thinking.
Let’s say that a Bow Back is a move that takes place in a 3-9 day stretch (3 or 7 are the most common).
Yellow triangles for visuals.
If the ending point exceeds the starting point, the new leg has extra force behind it, thus the swing low/high would get taken out.

Of course, in the above picture, the bottom triangle showed force, and it should have made a new higher swing high – it can be overruled down the line by a no-strength unassuming turn (the embedding gets put off and the sequence goes as magenta RSI2, embedding, a new fractal with a strong RSI2 divergence).
If the ending does not exceed the starting point, the new leg has no extra force behind it, thus the swing low/high would not be reached before turning back.
The following example is a bow-back that gets immediately choked by a liquidity break leg.

What does this leave us with?

Since the move up has some extra force behind it (lower low on the bow back), it probably is aimed at a new high. There seems to be a cup & handle forming. For the handle, I think you should see a 90+ pips drop, and the move back up may as well print a new bow back. A magenta print is basically a given with Monday, and there may be a limbo with 1 or 2 slightly higher highs with a bow back soon after as an alternate route.
Album #14. The weird one.
for(i=200; i>=0; i--){
if (bupcounter>0) bupcounter++;
if (bdncounter>0) bdncounter++;
///counter starts
if ((Low[i+2]>Low[i+1] && Low[i+1]<iMA(symbol,0,9,0,MODE_EMA, PRICE_MEDIAN,i+1)-FMax*2.8*10*Point && Low[i]>iMA(symbol,0,9,0,MODE_EMA, PRICE_MEDIAN,i)-FMax*2.8*10*Point ) ||
(iFractals(symbol,0,MODE_LOWER,i+1) && iFractals(symbol,0,MODE_LOWER,i+4) && Low[i+1]<Low[i+4]))
bupcounter=1;
if ((High[i+1]>iMA(symbol,0,9,0,MODE_EMA, PRICE_MEDIAN,i+1)+FMax*2.5*10*Point || High[i+2]>iMA(symbol,0,9,0,MODE_EMA, PRICE_MEDIAN,i+2)+FMax*2.8*10*Point || High[i+3]>iMA(symbol,0,9,0,MODE_EMA, PRICE_MEDIAN,i+3)+FMax*2.8*10*Point)
&&
High[i+2]<High[i+1] && High[i]<High[i+1]+20*Point && High[i]<iMA(symbol,0,9,0,MODE_EMA, PRICE_MEDIAN,i)+FMax*2.6*10*Point )
bdncounter=1;
///x-sample NL / NH reset
if (i>0 && Low[i-1]>Low[i] && bupcounter>=3 && Low[i+1]==iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i+1))) bupcounter=0;
if (i>0 && High[i-1]<High[i] && bdncounter>=9 && High[i+1]==iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,3,i+1))) bdncounter=1;
if (bupcounter>6 && High[i]>High[i+1]) bupcounter=0;
if (bupcounter>3 && iFractals(symbol,0,MODE_LOWER,i+1)) bupcounter=1;
if (bupcounter==5 && Close[i]>High[i+1]) bupcounter=0;
if (bupcounter>0){
ObjectCreate("Punto"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+310*Point);
if (bupcounter==3 || (bupcounter==6 && High[i]-Low[i]<930*Point && High[i+4]-Low[i]<930*Point)) {if (Close[i]>Open[i]) ObjectSetText("Punto"+IntegerToString(i), IntegerToString(bupcounter), 21, "Impact", Red); else ObjectSetText("Punto"+IntegerToString(i), IntegerToString(bupcounter), 21, "Impact", Green);
ObjectCreate("Puntos"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]+180*Point);
ObjectSetText("Puntos"+IntegerToString(i), CharToString(240), 61, "Wingdings", Red);
if (bupcounter==3 && High[i]<iMA(symbol,0,50,0,MODE_EMA, PRICE_MEDIAN,i)-100*Point){
j=i;
while (j>0){
if (Low[j]<Low[i]-450*Point) break;
j--;
}
if (j>=0){
ObjectCreate("Puntor"+IntegerToString(i), OBJ_RECTANGLE, 0, Time[i+1], Low[i]-450*Point, Time[j], Low[i]-850*Point);
ObjectSetInteger(0,"Puntor"+IntegerToString(i),OBJPROP_COLOR,clrGreen);
ObjectSet("Puntor"+IntegerToString(i),OBJPROP_BACK,1);
ObjectSet("Puntor"+IntegerToString(i),OBJPROP_WIDTH,5);
ObjectCreate("Puntoxy"+IntegerToString(i), OBJ_TEXT, 0, Time[i+4], Low[i]+60*Point);
ObjectSetText("Puntoxy"+IntegerToString(i), " 2xSell: "+DoubleToStr(NormalizeDouble(Low[i],4),4), 21, "Impact", White);
ObjectCreate("Puntoy"+IntegerToString(i), OBJ_TEXT, 0, Time[i+4], Low[i]+60*Point);
ObjectSetText("Puntoy"+IntegerToString(i), "2xSell: "+DoubleToStr(NormalizeDouble(Low[i],4),4), 21, "Impact", Red);
ObjectCreate("Puntoyy"+IntegerToString(i), OBJ_TEXT, 0, Time[i+5], Low[i]-510*Point);
ObjectSetText("Puntoyy"+IntegerToString(i), "Cvr: "+DoubleToStr(NormalizeDouble(Low[i]-450*Point,4),4), 21, "Impact", Blue);
}
}
if (bupcounter==6){
j=i;
while (j>0){
if (Low[j]<Low[i]-820*Point) break;
j--;
}
if (j>=0){
ObjectCreate("Puntor"+IntegerToString(i), OBJ_RECTANGLE, 0, Time[i+1], Low[i]-820*Point, Time[j], Low[i]-1250*Point);
ObjectSetInteger(0,"Puntor"+IntegerToString(i),OBJPROP_COLOR,clrGreen);
ObjectSet("Puntor"+IntegerToString(i),OBJPROP_BACK,1);
ObjectSet("Puntor"+IntegerToString(i),OBJPROP_WIDTH,5);
ObjectCreate("Puntoxy"+IntegerToString(i), OBJ_TEXT, 0, Time[i+4], Low[i]+60*Point);
ObjectSetText("Puntoxy"+IntegerToString(i), " 2xSell: "+DoubleToStr(NormalizeDouble(Low[i],4),4), 21, "Impact", White);
ObjectCreate("Puntoy"+IntegerToString(i), OBJ_TEXT, 0, Time[i+4], Low[i]+60*Point);
ObjectSetText("Puntoy"+IntegerToString(i), "2xSell: "+DoubleToStr(NormalizeDouble(Low[i],4),4), 21, "Impact", Red);
ObjectCreate("Puntoyy"+IntegerToString(i), OBJ_TEXT, 0, Time[i+5], Low[i]-880*Point);
ObjectSetText("Puntoyy"+IntegerToString(i), "Cvr: "+DoubleToStr(NormalizeDouble(Low[i]-820*Point,4),4), 21, "Impact", Blue);
}
}
}
else ObjectSetText("Punto"+IntegerToString(i), IntegerToString(bupcounter), 21, "Impact", Purple);
if (bupcounter==1) ObjectSetText("Punto"+IntegerToString(i), IntegerToString(bupcounter), 31, "Impact", Yellow);
}
if (bdncounter==2 && Close[i]<Low[i+1]) bdncounter=0;
if (bdncounter>3 && iFractals(symbol,0,MODE_UPPER,i+1)) bdncounter=1;
if (bdncounter>=4 && Low[i]<iMA(symbol,0,55,0,MODE_EMA,PRICE_MEDIAN,i)) bdncounter=0;
if (bdncounter>0){
ObjectCreate("Puntox"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]-70*Point);
if (bdncounter==3 || bdncounter==6) {if (Close[i]>Open[i]) ObjectSetText("Puntox"+IntegerToString(i), IntegerToString(bdncounter), 21, "Impact", Red); else ObjectSetText("Puntox"+IntegerToString(i), IntegerToString(bdncounter), 21, "Impact", Green);
ObjectCreate("Puntos"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+260*Point);
ObjectSetText("Puntos"+IntegerToString(i), CharToString(240), 61, "Wingdings", Green);
if (bdncounter==3 && Low[i]>iMA(symbol,0,50,0,MODE_EMA, PRICE_MEDIAN,i)+100*Point){
j=i;
while (j>0){
if (High[j]>High[i]+620*Point) break;
j--;
}
if (j>=0){
ObjectCreate("Puntor"+IntegerToString(i), OBJ_RECTANGLE, 0, Time[i+1], High[i]+775*Point, Time[j], High[i]+1200*Point);
ObjectSetInteger(0,"Puntor"+IntegerToString(i),OBJPROP_COLOR,clrRed);
ObjectSet("Puntor"+IntegerToString(i),OBJPROP_BACK,1);
ObjectSet("Puntor"+IntegerToString(i),OBJPROP_WIDTH,5);
ObjectCreate("Puntoxy"+IntegerToString(i), OBJ_TEXT, 0, Time[i+4], High[i]+140*Point);
ObjectSetText("Puntoxy"+IntegerToString(i), " 2xBuy: "+DoubleToStr(NormalizeDouble(High[i],4),4), 21, "Impact", White);
ObjectCreate("Puntoy"+IntegerToString(i), OBJ_TEXT, 0, Time[i+4], High[i]+140*Point);
ObjectSetText("Puntoy"+IntegerToString(i), "2xBuy: "+DoubleToStr(NormalizeDouble(High[i],4),4), 21, "Impact", Green);
ObjectCreate("Puntoyy"+IntegerToString(i), OBJ_TEXT, 0, Time[i+4], High[i]+675*Point);
ObjectSetText("Puntoyy"+IntegerToString(i), "Cvr: "+DoubleToStr(NormalizeDouble(High[i]+650*Point,4),4), 21, "Impact", Blue);
}
}
if (bdncounter==6){
j=i;
while (j>0){
if (High[j]>High[i]+820*Point) break;
j--;
}
if (j>=0){
ObjectCreate("Puntor"+IntegerToString(i), OBJ_RECTANGLE, 0, Time[i+1], High[i]+825*Point, Time[j], High[i]+1225*Point);
ObjectSetInteger(0,"Puntor"+IntegerToString(i),OBJPROP_COLOR,clrRed);
ObjectSet("Puntor"+IntegerToString(i),OBJPROP_BACK,1);
ObjectSet("Puntor"+IntegerToString(i),OBJPROP_WIDTH,5);
ObjectCreate("Puntoxy"+IntegerToString(i), OBJ_TEXT, 0, Time[i+4], High[i]+140*Point);
ObjectSetText("Puntoxy"+IntegerToString(i), " 2xBuy: "+DoubleToStr(NormalizeDouble(High[i],4),4), 21, "Impact", White);
ObjectCreate("Puntoy"+IntegerToString(i), OBJ_TEXT, 0, Time[i+4], High[i]+140*Point);
ObjectSetText("Puntoy"+IntegerToString(i), "2xBuy: "+DoubleToStr(NormalizeDouble(High[i],4),4), 21, "Impact", Green);
ObjectCreate("Puntoyy"+IntegerToString(i), OBJ_TEXT, 0, Time[i+4], High[i]+825*Point);
ObjectSetText("Puntoyy"+IntegerToString(i), "Cvr: "+DoubleToStr(NormalizeDouble(High[i]+825*Point,4),4), 21, "Impact", Blue);
}
}
}
else ObjectSetText("Puntox"+IntegerToString(i), IntegerToString(bdncounter), 21, "Impact", Purple);
if (bdncounter==3 && Low[i]<iMA(symbol,0,50,0,MODE_EMA, PRICE_MEDIAN,i)+100*Point) ObjectSetText("Puntox"+IntegerToString(i), IntegerToString(bdncounter), 21, "Impact", Green);
if (bdncounter==1) ObjectSetText("Puntox"+IntegerToString(i), IntegerToString(bdncounter), 31, "Impact", Yellow);
}}

After the 1st Magenta RSI2 print, the 2nd fractal would be the starting leg of the important bow.