The pig is an RSI2 divergence that remains untouched. This is bet the farm condition #1.

Yes, it is an embedded oversold market, thus we need to look above to find the starting point of the down move.

The pig is the pink/purple rectangle by the overbought neckline on the image.

The first number is the 1.3x daily true range deducted from the last 15-minute closing value where the 12- sample fractal energy crossed above 53.

i=0; while (!(ChoppinessIndex(12*4,i+1)<53 && ChoppinessIndex(12*4,i)>53)) i++; Close15 = iClose(NULL,15,i);

Finding the pig:

i2=0; while (i2<500){ i=i2+2; if (ExtUpFractalsBuffer[i2]!=EMPTY_VALUE) while (i<i2+26 ){ if ( RSI2[i2]<RSI2[i] && iFractals(Symbol(),0,MODE_UPPER,i) && High[i2]>=High[i]+10*Point ) break; i++;} if (ExtUpFractalsBuffer[i]!=EMPTY_VALUE && ExtUpFractalsBuffer[i2]!=EMPTY_VALUE && RSI2[i2]<RSI2[i] && High[i2]>=High[i]+10*Point ) break; i2++;} if (ExtUpFractalsBuffer[i]!=EMPTY_VALUE && ExtUpFractalsBuffer[i2]!=EMPTY_VALUE && i2<500 && High[i2]>=High[i]+10*Point) { UpFractalTime_2=iTime(NULL, 0,i2); UpFractalTime_1=iTime(NULL, 0,i); } if (i<500 && i<i2+26) { ObjectDelete(0,"HNNN3_1"); ObjectCreate(0,"HNNN3_1",OBJ_TREND,0,UpFractalTime_1,High[i],UpFractalTime_2,High[i2]); ObjectSetInteger(0,"HNNN3_1",OBJPROP_RAY_RIGHT,false); ObjectSet("HNNN3_1",OBJPROP_COLOR,indicator_color8); ObjectSet("HNNN3_1",OBJPROP_WIDTH,8); UFT2=UpFractalTime_2; if (plot_divergence_labels){ ObjectCreate("elixir 40"+High[i2], OBJ_TEXT, 0, Time[i2], High[i2]+FSize*1.5*Point); ObjectSetText("elixir 40"+High[i2], "Rev/DVG", 22, "Tahoma", White);} k=1; while (k<i2-1) { if (High[k]>High[i]) break; k++; } if (k>i2-2) { ObjectCreate("Virgin"+i, OBJ_RECTANGLE, 0, Time[i2], High[i], Time[1], High[i2]); ObjectSetInteger(0,"Virgin"+i,OBJPROP_COLOR,clrPink); ObjectSet("Virgin"+i,OBJPROP_BACK,0); ObjectSet("Virgin"+i,OBJPROP_WIDTH,8); }

Adding the label

ObjectCreate("Virgin__"+i, OBJ_TEXT, 0, Time[i2-2], High[i2]); ObjectSetText("Virgin__"+i, "P/"+NormalizeDouble(Close15-ATRAVG[1]*1.3,4)+", "+NormalizeDouble(Close15-ATRAVG[1]*1.3-FSize/2*10*Point,4) ,28, "Arial Black", Black);

The second number is the estimated location of the no break extension – FSize is still 32.

The utmost condition is a White Stripe and an RSI2 divergence. This is bet the farm condition #2.

The White Stripe is the End of a Stochastic Bar Overdrive sequence.

Stochastic bar calculation with elimination of values above the lower guard rail:

extern int K_Period = 25; extern int K_Period2 = 60; extern int K_Period3 = 100; extern int D_Period = 3; extern int Slowing = 3; extern int TopBorder=90; extern int BotBorder=10; extern int BotBorder2=5; extern int BotBorder3=3; for(i = 550; i >= 0; i--) { double St=iStochastic(NULL,0,K_Period,D_Period,Slowing,MAType,PriceType,MODE_MAIN,i); double St2=iStochastic(NULL,0,K_Period2,D_Period,Slowing,MAType,PriceType,MODE_MAIN,i); double St3=iStochastic(NULL,0,K_Period3,D_Period,Slowing,MAType,PriceType,MODE_MAIN,i); ExtMapBuffer2[i] = EMPTY_VALUE; ExtMapBuffer3[i] = EMPTY_VALUE; if (St2<BotBorder2 && (St<BotBorder || St3<BotBorder3)) ExtMapBuffer2[i] = 15; if (St>TopBorder && !((High[i]-iMA(symbol,30,414,0,MODE_EMA, PRICE_HIGH,i))<FSize*10*Point && embeddedoversold)) ExtMapBuffer3[i] = 85;}

White stripe plot

if ((ExtMapBuffer3[i+1]==85 && ExtMapBuffer3[i]!=85) || (ExtMapBuffer2[i+1]==15 && ExtMapBuffer2[i]!=15) ) { ObjectCreate("Utmost"+i, OBJ_RECTANGLE, 0, Time[i+2], iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,262,i)), Time[i], iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,262,i) )); ObjectSetInteger(0,"Utmost"+i,OBJPROP_COLOR,clrWhite); ObjectSet("Utmost"+i,OBJPROP_BACK,1); ObjectSet("Utmost"+i,OBJPROP_WIDTH,5); }

