What traits are unique to a Wave3?
This one would require a lot of patience. I am going against things like the fractal nature of the market.
A Wave 5 isn’t a big riddle.
A colored shape can call the right shoulder, you get the breaks, the previous swing high and the 80 pips (the two more or less coincided at the top), and you are on your way.

The pink slips:
///shape short
if (((ExtATRBuffer2[i]<52 && ExtATRBuffer2[i+1]>52) || (( ExtATRBuffer2[i]<47 && ExtATRBuffer2[i+1]>47)))
&& ExtATRBuffer2[i+3]>10
&& ExtATRBuffer[ArrayMinimum(ExtATRBuffer,10,i)]>2
&& ExtATRBuffer[ArrayMaximum(ExtATRBuffer,10,i)]<64
&& Open[i+7]<iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_UPPER,i+7)
&& Close[i]>iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,6,i))-240*Point
&& Close[i]>iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_UPPER,i)-240*Point
)
{
ObjectCreate("LINUS"+IntegerToString(i),OBJ_VLINE,2, Time[i], 0);
ObjectSet("LINUS"+IntegerToString(i),OBJPROP_COLOR,clrPink);
ObjectSet("LINUS"+IntegerToString(i),OBJPROP_WIDTH,6);
ObjectSet("LINUS"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
ObjectSet("LINUS"+IntegerToString(i),OBJPROP_BACK,1);
if (((ExtATRBuffer2[i]<42 && ExtATRBuffer2[i+1]>42) ) && Close[i+2]>iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_UPPER,i+2) && Close[i+1]<iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_UPPER,i+1))
ObjectSet("LINUS"+IntegerToString(i),OBJPROP_COLOR,clrGray);
if (High[i]<iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_UPPER,i)) ObjectSet("LINUS"+IntegerToString(i),OBJPROP_COLOR,clrGray);
ObjectCreate("LINUSZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i],85);
ObjectSetText("LINUSZ"+IntegerToString(i),"Shape short!", 16, "Impact", clrRed);
ObjectCreate("LINUSZZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i],35);
ObjectSetText("LINUSZZ"+IntegerToString(i),"53/63/80=Break", 16, "Impact", clrRed);
}
The Wave 3 however…
The daily RSI2 HL2 goes magenta 3 or 4 times? Ok.

(downside magenta RSI2[i]<5.3) upside magenta RSI2[i]>96)
2.6x stretch from the E-9 is achieved on the last leg? Ok.

The white band is at 2.8x Stretch.
int FSize=32;
double FMax = FSize*6/5;
E9P[i]=iMA(symbol,0,9,0,MODE_EMA, PRICE_MEDIAN,i)+FMax*2.8*10*Point;
E9M[i]=iMA(symbol,0,9,0,MODE_EMA, PRICE_MEDIAN,i)-FMax*2.8*10*Point;
The wave isn’t over until the price violates the 14-sample Weekly window envelope? If it is so, that would make for a major advantage: 4 weeks ago you already could have known that the W3 would get below 1.0764. Perfect aiming device for options.

iEnvelopes(symbol,0,14,0,0,0,3.5,MODE_UPPER,i)
iEnvelopes(symbol,0,14,0,0,0,3.5,MODE_LOWER,i)
What else? Must get beyond the 240 BB. Ok.

iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_UPPER,i)
iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_LOWER,i)
Something even more specific?
Let’s use the last end of W3 as a template. Vertical flip.

I am most interested about the play with the 8 EMO (Magenta) and the 30-sample BB. The two spike outs on the top, the one backtest leg into the row of dojis.
The first two fractals are made, the second close above the 8 EMO is pending.

EMO = EMA of Opens
iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,i)
On the upside, the backtest leg was a BBECHO plot. Hoping to get the same.
//// BB ECHO on the upside
if (High[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)-20*Point
&& High[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)+190*Point
&& Open[i]>Close[i]
&& Low[i]>iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,i)
&& Close[i+2]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+2)
&& High[i+1]>High[i] && High[i+1]>High[i+2]
&& High[i+2]>High[i+3]
&& Open[i+3]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+3)
//|| Open[i+4]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+4)
&& Close[i+1]<(High[i+1]-((High[i+1]-Low[i+1])/3)))
{
ObjectCreate("HOTE"+i,OBJ_TEXT, 0, Time[i+1],High[i+1]+90*Point);
ObjectSetText("HOTE"+i,"BBECHO", 26, "Impact", clrYellow);
if (i>1) {ObjectSetText("HOTE"+i,"BBECHO", 26, "Impact", clrBlack);
level = High[i+1]+100*Point; }
}