ACTS Point & FigurePoint & Figure strips time out of the chart.
What's left is structure - where price actually fought, and where it broke. This draws that structure as an overlay on your ordinary candlestick chart, so you see the P&F reading and the candles together.
And the source is open. You don't have to take my word for any of it: read the code, check that it does what this description says, change it if you disagree. That is the point of publishing it this way.
Most free P&F tools stop at double tops. This one carries the full classical vocabulary - triples, catapults, traps, poles, 45-degree trend lines and structural stops - built the way the literature specifies.
It draws levels and structure. It does not issue buy or sell signals, and it makes no claim about what any level will do next. The interpretation is yours.
HOW THE GRID IS BUILT
Price moves one box, you add a box. It reverses by three boxes, a new column starts. The grid is computed internally from the ordinary OHLC history of the chart you're on - not from PulseWire's Point & Figure chart type - so every level maps to a real price on a real bar with a real timestamp. Columns are built from closing prices, and the three-box reversal is fixed, the classical construction.
WHAT IT SHOWS YOU
Columns - the trend in its rawest form. A column of X's is buyers in control, O's sellers, and a new column means the move reversed by enough to matter. No wicks, no noise from time passing. Columns are numbered; the X/O characters and the column lines toggle independently.
Classic patterns and their breakout levels. Double and triple tops and bottoms, detected on the grid, each with its breakout level drawn and labelled. A breakout only counts if the column also clears every same-direction column behind it in the look-back window - so a "break" straight into overhead structure isn't one. A separate Pot BO line projects forward from the live column: the level the current column would have to reach for a breakout to register. It updates as the column builds.
45-degree trend lines. Bullish support and bearish resistance drawn at a fixed 45 degrees off the grid, plus internal lines, projecting a configurable distance to the right. On a P&F grid a 45-degree line has objective meaning, because the grid has a fixed geometry; on a time chart it does not. A line renders dotted while it is provisional and turns solid once a breakout confirms it, so you can see which lines have earned their keep.
The special formations. High and low poles, bull and bear catapults, bull and bear traps. A trap is a breakout that fails and pulls price back through its own level. A pole marks an unusually extended one-column move. Formations that have already resolved stay on the chart by default, tagged when the level was hit and when the formation was negated - so you can see what the recent structure actually did, not only what is still open. Two settings hide the hit and negated ones, and an age filter clears the old ones away; switch those on and what remains is only what is still live.
Structural stop levels - three modes, all box-denominated.
- Mode 1 - nearest. The extreme of the column immediately before the breakout, plus a buffer.
- Mode 2 - pattern-wide (default). The worst opposing extreme found across the whole width of the pattern, plus the same buffer. More conservative than Mode 1 by construction.
- Mode 3 - measured. A fixed distance from the breakout level itself (default two boxes), no buffer.
The buffer and the Mode 3 distance are both expressed as a percentage of your box size, never in pips. Nothing in this path assumes a decimal count, a pip value or an asset class, so the same settings behave sensibly on a 5-decimal FX pair, an index and a crypto pair alike.
TWO SETTINGS, AND THE SCRIPT HELPS YOU WITH ONE OF THEM
Set the Grid Anchor Price to a round number at or below current price - 1.0 for EURUSD, 100.0 for USDJPY. Then set the Box Size in price terms; a 10-pip EURUSD box is 0.00100.
Box size is instrument-specific by nature. A 0.001 box that reads EURUSD beautifully is meaningless on an index trading at 18,000, and there is no universal number. You don't need to know it in advance - the script tells you. If your box size is so large that the loaded history barely spans any boxes, or so small that it can't be read, an on-chart message says which way you're wrong and suggests a value for that instrument. So: put in any reasonable guess, read the message, adjust, and repeat until it stops complaining. Then check that the structure it draws matches moves you recognise. Write the number down - you'll reuse it.
Defaults are set for EURUSD. On anything else, expect the box-size message first. That's the setup assistant doing its job, not a fault.
MAKING IT READABLE
Two minutes of chart setup is the difference between "this is broken" and "oh, I see it."
1. Dim the candles - hollow bars or a muted grey. The P&F structure should be what your eye lands on; the candles are context. This one change does most of the work.
2. Lock the price-to-bar ratio, and set it to your box size divided by three. A column is three bars wide and a 45-degree line rises one box per column, so that ratio is what makes the geometry square - 0.00100 box on EURUSD gives 0.000333. To check it: draw an ordinary trend line at 45 degrees over one the script has drawn. If they lie on top of each other you are set. If they diverge, the ratio is wrong, and everything else on the chart is being read at the wrong angle.
3. Give it history. Too short a window and there is nothing to build.
4. Start on a timeframe you already read well. The structure comes from that chart's own data, so the timeframe you pick is the timeframe you're analysing.
HONEST NOTES ON CONSTRUCTION
- Standard charts only. Deliberately not run on PulseWire's P&F chart type, which produces synthetic bars - levels read off those don't correspond to prices anyone could have traded.
- Columns come from closing prices. A choice, not an oversight: closes filter intrabar noise. The cost is real - a spike that reverses before the close prints no box, and structure that depended on it won't appear.
- The most recent 160 columns are drawn. Deeper history isn't rendered. PulseWire caps how much any one script may draw, and the newest structure is the structure worth keeping.
- No alerts. There are none in this script.
- Price only. No volume input and no volume interpretation.
- It won't pick your box size for you. It will tell you when yours is wrong, which is a different and more honest thing.
- The detection is geometric. It will mark structure that later fails, as every structural method does.
- No performance claims are made here, and none are implied.
Pine v6, overlay, open source. Nothing in the file requests data from another symbol or timeframe.
If you're learning Point & Figure: put this on a market you already know and watch the columns build next to the candles you recognise. That is the fastest way in.
Indicator

Indicator

ICT Session Toolkit - Killzones, Macros, True Opens and SessionThe only ICT indicators you will need in one script. CME_MINI:NQ1! CME_MINI:ES1!
This toolkit combines the intraday session tools an ICT-style trader needs into a single indicator, so a full session read — killzones, macro windows, true opens, session-open markers and equal highs/lows — comes from one script instead of five separate ones sharing chart space and settings panels.
Why a mashup? These tools are designed to be read together: killzone pivots mark session liquidity, macro windows show when algorithms are most likely to seek that liquidity, true opens give the premium/discount reference for the day and week, and equal highs/lows mark the resting liquidity that macros often target. Running them as one script means one timezone setting drives every session calculation, the drawings share one visual style, and each module can be switched on or off from a single master toggle section — something impossible when the tools live in separate indicators.
What's included and how each part works
Killzones and pivots — Boxes and high/low pivot lines for the Asia, London, NY AM, NY Lunch and NY PM sessions. Pivot lines extend until price mitigates them and can alert when broken. Day/week/month opens, highs/lows and separators are also available.
ICT macro windows — The known macro times (London 02:33 and 04:03; New York 08:50, 09:50, 10:50, 11:50, 13:10 and 15:15) are boxed and classified as Accumulation, Manipulation or Expansion by comparing the macro's open/close position within its range against the most recent lower-timeframe swing points. By default only the text classification is shown to keep charts clean; lines and boxes can be re-enabled per macro. Macros require a 1, 3 or 5 minute chart.
True opens — Dotted horizontal lines at the True Day Open (00:00), True Week Open (Monday 18:00) and the 10:00 open, each anchored to its opening price and running until the next open of the same type (the 10:00 line is limited to a configurable 60 minutes). These serve as premium/discount dividers for their respective periods.
Session-open markers — Original addition: a dotted pre-session box tracking the 07:00-09:00 high/low, plus short vertical markers at the NY (09:30), Asia (20:00) and London (02:00) opens sized in points around the opening price, so the open is visible without a full-height line cluttering the chart.
Equal highs and lows — Detects untested equal highs/lows as liquidity levels and removes them once traded through, with an optional realtime mode.
How to use it Set your timezone once in the killzone settings (defaults to New York). Each module has its own settings group prefixed KZ, MACRO, TO or EQ, and every module can be disabled from the Master Toggles section. For alerts (broken killzone pivots, daily/weekly high-low breaks), create an alert on the indicator and choose "Any alert() function call".
Limitations to be aware of All modules share the script's drawing limits, so on long lookbacks the oldest drawings are removed first. Macro classification uses 1-minute lower-timeframe data and only draws on charts of 5 minutes or less. The vertical open markers are sized in raw points and default to values suited to index futures — adjust for other instruments. This indicator draws session context only; it does not generate buy/sell signals and no performance is implied.
Credits The killzone/pivot engine is based on open-source code by tradeforopp (ICT Killzones & Pivots), the macro detection and classification on open-source code by LuxAlgo (ICT Macros), and the equal highs/lows detection on open-source code by OutofOptions, whose helper library this script imports. Significant modifications include conversion to Pine v6, a unified settings and toggle architecture, restyled macro display, a bounded 10:00 open line, and the original pre-session box and session-open marker module. Indicator

Indicator

Indicator

