Not much new, I doubled the size of the soap boxes (RSI2 in the last 6%) if the price also managed to hit outside the BB30, for accented importance.

/////RSI2 box dn
if (RSI2[i+1]<6 && RSI2[i]>6){
if (Low[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1)) ObjectCreate("KAROLYII"+IntegerToString(i), OBJ_RECTANGLE, 1, Time[i+2], 12, Time[i], 0);
else ObjectCreate("KAROLYII"+IntegerToString(i), OBJ_RECTANGLE, 1, Time[i+2], 6, Time[i], 0);
ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_COLOR,clrGreen);
ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_WIDTH,3);
if (Close[i+1]<iMA(symbol,0,414,0,MODE_EMA,PRICE_MEDIAN,i+1)) ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_BACK,0);
}
/////RSI2 box up
if (RSI2[i+1]>94 && RSI2[i]<94){
if (High[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)) ObjectCreate("KAROLYII"+IntegerToString(i), OBJ_RECTANGLE, 1, Time[i+2], 88, Time[i], 100);
else ObjectCreate("KAROLYII"+IntegerToString(i), OBJ_RECTANGLE, 1, Time[i+2], 94, Time[i], 100);
ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_COLOR,clrRed);
ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_WIDTH,3);
if (Close[i+1]>iMA(symbol,0,414,0,MODE_EMA,PRICE_MEDIAN,i+1)) ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_BACK,0);
}
As you can see, the yellow does not typically mean a change of direction. Also, the expanding wedge can be broken on the unexpected side at times.

This did not finish on a bearish note, but there was no progress on the upside at all. It would be easy to turn this down, but a failed move to the upside cannot be excluded while the direction remains up.
I also added more arrows (natural progression) in the 6-8% zone, call them earlybirdspecial. They too have a say now in the directional logic.

///RSI arrow up
if (RSI2[i+1]>6 && RSI2[i+1]<8 && RSI2[i]>RSI2[i+1] && RSI2[i+2]>RSI2[i+1]){
ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 1, Time[i+1], 21);
ObjectSetText("Cigar"+IntegerToString(i), CharToStr(233), 26, "Wingdings", Green);
if (mode[i+1]<0 || Low[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i+1)) ObjectSetInteger(0,"Cigar"+IntegerToString(i),OBJPROP_COLOR,clrGray);
else {ObjectCreate("DOG"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],75);
ObjectSetText("DOG"+IntegerToString(i),"S30->T1,T2: "+DoubleToStr(NormalizeDouble(BighBuffer+50*Point,4),4), 26, "Impact", clrBlue);
mode[i]=1;
// ObjectCreate("DOGS"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],35);
// ObjectSetText("DOGS"+IntegerToString(i),"T2: W3M@ "+DoubleToStr(NormalizeDouble(BighBuffer,4),4), 26, "Impact", clrBlue);
}
}
///RSI arrow dn
if (RSI2[i+1]<94 && RSI2[i+1]>92 && RSI2[i]<RSI2[i+1] && RSI2[i+2]<RSI2[i+1]){
ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 1, Time[i+1], 96);
ObjectSetText("Cigar"+IntegerToString(i), CharToStr(234), 26, "Wingdings", Crimson);
if (mode[i+1]>0 || High[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i+1)) ObjectSetInteger(0,"Cigar"+IntegerToString(i),OBJPROP_COLOR,clrGray);
else {ObjectCreate("DOG"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],35);
ObjectSetText("DOG"+IntegerToString(i),"TGT: "+DoubleToStr(NormalizeDouble(BowBuffer-50*Point,4),4), 26, "Impact", clrBlue);
mode[i]=-1;
}
}
Just finished Album #100, but still unable to download, thanks to the Udio transition.

For some curiosity, here’s a track off of album #101 – see if you can recognize the voice.