Diamonds are the trader’s best friends.
I like these visuals. Imagine staring at a cell phone screen, trying to determine how many times RSI2 printed below 7.5.
////diamond up
if (RSI2[i]>92.5){
ObjectCreate("Darchellen"+DoubleToStr(i), OBJ_TEXT, 1, Time[i], 86);
ObjectSetText("Darchellen"+DoubleToStr(i), CharToStr(117), 21, "Wingdings", clrDimGray);
if (RSI2[i]>98) {ObjectSetText("Darchellen"+DoubleToStr(i), CharToStr(117), 21, "Wingdings", clrPurple);
}
}
////diamond down
if (RSI2[i]<7.5){
ObjectCreate("Darchellen"+DoubleToStr(i), OBJ_TEXT, 1, Time[i], 26);
ObjectSetText("Darchellen"+DoubleToStr(i), CharToStr(117), 21, "Wingdings", clrDimGray);
if (RSI2[i]<2) {ObjectSetText("Darchellen"+DoubleToStr(i), CharToStr(117), 21, "Wingdings", clrPurple);
}
}

All of a sudden, we can talk about undercuts in terms of progression diamonds. So when I say, maximum 3 more undercuts, a 2-pip undercut may not qualify, if it were a single diamond, thus there is no horizontal line print.
///Leg 2 & 3 Down if (RSI2[i+1]<6.4 && ((RSI2[i]<6.49 && RSI2[i+2]>6.4) || (RSI2[i+1]<2 && RSI2[i+2]<6.4 ) )){ ObjectCreate("BitussY"+IntegerToString(i),OBJ_TREND,0, Time[i+4], Low[i+1], Time[i+1], Low[i+1] ); ObjectSet("BitussY"+IntegerToString(i), OBJPROP_COLOR, clrThistle); ObjectSet("BitussY"+IntegerToString(i), OBJPROP_WIDTH, 5 ); ObjectSet("BitussY"+IntegerToString(i), OBJPROP_STYLE, 2 ); ObjectSet("BitussY"+IntegerToString(i), OBJPROP_BACK, 1 ); ObjectSet("BitussY"+IntegerToString(i), OBJPROP_RAY_RIGHT, 0 ); if (Low[i]>Low[i+1]) { ObjectCreate("Sixt"+IntegerToString(i), OBJ_TEXT, 0, Time[i+1], High[i+4]+20*Point); ObjectSetText("Sixt"+IntegerToString(i), "d1S", 23, "Impact", clrOrange); if (i>0 && High[i-1]<High[i+1]) ObjectSetText("Sixt"+IntegerToString(i), "L1BreakBuy", 23, "Impact", clrGreen); } if (Low[i]<Low[i+1] && Close[i]>Close[i+1] && Low[i]>ExtATRBuffer2[i] ) { ObjectCreate("Sixt"+IntegerToString(i), OBJ_TEXT, 0, Time[i+1], Low[i+1]-20*Point); ObjectSetText("Sixt"+IntegerToString(i), "dxB", 23, "Impact", clrDarkGreen); ObjectCreate("CoalPerfect"+IntegerToString(i), OBJ_ELLIPSE, 0, Time[i], Low[i+1], Time[i], Low[i+1]+100*Point); ObjectSetInteger(0,"CoalPerfect"+IntegerToString(i),OBJPROP_COLOR,clrGreen); ObjectSetDouble(0,"CoalPerfect"+IntegerToString(i),OBJPROP_SCALE,.045); ObjectSet("CoalPerfect"+IntegerToString(i),OBJPROP_WIDTH,4); ObjectSet("CoalPerfect"+IntegerToString(i),OBJPROP_BACK,0); } if (i>0 && Low[i]>Low[i+1] && High[i]<High[i+1] && Close[i-1]>High[i] && RSI2[i-1]<70) { ObjectDelete("Sixt"+IntegerToString(i)); ObjectCreate("Sixt"+IntegerToString(i), OBJ_TEXT, 0, Time[i+1], High[i+1]+80*Point); ObjectSetText("Sixt"+IntegerToString(i), "dxBB", 43, "Impact", clrGreen); ObjectCreate("CoalPerfect"+IntegerToString(i), OBJ_ELLIPSE, 0, Time[i], High[i-1], Time[i], Low[i-1]); ObjectSetInteger(0,"CoalPerfect"+IntegerToString(i),OBJPROP_COLOR,clrChartreuse); ObjectSetDouble(0,"CoalPerfect"+IntegerToString(i),OBJPROP_SCALE,.085); ObjectSet("CoalPerfect"+IntegerToString(i),OBJPROP_WIDTH,4); } }
The following ideas may not sound very intuitive, but again, I find them helpful for me.
A single diamond print that is falling short of the implied volatility (30-sample BB proxy) is a successful auction. See the red circles above.
The ribbon arrows are to call attention to the single prints.
///single print top
if (RSI2[i]<80 && RSI2[i+1]>92.5 && RSI2[i+2]<92 && (High[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)
|| (High[i+1]>free[i+1] && Close[i+1]<free[i+1])
)){
ObjectCreate("Sixth"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+1], High[i+1]+120*Point);
ObjectSetText("Sixth"+DoubleToStr(i), CharToStr(202), 83, "Wingdings", clrRed);
}
An auction stretching over 5 or more diamonds is a failed auction. It should receive up to 3 more progression diamonds. I circled the failed auctions in blue.
////Leg 5+ down
if (RSI2[i]>6.4 && RSI2[i+5]<6.4 && RSI2[i+1]<6.4 && RSI2[i+2]<6.4 && RSI2[i+3]<6.4 && RSI2[i+4]<6.4
){
ObjectCreate(“BitussY”+IntegerToString(i),OBJ_TREND,0, Time[i+4], Low[i+1], Time[i+1], Low[i+1] );
ObjectSet(“BitussY”+IntegerToString(i), OBJPROP_COLOR, clrPlum);
ObjectSet(“BitussY”+IntegerToString(i), OBJPROP_WIDTH, 5 );
ObjectSet(“BitussY”+IntegerToString(i), OBJPROP_STYLE, 2 );
ObjectSet(“BitussY”+IntegerToString(i), OBJPROP_BACK, 1 );
ObjectSet(“BitussY”+IntegerToString(i), OBJPROP_RAY_RIGHT, 0 );
if (i>0 && Low[i]>Low[i+1] && RSI2[i]<75) {
ObjectDelete(“Sixt”+IntegerToString(i));
ObjectCreate(“Sixt”+IntegerToString(i), OBJ_TEXT, 0, Time[i+3], Low[i]-20*Point);
if (Close[i]<fifty[i])
ObjectSetText(“Sixt”+IntegerToString(i), “d5ucB”, 43, “Impact”, clrGreen);
else ObjectSetText(“Sixt”+IntegerToString(i), “d5iB”, 43, “Impact”, clrGreen);
ObjectCreate(“CoalPerfect”+IntegerToString(i), OBJ_ELLIPSE, 0, Time[i], High[i-1], Time[i], Low[i-1]);
ObjectSetInteger(0,”CoalPerfect”+IntegerToString(i),OBJPROP_COLOR,clrGreen);
ObjectSetDouble(0,”CoalPerfect”+IntegerToString(i),OBJPROP_SCALE,.085);
ObjectSet(“CoalPerfect”+IntegerToString(i),OBJPROP_WIDTH,4);
ObjectSet(“CoalPerfect”+IntegerToString(i),OBJPROP_BACK,0);
}
}
The 2-4 diamonds I call undetermined.
///Leg 2 & 3 Down if (RSI2[i+1]<6.4 && ((RSI2[i]<6.49 && RSI2[i+2]>6.4) || (RSI2[i+1]<2 && RSI2[i+2]<6.4 ) )){ ObjectCreate("BitussY"+IntegerToString(i),OBJ_TREND,0, Time[i+4], Low[i+1], Time[i+1], Low[i+1] ); ObjectSet("BitussY"+IntegerToString(i), OBJPROP_COLOR, clrThistle); ObjectSet("BitussY"+IntegerToString(i), OBJPROP_WIDTH, 5 ); ObjectSet("BitussY"+IntegerToString(i), OBJPROP_STYLE, 2 ); ObjectSet("BitussY"+IntegerToString(i), OBJPROP_BACK, 1 ); ObjectSet("BitussY"+IntegerToString(i), OBJPROP_RAY_RIGHT, 0 ); if (Low[i]>Low[i+1]) { ObjectCreate("Sixt"+IntegerToString(i), OBJ_TEXT, 0, Time[i+1], High[i+4]+20*Point); ObjectSetText("Sixt"+IntegerToString(i), "d1S", 23, "Impact", clrOrange); if (i>0 && High[i-1]<High[i+1]) ObjectSetText("Sixt"+IntegerToString(i), "L1BreakBuy", 23, "Impact", clrGreen); } if (Low[i]<Low[i+1] && Close[i]>Close[i+1] && Low[i]>ExtATRBuffer2[i] ) { ObjectCreate("Sixt"+IntegerToString(i), OBJ_TEXT, 0, Time[i+1], Low[i+1]-20*Point); ObjectSetText("Sixt"+IntegerToString(i), "dxB", 23, "Impact", clrDarkGreen); ObjectCreate("CoalPerfect"+IntegerToString(i), OBJ_ELLIPSE, 0, Time[i], Low[i+1], Time[i], Low[i+1]+100*Point); ObjectSetInteger(0,"CoalPerfect"+IntegerToString(i),OBJPROP_COLOR,clrGreen); ObjectSetDouble(0,"CoalPerfect"+IntegerToString(i),OBJPROP_SCALE,.045); ObjectSet("CoalPerfect"+IntegerToString(i),OBJPROP_WIDTH,4); ObjectSet("CoalPerfect"+IntegerToString(i),OBJPROP_BACK,0); } if (i>0 && Low[i]>Low[i+1] && High[i]<High[i+1] && Close[i-1]>High[i] && RSI2[i-1]<70) { ObjectDelete("Sixt"+IntegerToString(i)); ObjectCreate("Sixt"+IntegerToString(i), OBJ_TEXT, 0, Time[i+1], High[i+1]+80*Point); ObjectSetText("Sixt"+IntegerToString(i), "dxBB", 43, "Impact", clrGreen); ObjectCreate("CoalPerfect"+IntegerToString(i), OBJ_ELLIPSE, 0, Time[i], High[i-1], Time[i], Low[i-1]); ObjectSetInteger(0,"CoalPerfect"+IntegerToString(i),OBJPROP_COLOR,clrChartreuse); ObjectSetDouble(0,"CoalPerfect"+IntegerToString(i),OBJPROP_SCALE,.085); ObjectSet("CoalPerfect"+IntegerToString(i),OBJPROP_WIDTH,4); } }
As you can see, time is probably the most important element of trading.

The handling of the Ellipses, the fact that on every zoom they become a different size, is terrible, but this is what we have to work with.
A failed auction does not have to receive a beat if the move is a correction.

The move is back to the yellow lines (auto plot) – those are made by the 30-minute closes; a green connected to a red or a red connected to a green hump on the Market Type.

I would expect a drop, a Wave 5 down, but I am not certain that it would make a lower low. At the moment, I’m thinking 1.1428-1.1413 would be a safe area to tilt bullish, but at lest neutral.


The 9 languages I have made music in:
French:
Spanish:
German:
Hungarian:
Romanian:
Norwegian:
Tagalog:
& of course, English:
Farsi: