You hear people saying things like “if this high holds.”
Which high, what algorithm could find and highlight something rather important?
In my Tie Machine routine, I made a plot, a simple gray box (MF Box). It looks for a 2x 30-minute recess of a money flow run with a previous, even more extreme peak / low prior, while still in the overbought/oversold, then highlights the highest high / lowest low in that sample and makes a tolerance field of 4 pips.

The Euro finished with a first run of sustainable selling (the litmus strips are not black) and back below the trendline.
The important part here is the objective, a purely money flow-based filter. You can play away from this box with the knowledge that if it gets reversed, you would need to at least be hedged for another run. 5 pips out (1 pip past the box) sounds like a good place for that. The next run would be at a minimum of 30 pips from the scrape level based on current history.
On the downside, the low was made when the MF Box was tested, and the dip into it capped out at 1 pip.

Frankly, backtesting isn’t what one should be betting on, but you should yield to a color arrow (spike outside the 30BB, but remaining inside the 120BB.)
Below is the one with a 30-pip beat later on.

////The following won't run under "#property strict"
////MFI Box up
if (
MFI14[i+12]>=MFI14[i+13]
&&
MFI14[i+12]>MFI14[i+11]
&& MFI14[ArrayMaximum(MFI14,3,i+11)]>MFI14[ArrayMaximum(MFI14,8,i+14)]
&& MFI14[i+12]>79
&& iStochastic(symbol,0,120,3,3,MODE_SMA,PRICE_MEDIAN,MODE_MAIN,i)>28
){
if (iStochastic(symbol,0,120,3,3,MODE_SMA,PRICE_MEDIAN,MODE_MAIN,i+12)<88 || iStochastic(symbol,0,120,3,3,MODE_SMA,PRICE_MEDIAN,MODE_MAIN,i+12)>96.8) {}
else {
ObjectCreate("RayRect"+IntegerToString(i),OBJ_RECTANGLE,0, Time[i], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,16,i+1))+40*Point, Time[i+16], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,16,i+1)));
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_COLOR,clrGray);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_WIDTH,3);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_BACK,0);
ObjectCreate("DOG"+IntegerToString(i),OBJ_TEXT, 0, Time[i],iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,16,i+1))+90*Point);
ObjectSetText("DOG"+IntegerToString(i),"Scrape Level ="+DoubleToStr(NormalizeDouble(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,16,i+1)),4),4), 26, "Impact", clrCrimson);
}
}
////MFI Box dn
if (MFI14[i+12]<MFI14[i+13] && MFI14[i+12]<MFI14[i+11] && MFI14[ArrayMinimum(MFI14,3,i+11)]<MFI14[ArrayMinimum(MFI14,8,i+14)] && MFI14[i+12]<21
&& iStochastic(symbol,0,120,3,3,MODE_SMA,1,MODE_MAIN,i)<72){
if (iStochastic(symbol,0,120,3,3,MODE_SMA,PRICE_MEDIAN,MODE_MAIN,i+12)<10){
ObjectCreate("RayRect"+IntegerToString(i),OBJ_RECTANGLE,0, Time[i], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,16,i+1))-40*Point, Time[i+16], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,16,i+1)));
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_COLOR,clrGray);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_WIDTH,3);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_BACK,0);
ObjectCreate("DOG"+IntegerToString(i),OBJ_TEXT, 0, Time[i],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,16,i+1))-60*Point);
ObjectSetText("DOG"+IntegerToString(i),"Scrape Level ="+DoubleToStr(NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,16,i+1)),4),4), 26, "Impact", clrDarkGreen);
}
}