TradingView candlestick patterns

Kicking candlestick pattern: opposite marubozu and a full gap

A kicking candlestick pattern pairs two opposite marubozu candles separated by a gap. Bullish kicking starts with a bearish candle and gaps up into a bullish candle; bearish kicking reverses those directions. This page requires the entire second high-low range to clear the first, including permitted shadows. Two overlapping opposite bodies do not qualify. The completed shape describes an abrupt price change, not a guaranteed reversal.

See the decision guide

Make the marubozu and gap rules measurable

TradingView describes bullish kicking as a bearish marubozu followed by a bullish marubozu that gaps above the first open. With zero shadows, that also separates the full ranges. To retain separation when allowing small shadows, this example uses the stricter full-range tests below. Let A be the previous candle and B the current candle. O, H, L and C are ordinary open, high, low and close prices.

  • Reject zero-range candles, doji bodies, missing prices and OHLC records whose open or close lies outside the high-low range.
  • The 5% tolerance permits at most 10% total shadow, so the body occupies at least 90% of the range. Set the tolerance to zero for exact marubozu.
  • The 5% and 10-tick settings are illustrative choices, not TradingView defaults or optimized values. Ten ticks is an absolute size filter; it does not prove that a body is large relative to recent volatility.
  • Equal gap endpoints fail: touching ranges leave no empty interval. An opening jump above the previous close alone is insufficient.
RuleBullish kickingBearish kicking
Body directionsA-close < A-open; B-close > B-openA-close > A-open; B-close < B-open
Each upper shadowH - max(O, C) <= 5% of H - LSame rule
Each lower shadowmin(O, C) - L <= 5% of H - LSame rule
Each body sizeabs(C - O) >= 10 minimum ticksSame rule
Full gapB-low > A-highB-high < A-low
Decision timeB closes with every test trueB closes with every test true

Check valid and rejected OHLC pairs

These are independent hypothetical examples in arbitrary price units. Read each tuple as (open, high, low, close), assume a minimum tick of 0.01, and apply the default rules above. No row represents a historical trade.

  • For the bullish pass, a later bar with (108, 108, 103.5, 104) traverses the saved gap down to A-high = 104. This review calls that a full gap fill and a failure of the gap-holding hypothesis. Preserve the original pattern event.
  • Mirror the failure rule for the bearish pass: a later high at or above A-low = 100 fully fills the saved gap. A close-based failure rule would define a different experiment.
  • A full gap fill does not establish an order execution price. A later jump across the interval can satisfy the price-level test without trading at every intermediate price.
CaseCandle ACandle BResult
Bullish(104, 104, 100, 100)(105, 109, 105, 109)Pass: opposite exact marubozu; gap (104, 105)
Bearish(100, 104, 100, 104)(99, 99, 95, 95)Pass: opposite exact marubozu; gap (99, 100)
Small shadows(104, 104.1, 99.9, 100)(105, 109.1, 104.9, 109)Pass: each shadow is 0.1 / 4.2 = 2.38%; gap is 0.8
Touching ranges(104, 104, 100, 100)(104, 108, 104, 108)Fail: B-low equals A-high
Opening gap lost(104, 104, 100, 100)(104.1, 108.1, 103.9, 108.1)Fail: lower shadow is only 4.76%, but ranges overlap
Body engulfing(104, 104, 100, 100)(99, 105, 99, 105)Fail kicking: B covers A instead of clearing its high
Excess shadow(104, 104, 100, 100)(105, 110, 105, 109)Fail: upper shadow is 1 / 5 = 20%
Invalid OHLC(104, 103, 100, 100)(105, 109, 105, 109)Reject input: A-open exceeds A-high

Distinguish kicking from engulfing and single marubozu

An engulfing comparison asks whether the second real body contains the first. The kicking test here asks whether two opposite marubozu ranges are separated. Those geometries cannot both pass for the same pair under these rules. A single marubozu supplies only one candle, so it cannot establish either two-candle relationship.

  • The engulfing example in the table reverses candle direction and closes above the first open, but its low is below the first high. Calling it kicking would discard the gap requirement.
  • This detector labels geometry without a prior-trend filter. If the research question is specifically reversal after a decline or advance, define that context separately and publish both raw and filtered counts.
  • An additional confirmation candle changes when a decision becomes available. Do not place a trade at B-open using the final body and gap that were only known at B-close.

Pine Script v6 detector with visible sample counts