Fibonacci Retracement [AFD]Fibonacci levels that find their own two points, and keep finding them.
THE PROBLEM WITH DRAWING THEM BY HAND
A retracement is two clicks and a judgement call. The judgement is the hard part - which high, which low, and whether the leg you just measured is one move or two glued together. Then the session rolls over and the answer changes, so you do it again.
This draws the grid from the chart's own data instead. You tell it which range matters and it finds the two points itself, every bar, forever. Come back after the open and it has already re-anchored to the new day.
PICKING THE RANGE
Four choices, and they are all self-maintaining.
Current Day is the default and it is the one most intraday traders want - today's high and low, re-anchoring at each session open. Previous Day is yesterday's, and it draws from yesterday's start rather than today's, so the geometry sits over the data it came from. Current Week is the same idea one period up.
Latest Swing is the interesting one. It takes the last confirmed swing high and low, and it insists they alternate.
That insistence matters more than it sounds. ta.pivothigh() and ta.pivotlow() are independent detectors, and a real chart prints two, three, four highs in a row with no qualifying low between them. Take the most recent of each and you get a "leg" whose high end is simply the latest high, not the highest one in the span - so the grid measures a move that never happened as a single push, and 0.618 lands somewhere with no relationship to anything. Here, a pivot on the same side as the last one replaces it only if it is more extreme, and a pivot on the opposite side starts the next leg. On clean impulses this changes nothing at all. On ragged ones it pulls the anchor back to the extreme the leg actually reached.
Swing Strength sets how many bars have to print either side of a pivot before it counts. Higher means fewer and more significant swings, and a longer wait.
WHICH WAY THE LEG RUNS
Fib Direction is Auto, Long or Short, and it is the one control that stays live no matter what else you switch off - because it governs both grids, not just the near one.
Auto works out the direction from the range you actually chose. It looks at the two extremes that range uses and puts 0.00 at whichever one printed later, on the reasoning that the more recent extreme is the one the move ended on. So on Current Day, a day that made its low at 10:15 and its high at 15:50 gets 0.00 at the high and a grid you read downwards. Force it with Long or Short when you disagree.
THE MINUS SIGN, AND WHY THE EXTENSIONS HAVE ONE
Everything on this chart is numbered from the leg end. 0.00 sits at the recent extreme that finished the move, 1.00 at the point it started from. That way the number you read is retracement depth, and it means the same thing whichever direction the leg ran.
The extensions continue that same line past 0.00, which is why they are negative. -0.618 sits 0.618 of the leg's range beyond the 0.00 line, in the direction the leg was travelling - exactly the way 0.618 sits 0.618 of the range on the other side of it. One ruler, and the sign tells you which side of the origin you are on.
If that looks unfamiliar, put PulseWire's own Fib Retracement tool on the same two points. Its tags read the same: -0.618, not 1.618. The 1.618 reading belongs to the Trend-Based Fib Extension tool, which measures from the leg origin instead - a perfectly good convention, but putting both on one chart gives you two rulers running opposite directions from the same 1.00 line, and sooner or later you read the wrong one.
Six ratios are on offer - -0.272, -0.414, -0.618, -1.00, -1.618, -3.236 - and they ship switched off. They are levels, not targets. They are arithmetic on the leg. This script says nothing about whether price gets to one, marks no entry or exit, and has no alerts of any kind.
THE SECOND GRID
Switch on Show HTF Context and a second grid draws behind the first, anchored to the latest confirmed swing on a higher timeframe and dimmed so it stays context rather than competing for your attention. It ships off, so a fresh add gives you one clean grid.
HTF Mode is where this differs from most higher-timeframe overlays. Adaptive , the default, does not hold a fixed interval - it takes the next one up from whatever chart you are on. A 5-minute chart anchors to the 15-minute swing, a 1-hour chart to the 4-hour. Change timeframe and it follows you, and because it always resolves to something strictly higher, it cannot silently resolve to nothing.
Custom lets you name the timeframe instead, which is what you want when a specific one matters - the 4-hour swing while you scalp the 5, say. The catch is that it has to be strictly higher than the chart. Set Custom to 240 and drop to a 4-hour chart and the grid disappears with no warning label, because 240 is not higher than 240.
Both grids keep their own level checkboxes, line width, label size and text colour, so you can make the context layer as quiet as you like. The extension ratios are the exception: which ratios get drawn is shared by both grids, while which grids draw them is not. Each layer has its own extension toggle. The tooltips say which is which, because a control that looks global and is not is worse than one that plainly is.
THE SETTINGS ACTUALLY WORTH YOUR TIME
Most of the 63 inputs are the ordinary colour-and-width kind. These are the ones that change how the thing reads.
Color Mode defaults to Gradient, and it is doing real work. Each level takes its colour from its own ratio, so hue states depth - the shallow end and the deep end are different colours, and the 0.618-0.786 span reads as a region instead of two more identical lines. There are five presets plus Custom. Single Color reverts to one colour per grid if you prefer the classic look, and either way whatever transparency you pick in the colour picker is the transparency you get.
Enable Glow draws every level twice - a wide, near-transparent halo under a thin bright core. It costs nothing but line objects and it is the difference between a grid you can see on a busy chart and a set of hairlines you lose against the candles. Turn it off when the chart is crowded.
Fill Between Levels shades the intervals. OTE Band, the default, shades only 0.618-0.786. All Bands shades everything, Custom Bands lets you pick, and Off is off. The fills are independent of the line checkboxes, so you can shade a band whose boundary lines are hidden.
Highlight Golden Zone at Price is the one piece of reactive styling here. While the last close is between the 0.618 and 0.786 prices, that band draws more opaque and lifts off the chart. It creates nothing new - no box, no zone object, no centre line, no label - it just restyles the band the fill control already drew, and Highlight Strength sets by how much. It is arithmetic on two numbers already on your screen.
HTF Layer Dimming adds transparency to the whole context grid on top of whatever its colours already carry, which is how the second grid stays behind the first instead of doubling the clutter.
Extension Fade fades each extension a little further as it travels away from the leg, so the near ones read as more prominent than the far ones. It counts only the extensions you actually enabled, not their slot in the ladder - so if you turn on just the far ones, the nearest of them is still drawn at full strength rather than arriving pre-dimmed.
Ratio Label Format switches the tags between decimal and percent - 0.618 or 61.8%, minus signs intact either way. Show Price Labels adds the actual price beside each ratio; it is off by default because eight prices is a lot of text.
Line Extension Left/Right and Label Right Offset control how far the grid reaches and how far past it the tags sit. The defaults keep the tags in the empty margin, clear of both the candles and the price scale.
One last thing: any control that cannot do anything greys itself out. Switch the context grid off and its settings dim. Switch to Gradient and the single-colour pickers dim. There is no control in this script that looks live, takes a value, and quietly does nothing.
GETTING STARTED
Add it. You get one grid on today's range, gradient-coloured, golden zone shaded.
Want a different range? Anchor Range. Leave Fib Direction on Auto until it tells you something you disagree with.
Want context from above? Show HTF Context, and leave HTF Mode on Adaptive unless a specific timeframe matters to you.
Want the extensions? Turn them on for whichever grid you want them on, then pick your ratios.
Too busy? Glow off, Fill Between Levels off. You are back to plain lines.
THINGS THAT WILL LOOK LIKE BUGS AND ARE NOT
Swing anchors arrive late. A pivot is not a pivot until Swing Strength bars have printed after it, so on Latest Swing and on the context grid you are always looking at the last confirmed pivot, not the bar in front of you. When a newer one confirms, the anchor moves. That is the price of anchoring to something you can only recognise in hindsight, and it is the same trade every swing-based tool makes.
The day and week ranges are live. Current Day and Current Week use the period's running high and low, so the grid re-scales when the session makes a new extreme. It is showing you the range as it stands, not a finished one.
It draws one grid, not a history of them. You get the current grid, redrawn as things move. There is no trail of old ones behind you.
Higher-timeframe data uses the documented confirmed-value form - the expression is offset by one bar and the request passes barmerge.lookahead_on. Together, that is the pattern the Pine Script documentation gives for reading a higher timeframe without pulling unclosed data into historical bars. The source is open, so you can read the call rather than take my word for it.
Custom HTF at or below the chart timeframe draws nothing at all , and says nothing about it. Worth remembering before you conclude the context layer is broken.
A 12-month chart draws no context grid. 12M is the top of PulseWire's interval list, so Adaptive has nothing left to step up to. 3-month and 6-month charts both work.
Prices come from standard OHLC via ticker.standard(), so your levels are the same on Heikin Ashi, Renko, Kagi, Line Break and Point and Figure as they are on candles. The synthetic geometry of those chart types can still put the lines somewhere you would not expect.
WHAT IT DELIBERATELY DOES NOT DO
No alerts. No signals. No scores, ratings or probabilities. No zones, no nested zones, no centre line. It draws Fibonacci levels, labels them honestly, and stops. If you want something that tells you when to act, this is not it.
WHY IT IS DIFFERENT
Four self-maintaining ranges instead of a two-point drag you place today and replace tomorrow. Two independently configured grids on one continuous number line, with the higher one dimmed to sit behind rather than on top. Extensions numbered on the same ruler as the retracements, matching the tags PulseWire's own tool gives those prices, rather than a second scale running the other way. A swing range that is genuinely one leg, because the pivot pair is kept alternating. And colour that carries information - a level's hue states its depth - instead of a palette applied to identical lines.
Open source under the Mozilla Public License 2.0. Indicator