Modified Fractals for 30 minute

int nCountedBars; bool bFound; double dCurrent; nCountedBars=IndicatorCounted(); //---- last counted bar will be recounted if(nCountedBars<=2) i=Bars-nCountedBars-3; if(nCountedBars>2) { nCountedBars--; i=500; } //----Up and Down Fractals while(i>=2) { //----Fractals up bFound=false; dCurrent=High[i]; if(dCurrent>High[i+1] && dCurrent>High[i-1] && dCurrent>High[i-2]) //&& dCurrent>High[i+2] { bFound=true; ExtUpFractalsBuffer[i]=dCurrent; } //----6 bars Fractal if(!bFound && (Bars-i-1)>=3) { if(dCurrent==High[i+1] && dCurrent>High[i+2] //&& dCurrent>High[i+3] && dCurrent>High[i-1] ) //&& dCurrent>High[i-2] { bFound=true; ExtUpFractalsBuffer[i]=dCurrent; } } //----7 bars Fractal if(!bFound && (Bars-i-1)>=4) { if(dCurrent>=High[i+1] && dCurrent>High[i+3] && dCurrent>High[i+4] && dCurrent==High[i+2] && dCurrent>High[i-1] ) //&& dCurrent>High[i-2] { bFound=true; ExtUpFractalsBuffer[i]=dCurrent; } } //----8 bars Fractal if(!bFound && (Bars-i-1)>=5) { if(dCurrent>=High[i+1] && dCurrent==High[i+2] && dCurrent==High[i+3] && dCurrent>High[i+4] && //&& dCurrent>High[i+5] dCurrent>High[i-1] ) //&& dCurrent>High[i-2] { bFound=true; ExtUpFractalsBuffer[i]=dCurrent; } } //----9 bars Fractal if(!bFound && (Bars-i-1)>=6) { if(dCurrent>=High[i+1] && dCurrent==High[i+2] && dCurrent>=High[i+3] && dCurrent==High[i+4] && dCurrent>High[i+5] && dCurrent>High[i-1] ) //&& dCurrent>High[i-2] //&& dCurrent>High[i+6] { bFound=true; ExtUpFractalsBuffer[i]=dCurrent; } } //----Fractals down bFound=false; dCurrent=Low[i]; if(dCurrent<Low[i+1] && dCurrent<Low[i-1] ) //&& dCurrent<Low[i-2] //&& dCurrent<Low[i+2] { bFound=true; ExtDownFractalsBuffer[i]=dCurrent; } //----6 bars Fractal if(!bFound && (Bars-i-1)>=3) { if(dCurrent==Low[i+1] && dCurrent<Low[i+2] && dCurrent<Low[i-1] ) //&& dCurrent<Low[i-2] //&& dCurrent<Low[i+3] { bFound=true; ExtDownFractalsBuffer[i]=dCurrent; } } //----7 bars Fractal if(!bFound && (Bars-i-1)>=4) { if(dCurrent<=Low[i+1] && dCurrent==Low[i+2] && dCurrent<Low[i+3] && dCurrent<Low[i-1] ) //&& dCurrent<Low[i-2] //&& dCurrent<Low[i+4] { bFound=true; ExtDownFractalsBuffer[i]=dCurrent; } } //----8 bars Fractal if(!bFound && (Bars-i-1)>=5) { if(dCurrent<=Low[i+1] && dCurrent==Low[i+2] && dCurrent==Low[i+3] && dCurrent<Low[i+4] && dCurrent<Low[i-1] ) //&& dCurrent<Low[i-2] //&& dCurrent<Low[i+5] { bFound=true; ExtDownFractalsBuffer[i]=dCurrent; } } //----9 bars Fractal if(!bFound && (Bars-i-1)>=6) { if(dCurrent<=Low[i+1] && dCurrent==Low[i+2] && dCurrent<=Low[i+3] && dCurrent==Low[i+4] && dCurrent<Low[i+5] && dCurrent<Low[i-1] ) //&& dCurrent<Low[i-2] //&& dCurrent<Low[i+6] { bFound=true; ExtDownFractalsBuffer[i]=dCurrent; } } i--; }