mod note:
This visual decision accelerator turns raw Heikin‑Ashi into a dashboard. Color‑coding momentum, reversals, and flips into an instant read.
Green signals strength, red signals weakness, bright colors flag change, and darker tones mark conviction. It compresses the entire state of the tape into a glance and tells the eye where to look first during fast markets.
This will show high probability reversals Based on the Heiken Ashi . . . Images below, Can you find the Bull and which is the BEAR ? COMMENTS WELCOMED ...
This visual decision accelerator turns raw Heikin‑Ashi into a dashboard. Color‑coding momentum, reversals, and flips into an instant read.
Green signals strength, red signals weakness, bright colors flag change, and darker tones mark conviction. It compresses the entire state of the tape into a glance and tells the eye where to look first during fast markets.
This will show high probability reversals Based on the Heiken Ashi . . . Images below, Can you find the Bull and which is the BEAR ? COMMENTS WELCOMED ...
Code:
# Heikin Ashi Signals Watchlist Column - Updated with Consecutive Count
# Original by AKtion • Modified to show bar count on labels
declare lower;
# --- Heikin Ashi Calculations ---
def haClose = ohlc4;
def haOpen = if haOpen[1] == 0 then haClose[1] else (haOpen[1] + haClose[1]) / 2;
def haHigh = Max(high, Max(haClose, haOpen));
def haLow = Min(low, Min(haClose, haOpen));
def haGreen = haClose > haOpen;
def haRed = haClose < haOpen;
def twoHaGreen = haGreen[1] and haGreen;
def twoHaRed = haRed[1] and haRed;
def newHAgreen = haGreen and haRed[1];
def newHared = haRed and haGreen[1];
def noLowerWickGreen = haClose > haOpen and haOpen == haLow;
def noUpperWickRed = haClose < haOpen and haOpen == haHigh;
def bullishReversal = haRed[1] and haGreen and noLowerWickGreen;
def bearishReversal = haGreen[1] and haRed and noUpperWickRed;
def GrnfiveREDUP = haGreen and haRed[1] and haRed[2] and haRed[3] and haRed[4] and haRed[5];
def RedfiveGrnDN = haRed and haGreen[1] and haGreen[2] and haGreen[3] and haGreen[4] and haGreen[5];
# --- Consecutive Counter ---
def greenCount = if haGreen then greenCount[1] + 1 else 0;
def redCount = if haRed then redCount[1] + 1 else 0;
# --- Main Signal Logic ---
def signal =
if bullishReversal then 1
else if bearishReversal then 2
else if twoHaGreen then 3
else if twoHaRed then 4
else if newHAgreen then 5
else if newHared then 6
else if GrnfiveREDUP then 9
else if RedfiveGrnDN then 10
else if haGreen then 7
else if haRed then 8
else 0;
# --- Dynamic Label with Count ---
AddLabel(yes,
if signal == 1 then "Bull Rev" # Strong reversal
else if signal == 2 then "Bear Rev"
else if signal == 3 then greenCount + " Grn" # 2+ consecutive green
else if signal == 4 then redCount + " Red" # 2+ consecutive red
else if signal == 5 then "New Grn (" + greenCount + ")"
else if signal == 6 then "New Red (" + redCount + ")"
else if signal == 7 then greenCount + " Grn" # Any green streak
else if signal == 8 then redCount + " Red" # Any red streak
else if signal == 9 then "Grn after 5 Red (" + greenCount + ")"
else if signal == 10 then "Red after 5 Grn (" + redCount + ")"
else "No Sig",
Color.BLACK
);
# --- Background Colors (kept unique and readable) ---
AssignBackgroundColor(
if signal == 1 then CreateColor(0, 120, 0) # Dark Green - Bull Rev
else if signal == 2 then CreateColor(139, 0, 0) # Dark Red - Bear Rev
else if signal >= 3 and signal <= 7 and haGreen then Color.LIGHT_GREEN
else if signal >= 3 and signal <= 8 and haRed then Color.LIGHT_RED
else if signal == 9 then CreateColor(0, 180, 0) # Bright Green after many reds
else if signal == 10 then CreateColor(200, 0, 0)# Bright Red after many greens
else Color.DARK_GRAY
);
Attachments
Last edited: