Yes, this is going to be a CNT. Much too technical.
I guess I have not really shown you examples of the 100-pip stepping blocks at swing turns.



This was meant to be the lead up to the first answer about why use a 100-pip (1000 points) displacement for the bumper lines.
if (High[i+20]>iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,200,i+21))) upperbumper[i]=High[i+20]+1000*Point;
if (Low[i+20]<iLow(symbol,0,iLowest(symbol,0,MODE_LOW,200,i+21))) lowerbumper[i]=Low[i+20]-1000*Point;
We are talking the protruding green and orange lines. Some help with the limitations.

By the way, the market has already gone into escrow, doing its 14×4 hrs count.

The powder boxes could print without touching these lines, but overall, price will not go without noticing it by at least a touch & divergence or a near miss.
Example below for the touch & cca 100 pips miss-divergnece.

Now a quick supplementary info on the E-50 band on the daily. It is actually a 20-sample E44 smoothing and the other two bands are 10-sample 1 std displacements.

Pretty sure I’ve posted the code before.
#property copyright "Bands by Macdulio, (c) 2021"
#property link "http://www.forexfore.blog"
#property description "Bands by Macdulio"
#property description "You don't defy the first day"
#property description "Passing through God."
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LightSeaGreen
#property indicator_color2 LightSeaGreen
#property indicator_color3 LightSeaGreen
extern int lookback = 1000;
double ExtMovingBuffer[];
double ExtUpperBuffer[];
double ExtLowerBuffer[];
double E44[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(3);
// IndicatorDigits(Digits);
//--- middle line
SetIndexStyle(0,DRAW_LINE,0,3,indicator_color1);
SetIndexBuffer(0,ExtMovingBuffer);
SetIndexLabel(0,"Bands SMA");
//--- upper band
SetIndexStyle(1,DRAW_LINE,0,3,indicator_color2);
SetIndexBuffer(1,ExtUpperBuffer);
SetIndexLabel(1,"Bands Upper");
//--- lower band
SetIndexStyle(2,DRAW_LINE,0,3,indicator_color3);
SetIndexBuffer(2,ExtLowerBuffer);
SetIndexLabel(2,"Bands Lower");
return(0);
}
//+------------------------------------------------------------------+
//| Bollinger Bands |
//+------------------------------------------------------------------+
int start()
{
ArrayResize(E44, Bars);
ArrayInitialize(E44,EMPTY_VALUE);
ArrayResize(ExtMovingBuffer, Bars);
ArrayInitialize(ExtMovingBuffer,0);
ArrayResize(ExtUpperBuffer, Bars);
ArrayInitialize(ExtUpperBuffer,0);
ArrayResize(ExtLowerBuffer, Bars);
ArrayInitialize(ExtLowerBuffer,0);
int i,j;
string symbol = Symbol();
double std;
for (i=lookback; i>=0; i--){ E44[i]=iMA(symbol,0,44,0,MODE_EMA, PRICE_MEDIAN,i);
}
for (i=0; i<lookback; i++){
for (j=i; j<i+20; j++)
ExtMovingBuffer[i]=ExtMovingBuffer[i]+E44[j];
ExtMovingBuffer[i]=ExtMovingBuffer[i]/20;
}
deletetxt1("God");
for (i=lookback-1; i>=0; i--)
{
std = iStdDevOnArray(ExtMovingBuffer,0,10,0,0,i);
if (High[i]>ExtMovingBuffer[i]+100*Point && Low[i]<ExtMovingBuffer[i]-100*Point && !(High[i+1]>ExtMovingBuffer[i+1] && Low[i+1]<ExtMovingBuffer[i+1]))
ObjectCreate("God"+DoubleToStr(i), OBJ_TEXT, 0, Time[i], ExtMovingBuffer[i]+130*Point);
ObjectSetText("God"+DoubleToStr(i), "GOD DAY 1", 14, "Impact", Maroon);
}
return(0);
}
void deletetxt1(string text){
for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--){
string on = ObjectName(iObj);
if(StringFind(on, text) == 0) ObjectDelete(on);
} }
Now, down to the subject of the B-s.
B36 9cnt aka B sensitivo
The sensitive B is an RSI2 divergence that occurs within the hourly 30-sample BB HL2.
Two examples below.
The way it behaves is the following: a 9-hour counter starts ticking. If price comes back within that time to retest the low, the divergence is “confirmed in”. The back test should not exceed the divergent low by more than a handful of pips.

The one on the left shows when price is taking longer than 9 hours to return, it gives way and there would be a lower low made about 36 pips out.
Two more earlier examples for this step down function. Wait a couple of pips to get in, you’ll still have 36 or so to cash in.

///RSI2 divergence dn
if (i>0 && RSI2[i]<RSI2[i+1] && RSI2[i-1]>RSI2[i] && RSI2[i]>3 && RSI2[i]<12 && iRSI(symbol,0,14,PRICE_MEDIAN,i)<30 && Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i)
&& RSI2[ArrayMinimum(RSI2,19,i+1)]<RSI2[i]
){
ObjectCreate("Talm"+DoubleToStr(i), OBJ_TEXT, 0, Time[i], Low[i]- 50*Point);
if (Low[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)) ObjectSetText("Talm"+DoubleToStr(i), "B36 9cnt", 42, "Impact", DeepPink);
else ObjectSetText("Talm"+DoubleToStr(i), "B", 42, "Impact", DarkGreen);
if (b[i+3]==true || b[i+4]==true || b[i+5]==true || b[i+6]==true || b[i+7]==true || b[i+8]==true || b[i+9]==true || b[i+10]==true || b[i+11]==true || b[i+12]==true){
ObjectSetText("Talm"+DoubleToStr(i), "B2", 42, "Impact", DarkGreen);
if (b[i+8]==true || b[i+9]==true || b[i+10]==true || b[i+11]==true || b[i+12]==true)
ObjectSetText("Talm"+DoubleToStr(i), "B10", 42, "Impact", DarkGreen);
else {
ObjectCreate("Talmi"+DoubleToStr(i), OBJ_TEXT, 0, Time[i], Low[i]+ 650*Point);
ObjectSetText("Talmi"+DoubleToStr(i), "Sell"+DoubleToStr(NormalizeDouble(Low[i]+600*Point,4),4)+" 4 liq brk", 22, "Impact", Blue);
}}
b[i]=true;
}
No, I did not have this plot on Friday yet, but I was certain I wanted to cut all the shorts as close as possible it was to the low made earlier, so I kept closing them by 10 more micro lots every lower / closer print.

I’ll be in the Caribbean till the 6th, so no articles for a while.