TL Elliott Wave Pro - Rule Checked 12345 ABC Count + Fibs + FVGTL ELLIOTT WAVE PRO — the complete Elliott Wave rule set in one indicator: the count, the three golden rules, the three guidelines, all four fibonacci tools and the fair value gap that turns a level into a trade.
Elliott Wave is usually taught as a picture and traded as a feeling. This indicator turns it into something you can actually check: it labels the impulse, it tells you which of the three golden rules currently hold, it measures every wave against the fibonacci relationships the theory is built on, and the moment a rule breaks it says so instead of quietly redrawing the count into something that still looks right.
Everything below comes from the classic rule set. Nothing is invented, nothing is hidden.
━━━ ① THE WAVE COUNT ━━━
A ZigZag builds the alternating pivot sequence, and the engine reads the most recent structure the rules allow:
· ①②③④⑤ — the five wave impulse: three impulses with the trend, two corrections against it
· ⒶⒷⒸ — the correction that follows: an impulse down, a correction up, an impulse down
Impulse legs are drawn SOLID, corrective legs DASHED. That is not decoration — it is the definition the whole model rests on: impulsive waves are larger and move with the trend, corrective waves are smaller and move against it. The wave that has not happened yet is projected as a dotted gold line straight to its first fibonacci target.
Finished counts are frozen in faded gold exactly where they were found, so you can scroll back through the chart and study how the reading developed instead of only seeing today's answer.
━━━ ② THE THREE GOLDEN RULES — a hard validity gate ━━━
❶ Wave 3 must be the longest impulse wave, and it can never be the shortest
❷ Wave 2 must not surpass the start of wave 1
❸ Wave 4 cannot overlap with wave 1's price territory
Each rule gets a live ✓ / ✗ in the panel. If one of them breaks the count is not "weaker" — it is invalid, and the indicator behaves accordingly: the setup is cancelled, a COUNT INVALID tag goes on the chart with the reason, an alert fires, and the next confirmed pivot starts a fresh count. Rule 1 has a strict and a relaxed reading, switchable in the settings.
━━━ ③ THE THREE GUIDELINES — a soft quality score ━━━
❶ When wave 3 extends as the longest impulse wave, wave 5 typically approximates the length of wave 1
❷ Wave 2 and wave 4 alternate between a flat and a sharp correction — the indicator classifies each correction by depth and duration and shows you the pair, e.g. S / F
❸ After a five wave impulse advance, ABC corrections commonly end near the prior extreme of wave 4 — that level is projected as the C target
Guidelines are informational by default, because that is what they are. You can require one, two or all three before a signal is allowed to fire.
━━━ ④ THE FOUR FIBONACCI TOOLS, WITH THEIR CORRECT ANCHORS ━━━
Wave 2 retracement — 0 % at the end of wave 1, 100 % at its start
· typical 50.0 % and 61.8 %, plus the 60 % average line
Wave 3 extension of wave 1 — projected from the wave 2 extreme
· typical 161.8 % and 261.8 %
Wave 4 retracement — 0 % at the end of wave 3, 100 % at its start
· typical 23.6 %, 38.2 % and 50.0 %, plus the 30–40 % average band
Wave 5 — two separate targets
· 100 % of wave 1 projected from the wave 4 extreme
· 161.8 % of wave 4, anchored 0 % at the wave 4 extreme and 100 % at the wave 3 extreme
The level the market actually turned at is highlighted in gold, and the panel prints the measured value next to the expected one, so you can see at a glance whether this count is textbook or stretched.
━━━ ⑤ +FVG — the confluence that makes it a trade ━━━
A fibonacci zone on its own is a level. A fair value gap sitting inside that zone is a reason. The indicator scans for unfilled three-candle gaps inside the wave 2 and the wave 4 retracement zone, draws them as a +FVG box, and marks the signal accordingly. You can leave it as a quality tag or make it mandatory.
━━━ ⑥ THE TRADES — always in the direction of the impulse ━━━
Trading in the direction of the impulse waves is what pays, so that is all this indicator signals:
WAVE 3 ENTRY — buy the wave 2 correction in an uptrend, sell it in a downtrend
· stop behind the wave 2 pivot, or at the rule 2 invalidation
· TP1 161.8 % of wave 1, TP2 261.8 % of wave 1
WAVE 5 ENTRY — buy the wave 4 correction, sell it in a downtrend
· stop behind the wave 4 pivot, or at the rule 3 invalidation
· TP1 wave 5 = wave 1, TP2 161.8 % of wave 4
Three trigger models per trade: momentum close out of the zone, zone tap for limit-style entries, or a break of the last minor swing for the latest and safest fill. Minimum reward/risk filter, ATR stop buffer, break even at a chosen R. The counter-trend ABC entry exists but is OFF by default, on purpose.
━━━ WHY EVERY SIGNAL EXPLAINS ITSELF ━━━
Hover any signal pill and you get the full reasoning: the exact count with its prices, which golden rules hold, how deep the correction actually went against the typical values, which guidelines are satisfied, whether a fair value gap was inside the zone, plus entry, stop, both targets, risk in pips, reward in pips and the R multiple.
Every wave label carries its own tooltip — what that wave is, how far it travelled, which rule it has to respect and whether it does. Every fibonacci line explains its anchoring. Setups that were found and then rejected get a NO TRADE tag with the reason, so you learn the filter instead of wondering why nothing fired. There is a HOW TO READ THIS card and an honest BEFORE YOU TRADE THIS card on the chart.
━━━ COCKPIT PANEL ━━━
Live count stage, symbol, chart timeframe, ZigZag settings and the size of wave 1 · the three golden rules with ✓ / ✗ / pending · the three guidelines with the flat-sharp alternation pair · every wave measured against its expected fibonacci value · a five step setup checklist that fills in as the trade builds · the open position with stop and target · a large status line · a rough win / loss / break-even tracker and the last signal timestamp.
━━━ ALERTS AND AUTOMATION ━━━
Every event fires a clean JSON payload ready for a webhook: entry, stop, both targets, the direction of the count, the measured wave 2 retracement, the wave 3 extension, the wave 4 retracement, which rules held, whether an FVG was present, the R multiple, symbol, exchange, timeframe, volume and an optional account field. Events: ENTRY, TP1, SL, BE, INVALID, IMPULSE_COMPLETE. Six plain-language alertconditions are included as well for anybody who just wants a notification.
━━━ SETTINGS WORTH KNOWING ━━━
· ZigZag pivot strength and a minimum swing size in ATR — this pair decides the degree of the count and therefore everything else
· Every fibonacci percentage is editable
· Rule 1 strict or relaxed, rules 2 and 3 on or off, kill-on-invalidation on or off
· FVG optional or mandatory, minimum gap size in ATR
· Full TL chart theme: navy background, mint / red candles, corrective legs dimmed — or switch it off and keep your own
· Panel, animated 3D logo and the right-hand extension of the lines are all configurable
Tip: if the candles cover the panel, right click the indicator → Visual order → Bring to front. That is a PulseWire layer setting, not something Pine can control.
━━━ HONEST NOTES ━━━
Elliott Wave is not a standalone technique, and its subjective nature has put a lot of traders off it. Two competent analysts label the same chart differently. This indicator picks ONE reading — the most recent one the three golden rules allow — and tells you the moment that reading dies. It does not pretend the ambiguity is gone.
The count re-reads itself on every new pivot. A label that moves is not a bug; it is the engine refusing to defend a count the market has stopped supporting.
The ZigZag pivot strength decides everything. Too small and you count noise, too large and you only see the count after the move is over. Change it and watch the whole picture change — that is the honest lesson of Elliott Wave, and no indicator can take it away from you.
The percentages are averages, not laws. Corrections come in slightly smaller and slightly larger than the textbook numbers all the time.
The win / loss counter in the panel is a rough on-chart tracker. It assumes a fill at the marked price and resolves target before stop inside the same bar. It is not a backtest and it is not a performance claim.
This indicator is a study tool. It is not financial advice.
━━━ CREDIT ━━━
The rule set is classic Elliott Wave Theory as it is taught publicly. The wave engine, the rule and guideline checks, the fibonacci anchoring, the FVG confluence, the panel and the design are original work.
Open source — read it, change it, learn from it.
Indicator

