indicator · on price · open source

All Candlestick Patterns

Deepwick · @deepwickv1Updated 2 Oct 2026▲ 0 users
Running…
Loading chart…

About

All-in-one candlestick pattern panel: marks every classic reversal and continuation pattern in a single overlay — engulfings, haramis, doji, hammer family, stars, soldiers/crows, piercing/dark cloud, tweezers, marubozu, belt hold, abandoned baby.

  • Each pattern has its own marker, text label and colour so you can scan for confluence.
  • Best used as a scanner to find setup candidates; combine with your own confirmation rules.

Source code

//@version=5
indicator("All Candlestick Patterns", overlay=true)
// Shared conditions
prevDown = close[1] < open[1]
prevUp = close[1] > open[1]
currUp = close > open
currDown = close < open
hlRange = high - low
bodySize = math.abs(close - open)
range = high - low
// Bullish Engulfing
bullEngulf = prevDown and currUp and open <= close[1] and close >= open[1]
// Bearish Engulfing
bearEngulf = prevUp and currDown and open >= close[1] and close <= open[1]
// Doji
doji = range > 0 and bodySize / range < 0.1
// Hammer / Hanging Man
smallBody = hlRange > 0 and bodySize < hlRange * 0.3
longLower = math.min(close, open) - low > hlRange * 0.6
tinyUpper = hlRange > 0 and high - math.max(close, open) < hlRange * 0.2
hammer = smallBody and longLower and tinyUpper
uptrend = close[1] > ta.sma(close, 20)
hangMan = hammer and uptrend
// Shooting Star
longUpper = high - math.max(close, open) > hlRange * 0.6
tinyLower = hlRange > 0 and math.min(close, open) - low < hlRange * 0.2
star = smallBody and longUpper and tinyLower
// Marubozu
maru = hlRange > 0 and bodySize > hlRange * 0.9
// Bullish / Bearish Harami
bullHarami = prevDown and currUp and open > close[1] and close < open[1]
bearHarami = prevUp and currDown and open < close[1] and close > open[1]
// Tweezer Bottom / Top
lowEq = math.abs(low - low[1]) < ta.atr(14) * 0.1
highEq = math.abs(high - high[1]) < ta.atr(14) * 0.1
tweezerBot = lowEq and prevDown and currUp
tweezerTop = highEq and prevUp and currDown
// Morning / Evening Star
morningStar = close[2] < open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and currUp and close > (open[2] + close[2]) / 2
eveningStar = close[2] > open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and currDown and close < (open[2] + close[2]) / 2
// Three White Soldiers / Three Black Crows
tws = close[2] > open[2] and close[1] > open[1] and close[1] > close[2] and currUp and close > close[1]
tbc = close[2] < open[2] and close[1] < open[1] and close[1] < close[2] and currDown and close < close[1]
// Piercing Line / Dark Cloud Cover
piercing = close[1] < open[1] and currUp and open < low[1] and close > (open[1] + close[1]) / 2
darkCloud = close[1] > open[1] and currDown and open > high[1] and close < (open[1] + close[1]) / 2
// Belt Hold
beltHold = open == low and close > ta.sma(close, 20) and currUp
// Abandoned Baby
doji2 = math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.2
abandonedBaby = close[2] < open[2] and doji2 and low > high[1] and currUp and low > high[2]
plotshape(bullEngulf, "Bull Engulf", style=shape.triangleup, location=location.belowbar, color=color.green, text="BE")
plotshape(bearEngulf, "Bear Engulf", style=shape.triangledown, location=location.abovebar, color=color.red, text="BE")
plotshape(doji, "Doji", style=shape.diamond, location=location.abovebar, color=color.yellow, text="D")
plotshape(hammer and not hangMan, "Hammer", style=shape.triangleup, location=location.belowbar, color=color.green, text="H")
plotshape(hangMan, "Hanging Man", style=shape.triangledown, location=location.abovebar, color=color.red, text="HM")
plotshape(star, "Shooting Star", style=shape.triangledown, location=location.abovebar, color=color.red, text="SS")
plotshape(maru and currUp, "Bull Marubozu", style=shape.square, location=location.belowbar, color=color.green, text="M")
plotshape(maru and currDown, "Bear Marubozu", style=shape.square, location=location.abovebar, color=color.red, text="M")
plotshape(bullHarami, "Bull Harami", style=shape.triangleup, location=location.belowbar, color=color.green, text="BH")
plotshape(bearHarami, "Bear Harami", style=shape.triangledown, location=location.abovebar, color=color.red, text="BH")
plotshape(tweezerBot, "Tweezer Bottom", style=shape.triangleup, location=location.belowbar, color=color.green, text="TB")
plotshape(tweezerTop, "Tweezer Top", style=shape.triangledown, location=location.abovebar, color=color.red, text="TT")
plotshape(morningStar, "Morning Star", style=shape.triangleup, location=location.belowbar, color=color.green, text="MS")
plotshape(eveningStar, "Evening Star", style=shape.triangledown, location=location.abovebar, color=color.red, text="ES")
plotshape(tws, "Three White Soldiers", style=shape.square, location=location.belowbar, color=color.green, text="3WS")
plotshape(tbc, "Three Black Crows", style=shape.square, location=location.abovebar, color=color.red, text="3BC")
plotshape(piercing, "Piercing Line", style=shape.triangleup, location=location.belowbar, color=color.green, text="PL")
plotshape(darkCloud, "Dark Cloud Cover", style=shape.triangledown, location=location.abovebar, color=color.red, text="DCC")
plotshape(beltHold, "Belt Hold", style=shape.triangleup, location=location.belowbar, color=color.green, text="BL")
plotshape(abandonedBaby, "Abandoned Baby", style=shape.diamond, location=location.belowbar, color=color.green, text="AB")
alertcondition(bullEngulf or hammer and not hangMan or bullHarami or morningStar or tws or piercing or beltHold or abandonedBaby or tweezerBot, "Bullish pattern", "A bullish candlestick pattern printed")
alertcondition(bearEngulf or hangMan or star or bearHarami or eveningStar or tbc or darkCloud or tweezerTop, "Bearish pattern", "A bearish candlestick pattern printed")

Comments

No comments yet.

Sign in to comment.