Macro MagicianMacro Magician — Hourly Macros (:50 → :10)
Short description
Marks the :50 → :10 hourly macro windows, shades the opening minute of each, and can carry a chosen macro's opening range across the rest of the session.
Full description
What it does
Macro Magician draws the twenty-minute windows that run from :50 of one hour to :10 of the next — the periods intraday traders commonly call hourly macros. Each window gets a shaded box tracking its high and low, and the opening candle of the window is shaded separately in a darker tone, so you can see where price opened the window from relative to where it finished.
Beyond marking the windows, two features do the work that usually gets done by hand:
Carried-forward opening ranges. Any macro can have its opening-candle high and low projected to the right across the rest of the session, turning that one minute into a horizontal reference band. The macro's time is reprinted along the band at a cadence you set, so it stays identifiable hours later without hovering over it.
A standalone highlight candle. One candle per session — 09:30 by default, matching the equity cash open — can be recolored, given a vertical backdrop and a marker, and boxed with its own carried-forward band. This runs independently of the macro slots, so it works whether or not that minute falls inside a macro window.
Nothing here produces signals or predicts direction. It is a time-and-level marking tool that puts the windows and their opening ranges on the chart automatically.
Settings
General
Timezone — all times are interpreted in this zone, so boxes land correctly regardless of your chart's display timezone. Defaults to New York; "Exchange" follows the symbol.
Timeframe limit — hides the drawings above a chosen timeframe. Default 15 minutes.
Style
Fill, opening-candle fill, and border transparency, plus border width.
Opening-candle level — projects the window's opening candle's open, close, or midpoint as a dotted line across the window.
Label visibility and size.
Chart theme — Auto, Light, or Dark. Auto reads the chart's background brightness and flips the extended-macro label text between the two colors you choose, so the script is legible on either without touching anything else.
Optional alert when a macro opens.
Macro windows Eight independent slots, each with an on/off toggle, a session, a color, and an extend checkbox. Defaults cover 06:50 through 14:10 New York time. The session field accepts day filters, so 0850-0910:23456 restricts a window to Tuesday through Saturday for futures. One "extend through" session sets where all carried-forward bands stop, 16:00 by default.
Extended opening range Controls the band label cadence — either at a fixed minute interval from the macro open, or once an hour at a clock minute you choose so the prints stay clear of the other macro windows — along with the text size, which applies to both the label above the box and the prints along the band.
Highlight candle Hour and minute for the candle, its color, an optional full-height vertical backdrop with its own transparency, an optional triangle marker above or below the bar, and an optional carried-forward box with independent fill, border, and width settings. The box can start on the candle or just after it, so its fill doesn't wash out the candle's own color.
How to read it
The lighter box shows what the window did — its full high and low. The darker box shows the range it opened from. When a window closes well outside its opening range, the two together show the displacement at a glance. A carried-forward band lets later sessions be read against an earlier opening range without redrawing it each day.
Notes and limitations
Intraday charts only. On a 1-minute chart the darker box is exactly the :50 candle; on a 5-minute chart it is the first five minutes of the window, which is wider by design.
The highlight candle is drawn with barcolor plus a candle overlay, so it survives chart settings that override bar colors. On timeframes above one minute it paints whichever bar carries that opening time.
PulseWire caps drawings at 500 boxes, lines, and labels, so the oldest sessions eventually drop off the left of the chart. Running fewer macro slots keeps more history visible.
Windows in progress update until they close, as you would expect. Nothing recalculates on historical bars.
This is a charting aid, not a strategy, and not financial advice. Test how these windows behave on your own instrument and timeframe before relying on them. Indicator

Pressure Transfer ZoneMany reversal indicators tell you when a market looks stretched. Pressure Transfer Zone asks a harder question: when price returns to the extreme, can the side that drove it there still make meaningful progress?
This indicator was built to identify a specific form of failed continuation. It waits for a strong directional drive, a real retreat, and then a second attempt at the extreme. If that second attempt makes little progress and closes with clear rejection, the script freezes the structure into a decision zone. From there, price must prove that control has actually transferred before a signal is confirmed.
The goal is not to call every top or bottom. The goal is to isolate the moments when a mature move may be losing control, show that process directly on the chart, and give the trader clear confirmation and invalidation levels.
WHO IT IS FOR
Pressure Transfer Zone is designed for intraday, swing, and position traders who use price action and want a more disciplined way to evaluate exhaustion, failed breakouts, failed continuation, and early reversals.
It is designed for liquid stocks, futures, forex, and cryptocurrency on standard candlestick charts. The engine does not run on Heikin Ashi, Renko, or other synthetic chart types because their prices can distort the structure being measured.
THE IDEA BEHIND IT
A strong trend does not end simply because price is overbought, oversold, or extended. Strong moves can remain extended for a long time. What matters is whether the original side can still produce results when it gets another opportunity.
The pattern develops in five stages:
1. A mature directional drive establishes real displacement.
2. Price makes a meaningful retreat away from the extreme.
3. The original side returns for a second attempt.
4. That second attempt produces limited progress and a weaker close.
5. Price confirms the transfer with a qualified break of the selected boundary or, in Sniper mode, with that break followed by a successful first retest.
This is an effort-versus-result test expressed entirely through price. The script does not claim to measure order flow, bid/ask delta, institutional activity, hidden liquidity, or volume pressure.
HOW THE MATHEMATICS WORKS
The first filter is directional efficiency:
Directional efficiency = net directional change / total absolute bar-to-bar movement
A clean drive that travels mostly in one direction receives a higher score. A noisy move that covers a lot of distance but makes little net progress receives a lower score.
The selected Source is used for net displacement and path efficiency. The zone itself is always built from confirmed OHLC prices.
The drive must also meet volatility, range, closing-location, and local-extreme requirements. Under the default pace profiles, it must:
* Produce at least 1.25 ATR of net directional displacement.
* Span at least 2.00 to 2.50 ATR, depending on the selected pace.
* Meet a directional-efficiency threshold of 0.40 to 0.48.
* Close in the outer 28% of the drive range.
* Create a fresh local extreme.
ATR is measured with a 14-bar lookback and frozen when the sequence begins. This prevents later volatility changes from moving the event’s established thresholds.
The retreat must travel at least the greater of 0.55 ATR or 18% of the original drive range, and the closing price must confirm that full retreat distance.
When price returns to the extreme, the second attempt must show deterioration. By default:
* Price must return to within the greater of 0.30 ATR or 8% of the original drive range from the first extreme.
* New progress beyond the first extreme cannot exceed 0.20 ATR.
* The second push cannot exceed 72% of the original drive range.
* The close must migrate away from the first attempt by at least 0.10 ATR.
* Rejection must equal at least the greater of 0.25 ATR or 25% of the developing zone.
* The rejection bar must close within the directional outer 45% of its range.
* The completed zone cannot exceed 60% of the original drive range.
Together, these filters are intended to remove many one-candle reactions, shallow pauses, and weak two-test formations. The model wants to see a legitimate first drive, real separation between attempts, and measurable deterioration on the return.
THE ZONE
Once the second attempt qualifies, the structure is armed and its levels are frozen:
* Outer edge: the most extreme price reached by the two attempts.
* Inner edge: the counter-extreme formed between the two attempts.
* Midpoint: the halfway point of the zone.
* Invalidation: 0.15 ATR beyond the outer edge in the direction of the original move.
For a bullish setup, price must transfer upward after a mature downward drive. For a bearish setup, price must transfer downward after a mature upward drive.
Invalidation requires a confirmed close beyond the buffered outer edge. The invalidation level is structural information, not an automatic stop-loss recommendation.
ENTRY TIMING
Early
Confirms on a qualified close through the zone midpoint. This is the fastest mode and can trigger on the same confirmed bar that arms the zone. It offers earlier recognition with a greater risk of false starts.
Balanced
Confirms on a later qualified close beyond the structural inner edge. Balanced is the default middle ground between earlier recognition and additional structural confirmation.
Sniper
Requires a qualified break of the inner edge followed by the first later retest of that level. The retest must remain shallow and close back in the transfer direction. The first retest decides the setup; a failed first retest cannot become a signal later.
The breakout candle must move in the transfer direction, span at least 0.35 ATR, have a real body covering at least 45% of its range, close within the directional outer 32% of the candle, and finish no more than 0.45 ATR beyond the selected boundary. The final limit is an anti-chase filter.
A valid Sniper retest must stay within 15% of the frozen zone depth, close at least 0.05 ATR back beyond the inner edge, have a directional body covering at least 35% of the candle, and close within the directional outer 40% of its range.
HOW TO READ THE CHART
With the default color palette:
* Amber: the pattern is still developing. It is information, not an entry signal.
* Violet: the structure is complete, armed, and waiting for confirmation.
* Cyan: the action area between the midpoint and inner edge.
* Green: a bullish pressure transfer has been confirmed.
* Red: a bearish pressure transfer has been confirmed.
* Faint gray: an armed setup failed, expired, or was invalidated.
The right-edge label shows the current phase and the next required action. Once the structure is armed, it also displays the confirmation boundary and invalidation price. A diamond appears only when the selected timing mode produces a confirmed trigger.
When Keep Recent Resolved Zones is enabled, the script retains a limited number of recent successful and failed zones. The default is eight, adjustable from one to twelve, so failures remain visible without overwhelming the chart.
PRACTICAL USE
1. Treat an amber zone as a developing idea, not permission to trade.
2. When the zone turns violet, note its direction, confirmation boundary, and invalidation price.
3. Wait for the exact requirement of Early, Balanced, or Sniper mode.
4. Use the broader trend, nearby support and resistance, liquidity, session conditions, and scheduled news as separate context.
5. Apply your own position sizing, stop placement, targets, and trade-management rules.
ADAPTIVE PACE
Auto mode adjusts the engine according to the chart timeframe:
* Fast: 15-minute charts and below.
* Swing: above 15 minutes through 4 hours.
* Position: above 4 hours.
Fast, Swing, and Position can also be selected manually. The selected pace changes the drive and local-extreme lookbacks, minimum drive size, efficiency threshold, formation lifetime, armed lifetime, and Sniper retest window. It does not change the meaning of the pattern.
ALERTS
The indicator includes five alerts:
* Long Zone Armed
* Short Zone Armed
* Long Pressure Transfer
* Short Pressure Transfer
* Pressure Transfer Invalidated
Create alerts using Once Per Bar Close.
Trigger alerts and chart diamonds use the same confirmed-bar event. If an Early setup resolves on the same bar it arms, the temporary armed alert is suppressed so users do not receive a stale or redundant notification.
CONFIRMED-BAR DESIGN
Actionable signals are confirmed only after the chart bar closes. They are not backdated and do not use future data, pivot backpainting, negative offsets, higher-timeframe requests, or lookahead logic.
Amber developing zones are intentionally provisional and can change or disappear because the pattern is not complete. Once a zone turns violet, its structural prices and invalidation level are frozen for that event.
LIMITATIONS
Pressure Transfer Zone identifies structural-exhaustion candidates, not guaranteed reversals. It tracks one active sequence at a time and can miss fast V-shaped turns that never form two separate attempts.
Strong trends can repeatedly invalidate countertrend setups. Thin markets, price gaps, news shocks, and irregular sessions can also reduce the usefulness of ATR-based thresholds.
This is an indicator, not a strategy. It does not place orders, calculate position size, set profit targets, or claim a win rate. Its job is narrower: determine whether the original directional side returned to the extreme, failed to produce enough additional progress, and then met the model’s confirmation rule at a clearly defined price.
Indicator

