Dir/L

The directional logic is coming along nicely.

There is a chance to turn back up around the blue BB (120-sample), but it has not happened yet. There should be a touch-and-go at the BB and another try that falls short. Kind of the mirror image of this:

Otherwise, wait for a color arrow (Red / Green = color arrows, Blue=no color, BB marker, Black=no color, black is a Tone).

The black can be a higher low / lower high already, but the colorless combo has no real foundation for a complete reversal without a color arrow (typically at the opposite side).


///prelim blue arrow down
if (i>0 && Open[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && High[i-1]<High[i] && Low[i+3]<(iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i+3)+10*Point) ) {mode[i]=-1;
    ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+120*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(234), 56, "Wingdings", RoyalBlue); 
          royal[i]=-1;
}

if (i>0 && mode[i]<0 && Open[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && High[i-1]>High[i] && Low[i+1]<(iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i+1))) mode[i]=1;

///prelim blue arrow up

if (i>0  && Open[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Close[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Low[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i)-10*Point && Low[i-1]>Low[i]) {mode[i]=1;
   ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]-30*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(233), 56, "Wingdings", RoyalBlue); 
          royal[i]=1;

}
if (i>0 && mode[i]>0 && Open[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Close[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Low[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i)-10*Point && Low[i-1]<Low[i]) mode[i]=-1;



///black arrow down
if (royal[ArrayMinimum(royal,24,i)]<0 && royal[ArrayMinimum(royal,6,i)]>=0 && iFractals(symbol,0,MODE_UPPER,i) && High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i)-80*Point && High[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i)){
    ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+120*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(234), 56, "Wingdings", Black); 
}
 
///black arrow up
if (royal[ArrayMaximum(royal,24,i)]>0 && royal[ArrayMaximum(royal,6,i)]<=0 && iFractals(symbol,0,MODE_LOWER,i) && Low[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i)+80*Point && Low[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i)){
     ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]-30*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(233), 56, "Wingdings", Black); 
}


///black arrow down
if (royal[ArrayMinimum(royal,24,i)]<0 && royal[ArrayMinimum(royal,6,i)]>=0 && iFractals(symbol,0,MODE_UPPER,i) && High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i)-80*Point && High[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i)){
    ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+120*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(234), 56, "Wingdings", Black); 
}
 
///black arrow up
if (royal[ArrayMaximum(royal,24,i)]>0 && royal[ArrayMaximum(royal,6,i)]<=0 && iFractals(symbol,0,MODE_LOWER,i) && Low[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i)+80*Point && Low[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i)){
     ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]-30*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(233), 56, "Wingdings", Black); 
}



///red arrow down
if (mode[i]>0 && 
High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)+80*Point && Close[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i+2]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+2)) {mode[i]=-1;
    ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+120*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(234), 56, "Wingdings", Crimson); 
}

///green arrow up
if (i>0 && mode[i]<0 && Low[i]<Low[i+1]+20*Point && Close[i-1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i-1)+10*Point &&
Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)-80*Point && Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)-20*Point && Close[i+2]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+2)) {mode[i]=1;
     ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]-30*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(233), 56, "Wingdings", DarkGreen); 
}