Trading, but not the way you know it.

Let’s go backwards.

Exit signal: 30-min money flow divergence.

Health check of buying is initial momentum check by hourly RSI2 HL2. You want to see a straight shot from oversold to overbought. You can find below broken momentum examples as well.

First, side promotion.

The distance between the E414 High or Low and E712 on 30 mins. 26 pips or more is confidence inspiring.

Well there’s at least 5 different favoured entries. They all come with some provisory distance / target, but they could be ridden to the money flow divergence especially with a good kick off momentum.

Only going to discuss a bit here about the Local Buy or EX. See if you can spot it. Don’t forget the promoted side.

What normally happens is that the EX would be the low, unlike on the example above with some coasting.

``````   if (excess[i]<0){
////lower excess

if (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,216,i+2))>iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i))) {
ObjectCreate("Miezzz"+DoubleToStr(i), OBJ_TEXT, indicator_window, Time[i], 4);
ObjectSetText("Miezzz"+DoubleToStr(i), "X", 42, "Impact", clrPurple);
ObjectSet("Miezzz"+DoubleToStr(i), OBJPROP_BACK, 0 );

ObjectCreate("Miezi"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+1],Low[i]+490*Point);
ObjectSetText("Miezi"+DoubleToStr(i), "[->"+DoubleToStr(NormalizeDouble(Low[i]+490*Point,4),4)+", "+DoubleToStr(NormalizeDouble(Low[i]+550*Point,4),4), 22, "Impact", clrGreen);

if (i<450){
ObjectCreate( "TRIAGEN"+IntegerToString(i), OBJ_HLINE, 0,  Time[0], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i))-20*Point);
ObjectSet("TRIAGEN"+IntegerToString(i), OBJPROP_COLOR, clrBrown );
ObjectSet("TRIAGEN"+IntegerToString(i), OBJPROP_WIDTH, 3 );
ObjectSet("TRIAGEN"+IntegerToString(i), OBJPROP_RAY_RIGHT, false );
ObjectSet("TRIAGEN"+IntegerToString(i), OBJPROP_STYLE, 1 );
}

tdrivedn[i]=1;
if (tdrivedn[ArrayMaximum(tdrivedn,140,i+1)]<1){

//   ObjectCreate(0,"TRIAGE"+IntegerToString(i),OBJ_TRIANGLE,0,Time[i],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-80*Point,Time[i+4],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-80*Point,Time[i+4],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i)));
//   ObjectSetInteger(0,"TRIAGE"+IntegerToString(i),OBJPROP_COLOR,clrGray);  ObjectSetInteger(0,"TRIAGE"+IntegerToString(i),OBJPROP_WIDTH,1); ObjectSetInteger(0,"TRIAGE"+IntegerToString(i),OBJPROP_BACK,1);

ObjectCreate(0,"TRIAGES"+IntegerToString(i),OBJ_TRIANGLE,0,Time[i],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-440*Point,Time[i+4],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-440*Point,Time[i+4],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i)));
ObjectSetInteger(0,"TRIAGES"+IntegerToString(i),OBJPROP_COLOR,clrRed);  ObjectSetInteger(0,"TRIAGES"+IntegerToString(i),OBJPROP_WIDTH,1); ObjectSetInteger(0,"TRIAGES"+IntegerToString(i),OBJPROP_BACK,1);

ObjectCreate(0,"TRIAGEZ"+IntegerToString(i),OBJ_TRIANGLE,0,Time[i],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-550*Point,Time[i+4],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-550*Point,Time[i+4],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i)));
ObjectSetInteger(0,"TRIAGEZ"+IntegerToString(i),OBJPROP_COLOR,clrGray);  ObjectSetInteger(0,"TRIAGEZ"+IntegerToString(i),OBJPROP_WIDTH,1); ObjectSetInteger(0,"TRIAGEZ"+IntegerToString(i),OBJPROP_BACK,1);

ObjectCreate("ANGL"+i, OBJ_TEXT, 0, Time[i],  iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-550*Point+38*Point);
ObjectSetText("ANGL"+i,"              "+NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-550*Point,4), 16, "Impact",  DarkGreen);
cpd1=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-550*Point;

ObjectCreate("ANGLi"+i, OBJ_TEXT, 0, Time[i],  iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-660*Point+38*Point);
ObjectSetText("ANGLi"+i,"              b_"+NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-660*Point,4), 16, "Impact",  DarkGreen);
cpd2=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-660*Point;

ObjectCreate(0,"TRIAGEX"+IntegerToString(i),OBJ_TRIANGLE,0,Time[i],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-660*Point,Time[i+4],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))-660*Point,Time[i+4],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i)));
ObjectSetInteger(0,"TRIAGEX"+IntegerToString(i),OBJPROP_COLOR,clrGreen);  ObjectSetInteger(0,"TRIAGEX"+IntegerToString(i),OBJPROP_WIDTH,1); ObjectSetInteger(0,"TRIAGEX"+IntegerToString(i),OBJPROP_BACK,1);
}
}

if (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,78,i+2))>iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i))) {
ObjectCreate("Miezz"+DoubleToStr(i), OBJ_TEXT, indicator_window, Time[i], -2);
ObjectSetText("Miezz"+DoubleToStr(i), " E", 22, "Impact", clrBlue);
ObjectSet("Miezz"+DoubleToStr(i), OBJPROP_BACK, 0 );
``````

Yea, I need to investigate myself what I did here, but there is cerainly a 78-sample lower low for the 3D (shadowed E), E stands for excessive reading (), I use a filter for having to be outside the local Bollinger Band for the green projection label above, ie:

``````  if (RSI2[i]>21 && RSI2[i+1]<21 && RSI2[i+1]>5.5 && RSI2[i+3]>RSI2[i+1] && excess[ArrayMinimum(excess,24,i)]<0 && excess[ArrayMaximum(excess,24,i)]==0) {
ObjectCreate("Lemez"+DoubleToStr(i), OBJ_TEXT, indicator_window, Time[i+1], 10);
if (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,24,i))==iLow(symbol,0,i+1) && Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i) && iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)>200*Point) {ObjectSetText("Lemez"+DoubleToStr(i), "SB-"+DoubleToStr(NormalizeDouble(Low[i]-100*Point,4),4), 22, "Impact", clrGreen);
ObjectCreate("Lemezi"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+1],Low[i]+540*Point);
ObjectSetText("Lemezi"+DoubleToStr(i), "[->"+DoubleToStr(NormalizeDouble(Low[i]+540*Point,4),4), 22, "Impact", clrGreen); ``````

Excess values:

`````` if (RSI2[i]<96.5 && RSI2[i+1]>96.5 && RSI2[ArrayMinimum(RSI2,6,i+1)]<80) excess[i+1]=1;
if (RSI2[i]>5.5 && RSI2[i+1]<5.5 && RSI2[ArrayMaximum(RSI2,8,i+1)]>20) excess[i+1]=-1;``````

A last advice of course is as always, Max, don’t have sex with your ex.