AlgoStorm Institutional Session Structure (ISS)AlgoStorm Institutional Session Structure (ISS)
A complete intraday auction-structure engine that maps global session boxes (Asia, London, New York), the Globex overnight range, the Initial Balance with day-type extension targets, the Opening Range, and an automated overnight-inventory classification of the RTH open — directly onto your intraday charts.
The AlgoStorm Institutional Session Structure (ISS) indicator is designed for index futures and intraday traders who read the market through the auction lens: where overnight inventory built, whether the open printed inside or outside that inventory, whether the Initial Balance is containing rotation or the day is extending toward trend, and which session built the reference high or low everyone now trades against. It answers those questions structurally instead of drawing decorative boxes.
TIMEFRAME REQUIREMENT — READ BEFORE LOADING
This is an intraday tool. It refuses to run on 1D charts and above, and the chart timeframe should stay at or below the Opening Range length (the Opening Range and Initial Balance locks resolve at bar granularity). All session windows are DST-aware through a configurable IANA timezone, defaulting to New York time.
Technical Architecture: Fixed-Pool Session Engine
Session-structure indicators commonly rebuild their drawings on every bar, bloating chart performance and churning objects. ISS uses a different execution model:
Per-Session Box Engines: Each session runs its own tracking engine with a private box history. The active box updates its high/low boundary in place as the session develops; boxes older than the history cap (default five days, configurable to twenty) are evicted automatically.
Time-Window Lock Pipeline: The overnight range, Initial Balance, and Opening Range each accumulate in staging registers, then lock permanently the moment their window closes — the overnight at the RTH open, the IB and OR when their configurable minute-windows complete. Locked levels cannot move for the rest of the day.
Extension Mathematics: Extension targets use the classic day-type formula, extension(m) = IB low + m × IB range above the market and IB high − m × IB range below it, with 1.5× and 2.0× defaults. A 1.5× tag means price has traveled 150% of the IB range from the opposite IB boundary.
Zero-Churn Drawing Pool: Every level line and label is created exactly once at initialization and repositioned in place afterward. No per-bar create/delete cycles, no garbage-collection artifacts.
Label Anti-Overlap Engine: Right-edge labels (ON, IB, extensions, OR) are sorted by price each bar and automatically spaced apart whenever two or more sit within a configurable minimum gap (default 0.05% of price). Level lines always stay locked to the true price — only the label text position shifts to stay readable. On by default; fully optional.
Confirmed-Bar Alert Gate: Every alert condition is gated on confirmed bar closes inside RTH. Nothing repaints, and no alert can fire intra-bar and then vanish.
Features & Functionality
Session Boxes: Asia, London, and New York boxes with running high/low, dotted session-open line, and session label. Defaults cover the full sessions (18:00–03:00, 03:00–09:30, 09:30–16:00 New York time); killzone-style alternatives are documented in the input tooltips.
Overnight Range Lock: Globex high/low accumulated through the overnight window and held through the trading day — the reference frame for gap and inventory reads.
Initial Balance + Extension Targets: First 60 minutes of RTH (configurable 15–120) with configurable extension multiples for day-type classification: containment inside the IB, 1.5× tests, or 2× trend extension.
Opening Range: First 15 minutes of RTH (configurable 1–60) — the breakout reference for the open drive.
Overnight Inventory Read: At the RTH open, the engine classifies the print: above the ON high, upper half of the ON range, lower half, or below the ON low — the gap-risk context before the first rotation completes.
Session State Table: Active session, ON high/low, open-vs-ON classification, IB range (shows "forming…" while building, then the locked H/L) with a separate breakout status (inside IB vs. breakout ▲/▼), OR range and status, and which IB extensions have been tested — the whole auction state in one glance.
Alert Suite: Eight conditions — Opening Range breakout up/down, Initial Balance breakout up/down, overnight high/low break, and upper/lower reach of the second IB extension multiple (default 2.0×, trend-day behavior). The first multiple (default 1.5×) is tracked live in the state table but does not carry its own alert.
Honest limitations: ISS is structural context, not a signal system — no entries, no exits, no arrows . Intraday levels draw for the current day only by design; historical context comes from the session boxes. If you also run our Institutional Key Levels (IKL) script, keep IKL's Initial Balance, Opening Range, and Overnight toggles off so nothing double-plots — ISS is the time-anchored view, IKL is the right-edge level strip.
Open-source under CC BY-NC-SA 4.0. Educational tool — not financial advice. Indicator