The indicator below checks the chart symbol and timeframe only. It marks B after its close and exposes cumulative bullish events, bearish events and eligible OHLC pairs in the Data Window. Eligible pairs include valid opposing or same-color candles, regardless of whether their geometry passes. Counts describe loaded chart history; they are not trade counts or success rates.

  • The counters restart when settings, symbol, timeframe or loaded history change. Save those settings and the first/last examined timestamps with any published counts.
  • An open second candle can acquire a disqualifying shadow or trade back into the gap. barstate.isconfirmed gates the current chart bar; it does not certify data quality or every possible repainting scenario.
  • The code cannot identify a missing vendor bar from OHLC values alone. It compares adjacent available bars, so inspect suspicious discontinuities in the underlying feed.
Custom educational geometry detector. No orders, trend filter, automatic gap-fill tracking or multi-symbol scan. Compare the OHLC cases before using its alert conditions.pine
//@version=6
indicator("Kicking: full-range gap", overlay = true)
float wickPct = input.float(5.0, "Maximum each shadow (%)", minval = 0, maxval = 10)
int minBodyTicks = input.int(10, "Minimum body (ticks)", minval = 1)
float candleRange = high - low
float body = math.abs(close - open)
float upperShadow = high - math.max(open, close)
float lowerShadow = math.min(open, close) - low
bool validOhlc = not na(open) and not na(high) and not na(low) and not na(close) and high > low and high >= math.max(open, close) and low <= math.min(open, close)
bool marubozu = validOhlc and body >= minBodyTicks * syminfo.mintick and upperShadow <= candleRange * wickPct / 100 and lowerShadow <= candleRange * wickPct / 100
bool eligible = bar_index > 0 and validOhlc and validOhlc[1] and barstate.isconfirmed
bool bullish = eligible and marubozu and marubozu[1] and close[1] < open[1] and close > open and low > high[1]
bool bearish = eligible and marubozu and marubozu[1] and close[1] > open[1] and close < open and high < low[1]
var int pairCount = 0
var int bullCount = 0
var int bearCount = 0
if eligible
    pairCount += 1
if bullish
    bullCount += 1
if bearish
    bearCount += 1
plotshape(bullish, title = "Bullish kicking", style = shape.labelup, location = location.belowbar, color = color.green, text = "Bull kick", textcolor = color.white, size = size.tiny)
plotshape(bearish, title = "Bearish kicking", style = shape.labeldown, location = location.abovebar, color = color.red, text = "Bear kick", textcolor = color.white, size = size.tiny)
plot(pairCount, "Eligible OHLC pairs", display = display.data_window)
plot(bullCount, "Bullish events", display = display.data_window)
plot(bearCount, "Bearish events", display = display.data_window)
alertcondition(bullish, "Bullish kicking", "Bullish kicking confirmed at bar close")
alertcondition(bearish, "Bearish kicking", "Bearish kicking confirmed at bar close")

Keep the gap definition when samples are scarce

On a continuously traded, liquid series, adjacent bars often meet or overlap. The full-gap condition can therefore leave few observations. That is a sampling constraint, not a reason to relabel engulfing candles. This page has measured no event frequency or predictive advantage for any market.

  • Record the exchange-qualified symbol, timeframe, session, ordinary candle type, adjustment settings, tick size and test dates. Excluded overnight trading or a changed adjustment policy can alter the apparent separation.
  • Use ordinary OHLC candles for this definition. Synthetic chart prices describe transformed candles and require a separate interpretation.
  • Publish eligible pairs and each directional event count, including zero counts. If testing later returns or gap fills, predefine the observation horizon and report how many events lack enough following bars.
  • Keep the initial detection, later failure and any hypothetical entry separate. Add position size, exits, commissions and slippage before describing a strategy result.
  • To extend the example with Pineify, specify the desired trend filter and a fixed gap-fill observation window. Review the generated changes, validate syntax and compare accepted and rejected cases before measuring outcomes.
Where Pineify fits

Pine Script AI Coding Agent

Draft or revise Pine Script from your stated gap and body rules. Review the generated conditions and sample counts on your chart. A syntax check does not establish predictive performance.

Draft my kicking pattern rules

Frequently asked questions

Educational information, not investment advice. OHLC examples and detection thresholds are hypothetical. No frequency, accuracy or return has been established. A pattern can fail, and market gaps can prevent execution at an intended price.

Sources and verification

Published by Pineify. Pineify is an independent product and is not affiliated with TradingView. Sources support the technical explanations; examples do not establish trading performance.