Indicator

Indicator

Market Structure & Scatter Dashboard [LuxAlgo]The Market Structure & Scatter Dashboard indicator provides a comprehensive view of price action by combining automated market structure mapping with a dynamic scatter plot analysis. It aims to quantify the relationship between impulse moves and subsequent pullbacks to help traders understand the current volatility and trend strength.
🔶 USAGE
The script identifies key structural points and visualizes the relationship between the magnitude of price expansions and their retracements through a dashboard and candle heatmap.
🔹 Market Structure (SMC)
The indicator automatically detects swing highs and lows to plot significant market structure levels. It identifies:
BOS (Break of Structure): Occurs when price continues in the direction of the prevailing trend by breaking a previous swing level.
CHoCH (Change of Character): Occurs when price breaks a swing level in the opposite direction of the current trend, signaling a potential reversal.
🔹 Scatter Dashboard
The dashboard, located to the right of the current price action, plots historical price swings as a scatter chart. It breaks down the market into two measurements:
X-Axis (Impulse): How far the market moved aggressively in the direction of the trend.
Y-Axis (Pullback): How deep the market retraced after that initial impulse.
Quadrant Interpretation: The top-right quadrant represents bullish sequences (upward move followed by a downward pullback), while the bottom-left represents bearish sequences (downward move followed by an upward pullback).
🔹 Candle Heatmap
Users can color the chart candles based on the live data from the scatter plot. This allows for a direct visual correlation between the price action and the statistical intensity of current swings.
🔶 DETAILS
The scatter plot calculates the percentage change of every historical swing. By mapping these onto a quadrant system, traders can see if recent pullbacks are deep relative to their impulses.
The tool uses a simplified two-tone color scheme (Bullish vs. Bearish). These colors define the extremes of the gradient used for both the dashboard dots and the candle heatmap. Points closer to the Bullish color represent strong upward volatility, while points closer to the Bearish color represent heavy downward volatility.
🔶 SETTINGS
🔹 Core Settings
Pivot Length: Determines the sensitivity for identifying swing highs and lows.
Color Candles via Scatter Heatmap: Toggles the candle coloring on or off.
Heatmap Mode: Selects the logic for the candle gradient. "Pullback" (default) focuses on retracement depth, "Impulse" focuses on the strength of the trend extension, and "Combined" uses a score derived from both.
🔹 Style
Bullish Color: Sets the color for bullish structure and the positive extreme of the heatmap gradient.
Bearish Color: Sets the color for bearish structure and the negative extreme of the heatmap gradient.
🔹 Dashboard
Dashboard Vertical Position: Anchors the dashboard to the Top, Middle, or Bottom of the recent price action.
Dashboard Time Offset: Controls how many bars into the future the dashboard is projected.
Dashboard Size Scale: Adjusts the visual size of the dashboard and its grid elements.
Indicator

Indicator

