OPEN-SOURCE SCRIPT
Updated Wickless Candles

Wickless Candles – Multi-Timeframe Levels
Marks wickless candles (Marubozu-style candles with no wick on one or both sides) as horizontal levels across multiple timeframes. These candles form when price closes in one direction without testing the opposite side even once during the bar – a sign of clean, one-sided order flow. The high/low levels of such candles often act as future support or resistance zones.
What it does
The indicator scans multiple timeframes in parallel (1H, 4H, 1D, 1W by default, plus 15m and current chart optional) and draws a horizontal line from the candle body the moment a wickless candle closes:
Top (red): line at the high level when the candle has no upper wick.
Bottom (green): line at the low level when the candle has no lower wick.
A fully wickless candle (true Marubozu) produces both lines.
Lines extend bar by bar until price reaches the level again. By default, the line is removed on first touch (setting „Hide broken lines") – so only untested levels stay on the chart and the view remains clean.
Detection logic:
A candle qualifies as wickless on a given side when:
No upper wick: high == max(open, close)
No lower wick: low == min(open, close)
Detection runs strictly on candle close (non-repainting). Higher timeframes are read via request.security with lookahead_on and [1] indexing on the last closed HTF candle – levels are only drawn after the HTF candle has fully closed, and never change afterwards.
Settings
Timeframes:
Individually toggleable: Current chart, 15m, 1H, 4H, 1D, 1W
Timeframe label at the line end (e.g. „1D", „4H") – follows the right edge of the line, so it's always clear which TF the level came from
Display:
Line width (1–4)
Line style: solid, dashed, dotted
Hide broken lines (on: line disappears on touch / off: line stops at touch and stays visible)
Colors:
Freely customizable for upper and lower markings (default: subtle red/green with transparency)
How to use
Typical setup: a lower-timeframe chart (e.g. 15m or 1H) with higher TFs enabled (4H, 1D, 1W). At a glance you see which 1D or 1W levels price last closed against one-sidedly, and which of those levels haven't been retested yet – often high-quality reaction zones for pullbacks or breakouts.
Note:
Timeframes lower than the chart TF (e.g. 15m on a 4H chart) are only sampled coarsely by Pine Script – not every 15m wickless candle will be captured in that case. For full coverage, select TF >= chart TF.
Alert:
Built-in alert „Wickless candle (Chart)" fires when a wickless candle closes on the current chart timeframe.
Marks wickless candles (Marubozu-style candles with no wick on one or both sides) as horizontal levels across multiple timeframes. These candles form when price closes in one direction without testing the opposite side even once during the bar – a sign of clean, one-sided order flow. The high/low levels of such candles often act as future support or resistance zones.
What it does
The indicator scans multiple timeframes in parallel (1H, 4H, 1D, 1W by default, plus 15m and current chart optional) and draws a horizontal line from the candle body the moment a wickless candle closes:
Top (red): line at the high level when the candle has no upper wick.
Bottom (green): line at the low level when the candle has no lower wick.
A fully wickless candle (true Marubozu) produces both lines.
Lines extend bar by bar until price reaches the level again. By default, the line is removed on first touch (setting „Hide broken lines") – so only untested levels stay on the chart and the view remains clean.
Detection logic:
A candle qualifies as wickless on a given side when:
No upper wick: high == max(open, close)
No lower wick: low == min(open, close)
Detection runs strictly on candle close (non-repainting). Higher timeframes are read via request.security with lookahead_on and [1] indexing on the last closed HTF candle – levels are only drawn after the HTF candle has fully closed, and never change afterwards.
Settings
Timeframes:
Individually toggleable: Current chart, 15m, 1H, 4H, 1D, 1W
Timeframe label at the line end (e.g. „1D", „4H") – follows the right edge of the line, so it's always clear which TF the level came from
Display:
Line width (1–4)
Line style: solid, dashed, dotted
Hide broken lines (on: line disappears on touch / off: line stops at touch and stays visible)
Colors:
Freely customizable for upper and lower markings (default: subtle red/green with transparency)
How to use
Typical setup: a lower-timeframe chart (e.g. 15m or 1H) with higher TFs enabled (4H, 1D, 1W). At a glance you see which 1D or 1W levels price last closed against one-sidedly, and which of those levels haven't been retested yet – often high-quality reaction zones for pullbacks or breakouts.
Note:
Timeframes lower than the chart TF (e.g. 15m on a 4H chart) are only sampled coarsely by Pine Script – not every 15m wickless candle will be captured in that case. For full coverage, select TF >= chart TF.
Alert:
Built-in alert „Wickless candle (Chart)" fires when a wickless candle closes on the current chart timeframe.
Release Notes
The following core functions have been updated to ensure that the indicator correctly detects and displays wickless candles: HTF detection logic (): detectHTF Data retrievals have been adjusted to capture the high, low, open, and close prices at the exact moment a candle closes. This prevents the “one-candle delay,” where signals would previously appear too late.
Initial touch prevention: A new check () has been added. Previously, the script deleted a line the very moment it was created because the current price naturally touched the high or low of the candle. Detection of the “broken line” only begins after the candle has closed.bar_index > startBar
Release Notes
Engine corrected. This note also supplies the methodology and the usageguidance the original description was missing.
WHAT A WICKLESS CANDLE IS
A candle is wickless on a side when its extreme equals the relevant body
edge: no upper wick when the high equals max(open, close), no lower wick
when the low equals min(open, close). Price never tested that side of the
bar even once. The absence is the signal. A candle that closed at its
high without probing higher, or held its low without probing lower, was
under one-sided pressure for its entire duration, and the edge it left
behind can matter when price returns to it.
A candle wickless on both sides is a true Marubozu and produces both
levels.
DETECTION AND THE REPAINTING CORRECTION
This is the substantive fix in this update, and it needs stating plainly.
The original description claimed detection was non-repainting and that
higher timeframes were read with indexing on the last closed candle. The
indexing was not in fact present. request.security ran with lookahead_on
and no offset, which returns the finished values of a candle that has
only just opened. On history that looks perfect: the level appears at the
start of the candle that produced it, long before price arrives there. It
cannot work that way live, where those values do not yet exist. The
claim in the description was wrong.
Detection now offsets by one bar inside the request, so only candles that
have genuinely closed are ever evaluated. The level is drawn after the
candle closes, not before. This is the behaviour the description always
described.
ARMING
Correcting the lookahead exposed a second problem the bug had been
hiding. A wickless candle closes on its own extreme, so at the moment the
level is drawn price is sitting exactly on it. The next bar touches it
immediately and it disappears. The old version avoided this by accident,
because the lookahead gave every level a head start.
A level is therefore now armed before it can be tested. Price must first
close away from it by a configurable multiple of ATR(14), default 0.5.
Only then does a return to the level count as a test. This matches what
the level is actually for: it marks a price worth watching on a retest,
not the price you happen to be standing on.
TIMEFRAME GRID
Levels are read from 15m, 1H, 4H, 1D and 1W, each individually
switchable, plus the chart timeframe itself as an option.
A timeframe is evaluated only when the chart resolution is equal to or
finer than it. Requesting 15m data from a 4H chart returns one sample per
4H bar, so most 15m candles are never seen and the level set would
silently depend on which chart you happened to open. Rather than sample
coarsely and stay quiet about it, the layer is switched off and a note in
the corner states which layers are live.
Levels found at the same price on different timeframes are merged into
one line carrying both tags, since a weekly candle and the daily candle
that produced its extreme are wickless at the same price.
LIFECYCLE
A level leaves the chart for one of three reasons. Price tests it after
arming. It drifts further from price than the distance filter allows, at
which point it no longer describes anything nearby but still forces the
chart's auto scale to include it. Or it falls out of the level cap, which
exists so that Pine's own drawing limit does not discard levels silently.
HOW TO USE IT
Run it on the timeframe you trade, with higher layers switched on for
context. A 1H entry approaching an untested 1D or 1W level is approaching
a price the market walked away from without testing, which is a different
proposition from open space.
Untested levels are the point. With removal on, whatever remains on the
chart has not yet been revisited. That is the reading: not where price
has been, but which one-sided edges are still outstanding.
Raise the arm distance on noisy instruments if levels vanish too readily,
lower it if stale levels linger. Raise the distance filter if you work
with wide targets and want distant levels kept.
Expect few levels. Exact equality between an extreme and a body edge is
uncommon, and it is rarer still on averaged index symbols, where prices
carry many decimals and rarely land exactly. On a single venue with a
defined tick size the levels appear far more often. Choose the symbol
accordingly.
LIMITS
The level is drawn one candle after the wickless candle closes. That
delay is structural and cannot be removed without reintroducing the
lookahead that this update eliminates.
One-sided order flow is a description of what happened, not a forecast of
what follows. Many wickless levels are crossed without any reaction. The
indicator marks them and nothing more: no direction, no signal, no entry.
CHANGES IN THIS UPDATE
- Higher timeframes now read only closed candles. The lookahead is gone.
- Levels are armed before they can be tested.
- Timeframes finer than the chart are disabled, not sampled coarsely.
- Duplicate levels across timeframes are merged into one line.
- Distant levels are dropped instead of distorting the chart scale.
- Explicit level cap replaces silent loss at Pine's drawing limit.
- Availability note shows which layers are live.
Open-source script
In true PulseWire spirit, the creator of this script has made it open-source, so that traders can review and verify its functionality. Kudos to the author! While you can use it for free, remember that republishing the code is subject to our House Rules.
Swiss Trend AI — indicators that show which phase the market is in.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by PulseWire. Read more in the Terms of Use.
Open-source script
In true PulseWire spirit, the creator of this script has made it open-source, so that traders can review and verify its functionality. Kudos to the author! While you can use it for free, remember that republishing the code is subject to our House Rules.
Swiss Trend AI — indicators that show which phase the market is in.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by PulseWire. Read more in the Terms of Use.