Round Number Gravity Map - Level Attraction StatisticsRound numbers are supposed to attract price. This script measures whether they actually do on the chart in front of you, rather than assuming it.
WHAT IT DOES
It lays a grid of evenly spaced round levels over the chart, and for every bar measures how far the close sat from its nearest level — expressed as a fraction of the grid spacing. That normalised distance runs from 0.0 (right on a level) to 0.5 (exactly halfway between two).
If price ignored round numbers entirely, that distance would be spread evenly across its range. A band of ±10% of the step covers 20% of the possible range, so 20% of closes would land inside it by chance alone. That 20% is the baseline, and it is what every reading here is measured against:
Gravity = observed pinned rate ÷ expected pinned rate
Above 1.00, closes cluster on the levels more than chance allows — attraction. Below 1.00, price is straddling the grid rather than respecting it, which is just as worth knowing: it means the levels you are drawing are not the ones this market is trading around.
WHAT IT ACTUALLY SHOWS
At the time of writing, on 1-hour charts: ETHUSD reads 1.24 on its 20-dollar grid, and still 1.16 on the finer 10-dollar grid across twice the sample. BTCUSD reads 1.01 on its 500-dollar grid — no effect at all. XRPUSD reads 0.97.
So the folklore is not universal. That is the entire reason to measure it rather than assume it, and it is why the script reports a plain NEUTRAL when there is nothing there instead of dressing the chart up.
HOW TO READ THE TABLE
Step — the grid spacing. On Auto it snaps to the nearest 1 / 2 / 2.5 / 5 × 10^n value near your target percentage of price, so on ETH near 1,900 a 1% target resolves to 20, and on BTC near 100k it resolves to 1000. The comparison is done in log space so it is not biased toward the larger candidate.
Pinned ±10% — the share of closes inside the shaded bands, next to the share you would expect from chance.
Gravity — the ratio of those two numbers. This is the headline.
Mean distance — the average normalised distance as a percentage of the step. A market that ignores round numbers averages 25.0%. Lower means pulled in, higher means pushed away.
On level → halfway — a five-bucket histogram of that distance, left bucket = sitting on a level, right bucket = halfway between two. Real attraction shows up as a left-heavy shape. A flat row of blocks means the grid is doing nothing.
Reading — the plain-language verdict, so the number does not need interpreting mid-session.
Sample — how many bars the statistic is built from, and how many grid levels those bars actually walked across. That second number is the guard, and it matters more than it looks: a high Gravity measured over a range that only spans two or three levels is noise, not attraction, because the baseline has barely been sampled. Ten levels or more is a reading worth taking seriously. If you widen the step until Gravity looks impressive, watch that number collapse — the script is showing you the catch rather than hiding it.
ON THE CHART
Each level is drawn with its shaded band. The level nearest to price is highlighted, since it is the one currently in play. Every level is labelled with its price and the number of bars in the lookback that traded through it — a level tested fifty times is a different object from one tested twice, even though they look identical.
SETTINGS WORTH TOUCHING
Auto target (% of price) — raise it for a coarser grid of bigger levels, lower it for a finer one. This is the setting that changes the answer most, and that is the point: it tells you which scale of round number this market respects. Try 0.5%, then 1%, then 2.5%, and read the Gravity and the levels-spanned figure together rather than either one alone.
Band half-width — widen it and more closes qualify, but the expectation widens with it, so Gravity stays honest.
Lookback — 500 bars is a reasonable sample. Below ~150 the reading gets noisy.
NOTES
The statistic is a description of the sample in front of you, not a forecast. A Gravity of 1.24 says closes clustered near round levels over those bars; it does not say the next one will. Closes are also autocorrelated, so the effective sample is smaller than the bar count suggests — treat a single elevated reading as a hint to look closer, not as a result.
The grid is a market-structure prior, not a signal. Treat a high reading as a reason to expect hesitation near a level, not as an entry.
No repainting. Every value is computed from the chart's own bars. There is no request.security call anywhere in the script, so the higher-timeframe lookahead problem that quietly breaks so many indicators does not exist here — there is nothing to get wrong. Historical bars are computed from their own closes, which is exactly what the realtime bar converges to when it closes.
Open source under MPL 2.0. Read it, fork it, tell me where I am wrong. Indicator

Strategy

Indicator

Universal Signal Backtester [LuxAlgo]The Universal Signal Backtester indicator is a tool designed to simulate and analyze the performance of virtually any trading signal, ranging from moving average crossovers to external indicator triggers. By providing a professional-grade backtesting environment directly on the chart, it allows users to optimize entry logic, exit strategies, and cost management in real-time.
🔶 USAGE
The script operates by selecting a Source Mode to define how trades are initiated. Users can choose between built-in MA crosses, external source crossovers, or discrete signal triggers from other indicators. Once a signal is detected, the script simulates a trade using up to three Take Profit (TP) and three Stop Loss (SL) levels.
🔹 Trade Visualization
* Sign Posts: Upon entry, the script plots a "Sign Post" label below or above the bar. This label dynamically suggests which TP level is currently the most effective based on the selected metric (e.g., Hit Rate or Expected Profit).
* Active Exit Lines: Horizontal dashed lines extend from the entry point to visualize the selected TP and SL targets. These lines update in real-time and mark hits with a checkmark (✓) or an "X" (✗).
* MA Ribbon: When using predefined crosses, a gradient ribbon is displayed to visualize the trend strength and crossover points.
🔹 Signal Modes
* Predefined Crosses: Quickly test standard strategies like the 9/21 EMA, 12/26 EMA, or the Golden/Death Cross (50/200 SMA).
* External Sources (Crossovers): Select two external plots (e.g., RSI and a level, or two custom MAs) to test their crossover performance.
* External Signals (Triggers): Connect the script to discrete signals such as Plotshapes or Boolean conditions. This is ideal for testing "Buy" and "Sell" signals from specialized indicators.
🔶 DETAILS
🔹 Advanced Analytics Dashboard
The indicator features a robust dashboard providing institutional-level metrics:
* Core Metrics: Total trades, Win Rate, Profit Factor, Sharpe Ratio, and Recovery Factor.
* Equity Curve: A sparkline representation of the account growth over time.
* Hourly Histogram: A performance breakdown by the hour of the day, helping identify the most profitable trading sessions.
* Heatmaps: A "Days of the Week" or "Monthly" heatmap that colors cells based on profitability, allowing for the identification of seasonal or periodic performance patterns.
🔹 Cost Simulation
To ensure realistic results, the script includes a cost engine. Users can select from profiles like Forex, Crypto, or Stocks to automatically apply industry-standard spreads and commissions, or input manual values to match a specific broker's fee structure.
🔶 SETTINGS
🔹 Source Settings
Source Mode: Determines the logic for trade entries (Predefined, External Crossover, or External Trigger). Signal Logic: Defines how external triggers are interpreted (e.g., Value Changes, Crosses 0, or Not NA). Trade Direction: Filters signals to allow only Longs, only Shorts, or Both.
🔹 Filters
Use ATR Choppiness Filter: When enabled, the script ignores signals that occur during low-volatility "choppy" periods.
🔹 Target Settings
Distance Type: Sets the measurement unit for TP/SL levels (ATR, Ticks, or Points). Take Profit (1-3): Toggles and sets the distance for up to three partial take-profit levels. Stop Loss (1-3): Toggles and sets the distance for up to three stop-loss levels.
🔹 Costs
Simulate Spread & Commission: Enables the cost engine for more realistic PnL calculations. Cost Profile: Presets for Forex, Crypto, and Stocks, or "Manual" for custom inputs.
🔹 Dashboard & Visuals
Heatmap Period: Switches the dashboard heatmap between "Days of Week" and "Months". Suggested TP Metric: Chooses the criteria the "Sign Post" uses to suggest the best TP level. Gradient Candle Coloring: Colors candles based on the distance between the fast and slow sources. Indicator

Indicator

Liquidity Draw Probability Map [ForexCracked]🔵 OVERVIEW
Every liquidity tool draws the pools. This one measures whether price actually goes there.
The Liquidity Draw Probability Map finds the resting liquidity on your chart, equal highs and lows, the prior day high and low, the prior week high and low, and the session extremes, then studies your chart's own history and prints what actually happened to pools like each one: how often price reached them, how long it took, and how often the touch rejected versus cut straight through.
The phrase "price is drawing on liquidity" gets said a thousand times a day. This script puts a measured number on it.
🔵 HOW THE MEASUREMENT WORKS
Every pool is filed by two things: its type, and how far from price it was born, measured in ATR units so the numbers transfer across symbols and timeframes.
For each combination the script keeps running counts on your chart's own history:
• How many pools like this were created
• How many were reached within 50 bars
• Of the touches, how many rejected (price closed at least 1 ATR back inside within 20 bars) and how many cut through (price closed at least 0.5 ATR beyond). A touch that does neither within the window is filed as a stall.
• The median number of bars it took to get there
Nothing is estimated and nothing comes from outside data. Every figure is a frequency counted on the chart in front of you, and the sample size is printed next to it, so a number built on 12 events never dresses up as a number built on 300.
🔵 THE MAP
Active pools draw as horizontal lines from the swing that created them. The line gets thicker and more solid as its category's measured reach frequency gets higher, so the levels price has historically honoured stand out and the ones it historically ignores fade back. Each pool carries a compact label: type, measured reach frequency, rejection share of touches, and the sample size behind those numbers.
When a pool is touched, a small circle prints on that bar to mark the purge (these are measurement events, not signals, and they can be switched off). The engine then watches the next 20 bars, classifies the outcome, adds it to the tables, and retires the pool. Purged liquidity leaves the map, exactly as it leaves the market.
🔵 WHAT THIS IS NOT
This script fires no signals. There are no buy or sell arrows, no sweep alerts dressed as entries, no order blocks and no fair value gaps. It does not tell you to trade anything. It is a measurement instrument: it maps where the resting liquidity is and reports what historically happened to liquidity like it, with the sample sizes in plain view. What you do with that context is your decision.
🔵 NET DRAW BIAS
Each active pool contributes its measured reach frequency, discounted by how far away it currently sits. Everything above price is summed against everything below, and the result is z-scored against its own recent history. A strongly positive reading means the statistically heavier magnet is overhead. A strongly negative one means it is below. The dashboard prints the score and the direction plainly.
🔵 THE DASHBOARD
• Nearest pool above: type, distance in ATR, measured reach frequency, median bars to reach, sample size
• Nearest pool below: the same
• Net Draw Bias: score and direction
• Last purge: which pool type was taken and how the touch resolved
• Sample: total pools logged and bars of history measured
🔵 HOW TO USE
• Treat high-frequency pools as context, not entries. A pool whose category was historically reached 75 percent of the time within 50 bars is a level price has tended to gravitate toward on this chart. Useful when planning targets, never a trigger on its own.
• Read the rejection versus cut-through split before assuming a reaction. Some categories on some charts get swept and keep going. The split tells you which kind of chart you are on.
• Use Net Draw Bias for directional context between levels. It answers "which side's liquidity is heavier right now" with a measured number instead of a feeling.
• Respect the sample sizes. Early in a chart's history the tables are thin and the map says so. The numbers firm up as history accumulates.
• Combine with your own structure and risk rules. This is a measurement instrument. It does not know your plan.
🔵 SETTINGS
• Pivot strength and equal-level tolerance control how pools are detected
• Reach horizon (default 50 bars) and outcome window (default 20) control the measurement windows
• Session input defines the session whose extremes are tracked, set it to your Asia hours for the classic use
• Max pool age retires stale levels; per-side caps keep the map readable
• Dashboard position, colors, and line extension are adjustable
🔵 ALERTS
• Price approaching a high-reach pool (within 0.25 ATR, category at or above 70 percent with a meaningful sample)
• Pool purged (liquidity taken)
• Net Draw Bias flips sign
⚠️ DISCLAIMER
These are descriptive statistics of past price behaviour on your chart, not predictions. A pool that was historically reached 80 percent of the time can be ignored today. Sample sizes vary by chart and timeframe, and small samples are unreliable by nature. Nothing here is a trade signal, and results depend on market conditions, settings, and your own execution and risk management. Shared for educational and research purposes. Not financial advice. Indicator