Prior Range XL**Prior Range XL — Overview**
Prior Range XL plots the previous period's trading range directly on the chart and marks the key levels inside it. It answers a simple question at a glance: where did price trade last period, and where are the meaningful levels within that zone? The prior high and low from a higher timeframe (day, week, or month) often act as support, resistance, and targets in the current period, and this tool keeps them visible and updated without manual drawing.
**What it draws on the chart**
- **Range box** — a shaded rectangle spanning the prior period's high down to its low, giving an immediate visual sense of the zone price is working within.
- **Prior High line** — the top of the range, extended across the current period.
- **Prior Low line** — the bottom of the range, extended across the current period.
- **Midline** — the exact midpoint (50%) of the range, often treated as the "fair value" or equilibrium of the zone.
- **Two internal levels** — user-placed lines inside the range (defaults sit at 20% and 80%), useful for spotting partial retracements, entries, and profit zones between the extremes.
All lines and the box extend to the right and refresh as the current period develops. Range values are calculated from the regular trading session only, so overnight or extended-hours spikes don't distort the prior high and low.
**The inputs, grouped**
*Structure*
- **Structure Timeframe** — the heart of the tool. Choose Daily, Weekly, or Monthly to decide which prior period defines the range. Daily uses yesterday's range, Weekly uses last week's, Monthly uses last month's. This should be set at or above the chart's timeframe for correct behavior.
*Internal Levels*
- **Show Internal Level 1 / Level 2** — toggles each of the two inner lines on or off.
- **Level 1 Value / Level 2 Value** — sets where each inner line sits within the range on a 0-to-1 scale. Zero is the range low, one is the range high, and 0.5 is the midpoint. Setting a level to exactly 0.5 hides it, since the dedicated midline already covers that spot.
*Colors*
- **Box Fill Color** — the shade and transparency of the range rectangle.
- **Box Border Color** — the outline of the box.
- **Prior High Line Color** — color of the top line (labeled PDH).
- **Prior Low Line Color** — color of the bottom line (labeled PDL).
- **Midline Color** — color of the 50% line.
- **Internal Level Color** — color applied to both inner levels.
*Lines & Styles*
- **Line Width** — thickness of the box border and every line.
- **Midline Style** — solid, dashed, or dotted for the midpoint line.
- **Internal Level Style** — solid, dashed, or dotted for the two inner levels.
**How to use it**
- **Frame the session** — set the Structure Timeframe to the period that matters for the trading approach. Intraday traders typically use Daily; swing traders lean toward Weekly or Monthly.
- **Read the edges** — the prior high and low act as natural decision points. Price approaching an edge often stalls, reverses, or breaks through with momentum, and either outcome is tradable information.
- **Use the midline as a pivot** — trading above the midline leans bullish within the range; below it leans bearish. It's a quick read on which half of the zone price favors.
- **Place the internal levels intentionally** — the defaults at 20% and 80% highlight the outer quarters of the range, a common area for reactions before price tests the extremes. Adjust them to match a preferred method, such as thirds or a specific retracement depth.
- **Style for clarity** — assign distinct colors so the high, low, midline, and internal levels are instantly distinguishable, and use dashed or dotted styles to keep the inner lines from competing visually with the range boundaries.
**One practical note**
Because the title is "Prior Range XL," the chart platform treats it as its own indicator. Any earlier version under a different name stays separate and should be removed manually to avoid overlapping boxes and lines.
*(This description is drawn entirely from the indicator's own settings and logic — no outside sources involved.)* Indicator

Indicator

Indicator

ICT Entry Model Liquidity Sweep, MSS & FVG [LunqFX]A smart-money entry is never a single signal — it is a sequence. Price runs the stops beyond a swing, structure shifts the other way, and the entry is taken from the imbalance that shift left behind. Most ICT indicators draw one of those pieces and leave you to assemble the rest by hand. This one tracks the whole sequence live and finishes it with an actual trade: entry, stop, target and a quality score that tells you whether the setup was worth taking at all.
❶ THE FOUR STAGES
▸ LIQUIDITY SWEEP — price trades beyond a swing high or low, takes the stops resting there, and closes back inside. The sweep is marked and the level it raided is drawn. This is the manipulation leg, and it is where the stop for the trade will sit.
▸ MSS (MARKET STRUCTURE SHIFT) — after the sweep, price closes through the last short-term swing in the opposite direction. This is the confirmation that the sweep was a reversal and not a continuation. Note that the shift is measured against internal structure, not the major swing: waiting for a major swing to break would put the entry far too late, which is the single most common mistake in automated ICT tools.
▸ FVG ENTRY — the displacement that broke structure leaves a three-candle imbalance. That gap is the entry zone, drawn as a box, because price commonly returns to fill it before continuing.
▸ RISK AND TARGET — the stop goes beyond the sweep extreme, the target is your chosen R multiple. Both are drawn as filled zones running back to the entry, so the whole trade reads as one object instead of a set of loose lines.
❷ SETUP QUALITY 0–100
Not every sequence deserves a trade, and this is where the indicator does something no other entry tool does. Every setup is graded on four measurable properties:
▸ SWEEP DEPTH — how far beyond the level price actually ran, in ATR. A deeper raid means more stops were genuinely taken. ▸ DISPLACEMENT — how decisively the structure was broken, in ATR. A weak break is a weak setup. ▸ FVG SIZE — how large the imbalance is. A bigger gap is a stronger entry. ▸ SPEED — how quickly the shift followed the sweep. A fast reversal is aggressive; a slow one has lost its edge.
The four are blended into a single 0–100 score shown on every entry tag and in the dashboard. Set the minimum quality in the settings and weak sequences simply stop being drawn — you trade the good ones instead of every arrow.
❸ HOW TO TRADE IT
1 — Wait for the SWEEP marker. The dashboard turns amber and reads SWEEP · WAITING MSS. Nothing to do yet: the manipulation has happened but it is not confirmed.
2 — Wait for MSS. When structure shifts, the setup is drawn and the dashboard turns green for a long or red for a short. If structure does not shift within the allowed window, the sweep is discarded and the model resets — no stale signals.
3 — Check the quality score before committing. High scores come from a deep sweep, a decisive break and a clean imbalance. If the number is low, the sequence was technically valid but structurally weak.
4 — Place the trade from the ticket. Entry at the FVG edge, stop beyond the sweep, target at your R multiple. The dashboard shows all three plus the exact risk in price, so the position size follows directly.
5 — Let price come to you. The FVG is a limit entry, not a market entry. If price never returns to the gap, the setup is simply skipped — that is the model working as intended.
❹ HOW IT WORKS
Liquidity swings and internal structure are detected with confirmed pivots, so a level only exists once the bars on both sides of it have closed. A sweep requires a bar to trade beyond the swing and close back inside it, and it is only registered when the shift level is still unbroken — otherwise the sequence could confirm itself on the very next bar. The structure shift requires a close through that internal level within your chosen window. The imbalance is found in the displacement leg using the standard three-candle definition. The stop is the sweep extreme, the target is the entry plus or minus the risk times your R multiple, and setups whose stop would be smaller than a fraction of ATR are rejected as untradeable. The quality score is a weighted blend of the four properties above, each normalised by ATR so the score behaves the same on every symbol and timeframe.
Works on any market and timeframe — forex, gold, indices, crypto and stocks. Intraday charts from 5m to 4h suit the model best, since that is where liquidity raids and structure shifts happen most often.
SETTINGS — liquidity swing length, internal structure length, maximum bars from sweep to shift, R multiple for the target, minimum stop distance, minimum quality, number of setups kept, level extension, FVG and level visibility, candle colouring and dashboard position.
ALERTS — long setup confirmed, short setup confirmed, and any setup confirmed. All fire on closed bars only.
NON-REPAINTING — every stage is validated on bar close and built from confirmed pivots. A setup that has printed never moves, never changes its levels and never disappears.
The four stages are not four indicators bundled together — they are four steps of one entry model, and none of them is tradeable alone. The sweep without the shift is just a wick; the shift without the sweep is just a break; the imbalance without either is just a gap. That is why they belong in a single tool.
This indicator is an educational market-analysis tool, not financial advice. The quality score describes the structure of a setup and does not predict its outcome. Always confirm with your own analysis and manage your risk. Indicator

Indicator

Midnight Open Suite+ (M1D)Midnight Open — is ICT's primary intraday bias reference.
Price trading above it is at a premium to that open; price trading below it is at a discount. It is a level the market returns to often enough that where price sits relative to it is worth knowing before anything else about the day.
This script marks that open and the three that follow it, measures the range the first half hour builds, and reports where price stands against each. It takes no directional opinion of its own.
THE OPENS
Four New York opens are drawn, each on its own settings:
- 12am, the Midnight Open.
- 3am, the London open.
- 8:30am, the release time that begins the New York morning.
- 9:30am, the cash open.
Each is a ray beginning at the candle that genuinely opened on its own time, carrying that candle's opening price. No level is drawn back across bars that closed before the price it marks existed, and no price is borrowed from a neighbouring bar.
Each open also carries an optional vertical line marking the minute itself, stamped with its own time. That stamp is derived from the time the open is configured to, so it cannot drift out of agreement with the level it names — move an open to a different minute and its stamp moves with it.
By default a level stops where the following day's level begins, so only one of each is ever live. It can instead be set to run on indefinitely.
THE OPENING RANGE
The 12:00–12:30am window is drawn as a single zone from its own high to its own low, with an optional equilibrium — the 50% — running across it. The window opens on the Midnight Open's own time and its length is adjustable, so moving the open moves the range with it.
The 50% of a range is its equilibrium.
Zone and equilibrium are both kept for several days. Four days is the default, which leaves the previous three equilibria on the chart behind the current one.
WHY A LEVEL IS SOMETIMES WITHHELD
An open can only be read from a bar that opens on that exact minute. A bar that merely contains the minute opened earlier and carries an earlier price. On a 60-minute chart there is no bar that opens at 8:30 or at 9:30, so those two are not drawn at all rather than being placed a few points out — a level that is slightly wrong still looks right, which makes it worse than one that is visibly absent.
Withheld levels are never silent. The dashboard names each one and states the bar size that dropped it, so an empty row reads as "this timeframe cannot measure it" rather than "it has not happened yet".
An open is placeable when the chart's bar length divides evenly into the minutes between midnight and that open. With the four default times and the half-hour range, that means any bar length dividing 30 minutes — the 1, 2, 3, 5, 10, 15 and 30 minute charts. Move an open to a different minute and the arithmetic follows it.
THE DASHBOARD
Bias is read from the Midnight Open alone, and is stated as both a direction and the premium or discount it implies.
Below it each open is listed with its price and the signed distance price currently sits from it, in points or in ticks. The opening range is listed with its size and whether price stands above, inside or below it, and the equilibrium with its own price and distance.
A level carried in from a previous day is still the level drawn on the chart, so it is still listed — but it is named as carried over, because reading a stale open as today's is how it gets traded by mistake.
WHAT IT DRAWS
- Four opens as dotted rays, each from the candle that set it, named above its own line.
- An optional full-height vertical line on each open, stamped with its time.
- The 12:00–12:30am range as a soft zone whose border matches its fill, captioned with the window it covers. The caption re-centres on the span the zone currently occupies, so it tracks across with it rather than trailing at the left edge.
- The equilibrium as a thin dashed line through the zone, named inline on its own level so the text sits exactly at the price.
- Optional rays extending the range's high and low.
- A dashboard carrying bias, every open with its distance, and the range with its position.
Labels are transparent callouts throughout: nothing carries a background, and every offset is in pixels rather than price, so the spacing holds at any zoom level.
SETTINGS
- Each open has its own show toggle, name, hour and minute, ray colour, style and width, and the same four controls again for its vertical line and time stamp.
- How many days of levels stay on the chart, and whether a ray stops at the next day's level or runs to the right edge.
- Opening range: window length, zone colour and transparency, how far the zone extends, whether the high and low extend as rays, and the zone's caption.
- Equilibrium: visibility, colour, line style, and whether it is named.
- Labels: whether levels are named, whether the price is included in the name, whether every kept day is named or only the newest, time stamp position, and label size.
- Dashboard: position, text and background colours, header fill, the two directional colours, text size, and whether distance is reported in points or ticks.
NOTES
- Non-repainting. Levels are set on confirmed bars only and none is revised once its bar has closed.
- All times are New York and resolve through the exchange-independent New York clock, so they stay correct across daylight saving on any symbol.
- At the default times every level is measurable on the 1, 2, 3, 5, 10, 15 and 30 minute charts. Any other timeframe drops whichever levels its bars cannot open on, and names them.
- Four alert conditions: price crossing the Midnight Open, price crossing the opening range equilibrium, and the range's high or low being closed through.
- Every drawn element is black by default. Only the dashboard's directional readings carry colour, and all of them are inputs.
- This is a mapping tool. It draws reference levels and reports where price sits relative to them; it produces no entries, targets or stops.
Disclaimer-
This is not financial advice. A level drawn by a model is context, not a recommendation to trade, and where price opened yesterday says nothing certain about where it goes today. Indicator

RSI + MACD Signals RSI + MACD Signals
RSI + MACD Signals v6 combines two of the most trusted technical indicators into one easy-to-use tool. It displays the RSI, MACD, Signal Line, Histogram, and generates clear BUY and SELL signals when both indicators align, helping traders identify high-probability trade setups.
Designed for simplicity and reliability, this indicator is suitable for Forex, Crypto, Stocks, Indices, and Commodities across multiple timeframes. Whether you're a beginner or an experienced trader, it can help confirm trend direction and momentum while reducing false entries.
Features:
- ✅ RSI with 30/50/70 levels
- ✅ MACD Line, Signal Line & Histogram
- ✅ Buy & Sell signal labels
- ✅ Pine Script v6 compatible
- ✅ Works on all markets and timeframes
- ✅ Easy to customize and use Indicator

Indicator

EMA 8/12/21EMA 8/12/21 plots three exponential moving averages — fast, medium, and slow — to give a quick read on short-term trend and momentum. When the fast EMA is above the medium, and the medium is above the slow, price is in a bullish stack; the reverse order signals a bearish stack. Beyond the three lines, the indicator includes optional visual and alert tools (ribbon fill, background shading, bar coloring, a higher-timeframe EMA overlay, a noise filter, and crossover alerts) that can each be switched on independently from the settings menu. Indicator

Indicator

Gamma Regime FlagGamma Regime Flag
Flags whether price is trading above or below an estimated gamma flip level — the zone where dealer/market-maker hedging flow is thought to shift character (supportive vs. amplifying). This is a simplified, single-purpose read: just the flip line and the regime state, nothing else.
How it works:
The flip level is approximated using VWAP as an anchor, lightly smoothed with an EMA to reduce noise. When price is above the flip, the background shades one color (Positive Gamma); below it, the other (Negative Gamma). A small table in the corner shows the current regime and how many bars price has held on that side, so you can see how "sticky" the current regime has been.
How to use it:
Positive gamma regimes have historically been associated with more mean-reverting, range-bound price action, since dealer hedging tends to dampen moves. Negative gamma regimes have been associated with more trending, volatile action, since hedging flow can amplify moves in the same direction. Use the regime as context alongside your own setup — not as a standalone signal.
Inputs:
Flip Line Smoothing — controls how reactive vs. smooth the flip level is
Show Info Table / Show Flip Label — toggle the on-chart readouts
Background and line colors — fully customizable
Alerts:
Includes an alert condition for when price crosses the gamma flip level.
Notes:
This is an educational tool that approximates gamma positioning using price and volume data — it does not use live options chain data. It is not financial advice. Past performance does not guarantee future results. Indicator

SBP Sideways Range and Structure NavigatorSBP Sideways Range and Structure Navigator is a rule-based market analysis indicator designed to distinguish confirmed sideways consolidation from directional market phases while generating a single alternating sequence of BUY and SALE signals.
This script is an indicator, not a trading strategy. It does not place trades, calculate position size, manage risk, or predict future price movement. All signals should be evaluated together with market context, timeframe, liquidity, and the user's own trading plan.
Methodology
The indicator follows one integrated state-driven analytical workflow rather than combining unrelated indicators.
The sideways engine identifies genuine price compression using multiple market characteristics, including:
Range width relative to ATR
Net price displacement
Price-path choppiness
Regression slope
Directional balance
Candle overlap
Candle-body compression
ADX behaviour
EMA compression
When these conditions agree, a confirmed sideways range is displayed as a fixed yellow box that remains active until a confirmed breakout or breakdown occurs.
Sideways Bias
Each confirmed range is analysed to determine internal directional pressure using EMA alignment, EMA slope, directional movement, and price position within the range.
A bullish assessment generates Bull Bias, while a bearish assessment generates Bear Bias. Bias events must alternate, preventing repeated Bull or Bear Bias signals. Bull Bias is merged into the master BUY engine, while Bear Bias becomes part of the master SALE engine.
Trend Structure Engine
Outside confirmed sideways markets, the indicator evaluates:
Confirmed swing structure
EMA alignment and slope
ATR-normalised EMA separation
Directional movement
ADX strength
Controlled pullbacks
Pullback depth
Candle quality
Price resumption
The objective is to identify structured continuation rather than reacting to every short-term fluctuation.
Master Signal Engine
All qualified signal sources are combined into one master signal router.
BUY signals may originate from:
Bullish trend resumption
Bull Bias
SALE signals may originate from:
Bearish trend resumption
Bear Bias
The router enforces strict signal alternation:
BUY → SALE → BUY → SALE
After a BUY, additional BUY signals are ignored until a SALE occurs, and vice versa. Signal spacing is determined by market conditions rather than a fixed bar delay.
An optional Early Base Breakout BUY can be enabled to identify selected early bullish recoveries while remaining subject to the same master alternation rules.
Inputs
The indicator allows control of:
Sideways range display
Bull/Bear Bias labels
BUY/SALE labels
Label size
Range colours and transparency
Bias colours
BUY/SALE colours
Optional Early Base Breakout BUY
Usage
Yellow boxes highlight confirmed consolidation where directional movement may be limited.
BUY and SALE labels represent qualified analytical events generated by the integrated signal engine. They are informational and should not be interpreted as automatic trading instructions.
Calculation
The script uses confirmed-bar calculations and confirmed pivot information. It does not use future-data lookahead or request.security().
Limitations
Like any price-based analytical tool, performance depends on market conditions. Highly volatile markets, gaps, news events, and sudden regime changes can reduce signal quality. Strict signal alternation intentionally suppresses repeated signals in the same direction, which may omit some re-entry opportunities during strong trends.
Alerts
Short alerts are available for:
Sideways
Bull Bias
Bear Bias
Range Breakout
Range Breakdown
Bias BUY
Bias SALE
Early BUY
BUY
SALE
This indicator is intended to provide a structured visual interpretation of sideways compression, directional bias, market structure, pullbacks, and trend resumption. It is an analytical tool and does not guarantee trading performance or future market direction. Indicator

U.S. Economic Calendar Master - Spectre Trades U.S. Economic Calendar Master - Spectre Trades is a chart-overlay fully customizable indicator that marks major U.S. economic releases directly on the price chart using clear, customizable labels. It includes CPI, PPI, NFP, FOMC decisions, Core PCE, GDP, JOLTS, Retail Sales, ISM reports, ADP employment, Jobless Claims, Durable Goods, Consumer Confidence, housing data, Michigan Sentiment, Import/Export Prices, and the Employment Cost Index.
The purpose of this indicator is to help traders quickly identify sessions that may experience increased volatility, wider spreads, rapid liquidity sweeps, false breakouts, or sudden directional expansion. Instead of constantly switching between the chart and an external economic calendar, traders can see the event name, date, scheduled release time, and selected time zone directly on the chart.
Each event category can be turned on or off independently, and the labels can be customized by title, subtitle, color, text color, transparency, size, placement, date format, time format, and time-zone display. This allows traders to keep the chart clean while showing only the events that are relevant to their market and trading plan.
This indicator may help traders:
Prepare for high-impact trading sessions
Avoid entering trades immediately before scheduled news
Adjust position size and risk around volatile releases
Review historical market reactions to economic events
Improve opening-range, liquidity, VWAP, and market-structure analysis
Separate normal price movement from news-driven volatility
The indicator does not predict the outcome of an economic report or the direction of price. Its purpose is to provide advance awareness and improve risk management by making important economic dates and times visible within the trader’s normal chart workflow.
Disclaimer
This indicator is provided for informational and educational purposes only. It is not financial advice, investment advice, or a recommendation to buy or sell any financial instrument.
Economic release dates and times may be revised, postponed, canceled, or changed by the issuing organization. Traders should always confirm upcoming events through an official government source or a current economic calendar.
This indicator does not display actual, forecast, or previous economic data, and it does not determine whether a release is bullish or bearish. It does not guarantee increased volatility or predict how the market will react.
Trading futures, stocks, options, forex, and other leveraged products involves substantial risk. Users are solely responsible for their trading decisions, risk management, position sizing, and verification of all scheduled events. Indicator

Indicator

AMD FVG Trade//@version=6
// ============================================================================
// AMD FVG Trade — Accumulation → Manipulation → Distribution + FVG
// Settings mirror the reference indicator: AMD Logic, Trade Settings (ATR SL
// + Reward:Risk), EST session filter, and configurable colors.
// • Accumulation = tight consolidation base (gray)
// • Manipulation = false-breakout sweep of the base (red bear / green bull)
// • Distribution = reversal FVG in the opposite direction + "AMD" label
// • Trade levels = Entry / Stop (ATR × mult) / Target (R:R) zones
// ============================================================================
indicator("AMD FVG Trade", overlay = true, max_boxes_count = 500, max_labels_count = 200, max_lines_count = 500)
// ══════════════════════════════ AMD LOGIC ════════════════════════════════
gL = "AMD Logic"
accLength = input.int (30, "Accumulation Length", minval = 3, group = gL, tooltip = "Bars used to measure the consolidation (accumulation) range.")
accRangeMax = input.float(0.2, "Accumulation Range Max %", minval = 0.01, step = 0.05, group = gL, tooltip = "Max size of the accumulation range as a % of price. Smaller = a tighter base is required.")
maxSearch = input.int (10, "Max Search Window", minval = 1, group = gL, tooltip = "Bars allowed to find the manipulation sweep, then the distribution FVG, after accumulation.")
minFvgGap = input.float(0.1, "Min FVG Gap (ATR Multiplier)", minval = 0.0, step = 0.05, group = gL, tooltip = "Minimum size of the distribution FVG, measured in ATR multiples.")
// ═══════════════════════════════ TRADE SETTINGS ══════════════════════════
gT = "Trade Settings"
atrLength = input.int (14, "ATR Length", minval = 1, group = gT)
atrSLMult = input.float(2.0, "ATR SL Multiplier", minval = 0.1, step = 0.1, group = gT, tooltip = "Stop-loss distance = ATR × this multiplier.")
rrRatio = input.float(2.0, "Reward-to-Risk Ratio", minval = 0.1, step = 0.1, group = gT, tooltip = "Target distance = stop distance × this ratio.")
showTrade = input.bool (true, "Show trade levels (Entry / SL / TP)", group = gT)
// ═══════════════════════════ SESSIONS (EST · America/New_York) ═══════════
gS = "Sessions"
useSydney = input.bool(false, "Sydney Session (17:00-02:00 EST)", group = gS)
useTokyo = input.bool(false, "Tokyo Session (19:00-04:00 EST)", group = gS)
useLondon = input.bool(false, "London Session (03:00-12:00 EST)", group = gS)
useNY = input.bool(true, "New York Session (08:00-17:00 EST)", group = gS)
hiliteSess = input.bool(true, "Highlight Active Session Time", group = gS)
// ══════════════════════════════════ COLORS ══════════════════════════════
gC = "Colors"
colAcc = input.color(color.new(color.gray, 70), "Accumulation", group = gC)
colManBear = input.color(color.new(color.red, 65), "Manipulation (Bear)", group = gC)
colManBull = input.color(color.new(color.green, 65), "Manipulation (Bull)", group = gC)
colDisBear = input.color(color.new(color.red, 55), "Distribution (Bear)", group = gC)
colDisBull = input.color(color.new(color.green, 55), "Distribution (Bull)", group = gC)
// ───────────────────────────── SESSION FILTER ────────────────────────────
tz = "America/New_York"
inSyd = useSydney and not na(time(timeframe.period, "1700-0200", tz))
inTok = useTokyo and not na(time(timeframe.period, "1900-0400", tz))
inLon = useLondon and not na(time(timeframe.period, "0300-1200", tz))
inNY = useNY and not na(time(timeframe.period, "0800-1700", tz))
activeSession = inSyd or inTok or inLon or inNY
anySessOn = useSydney or useTokyo or useLondon or useNY
sessOK = anySessOn ? activeSession : true
bgcolor(hiliteSess and anySessOn and activeSession ? color.new(color.blue, 92) : na, title = "Active Session")
atr = ta.atr(atrLength)
// ───────────────────────────── FVG (3-candle) ────────────────────────────
bullFVG = low > high and (low - high ) >= minFvgGap * atr
bearFVG = high < low and (low - high) >= minFvgGap * atr
// ───────────────────────────── AMD STATE MACHINE ─────────────────────────
// 0 = find accumulation base | 1 = wait manipulation breakout | 2 = wait distribution FVG
accHi = ta.highest(high, accLength)
accLo = ta.lowest(low, accLength)
rangePct = (accHi - accLo) / close * 100.0
isBase = rangePct <= accRangeMax
var int state = 0
var float lockHi = na
var float lockLo = na
var box accBox = na
var box manBox = na
var int dir = 0
var float manExt = na
var int t0 = na
// STATE 0 — lock a tight base during an active session
if state == 0 and isBase and sessOK
lockHi := accHi
lockLo := accLo
accBox := box.new(bar_index - accLength + 1, lockHi, bar_index, lockLo, border_color = color.new(color.gray, 30), bgcolor = colAcc, border_width = 1)
t0 := bar_index
state := 1
// STATE 1 — extend base, wait for the manipulation breakout
if state == 1
if not na(accBox)
box.set_right(accBox, bar_index)
if close > lockHi
dir := -1
manBox := box.new(bar_index, high, bar_index, lockHi, border_color = color.new(color.red, 30), bgcolor = colManBear, border_width = 1)
manExt := high
t0 := bar_index
state := 2
else if close < lockLo
dir := 1
manBox := box.new(bar_index, lockLo, bar_index, low, border_color = color.new(color.green, 30), bgcolor = colManBull, border_width = 1)
manExt := low
t0 := bar_index
state := 2
else if bar_index - t0 > maxSearch
state := 0
accBox := na
// STATE 2 — manipulation runs, wait for the reversal (distribution) FVG
if state == 2
if not na(manBox)
box.set_right(manBox, bar_index)
if dir == -1
manExt := math.max(manExt, high)
if not na(manBox)
box.set_top(manBox, manExt)
if bearFVG
box.new(bar_index - 2, low , bar_index + maxSearch, high, border_color = color.new(color.red, 0), bgcolor = colDisBear, border_width = 2)
label.new(bar_index, manExt, "AMD Bearish", style = label.style_label_down, color = color.new(color.red, 10), textcolor = color.white, size = size.normal)
if showTrade
entry = low
sl = entry + atr * atrSLMult
tp = entry - atr * atrSLMult * rrRatio
rgt = bar_index + maxSearch
box.new(bar_index, sl, rgt, entry, border_color = color.new(color.red, 100), bgcolor = color.new(color.red, 82), border_width = 0)
box.new(bar_index, entry, rgt, tp, border_color = color.new(color.green, 100), bgcolor = color.new(color.green, 82), border_width = 0)
line.new(bar_index, entry, rgt, entry, color = color.white, style = line.style_dashed, width = 1)
state := 0
accBox := na
else if bar_index - t0 > maxSearch
state := 0
accBox := na
else if dir == 1
manExt := math.min(manExt, low)
if not na(manBox)
box.set_bottom(manBox, manExt)
if bullFVG
box.new(bar_index - 2, low, bar_index + maxSearch, high , border_color = color.new(color.green, 0), bgcolor = colDisBull, border_width = 2)
label.new(bar_index, manExt, "AMD Bullish", style = label.style_label_up, color = color.new(color.green, 10), textcolor = color.white, size = size.normal)
if showTrade
entry = high
sl = entry - atr * atrSLMult
tp = entry + atr * atrSLMult * rrRatio
rgt = bar_index + maxSearch
box.new(bar_index, entry, rgt, sl, border_color = color.new(color.red, 100), bgcolor = color.new(color.red, 82), border_width = 0)
box.new(bar_index, tp, rgt, entry, border_color = color.new(color.green, 100), bgcolor = color.new(color.green, 82), border_width = 0)
line.new(bar_index, entry, rgt, entry, color = color.white, style = line.style_dashed, width = 1)
state := 0
accBox := na
else if bar_index - t0 > maxSearch
state := 0
accBox := na
// ───────────────────────────── ALERTS ─────────────────────────────────────
alertcondition(bullFVG, "Bullish FVG", "Bullish FVG")
alertcondition(bearFVG, "Bearish FVG", "Bearish FVG")
Indicator

AMD FVG Trade//@version=6
// ============================================================================
// AMD FVG Trade — Accumulation → Manipulation → Distribution + FVG
// Settings mirror the reference indicator: AMD Logic, Trade Settings (ATR SL
// + Reward:Risk), EST session filter, and configurable colors.
// • Accumulation = tight consolidation base (gray)
// • Manipulation = false-breakout sweep of the base (red bear / green bull)
// • Distribution = reversal FVG in the opposite direction + "AMD" label
// • Trade levels = Entry / Stop (ATR × mult) / Target (R:R) zones
// ============================================================================
indicator("AMD FVG Trade", overlay = true, max_boxes_count = 500, max_labels_count = 200, max_lines_count = 500)
// ══════════════════════════════ AMD LOGIC ════════════════════════════════
gL = "AMD Logic"
accLength = input.int (30, "Accumulation Length", minval = 3, group = gL, tooltip = "Bars used to measure the consolidation (accumulation) range.")
accRangeMax = input.float(0.2, "Accumulation Range Max %", minval = 0.01, step = 0.05, group = gL, tooltip = "Max size of the accumulation range as a % of price. Smaller = a tighter base is required.")
maxSearch = input.int (10, "Max Search Window", minval = 1, group = gL, tooltip = "Bars allowed to find the manipulation sweep, then the distribution FVG, after accumulation.")
minFvgGap = input.float(0.1, "Min FVG Gap (ATR Multiplier)", minval = 0.0, step = 0.05, group = gL, tooltip = "Minimum size of the distribution FVG, measured in ATR multiples.")
// ═══════════════════════════════ TRADE SETTINGS ══════════════════════════
gT = "Trade Settings"
atrLength = input.int (14, "ATR Length", minval = 1, group = gT)
atrSLMult = input.float(2.0, "ATR SL Multiplier", minval = 0.1, step = 0.1, group = gT, tooltip = "Stop-loss distance = ATR × this multiplier.")
rrRatio = input.float(2.0, "Reward-to-Risk Ratio", minval = 0.1, step = 0.1, group = gT, tooltip = "Target distance = stop distance × this ratio.")
showTrade = input.bool (true, "Show trade levels (Entry / SL / TP)", group = gT)
// ═══════════════════════════ SESSIONS (EST · America/New_York) ═══════════
gS = "Sessions"
useSydney = input.bool(false, "Sydney Session (17:00-02:00 EST)", group = gS)
useTokyo = input.bool(false, "Tokyo Session (19:00-04:00 EST)", group = gS)
useLondon = input.bool(false, "London Session (03:00-12:00 EST)", group = gS)
useNY = input.bool(true, "New York Session (08:00-17:00 EST)", group = gS)
hiliteSess = input.bool(true, "Highlight Active Session Time", group = gS)
// ══════════════════════════════════ COLORS ══════════════════════════════
gC = "Colors"
colAcc = input.color(color.new(color.gray, 70), "Accumulation", group = gC)
colManBear = input.color(color.new(color.red, 65), "Manipulation (Bear)", group = gC)
colManBull = input.color(color.new(color.green, 65), "Manipulation (Bull)", group = gC)
colDisBear = input.color(color.new(color.red, 55), "Distribution (Bear)", group = gC)
colDisBull = input.color(color.new(color.green, 55), "Distribution (Bull)", group = gC)
// ───────────────────────────── SESSION FILTER ────────────────────────────
tz = "America/New_York"
inSyd = useSydney and not na(time(timeframe.period, "1700-0200", tz))
inTok = useTokyo and not na(time(timeframe.period, "1900-0400", tz))
inLon = useLondon and not na(time(timeframe.period, "0300-1200", tz))
inNY = useNY and not na(time(timeframe.period, "0800-1700", tz))
activeSession = inSyd or inTok or inLon or inNY
anySessOn = useSydney or useTokyo or useLondon or useNY
sessOK = anySessOn ? activeSession : true
bgcolor(hiliteSess and anySessOn and activeSession ? color.new(color.blue, 92) : na, title = "Active Session")
atr = ta.atr(atrLength)
// ───────────────────────────── FVG (3-candle) ────────────────────────────
bullFVG = low > high and (low - high ) >= minFvgGap * atr
bearFVG = high < low and (low - high) >= minFvgGap * atr
// ───────────────────────────── AMD STATE MACHINE ─────────────────────────
// 0 = find accumulation base | 1 = wait manipulation breakout | 2 = wait distribution FVG
accHi = ta.highest(high, accLength)
accLo = ta.lowest(low, accLength)
rangePct = (accHi - accLo) / close * 100.0
isBase = rangePct <= accRangeMax
var int state = 0
var float lockHi = na
var float lockLo = na
var box accBox = na
var box manBox = na
var int dir = 0
var float manExt = na
var int t0 = na
// STATE 0 — lock a tight base during an active session
if state == 0 and isBase and sessOK
lockHi := accHi
lockLo := accLo
accBox := box.new(bar_index - accLength + 1, lockHi, bar_index, lockLo, border_color = color.new(color.gray, 30), bgcolor = colAcc, border_width = 1)
t0 := bar_index
state := 1
// STATE 1 — extend base, wait for the manipulation breakout
if state == 1
if not na(accBox)
box.set_right(accBox, bar_index)
if close > lockHi
dir := -1
manBox := box.new(bar_index, high, bar_index, lockHi, border_color = color.new(color.red, 30), bgcolor = colManBear, border_width = 1)
manExt := high
t0 := bar_index
state := 2
else if close < lockLo
dir := 1
manBox := box.new(bar_index, lockLo, bar_index, low, border_color = color.new(color.green, 30), bgcolor = colManBull, border_width = 1)
manExt := low
t0 := bar_index
state := 2
else if bar_index - t0 > maxSearch
state := 0
accBox := na
// STATE 2 — manipulation runs, wait for the reversal (distribution) FVG
if state == 2
if not na(manBox)
box.set_right(manBox, bar_index)
if dir == -1
manExt := math.max(manExt, high)
if not na(manBox)
box.set_top(manBox, manExt)
if bearFVG
box.new(bar_index - 2, low , bar_index + maxSearch, high, border_color = color.new(color.red, 0), bgcolor = colDisBear, border_width = 2)
label.new(bar_index, manExt, "AMD Bearish", style = label.style_label_down, color = color.new(color.red, 10), textcolor = color.white, size = size.normal)
if showTrade
entry = low
sl = entry + atr * atrSLMult
tp = entry - atr * atrSLMult * rrRatio
rgt = bar_index + maxSearch
box.new(bar_index, sl, rgt, entry, border_color = color.new(color.red, 100), bgcolor = color.new(color.red, 82), border_width = 0)
box.new(bar_index, entry, rgt, tp, border_color = color.new(color.green, 100), bgcolor = color.new(color.green, 82), border_width = 0)
line.new(bar_index, entry, rgt, entry, color = color.white, style = line.style_dashed, width = 1)
state := 0
accBox := na
else if bar_index - t0 > maxSearch
state := 0
accBox := na
else if dir == 1
manExt := math.min(manExt, low)
if not na(manBox)
box.set_bottom(manBox, manExt)
if bullFVG
box.new(bar_index - 2, low, bar_index + maxSearch, high , border_color = color.new(color.green, 0), bgcolor = colDisBull, border_width = 2)
label.new(bar_index, manExt, "AMD Bullish", style = label.style_label_up, color = color.new(color.green, 10), textcolor = color.white, size = size.normal)
if showTrade
entry = high
sl = entry - atr * atrSLMult
tp = entry + atr * atrSLMult * rrRatio
rgt = bar_index + maxSearch
box.new(bar_index, entry, rgt, sl, border_color = color.new(color.red, 100), bgcolor = color.new(color.red, 82), border_width = 0)
box.new(bar_index, tp, rgt, entry, border_color = color.new(color.green, 100), bgcolor = color.new(color.green, 82), border_width = 0)
line.new(bar_index, entry, rgt, entry, color = color.white, style = line.style_dashed, width = 1)
state := 0
accBox := na
else if bar_index - t0 > maxSearch
state := 0
accBox := na
// ───────────────────────────── ALERTS ─────────────────────────────────────
alertcondition(bullFVG, "Bullish FVG", "Bullish FVG")
alertcondition(bearFVG, "Bearish FVG", "Bearish FVG")
Indicator

HH/LL Trendlines [twr]Automatically detects swing structure (HH/HL/LH/LL) using pivot highs/lows, labels each swing point, and — the key feature — draws trendlines connecting same-type consecutive pivots: LH→LH on the high side, HL→HL on the low side. This visualizes the two "structure lines" traders watch for trend continuation and potential breaks.
How it works
Pivot detection & classification
Uses ta.pivothigh()/ta.pivotlow() with a user-defined Swing Length (fractal-style, symmetric lookback/lookforward)
Each new swing high is compared to the prior swing high: higher → labeled HH (bullish, green), lower → labeled LH (bearish, red)
Each new swing low is compared to the prior swing low: lower → labeled LL (bearish, red), higher → labeled HL (bullish, green)
First pivot on each side gets a neutral "x" label since there's nothing to compare against yet
Trendline logic
Only connects pivots of the same classification — so a LH connects to the previous LH (skipping over any HH in between), and a HL connects to the previous HL. This produces clean descending-resistance / ascending-support structure lines rather than zigzagging between every pivot.
Lines are capped per side (Max Trend Lines Shown) using an array-based pool with oldest-first trimming, so the chart doesn't get cluttered over time
Live projection
If Project Lines Forward is enabled, each line's slope is recalculated every bar and extended to the current bar (getProjectedY()), so the structure line behaves like a live trend channel boundary rather than a static segment frozen at the two pivot points
Optional Remove Line Once Price Crosses It will auto-delete a line when price closes (or wicks, depending on Cross Source) through the projected level — useful for treating the line as an invalidated trendline break
Inputs summary
Structure: swing length, label toggle
Trend Lines: enable high/low connections independently, line width/style, max lines per side
Projection: forward extension toggle, cross-removal toggle, cross source (Close vs High/Low)
Colors: bullish/bearish color customization
Indicator

BarrettFVG Trendline**BarrettFVG Trendline**
BarrettFVG Trendline plots dynamic, self-adjusting liquidity trendlines from swing pivots and flags the moment price breaks structure — giving a clean visual read on trend continuation vs. exhaustion, with built-in alerts for both directions.
**How it works**
- Detects pivot highs/lows over a configurable lookback period and connects consecutive pivots into a sloped trendline (upper resistance line from lower pivots, lower support line from higher pivots).
- Lines auto-extend and re-slope each bar until price closes through them, at which point the line is invalidated and a new one begins forming from the next valid pivot sequence.
- A padded "buffer zone" (ATR-based) is plotted alongside each line and filled, giving a visual cushion rather than a single hard price level.
- When price closes through an active line, the indicator marks a breakout signal (triangle up/down) and fires an alert.
**How to use it**
- Use the trendline breaks as a read on structural shifts — a break of a rising support line can signal loss of upward momentum; a break of a falling resistance line can signal a shift toward buyers regaining control.
- Works on any timeframe and instrument; built and tested primarily on MNQ futures.
- Combine with your own bias/context tools (HTF trend, session levels, order flow) rather than trading breaks in isolation — this indicator identifies structure breaks, it does not predict direction on its own.
**Alerts**
Three alert conditions are built in — right-click the indicator → Add Alert:
- *Breaking Up* — fires when the resistance trendline is broken to the upside
- *Breaking Down* — fires when the support trendline is broken to the downside
- *Any Breakout* — fires on either signal
**Settings**
- Period — pivot lookback length
- Padding — width of the buffer zone around each trendline
- Line colors (up/down)
- Toggle for breakout markers
**Credit**
This script is built on the open-source trendline/breakout logic originally published by **StratifyTrade** ("Liquidity Trendline With Signals"), used and adapted under the terms of its **CC BY-NC-SA 4.0** license. Alert functionality and rebranding added by BarrettFVG.
---
## Disclaimer
*This script is for educational and informational purposes only and does not constitute financial, investment, or trading advice. Trading futures and other financial instruments involves substantial risk of loss and is not suitable for all investors. Past performance, backtested results, or historical signals are not indicative of future results. Always conduct your own due diligence and consult a licensed financial professional before making trading decisions. The creator assumes no liability for any losses incurred from use of this script.*
--- Indicator