Daily ATR [Pogiest]General
This Daily ATR indicator is a real-time Average True Range monitor designed for active intraday traders. The indicator displays a live, updating table directly on your chart that shows the daily ATR value alongside the current session's developing range, allowing you to instantly assess how much of the day's expected move has already been consumed.
The ATR is calculated on the daily timeframe and only updates at the close of each session, mirroring the behavior of a standard ATR indicator on a daily chart. The live range (LIVE TR), however, updates in real time as price makes new session highs and lows — so traders always know exactly where they stand relative to the day's expected range, at any moment during the session.
Key differentiators:
1. Live session tracking — LIVE TR updates as each new tick makes a new intraday high or low, not just on candle closes.
2. Threshold price levels — automatically calculates the price the market needs to reach from both the session high and session low to complete the ATR (or any percentage of it).
3. Two Live TR modes — choose between Session Range (high minus low from the 18:00 EST open) or True Range (which includes the overnight gap from the previous session's close).
4. Percentage rows — add up to two custom ATR percentage rows (e.g. 50%, 75%) to monitor partial ATR completions.
3. Color-coded status — each row shows OVER (red) or UNDER (green).
4. Warning threshold — the LIVE TR status cell turns yellow when the session range reaches 80% of the daily ATR, giving you an early alert before the full ATR is consumed.
5. Fully customizable — every column can be toggled on or off, and all colors are adjustable to match the chart theme.
6. Alerts: Includes three built-in alert conditions accessible for exceeding Daily ATR and Percentage ATRs.
How the Indicator Table Works
The table is overlaid directly on your chart and updates in real time. Each row represents a different range reference, and each column provides a different dimension of information about that range.
Rows
DAILY ATR The smoothed Average True Range of the instrument calculated on the daily timeframe. This value only changes once per day when the previous session closes and a new ATR value is calculated. The Status cell shows OVER (red) if today's live range has exceeded the full ATR, or UNDER (green) if it has not.
Percentage ATR (optional) Up to two configurable percentage rows can be enabled. For example, a 50% ATR row shows what half the daily ATR looks like in ticks, points, and price levels. These rows are useful for identifying partial move targets and assessing whether a common retracement or extension level has been reached. The Status cell shows OVER or UNDER based on whether the current live range has exceeded that percentage threshold.
LIVE TR The current session's developing range, updating in real time as new highs and lows are printed. The Status cell displays the live range as a percentage of the daily ATR. It turns yellow at 80% as an early warning, and red when the full ATR is exceeded (100%+).
Columns
Range The row label identifying what is being measured — DAILY ATR, a percentage row (e.g. 50% ATR), or LIVE TR. The header also displays the active smoothing method and ATR period (e.g. RMA 5).
Ticks (toggleable) The ATR or range value expressed in ticks — the minimum price increment for the instrument. Useful for instruments where traders think in tick-based terms such as ES (0.25 per tick) or NQ.
Points (toggleable) The ATR or range value expressed in points — the raw price unit of the instrument. For ES this is dollars-per-contract divided by the multiplier; for NQ it reflects the index point value.
High (toggleable) The price level the market needs to reach from the current session low to complete that row's range target. Calculated as: session low + ATR target. Updates live as the session low changes.
Low (toggleable) The price level the market needs to reach from the current session high to complete that row's range target. Calculated as: session high − ATR target. Updates live as the session high changes.
Status A color-coded cell showing whether each range threshold has been OVER (red) or UNDER (green). For the LIVE TR row, the status cell displays the current percentage of the ATR consumed, turning yellow at 80% and red at 100%+.
Settings
ATR Settings
1. ATR Period The lookback period used to calculate the Average True Range. Default is 5. Accepts values from 1 to 500.
2. ATR Smoothing The smoothing method applied to the true range values when calculating the ATR. Options to select include RMA, SMA, EMA, and WMA.
3. Live TR Mode Controls how the current session's live range is calculated. Options include Session Range (measures the high minus low of the current daily bar from the 18:00 EST session open. No overnight gap is included) and True Range (includes the overnight gap from the previous session's close, calculated as max(session high, prev close) − min(session low, prev close).
Display Settings
1. Show ATR Table: Toggles the entire table on or off.
2. Show Ticks Column: Toggles the Ticks column on or off.
3. Show Points Column: Toggles the Points column on or off.
4. Show High Column: Toggles the High threshold price column on or off.
5. Show Low Column: Toggles the Low threshold price column on or off.
6. Table Position: Sets the position of the table on the chart. Nine positions available: top left, top center, top right, middle left, middle center, middle right, bottom left, bottom center, bottom right.
7. Change header background color of the header row.
8. Change header text color of the header row.
9. Change ATR background color of the first (label) column cells — DAILY ATR, percentage rows, and LIVE TR.
10. Change data background color of all data cells — Ticks, Points, High, and Low columns.
11. Change text color of all data cells.
12. Adjust font size of all text in the table. Options are tiny, small, normal, large, and huge.
13. Show Percentage 1 Row: Enables the first optional ATR percentage row.
14. Show Percentage 2 Row: Enables the second optional ATR percentage row.
Alert Settings
1. Configurable through PulseWire: Alerts can be setup for Daily ATR Exceeded, Percentage 1 ATR Exceeded, and Percentage 2 ATR Exceeded.
Risk Disclaimer
This indicator is for educational and informational purposes only and does not constitute financial advice. All trading and investment decisions remain solely the responsibility of the user.
Trading involves a high degree of risk, and past performance is not indicative of future results.
Always conduct your own research and consult with a qualified financial professional before making any trading decisions.
By using this indicator, users acknowledge they understand these risks and accept full responsibility for their trading decisions and outcomes.
Indicator

Swing Trade Defender
You're in a trade. Defender watches it for the five ways swing trades fail — plus an ATR trailing stop — and shows one status: OK, CAUTION, or EXIT.
Finding the trade is the easy half. The hard half is admitting when it stops working — and doing it before a small loss becomes a big one. Swing Trade Defender watches your open trade bar by bar and does the admitting for you.
Set your direction (long or short) and, if you want, your entry price. It handles the rest — it works on its own, nothing else required.
Why five flags instead of one exit signal?
Every one of these signals fires false alarms by itself — an RSI dip, a single heavy-volume red bar, a wick through the 20 EMA.
Real trade failure rarely announces itself through one signal; it shows up as agreement between independent ones: trend, structure, momentum, participation, and volatility.
So Defender treats them as a vote. One or two flags is a warning to pay attention; three is a failed trade by definition — enough independent evidence that the odds have flipped. The one exception is the ATR trail, which triggers EXIT on its own, because a stop is a stop. The voting logic — not any individual component — is the tool.
The five failure flags — each worth 1 point
Trend break — price closes through the 20-EMA (the trend's home line) the wrong way.
Structure break — price takes out the prior swing low (for a long), the first crack in the pattern.
Momentum rollover — RSI falls back through 50 and keeps dropping.
Distribution — a down bar on 1.5× average volume or more: big sellers showing their hand.
Trail hit — price closes through the ATR trailing stop (a chandelier-style stop that ratchets up behind price, 2.5 × ATR-14 by default; ATR = average bar range).
All five flip automatically for shorts — there a close above the MA, a break of the prior swing high , rising RS I, and heavy buying (accumulation) are the danger signs.
How the status reads
OK — no flags. Let it work.
CAUTION (1–2 flags) — an orange triangle marks the bar. Hover it and a tooltip lists exactly which flags are up.
EXIT — 3 or more flags (you can set the threshold), or any trail hit on its own . A red ✕ marks the bar, with a box listing what failed.
Markers sit above the bar for longs and below it for shorts, so they never crowd the side your risk is on.
The status panel
One table shows the whole picture: status, flag count (x/5), each flag's own line (hold/break), the live ATR trail price, your entry, and open P/L when you've set an entry price.
Alerts
Two built-in alert conditions — "Exit signal" and "Caution" — so PulseWire can ping your phone instead of you watching the screen.
Settings — defaults work out of the box
Tuned for swing trades held days to weeks:
Trend MA length (20), swing lookback (8 bars), RSI length (14) and rollover level (50), volume spike multiple (1.5×).
ATR trail — length (14) and multiple (2.5).
Flags needed for EXIT (3 by default, 1–5).
Panel position/size, marker history on/off, optional background shading, dark/light theme, colors.
⚠ Educational risk-management tool. EXIT means the trade has failed by these rules — whether to act is always your decision. It does not place orders, and a flag is not a prediction. Not financial advice. Indicator

Random Forest AI - RSI MACD Confluence [Dots3Red]█ RANDOM FOREST AI — RSI MACD CONFLUENCE
This script combines 15 simple, independent decision rules ("trees") into one weighted verdict. Each tree looks at a different combination of RSI, MACD, ATR, volume, DMI, and price-vs-moving-average conditions and casts one vote: bullish, bearish, or neutral. What makes this different from simply averaging several indicators is that every tree's historical accuracy is tracked continuously, and that accuracy becomes the tree's voting weight — a rule that has actually been right more often on this specific chart counts for more than one that hasn't.
█ WHY THIS APPROACH
A single indicator like RSI applies the same fixed rule forever: "below 30 means buy," regardless of whether that rule has been working lately on the instrument you're watching. It has no way to notice that its own signal has become less reliable in a strong trend, or more reliable during a ranging period.
This script addresses that by running many small, simple rules in parallel and grading each one against what actually happened afterward. A rule's influence on the final verdict rises when it's been accurate and falls when it hasn't — without requiring the trader to manually decide which indicator to trust in current conditions.
This is a simplified, Pine-native ensemble. A literal machine-learning Random Forest trains via recursive data-splitting across bootstrap-sampled datasets, which isn't something Pine Script's execution model supports. What's implemented here captures the core idea in a form that runs natively on every bar: multiple diverse, simple voters, weighted by empirical track record rather than by a fixed formula.
█ HOW IT WORKS
1. Base features
Six indicators are computed every bar and feed into the trees:
• RSI (configurable length)
• MACD histogram
• ATR ratio — current ATR relative to a 50-bar baseline (volatility context)
• Volume ratio — current volume relative to its moving average
• DI difference — +DI minus -DI from the DMI system (directional pressure)
• Price vs. moving average — distance from a trend MA, expressed in ATR units
2. The 15 trees
Each tree is a short, explicit rule combining two or three of the base features. They are deliberately varied in character:
• Some are trend-following (DI direction, MACD momentum, full trend confluence combining three features at once)
• Some are contrarian / mean-reversion (an extreme price extension combined with an extreme RSI reading votes for a pullback, not a continuation)
• Some are volatility-filtered (an RSI extreme only counts when the ATR ratio shows calm conditions, on the reasoning that overbought/oversold readings are less reliable during high volatility)
• Some require multi-indicator confluence before voting at all (MACD direction agreeing with volume expansion, or RSI agreeing with MACD)
Any single tree by itself is simplistic. The value comes from having 15 of them looking at the situation from different angles simultaneously.
3. Historical grading and weighting
Every tree's vote from a configurable number of bars ago ("Outcome Window") is compared against what price actually did between then and now. If the tree voted bullish and price rose, that's a correct call; if it voted bullish and price fell, that's incorrect. A running hit/total count is kept per tree.
Each tree's weight is its accuracy rate (hits ÷ total) once it has accumulated a minimum number of graded votes. Before that minimum is reached, a tree counts at a neutral 0.5 weight so early, unproven trees don't disproportionately swing the verdict.
4. The forest verdict
Bullish and bearish contributions are summed across all 15 trees, weighted by each tree's current accuracy, then expressed as a percentage split (e.g. 73% bullish / 27% bearish). The overall verdict — BULLISH, BEARISH, or NEUTRAL — is determined by configurable thresholds (default: 60% for bullish, below 40% bullish-share for bearish).
5. RSI confluence
Separately from its role inside the 15 trees, RSI's classic overbought/oversold state is checked against the forest's overall verdict. If RSI is oversold and the forest is bullish, that's flagged as "AGREE." If RSI is oversold but the forest is bearish, that's flagged as "CONFLICT." This gives a second, independent read using the indicator most traders already know, alongside the ensemble's own conclusion.
█ SIGNAL MARKERS AND SPACING
A marker appears only when three conditions line up at once: the forest's weighted verdict crosses its threshold, RSI's classic overbought/oversold state independently agrees with that direction, and the bar has fully closed. Markers never appear on a still-forming bar — the script waits for bar confirmation so a marker never appears and then vanishes as the live bar changes.
Each marker is drawn in two parts: a small triangle at the bar, and a text block showing three values — the weighted percentage that triggered it, the word AGREE confirming RSI's independent agreement, and how many of the 15 trees were actively voting (non-neutral) at that moment. A reading of "73% / AGREE / 9/15 trees" carries different weight than "61% / AGREE / 4/15 trees," even though both pass the threshold — the first reflects broad participation across the ensemble, the second a thin majority among few active voters.
Two mechanisms prevent marker clutter on intraday timeframes:
• One marker per episode — when the verdict enters a bullish or bearish state, only the first qualifying signal of that run is marked. The verdict flickering around the threshold (61% → 59% → 62%) does not produce repeated markers; the internal latch resets only when the verdict genuinely changes state.
• Signal Cooldown — a configurable minimum number of bars between same-side markers, which absorbs the remaining case where a brief state change resets the latch and the condition re-triggers shortly after. On a 5-minute chart, a cooldown of 30 bars means at least 2.5 hours between same-direction markers.
Both mechanisms apply per direction — a bearish marker shortly after a bullish one is never suppressed, because an ensemble flip is meaningful information rather than clutter.
█ READING THE CHART
Bar coloring tints candles by the current verdict — cyan for bullish, magenta for bearish, slate for neutral.
Dashboard (top-right by default) shows the current verdict, the bull/bear percentage split with a progress bar, how many trees are actively voting, RSI's state and its agreement with the verdict, and a breakdown of five representative trees showing each one's live weight and how many samples that weight is based on.
█ SETTINGS
Feature Settings — lengths for RSI, MACD, ATR baseline, volume MA, DMI, and the trend MA used by the price-vs-MA feature.
Ensemble Settings
• Outcome Window (bars) — how far ahead each vote is checked against actual price movement
• Min Samples Before Weighting — how many graded votes a tree needs before its real accuracy replaces the neutral 0.5 default
• Bullish / Bearish Threshold % — where the weighted percentage split has to cross before the verdict label changes
Visualization
• Color Bars by Verdict — toggle candle tinting
• Show Confluence Markers — toggle the triangle markers
• Signal Cooldown (bars) — minimum bars between same-side markers; raise this on lower timeframes if markers feel too frequent
Dashboard — toggle the table, choose its position, toggle the per-tree accuracy breakdown.
█ EXAMPLE
Suppose the dashboard shows: Verdict BULLISH, 73% / 27%, 9/15 trees active, RSI at 28 (OVERSOLD), Agreement: AGREE. This means the weighted vote across all 15 trees currently favors upside by roughly 3-to-1, nine of the trees have a non-neutral opinion right now, and the classic RSI reading independently supports the same bullish read. If the per-tree breakdown shows "Calm-Market RSI" at 78% (n=45) while "RSI Extremes" sits at 52% (n=45), that's telling you the version of the RSI rule that only fires during low volatility has actually been considerably more reliable on this chart than the raw, unfiltered version — information a plain RSI plot could never surface on its own.
█ NOTES
Weights start neutral and only become meaningful once each tree has accumulated enough graded votes (set by "Min Samples Before Weighting"). On a fresh chart or a newly added timeframe, expect the dashboard's percentages to be less informative until that history builds up. The ensemble adapts continuously — a tree's weight can and will drift as market conditions change and its track record evolves.
On intraday timeframes, tune the Signal Cooldown to the chart's pace. The default suits higher timeframes; 5-minute and 15-minute charts generally benefit from a larger value.
█ DISCLAIMER
This is an analytical and visualization tool. It does not generate trade signals and does not constitute financial advice. Historical accuracy of any individual rule or the ensemble as a whole does not guarantee future performance. Indicator

Indicator

Liquidity HeatmapLiquidity Heatmap – POC and Value Area.
A rolling volume-density profile rendered directly onto the price chart. Over a configurable lookback window the indicator distributes each historical bar's volume across every price bin its high-low range covered, then draws the resulting distribution as color-graded horizontal lines at each bin's midpoint. Point of Control and Value Area (70 % of total volume) are computed automatically, and a compact right-side histogram mirrors the profile in the future-offset zone. Built for intraday and swing traders who want a live, minimal read of where the market actually did business — the real liquidity anchors, not manual pivots.
How it works:
The indicator recalculates every N bars (default 5). On each recalc it finds the highest and lowest price of the lookback window, splits that range into a configurable number of bins (default 40), and iterates through every bar in the window. For each bar its volume — or a unit weight if volume weighting is disabled — is added to every bin whose price range the bar crossed. The result is a density array: the more time price stayed inside a bin and the higher the volume of those bars, the larger its density value. Bins are drawn as thin horizontal lines at their midpoints, with color and transparency scaled by the ratio of bin density to peak density.
The Point of Control is the bin with the largest total. Value Area is grown outward from POC, alternately taking whichever adjacent side holds more volume, until 70 % of the entire distribution is covered — VAH becomes the upper boundary of that region and VAL the lower. A right-side density histogram in the chart's offset zone re-renders the same profile in bar-chart form, and the level labels (POC / VAH / VAL) sit past the histogram so they never overlap the main heatmap. The information panel in the top-right corner shows the numeric price of each level and its signed percentage delta to the current close, color-coded green when the level sits above price, red when below, gray at parity.
What it calculates:
- Volume density per price bin over the lookback window
- POC — Point of Control, the bin with peak accumulated volume
- VAH — Value Area High, upper boundary of the 70 % volume region
- VAL — Value Area Low, lower boundary of the 70 % volume region
- Signed delta from current close to POC / VAH / VAL, in percent
Key features:
- Rolling recalculation every N bars for tunable CPU / responsiveness balance
- Volume weighting (default) or touch-count mode as a per-price frequency map — useful when volume data is unreliable
- Four-stop plasma color gradient (deep navy → violet → magenta → amber), every stop user-overridable via input.color
- Constant 1-pixel line width across all bins; visual weight is carried entirely by color intensity and transparency
- POC solid line and label placed past the offset histogram for readability
- VAH / VAL dashed lines extended all the way to their labels so the eye follows the level continuously
- Compact right-side density histogram in the future-offset area, mirroring the main profile in bar-chart form
- Top-right information panel with POC / VAH / VAL price and signed percentage delta to the current close, colored by side (green above / red below / gray at parity)
- Independent visibility toggles for POC and Value Area
- Adaptive bin geometry — resolution scales automatically with the price range of the lookback window
- Runs on any timeframe and any instrument; no external data sources required
Who it's for:
Intraday scalpers, swing traders, order-flow and Market Profile practitioners who need to see the true volume anchors of the current regime instead of hand-drawn horizontals. The color-graded strips make dominant liquidity walls, thin gaps and Value Area boundaries visually obvious at a glance, so attention goes to execution rather than to marking up the chart. Indicator

Indicator

Fib Zone Screener# Fib Zone Screener — PulseWire publish description
## Title
Fib Zone Screener
## Short description (one-liner)
Flags when price is inside a Fibonacci retracement zone — direction-aware, so one setup works for both longs and shorts, and built to filter across a whole watchlist in the Pine Screener.
---
## Full description
**Fib Zone Screener** answers one question, per symbol, on every scan: *has price pulled back into a Fibonacci retracement zone right now — and is it a long or a short?*
It reads pure price action (no pivots, no moving averages, no `request.security`), so it stays fast enough to run across an entire watchlist in the **Pine Screener** while still drawing clean, readable zones on a single chart.
### How it works
For the chosen **Lookback**, the script finds the window's **highest high** and **lowest low**, then decides the swing direction from **which extreme is more recent**:
- **High is more recent** → the last leg was up → **long context** (a pullback is a dip to buy).
- **Low is more recent** → the last leg was down → **short context** (a pullback is a bounce to sell).
Retrace is always measured **from that most-recent extreme back toward the origin**, so the same zone numbers describe both sides:
```
Retrace 0.0 = at the extreme (no pullback)
0.5 = halfway back
0.618 = the golden ratio
0.786 = deep pullback
1.0 = fully retraced to the origin
```
Because the measurement flips with direction, **you set the zone once and it works for longs and shorts** — you don't need a separate short version or a mirrored scale.
### Three zones, three flags
The indicator returns three yes/no values — one per zone (all boundaries are inputs):
- **In Zone 1** — default **0.5 – 0.618** (the classic golden pullback zone)
- **In Zone 2** — default **0.618 – 0.786** (deeper pullback)
- **In Zone 3** — default **0.786 – 1.0** (very deep / near full retrace)
Each is `1` when price is inside that zone, `0` otherwise.
### On-chart drawing
The selected window's zones are drawn as **outlined boxes**, labelled with their ratios and colored by direction — **teal on the long side, red on the short side** — so a screener hit looks exactly like a hand-drawn fib. The boxes extend a few bars past the current candle so the latest wicks stay visible.
### Using it in the Pine Screener
1. Save the script and add it to your chart, then **star it as a favorite** — the Pine Screener only lists favorited indicators.
2. Open the **Pine Screener**, choose your watchlist and timeframe, and select **Fib Zone Screener**.
3. Add the columns you want (Manage Columns) and filter, for example:
- **Longs in the golden zone:** `Direction == 1` and `In Zone 1 == 1`
- **Shorts in the golden zone:** `Direction == -1` and `In Zone 1 == 1`
- **Deeper pullbacks:** use `In Zone 2 == 1`
4. Change the **Lookback** or any zone's **From/To** and re-scan to look at a different horizon or depth.
"Last N bars" means N bars of the **screener's timeframe** — scan on Daily for daily swings, on 1h for intraday.
### Screener columns
- **In Zone 1 / 2 / 3** — yes/no (1/0) per zone
- **Direction** — `1` long, `-1` short, `0` none
- **Extreme / Origin** — the swing's recent extreme and its starting point, in price
- **Zone 1/2/3 from $ · to $** — the actual price boundaries of each zone, so you can place orders straight from the scan
### Inputs
- **Lookback** — bars used to define the swing (default 100)
- **Zone 1/2/3 From / To** — retrace boundaries of each zone
- **Draw Zones On Chart** and **Extend Right (bars)** — display controls
### Notes
- Swing detection uses the two extreme points of the lookback window, so it reads the dominant range rather than every minor wiggle — deliberately simple, so it behaves identically across hundreds of symbols.
- No repainting from higher-timeframe requests — everything is computed on the chart's own bars.
Open source. Feedback and suggestions welcome.
Indicator

Daily Range Exhaustion - ADR Probability MapAn intraday trader spends the whole session asking one question without ever measuring it: is there still room left in this move, or is the day already finished. Daily Range Exhaustion measures it.
The script records the completed range of every past day on the symbol you have open, and uses that sample to answer four things about the day in progress.
HOW MUCH OF THE DAY IS SPENT
Today's range is compared against the average daily range of the last 5, 10 or 20 days. The panel shows the result as a percentage. At 40 percent the day still has room in either direction. At 110 percent the day has already delivered more than an ordinary day and every further extension is, statistically, an outlier rather than the base case. The chart background tints once 100 percent is passed.
WHERE A FULL DAY COULD STILL REACH
Two levels are drawn:
Upside projection, today's low plus the average daily range. This is the highest point a statistically ordinary day could still print without becoming unusual.
Downside projection, today's high minus the average daily range.
Both compress as the session develops. Early in the day they sit far apart. By the afternoon they have squeezed toward price, and the distance left to each one is exactly the room the day has left. The shaded areas between price and each projection are that remaining room, made visible.
THE ODDS OF EXTENDING ANYWAY
Ranges are not a hard ceiling, so the panel reports how often the ceiling actually broke. Three lines show the share of past days whose range exceeded 100, 125 and 150 percent of the current average. On most liquid instruments roughly a quarter to a third of days exceed 100 percent, but far fewer reach 150 percent. Those numbers are the honest context for the exhaustion reading: they tell you whether a stretched day is rare or routine on this particular symbol.
WEEKDAY BREAKDOWN
A single average across all days hides a real effect. Many instruments have a quiet Monday and a violent Thursday, and judging Monday against a blended average will make it look exhausted when it is behaving normally. The panel breaks the sample down by weekday, shows the average range of each one, and expresses it as a percentage of the overall average. Today's weekday is highlighted.
HOW TO USE IT
As a filter on entries. Taking a fresh breakout when the day has already spent 120 percent of its average range is a different trade from taking the same breakout at 45 percent. The setup may be identical, the room available is not.
As target context. If the upside projection is 12 points away and your target is 30 points, the day would have to become a statistical outlier for that target to fill.
As mean reversion context. A day that hits the projection level and stalls has, by definition, reached the edge of its usual distribution.
As session planning. Check the weekday row before the session opens to know whether to expect a wide day or a narrow one.
NOTES ON THE DATA
The sample is built from the chart itself, so it needs history loaded. The panel shows a Building sample message and stays hidden until the minimum day count is reached, rather than showing statistics based on six observations.
Only intraday timeframes are supported. On a daily chart or higher the concept has no meaning, and the panel says so instead of printing misleading numbers.
Older days are dropped once the sample cap is reached, so the statistics follow the current volatility regime instead of averaging in a market from two years ago.
Days are bounded by the exchange session of the symbol. On instruments that trade nearly around the clock the day boundary is a convention, not a natural break, which slightly inflates the ranges of days that straddle a rollover.
WHAT IT IS NOT
There are no entry or exit signals here, and none are planned. This is context. A completed range is not a reversal signal, and an unfinished range is not a reason to expect continuation. Trends routinely spend two or three average ranges in a session, which is precisely why the extension odds are shown rather than hidden.
This is an analysis tool, not financial advice. Past distributions do not guarantee future ones. Use it alongside your own risk management and position sizing. Indicator
