Indicator

SQVIGU Squeeze+ GhostThis indicator is a heavy-duty, all-in-one trading tool built around the classic Squeeze momentum concept, but supercharged with predictive modeling and multi-timeframe analysis.
Here is exactly what it does under the hood:
Enhanced Squeeze Mechanics: It tracks market volatility using Bollinger Bands and Keltner Channels to spot when the market is "squeezing" (building up energy). When the squeeze fires, it uses an EMA and ADX filter to plot only the highest-probability, trend-aligned breakouts.
Ghost Projections: Instead of just reacting to the past, it uses linear regression to mathematically predict and paint the next 1 to 3 momentum bars into the future—complete with a percentage score showing its confidence in the prediction.
SuperTrend & ZigZag Tracker: It overlays a dynamic SuperTrend on your main price chart to keep you on the right side of the move. It even grades itself, explicitly flagging "true" vs. "false" buy and sell signals.
Momentum Nexus: It combines four powerful oscillators (RSI, MFI, VZO, and CCI) into a single, clean 0–100 score. It tracks both your current chart and a higher timeframe simultaneously to drop Overbought/Oversold triangles right where reversals are most likely. Indicator

Custom Basket Index: Breadth & DrawdownCustom Basket Index: Breadth & Drawdown
TL;DR
Enter any list of tickers and get a single equal-weighted line for the whole basket, with every pullback, correction and bear market boxed and measured.
The line changes color with breadth, so a rally being carried by only one or two names shows up immediately.
SETUP
Type up to 40 symbols, comma separated, into the settings. That’s the only required step.
EQUAL-WEIGHTED, NOT PRICE-WEIGHTED
The index averages each member’s percentage move and compounds it. It does not sum prices.
Averaging returns gives every member exactly 1/N influence, and rebalancing each bar keeps it there — otherwise your biggest winner gradually becomes the entire line.
DRAWDOWN BOXES
Declines from a peak is boxed and labelled with its depth and duration:
Pullback — 5% or more below the peak
Correction — 10% or more
Bearish — 20% or more Each threshold is configurable in the settings.
A bearish trend ends on the standard convention: a 20% rally off the low.
BREADTH IS IN THE LINE COLOR
The share of members trading above their own moving average (21 by default): green when 70%+ are above, red when 30% or fewer, gray between.
This is the part worth watching. A composite can keep climbing while most of its members roll over, carried by one or two names. When the line is rising and red, that’s the divergence.
The header row lists every ticker in the basket, each colored by whether it’s above its own MA, so you can see at a glance which names are doing the work.
REBASING
By default the index reads 1.0 at the left edge, so it always measures performance across the visible window and updates as you scroll. In the settings, you can pin it to a fixed date or to all loaded history instead.
A moving average of the composite is plotted alongside, and can be switched off. Indicator

Eliot's Suite StrategyEliot's Suite Strategy — how it works
This strategy turns the "Eliot's Suite" indicator into a full trading system. It follows exactly the workflow the indicator's author described in the manual: define bias → wait for a structure trigger → enter → trail the stop behind fractals.
1. Bias filter. First the strategy decides which direction it's allowed to trade. With the default EMA Trend (50/200) filter, EMA50 above EMA200 means a macro uptrend, so only longs are allowed; the reverse allows only shorts. You can switch this to Session VWAP (looser) or turn it off entirely.
2. Structure trigger. By default the entry signal is ChoCh (Reversal) — the same trigger the author recommends. After a pullback, market structure breaks in your direction, and you enter on the resumption. You can switch this to BOS (Continuation) or Both.
3. Level check (optional, off by default). This is the author's "wait for the setup" rule. When enabled, the entry only fires if price is currently near a key level — VWAP, Daily Open, or yesterday's VWAP close.
4. Entry. A position only opens when all active conditions line up at once: bias confirms the direction and the trigger fires and (if enabled) price is near a level. The trigger alone does nothing without the bias filter agreeing — this is what filters out counter-trend entries, which is where this kind of structural logic usually bleeds money.
Once you're in a position, the second diagram takes over.
Stop loss sits at the last opposite fractal (below price for longs, above for shorts). If no valid fractal exists at entry, it falls back to an ATR-based stop.
Take profit is set as an R-multiple of that stop distance — default 2R, meaning the target is twice as far as the risk.
Trailing uses a ratchet rule: the stop only ever moves in your favour and never loosens. For a long, the stop becomes max(old stop, newest fractal below price); for a short, min(old stop, newest fractal above price). That's the "trail your stop behind the newly formed fractal boundary lines" idea from the manual, made mechanical.
Exit happens when price hits the stop, hits the take profit, or (optionally) when an opposite structure signal prints.
A couple of honest notes on backtesting: the strategy runs "clean" — no repainting, orders fill on the next bar's open, fractals confirm with the natural rightLen-bar delay. That delay means entries lag slightly behind the actual extreme, which is normal for fractals but eats into moves on low timeframes, so watch net profit against commission carefully — especially on 10m gold like your screenshot.
The two PNGs above are downloadable and copy-pasteable. Want me to also export the same two as a single combined image, or add a short-side mirror toggle like we did on "Money Printer"? Strategy

MAHQuant_IND_Sessions_v1.0 MAHQuant_IND_Sessions_v1.0
A comprehensive dual-purpose session tracking tool designed for professional traders. This indicator combines global market session visualization with precise Kill Zone mapping for London and New York sessions.
✨ Key Features:
1️⃣ Global Session Highlighter & Live Market Clock:
• Visual cubes and labels marking the exact start and end of New York, London, Tokyo, and Sydney sessions
• Live Market Clock dashboard showing real-time open/closed status of each major market
• Toggle between session visualization and clock display
2️⃣ London & New York Kill Zones (Vertical Lines):
• Custom vertical lines marking high-probability "Kill Zones"
• **Default Configuration: -1 hour offset**
- Start: 1 hour BEFORE London/NY session open
- End: 2 hours AFTER London/NY session open
• This captures the most volatile and high-probability trading windows
• Fully customizable line styles, widths, colors, and label positions
⚙️ Additional Features:
• Built-in alerts for all major market openings (NY, London, Tokyo, Sydney)
• Timezone offset support for any broker/server time
• Toggle each component independently based on your trading style
• Clean, professional visual design
📖 How to Use:
1. Add indicator to your chart
2. Set "Time Zone Offset" to match your broker time (e.g., +3 for UTC+3)
3. **Kill Zone Offset**: Default is -1 (shows 1hr before to 2hr after session start)
4. Enable/disable sessions or kill zones via input menu
5. Set alerts for "Session Open" to catch market moves
Credits & Acknowledgment:
• Session highlighting and market clock logic inspired by traderharikrishna's open-source "Time Zone / Market Sessions" indicator
• Kill Zone vertical lines and offset logic developed by MAHQuant Trading System
• Thank you to the PulseWire community for open-source collaboration
⚠️ Disclaimer:
This script is for educational and informational purposes only. It does not constitute financial, investment, or trading advice. Past performance is not indicative of future results. Always manage your risk and trade responsibly. Indicator

Indicator

Indicator

ICT Killzone Session Liquidity PRO [By Kalet :D]ICT Killzone Session Liquidity PRO
A Pine Script v6 indicator for PulseWire, built around ICT/SMC methodology — it marks session zones, liquidity levels, and Fair Value Gaps on the chart.
Main modules
1. Lot Size Calculator — On-chart table that computes position size based on account balance, risk %, stop loss (pips), and commission per lot. Supports Forex majors, JPY pairs, and XAU/USD.
2. Market sessions (Asia, London, NY Killzone, Frankfurt) — For each configurable session (EST schedule): draws a box tracking the session's range while it's active, and once it closes, plots horizontal lines at the session high/low (AH/AL, LH/LL, NH/NL, FH/FL) that extend right until price crosses them (liquidity sweep).
3. Open windows — Optional lines for NY Open and Globex Open.
4. Daily/weekly levels:
Previous Day High/Low (PDH/PDL) and previous day 50% midpoint — with a bounded history (default 3 days, oldest ones explicitly deleted).
Current day 50% midpoint, with an optional developing trace.
Day Open — daily open line, with a bounded history of past days (default 3 days).
Weekly Levels (PWH/PWL/Week Open) — with a bounded history (default 2 weeks).
5. Session-cross alert system — Individual alert() and alertcondition() calls for each session level and PDH/PDL when price sweeps them, with formatted messages (ticker, timeframe, price).
6. FVG / IFVG (Fair Value Gaps) — Detects 3-candle bullish/bearish gaps with optional body confirmation, a CE (50%) line, automatic conversion to IFVG on mitigation, a live-count dashboard, and its own alert conditions.
Design notes
All drawn objects (lines, boxes, labels) are capped at 500 per type — Pine Script's hard ceiling.
EQH/EQL was removed (unused) — it was leaking uncapped lines that ate through that budget fast.
PDH/PDL/50%/Weekly now manage their own bounded history with explicit deletion instead of accumulating objects forever — this lets session/killzone history render much further back before Pine starts purging old objects. Indicator

ICT Macros & Killzones & Clock [D4A]ICT Macros
According to ICT (Inner Circle Trader) and his SMC framework, a macro is a small program or set of instructions that runs within an algorithm, which influences price movements in the market. These macros operate at specific times and can be related to price movements from one level to another or certain market behaviours during specific time intervals. They help traders anticipate market movements and potential setups during specific times of the day.
To trade these effectively, it is important to understand the time of day when certain macros run, and understand the concept of market liquidity. The theory behind this - is that the market will either seek buy side or sell side liquidity, or seek to rebalance price at a point of interest in between the open and close of the macro. Traders who follow this theory can use that information to anticipate how price might behave.
This script allows traders to visualize the time when a macro will likely occur in the market. As per ICT, most macros run at every hour from x:50 till x:10. The script draws boxes and lines representing a period of time when a macro runs. Additionally, a label is placed next to the line indicating Macro Open (MO). The script includes alerts that can notify traders when a macro starts.
The following Macros are displayed by the script:
London KZ
02:30 - 03:00 (London Legacy)
04:00 - 04:30 (London Legacy)
01:50 - 02:10
02:50 - 03:10
03:50 - 04:10
04:50 - 05:10
05:50 - 06:10
NY AM KZ
06:50 - 07:10
07:50 - 08:10
08:50 - 09:10
09:50 - 10:10
10:50 - 11:10
11:50 - 12:10
12:50 - 13:10
NY PM KZ
13:50 - 14:10
14:50 - 15:10
15:15 - 15:45
15:50 - 16:10
KZ - Killzones
Apart from displaying the macros, the script visualizes another ICT concept - Killzones. The killzone is a time period when there is an increased market participation from major institutions and big traders who are able to influence price movement. According to ICT this is a good time to participate in the market, as the price will move much quicker than outside of killzone times, allowing for more trading opportunities. The macros that run during killzone may have more weight and importance to macros running outside of a killzone.
How to spot a killzone
The script draws small dots either at the top or the bottom of the screen during the time the killzone is in play. There are three major killzones, pertaining to futures market which have been pre-defined in the script, but each user can modify the times to reflect their own understanding and specific instrument they are trading. The script can display small circle next to the clock which symbolizes that we are in a killzone period.
The following killzones are pre-defined:
London KZ 02:00 - 5:00
NY AM KZ 07:00 - 11:30
NY PM KZ 13:30 - 16:00
The Clock
When the market is open the script displays a digital clock which can also show when a specific macro is running by displaying macro time. The clock is also able to display when we are in a period of active killzone, which is symbolized by small circle next to the clock.
The script is intended to run on 1m timeframe, but it can also run up to 15m and on sub 1m charts. On higher timeframes it's not practical to display macro information.
SETTINGS:
- KZ Killzones - enable display of killzones
- Timezone - set by default to New York timezone
- Lookback - how many past bars are used for computation
- London KZ, NY AM KZ, NY PM KZ - here the user can define exact times for a killzone
- KZ Markers - the script displays small dot (marker) to represent killzone period
- Location - the location of killzone markers on the charts
- Hide Above - hide KZ markers above certain timeframe
- Macros - enable the display of elements representing a macro on the charts
- Hide Above - hide all macro drawings above certain timeframe
- Fill - the background of the box representing a macro
- Highlight - the box representing a macro can be highlighted
- Label - displays macro header containing either MACRO or the time the macro runs
- Hour - displays the time when a macro runs (Label must be enabled for this to work)
- MO - Macro Open line
- Hide Above - hides macro box and MO line above certain timeframe
- Macro pre-defined times - here the user can enable or disable specific macros
- Box/Fill/Border/Highlight - define macro box background, border and highlight transparency
- Label - defines macro header colors
- MO - Macro Open line - defines macro open line style and color
- Show Clock - enables the display of a digital clock
- Background - the background of the clock
- Position - the location of the Clock in the chart
- Time - enable 24h or 12h clock and define the size of the clock when outside of macro and when in macro period
- Macro - define colors of displayed macro time information in the Clock
- Colorize - changes the background of displayed macro information
- KZ Marker in Clock - displays circle next to the clock when we are in active killzone
- Enable Alert at Macro Start - enables elerts when specific macro starts. You still need to add alert for the script in PulseWire to make it work.
NOTE
The script has been preconfigured for dark background in PulseWire. You may need to tune up the colors to satisfy your own PulseWire setup.
-----------------
Disclaimer
The content provided in this script is for educational and informational purposes only. It does not constitute financial advice, investment recommendations, or a solicitation to buy or sell any financial instruments. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, backtest, or individual's trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs. Indicator

Indicator

Indicator

V4//@version=5
indicator("ICT MTF Entry: OB + CHoCH + FVG + Liquidity", overlay=true, max_boxes_count=500, max_lines_count=500, max_labels_count=500)
// ================= INPUTS =================
grpHTF = "HTF Order Block / POI"
htfOB = input.timeframe("60", "Order Block TF", group=grpHTF)
dispMult = input.float(1.5, "Displacement (x ATR)", group=grpHTF)
obMaxAgeBars = input.int(150, "OB Max Age (chart bars)", group=grpHTF)
grpMTF = "MTF CHoCH"
mtfCHoCH = input.timeframe("15", "CHoCH TF", group=grpMTF)
pivotLen = input.int(5, "Swing Pivot Length (MTF bars)", group=grpMTF)
chochWindow = input.int(30, "CHoCH Validity Window (chart bars)", group=grpMTF)
grpLTF = "Entry FVG / IFVG (uses chart timeframe - run this on your 1M/5M chart)"
useIFVG = input.bool(true, "Include Inverse FVG entries", group=grpLTF)
requireFVG = input.bool(false, "Require FVG/IFVG for entry (off = CHoCH + OB retest only)", group=grpLTF)
grpLIQ = "Liquidity Targets"
liqPivotLen = input.int(10, "Liquidity Pivot Length", group=grpLIQ)
liqTolTicks = input.float(2, "Equal High/Low Tolerance (ticks)", group=grpLIQ)
grpVis = "Display"
showOB = input.bool(true, "Show Order Blocks", group=grpVis)
showCHoCH = input.bool(true, "Show CHoCH Labels", group=grpVis)
showFVG = input.bool(true, "Show FVG/IFVG", group=grpVis)
showLiq = input.bool(true, "Show Liquidity", group=grpVis)
grpKZ = "Kill Zones (New York time)"
useKillzones = input.bool(false, "Only allow entries within kill zones", group=grpKZ)
asiaSession = input.session("2000-0000", "Asia Killzone", group=grpKZ)
londonSession = input.session("0200-0500", "London Killzone", group=grpKZ)
nySession = input.session("0700-1000", "New York Killzone", group=grpKZ)
shadeKZ = input.bool(true, "Shade Kill Zones on Chart", group=grpKZ)
inAsia = not na(time(timeframe.period, asiaSession, "America/New_York"))
inLondon = not na(time(timeframe.period, londonSession, "America/New_York"))
inNY = not na(time(timeframe.period, nySession, "America/New_York"))
inKillzone = inAsia or inLondon or inNY
bgcolor(shadeKZ and inAsia ? color.new(color.purple, 92) : na, title="Asia KZ")
bgcolor(shadeKZ and inLondon ? color.new(color.blue, 92) : na, title="London KZ")
bgcolor(shadeKZ and inNY ? color.new(color.yellow, 92) : na, title="NY KZ")
tick = syminfo.mintick
// ================= HTF ORDER BLOCK =================
= request.security(syminfo.tickerid, htfOB,
[open, high, low, close, open , high , low , close , time, ta.atr(14)], lookahead=barmerge.lookahead_off)
var box bullOBs = array.new_box()
var box bearOBs = array.new_box()
var int lastHTFTimeOB = na
newHTFBar = na(lastHTFTimeOB) or hTime != lastHTFTimeOB
if newHTFBar
lastHTFTimeOB := hTime
body = math.abs(hC - hO)
bullDisp = hC > hO and body >= hATR * dispMult
bearDisp = hC < hO and body >= hATR * dispMult
prevBear = hC1 < hO1
prevBull = hC1 > hO1
if bullDisp and prevBear and showOB
b = box.new(bar_index, hH1, bar_index + obMaxAgeBars, hL1, border_color=color.new(color.teal, 0), bgcolor=color.new(color.teal, 85), extend=extend.none)
array.push(bullOBs, b)
if bearDisp and prevBull and showOB
b = box.new(bar_index, hH1, bar_index + obMaxAgeBars, hL1, border_color=color.new(color.red, 0), bgcolor=color.new(color.red, 85), extend=extend.none)
array.push(bearOBs, b)
f_manageOB(boxes, isBull) =>
if array.size(boxes) > 0
for i = array.size(boxes) - 1 to 0
b = array.get(boxes, i)
box.set_right(b, bar_index + 5)
top = box.get_top(b)
bot = box.get_bottom(b)
mitigated = isBull ? close < bot : close > top
expired = bar_index > box.get_left(b) + obMaxAgeBars
if mitigated or expired
box.delete(b)
array.remove(boxes, i)
f_manageOB(bullOBs, true)
f_manageOB(bearOBs, false)
priceInBullOB() =>
inside = false
if array.size(bullOBs) > 0
for i = 0 to array.size(bullOBs) - 1
b = array.get(bullOBs, i)
if close <= box.get_top(b) and close >= box.get_bottom(b)
inside := true
inside
priceInBearOB() =>
inside = false
if array.size(bearOBs) > 0
for i = 0 to array.size(bearOBs) - 1
b = array.get(bearOBs, i)
if close >= box.get_bottom(b) and close <= box.get_top(b)
inside := true
inside
// ================= MTF CHoCH =================
= request.security(syminfo.tickerid, mtfCHoCH, , lookahead=barmerge.lookahead_off)
var float lastSwingHigh = na
var float lastSwingLow = na
var string trend = "neutral"
var int bullCHoCHBar = na
var int bearCHoCHBar = na
if not na(pivHi)
lastSwingHigh := pivHi
if not na(pivLo)
lastSwingLow := pivLo
bullishCHoCH = trend != "up" and not na(lastSwingHigh) and close > lastSwingHigh
bearishCHoCH = trend != "down" and not na(lastSwingLow) and close < lastSwingLow
var bool bullSignaled = false
var bool bearSignaled = false
if bullishCHoCH
trend := "up"
bullCHoCHBar := bar_index
bullSignaled := false
if showCHoCH
label.new(bar_index, low, "CHoCH↑", style=label.style_label_up, color=color.new(color.lime, 0), textcolor=color.black, size=size.small)
if bearishCHoCH
trend := "down"
bearCHoCHBar := bar_index
bearSignaled := false
if showCHoCH
label.new(bar_index, high, "CHoCH↓", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white, size=size.small)
recentBullCHoCH = not na(bullCHoCHBar) and (bar_index - bullCHoCHBar) <= chochWindow
recentBearCHoCH = not na(bearCHoCHBar) and (bar_index - bearCHoCHBar) <= chochWindow
// ================= LTF FVG / IFVG (runs on chart's own timeframe) =================
bullFVG = low > high
bearFVG = high < low
var box bullFVGs = array.new_box()
var box bearFVGs = array.new_box()
if showFVG and bullFVG
fb = box.new(bar_index , low, bar_index + 20, high , border_color=color.new(color.blue, 0), bgcolor=color.new(color.blue, 80))
array.push(bullFVGs, fb)
if showFVG and bearFVG
fb = box.new(bar_index , low , bar_index + 20, high, border_color=color.new(color.orange, 0), bgcolor=color.new(color.orange, 80))
array.push(bearFVGs, fb)
var bool bullIFVGSignal = false
var bool bearIFVGSignal = false
bullIFVGSignal := false
bearIFVGSignal := false
if array.size(bullFVGs) > 0
for i = array.size(bullFVGs) - 1 to 0
b = array.get(bullFVGs, i)
bot = box.get_bottom(b)
box.set_right(b, bar_index + 5)
if close < bot
if useIFVG
bearIFVGSignal := true
box.delete(b)
array.remove(bullFVGs, i)
else if bar_index > box.get_left(b) + 100
box.delete(b)
array.remove(bullFVGs, i)
if array.size(bearFVGs) > 0
for i = array.size(bearFVGs) - 1 to 0
b = array.get(bearFVGs, i)
top = box.get_top(b)
box.set_right(b, bar_index + 5)
if close > top
if useIFVG
bullIFVGSignal := true
box.delete(b)
array.remove(bearFVGs, i)
else if bar_index > box.get_left(b) + 100
box.delete(b)
array.remove(bearFVGs, i)
// ================= LIQUIDITY (equal highs/lows) =================
liqPH = ta.pivothigh(liqPivotLen, liqPivotLen)
liqPL = ta.pivotlow(liqPivotLen, liqPivotLen)
var float lastPH = na
var float lastPH2 = na
var float lastPL = na
var float lastPL2 = na
if not na(liqPH)
lastPH2 := lastPH
lastPH := liqPH
if showLiq and not na(lastPH2) and math.abs(lastPH - lastPH2) <= liqTolTicks * tick
line.new(bar_index - liqPivotLen, lastPH, bar_index + 30, lastPH, color=color.new(color.fuchsia, 0), style=line.style_dashed)
label.new(bar_index, lastPH, "BSL", style=label.style_label_down, color=color.new(color.fuchsia, 0), textcolor=color.white, size=size.tiny)
if not na(liqPL)
lastPL2 := lastPL
lastPL := liqPL
if showLiq and not na(lastPL2) and math.abs(lastPL - lastPL2) <= liqTolTicks * tick
line.new(bar_index - liqPivotLen, lastPL, bar_index + 30, lastPL, color=color.new(color.aqua, 0), style=line.style_dashed)
label.new(bar_index, lastPL, "SSL", style=label.style_label_up, color=color.new(color.aqua, 0), textcolor=color.black, size=size.tiny)
// ================= ENTRY SIGNAL =================
kzOK = not useKillzones or inKillzone
fvgLongOK = not requireFVG or bullFVG or (useIFVG and bullIFVGSignal)
fvgShortOK = not requireFVG or bearFVG or (useIFVG and bearIFVGSignal)
longSetup = priceInBullOB() and trend == "up" and recentBullCHoCH and fvgLongOK and kzOK and not bullSignaled
shortSetup = priceInBearOB() and trend == "down" and recentBearCHoCH and fvgShortOK and kzOK and not bearSignaled
if longSetup
bullSignaled := true
if shortSetup
bearSignaled := true
plotshape(longSetup, title="Long Entry", style=shape.triangleup, location=location.belowbar, color=color.new(color.lime, 0), size=size.small)
plotshape(shortSetup, title="Short Entry", style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small)
if longSetup
label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.new(color.lime, 0), textcolor=color.black, size=size.normal)
if shortSetup
label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white, size=size.normal)
alertcondition(longSetup, title="Long Setup", message="Bullish OB + CHoCH + FVG entry")
alertcondition(shortSetup, title="Short Setup", message="Bearish OB + CHoCH + FVG entry" Indicator

Indicator

The Curly ShuffleThe Curly Shuffle
This is a dual CCI oscillator built around one question. When a market has run to an extreme and starts coming back, do both the fast and the slow reading of momentum agree that the run is finished?
A single CCI crossing back inside a threshold is a common event, and on its own it means very little, since it happens constantly in the middle of strong trends. Requiring two CCIs of different speeds to make that same crossing within a few bars of each other is a far narrower condition. The fast line almost always moves first, so what you are really asking is whether the slower and more structural view confirms what the fast one just did, and whether it confirms soon enough that the two are describing the same event rather than two unrelated ones.
How the signal works
The script plots two CCIs on typical price. The slow one defaults to 55 periods and the fast one to 21. Both are watched at a threshold of 170 and negative 170.
A short fires on the bar where the second of the two lines crosses back below 170, provided the first one crossed within the window you set, which defaults to 5 bars. A long fires on the mirror condition at negative 170. A cooldown of 6 bars prevents a line whipsawing across the threshold from producing a cluster of repeat signals. There is also an optional filter, off by default, that requires each line to have travelled a minimum distance past the threshold before its return counts, which stops a CCI that barely touched 171 from carrying the same weight as one that ran to 400.
These defaults are deliberately slow and the threshold is deliberately far out. A 55 period CCI beyond 170 is roughly two and a half mean deviations away from its own moving average, which is not an everyday occurrence, and requiring the 21 period line to be out there with it narrows things further. Expect this to be an infrequent signal on higher timeframes. If you want more of them, shorten both periods together to preserve the speed ratio, or bring the threshold down toward 100, rather than widening the window, which loosens the relationship between the two crossings instead of loosening the setup itself.
The scale
Clamping an oscillator at a fixed ceiling destroys exactly the information you want during capitulation or euphoria, because a reading of 500 and a reading of 250 draw the same flat line. This script does something different. Inside the threshold the plot is completely linear and untouched, so the trigger levels sit where they actually belong. Beyond the threshold the excess is compressed so that the plot approaches a cap of 250 without ever reaching it. The compression softness of 185 controls how gradually that happens. Ordering is preserved throughout, so a more extreme reading always draws further out than a less extreme one, just with tightening spacing. Every calculation behind the signals uses the raw uncompressed values.
Because the visual is compressed above the threshold, a small table shows the true numbers, along with a running count of signals and two diagnostics described below.
Reading the table
Mean gap tells you the average number of bars between the two crossings across every signal so far. Use it to set your window from measured behaviour rather than guesswork. If the mean gap on your instrument and timeframe comes back at 2, a window of 5 is letting through pairs that are not really related.
Fast leads tells you how often the fast CCI crossed first. If that figure sits near 50 percent, the two lines are not in a lead and confirm relationship at all, they are just both crossing a threshold independently, and the pairing rule is not adding information. That is a signal to widen the gap between the two periods.
Notes
Background shading marks stretches where the slow CCI has held one side of zero for 6 or more bars, which is the classic Woodies idea of a trend run.
Signals are evaluated on closing values. A marker can appear and disappear while a bar is still forming and should only be treated as final once the bar closes. The alert is set for once per bar close for the same reason.
This is a signal generator, not a strategy. It produces no stops, no targets and no position sizing, and it makes no claim about profitability. Fading an extreme is a difficult approach and deserves testing on your own instruments before any capital goes near it. The same detector is equally valid read as a continuation signal, since a return inside the threshold during a trend often marks the end of a pullback rather than the end of a move, and comparing both readings on the same data is worth doing. This is not financial advice. Indicator

Exhaustion Velocity v6EXHAUSTION VELOCITY v6
WHAT IT DOES
This indicator marks moments where a fast directional move appears to be running out of participants. It does not attempt to predict tops or bottoms ahead of time. It waits for the specific bar where speed, volume and acceleration all point toward a climax rather than a continuation.
THE MEASUREMENTS
Velocity is the price change over a lookback window, normalized by ATR so that moves in quiet conditions and moves in violent conditions are scored on the same scale.
The velocity z score expresses how unusual the current speed is relative to the last sixty bars. A reading near 2 means price is travelling roughly two standard deviations faster than it typically does.
Volume surge compares current volume to its own moving average. Climax bars usually arrive on a flood of volume. Occasionally they arrive on volume vanishing instead, which is why the volume test accepts either a spike or a sharp drop.
Acceleration is the change in velocity from bar to bar. While new participants keep entering, velocity keeps rising. When acceleration flips sign, the flow driving the move has stopped even though price may still be extended.
HOW SIGNALS FIRE
Four independent paths can produce a signal.
Standard climax. Extreme velocity, a qualifying volume condition, and an acceleration flip within a short window of the extreme.
Hard climax. Velocity far beyond the threshold on heavy volume, printed without waiting for the flip, because these bars frequently reverse within the bar itself.
Wick rejection. Extreme velocity combined with a long tail in the direction of the move and a close in the opposite half of the bar range.
Velocity divergence. Price makes a fresh low or high while velocity into that extreme is weaker than it was at the previous one, and the bar closes against the move. This catches second leg exhaustion where the final push arrives with less force than the one before it.
FILTERS
Adaptive threshold. The trigger level can float at a percentile of recent velocity readings rather than sitting at a fixed number, so it tightens automatically in high volatility regimes and loosens in compressed ones.
Stretch requirement. Price must sit a minimum ATR distance from a baseline moving average, which prevents signals in the middle of a range where there is nothing meaningful to revert toward.
Cooldown. A minimum bar spacing between signals so that a messy climax produces one entry instead of a cluster.
READING THE LABELS
Each signal counts how many conditions confirmed it. A plain B or S met one. B plus or S plus met two. B plus plus or S plus plus met three or more, meaning heavy volume, a rejection wick, a divergence and extreme magnitude arrived together. Those are the least frequent and the most selective.
A classic mode toggle is included, which reverts the logic to the original strict rule set so you can compare the additional paths against the baseline on the same chart.
SETTINGS GUIDANCE
If signals feel too frequent for your instrument or timeframe, increase the stretch requirement first, then raise the adaptive percentile, then extend the cooldown. If they feel too rare, lower the percentile and shorten the stretch requirement.
DISCLAIMER
This script is published for educational and informational purposes only. It is not financial advice, investment advice, trading advice, or a recommendation to buy or sell any asset. Indicator

BTC On-Chain Value Zones [MVRV]BTC Onchain Value Zones (MVRV)
Bitcoin has a cost basis. Realized Price is the average price at which every coin in circulation last moved onchain, which makes it a reasonable proxy for what the average holder actually paid. This script plots that level directly on your price chart and builds valuation zones around it.
MVRV is just price divided by Realized Price. When MVRV falls under 1, the average holder is sitting at a loss. Historically that condition has clustered around cycle lows and long accumulation ranges. When MVRV stretches well above 2.5, the market is carrying a large amount of unrealized profit, and historically that has clustered around distribution phases and cycle highs. It is a slow, structural read, not a trade trigger.
Why I rebuilt it
The common version of this idea relied on the IntoTheBlock MVRV feed. That feed stopped updating in August 2025 and PulseWire flagged it as discontinued. Scripts using it did not throw an error. They quietly froze on a stale value and kept plotting a line that meant nothing, which is worse than breaking outright.
This version calculates MVRV itself from two live feeds:
Realized Price = Realized Cap / Circulating Supply
MVRV = Price / Realized Price
Realized Cap comes from CoinMetrics and Circulating Supply from Glassnode. If either symbol is unavailable on your plan, the script falls back to an alternate ticker automatically. If supply goes dark entirely, it derives supply from market cap divided by price so the realized line keeps working rather than vanishing.
The zones
Deep buy below 0.85, meaning capitulation territory where holders are heavily underwater.
Buy below 1.0, meaning price sits under the aggregate cost basis.
Fair value between 1.0 and 2.5.
Sell above 2.5.
Euphoria above 3.5.
Every threshold is adjustable in settings. The zones are drawn in price terms, not as an oscillator, so you can see exactly what dollar level each multiple sits at right now.
Signals
Markers fire when MVRV crosses a threshold on the daily close. Triangles mark entries into the buy and sell zones, labels mark deep value and euphoria, and a circle marks the moment price reclaims its cost basis, which has historically been a useful bottom confirmation. Alerts are available for each event individually, for any buy event, for any sell event, and for a stale data feed.
Diagnostics
Two tables. The top right shows current MVRV, realized price in dollars, the active zone, how many days old the onchain data is, and which feeds are supplying it. The bottom right lists all six candidate symbols with their current values, marked green if live and red if dead. If a data provider retires a ticker two years from now, you will see it immediately instead of trusting a frozen line.
How to use it
Onchain data updates once per day, so use this on a daily chart or higher. It is built for position sizing and accumulation decisions across weeks and months, not for entries. Treat the zones as context for whatever you are already doing.
One honest caveat. MVRV peaks have declined with every cycle as Bitcoin has matured and the holder base has grown. The 3.5 euphoria level was routine in 2013 and 2017 and has been harder to reach since. Adjust the upper thresholds to fit the market you are actually trading rather than assuming past extremes will repeat.
This is for informational purposes only and is not financial advice. Indicator

Trading Sessions + Developing High,Low, Midpoint [Trading Truth]🌍 Trading Truth Sessions
Understand how price behaves across the major global trading sessions without cluttering your chart.
Trading Truth Sessions highlights the Asian, London, and New York sessions while tracking key session and daily price levels, helping you see how market structure develops throughout the trading day.
━━━━━━━━━━━━━━━━━━━━
✨ FEATURES
━━━━━━━━━━━━━━━━━━━━
🌍 Major Trading Sessions
• Asian Session
• London Session
• New York Session
• Customisable session times and timezone
🎨 Session Visualisation
• Highlight each session directly on the chart
• Customisable background colours
• Optional session opening labels
📈 Developing Session High & Low
• Track the developing High and Low of each session in real time
• Session levels update automatically as price develops
• Available individually for Asian, London, and New York sessions
🎯 Session Midpoints
• Automatically calculate the midpoint between each session High and Low
• Follow the developing midpoint during an active session
• Useful for identifying equilibrium within the session range
➡️ Extended Session Levels
• Extend completed Session Highs and Lows across the chart
• Optionally extend Session Midpoints
• Control Asian, London, and New York levels independently
📊 Previous Day High & Low
• Display the previous trading day's High and Low
• Keep important daily reference levels visible directly on your chart
📅 Daily Structure
• Mark the beginning of each trading day
• Display weekday labels such as MON, TUE, WED, THU and FRI
• Automatically supports weekend labels for 7-day markets such as crypto
━━━━━━━━━━━━━━━━━━━━
🎯 PERFECT FOR
━━━━━━━━━━━━━━━━━━━━
✅ Session-Based Trading
✅ Intraday Trading
✅ Price Action Trading
✅ Wyckoff Method
✅ Smart Money Concepts (SMC)
✅ ICT Traders
✅ Liquidity Analysis
✅ Market Structure Analysis
━━━━━━━━━━━━━━━━━━━━
💡 WHY USE IT?
━━━━━━━━━━━━━━━━━━━━
Markets often behave differently as liquidity moves from Asia → London → New York.
Trading Truth Sessions makes these transitions easy to see while keeping important Session Highs, Lows, Midpoints, Previous Day High/Low, and daily structure directly on your chart.
Whether you're studying session ranges, liquidity sweeps, breakouts, or intraday market structure, the indicator provides a clean framework for understanding where price is trading and how each session develops.
⭐ If you find this script useful, please leave a Like 👍 and consider adding it to your Favourites! Indicator

AMD Smart Money Indicator FLOW ALGO Yes, the most suitable primary timeframe for this indicator is **15 minutes**.
**Recommended setup:**
* **1-hour chart:** To determine the main daily trend and market direction.
* **15-minute chart:** To monitor the Asian range, liquidity sweeps, and the AMD structure.
* **5-minute chart:** To identify the entry point and confirm a market structure break after the manipulation phase.
## Usage by timeframe
**5-minute timeframe**
Suitable for scalping and precise entries. It produces earlier signals, but the number of false sweeps and unnecessary signals is higher. It should not be used alone; ideally, signals should align with the direction shown on the 15-minute chart.
**15-minute timeframe**
This is the most balanced option. The Asian range is clearly visible, London manipulation can be monitored effectively, and the number of signals does not become excessive. It is the most suitable timeframe for the indicator’s default use.
**30-minute timeframe**
It produces cleaner but later signals. Since the candles are larger, stop-loss distances may also be wider. It is suitable for traders who prefer fewer intraday trades or a more selective approach.
**1-hour timeframe**
It can be used to determine the main market direction, but it is too slow for direct entries. Short-term liquidity sweeps during the London session may be hidden within a single candle.
## Best practical combination
```text
1-hour chart: Main direction
15-minute chart: AMD setup
5-minute chart: Entry confirmation
```
For example, if the 1-hour market structure is bullish, wait for the Asian session low to be swept on the 15-minute chart. Then, if a bullish market structure break occurs on the 5-minute chart, a long trade may be considered.
If you are using only one timeframe, choose the **15-minute chart**. For fast scalping, use the **5-minute chart**. For fewer and more selective signals, use the **30-minute chart**.
Indicator

Indicator

Indicator

Aegis Trend Filter Engine GOLD 15m Quality Supertrend Strategy Aegis Trend Engine — Quality Supertrend Strategy
A multi-layer trend-following strategy designed to filter noise, confirm market structure, and focus on higher-quality directional moves. THIS STRATEGY IS ONLY DESIGNED FOR GOLD 15M TRADING, AND NOTHING ELSE!
The Aegis Trend Engine is not a standard Supertrend strategy.
While traditional Supertrend systems react to every trend flip, Aegis uses a multi-layer confirmation architecture to determine whether a new directional signal has enough supporting evidence to justify an entry.
At its core, the system combines Supertrend, momentum, trend strength, volatility, external market structure, and higher-timeframe confirmation into a unified quality model.
The objective is simple:
Trade fewer Supertrend reversals — but focus on the ones occurring in stronger market conditions.
The strategy was designed primarily around trend-driven markets where large directional moves can develop after periods of consolidation or structural transition.
How Aegis Works
The Supertrend remains the main directional engine.
However, a Supertrend flip alone is not enough to trigger a trade.
Every potential entry must pass several independent layers of confirmation.
The strategy evaluates the market from four perspectives:
Trend quality → Momentum → Market structure → Higher-timeframe context
Only when these components align does a BUY or SELL setup become valid.
1. Supertrend Direction Engine
The Supertrend acts as the primary trend-state detector.
A bullish reversal creates a potential LONG setup.
A bearish reversal creates a potential SHORT setup.
Default parameters:
Supertrend Factor: 3.0
ATR Length: 10
Unlike a basic Supertrend strategy, Aegis does not automatically trade every reversal.
Instead, the raw signal is passed into the Quality Engine.
2. Eight-Factor Quality Engine
Every potential trade is evaluated using eight independent market characteristics.
Each condition contributes one point to the base score.
The maximum base score is:
8 points
The eight components are:
EMA Trend
The fast EMA must be positioned correctly relative to the slow EMA.
For LONG:
Fast EMA > Slow EMA
For SHORT:
Fast EMA < Slow EMA
This establishes the underlying directional bias.
EMA Separation
A trend can technically be bullish while the two moving averages are almost touching.
That often happens during consolidation.
Aegis therefore measures EMA separation relative to ATR.
This makes the filter volatility-adjusted rather than dependent on fixed price distances.
Greater separation generally represents a more established directional move.
EMA Slope
Trend direction alone is not enough.
The system also checks whether the fast EMA is actually moving in the expected direction.
A rising EMA supports LONG setups.
A falling EMA supports SHORT setups.
This helps reduce signals that occur when the market is technically trending but momentum has already flattened.
ADX Strength
ADX measures the strength of directional movement.
A minimum ADX threshold can be configured.
The default threshold is:
ADX ≥ 20
This helps reduce exposure during weak or directionless environments.
ADX Acceleration
Aegis does not only ask:
Is the trend strong?
It also asks:
Is trend strength increasing?
An accelerating ADX can indicate that directional participation is expanding.
This makes the strategy more sensitive to emerging trend phases rather than only mature trends.
Directional Index Alignment
The strategy compares +DI and -DI.
For LONG setups:
+DI > -DI
For SHORT setups:
-DI > +DI
This provides another independent confirmation that directional pressure agrees with the proposed trade.
RSI Bias
RSI is used as a directional momentum filter rather than as a traditional overbought/oversold indicator.
Default levels:
LONG: RSI ≥ 52
SHORT: RSI ≤ 48
The neutral zone between the two thresholds helps prevent entries when momentum is ambiguous.
Short-Term Momentum
A short Rate of Change measurement evaluates immediate price momentum.
Positive momentum supports LONG setups.
Negative momentum supports SHORT setups.
This final component helps determine whether the current price impulse agrees with the broader setup.
3. Final Quality Score
The eight components create the Base Quality Score.
Example:
6 / 8
does not mean the setup has a 75% probability of winning.
It simply means that six of the eight independent quality conditions currently support the trade.
The strategy then applies the Higher-Timeframe layer before calculating the final score.
The default minimum final score is:
5
Higher values make the strategy more selective.
Lower values allow more trades but may increase exposure to weaker setups.
4. Higher-Timeframe Soft Confirmation
One of the key features of Aegis is its Soft HTF Score.
Many multi-timeframe strategies use higher-timeframe trend direction as a hard filter.
For example:
Only take LONG trades if the 1-hour trend is bullish.
While intuitive, this can eliminate high-quality early reversals.
Aegis uses a different approach.
The higher timeframe modifies the Quality Score rather than completely blocking every countertrend setup.
Default Higher Timeframe:
1 Hour
If the HTF Supertrend agrees with the proposed trade:
+1 point
If the HTF trend is opposite but weak:
0 points
If the HTF trend is strongly opposite:
−1 point
This allows the system to remain selective without becoming excessively rigid.
5. Confirmed Higher-Timeframe Data
The HTF calculations use the previous completed higher-timeframe candle.
This is important because incomplete higher-timeframe candles can change before they close.
Using confirmed HTF information makes historical signals more stable and helps prevent misleading behaviour caused by using unfinished higher-timeframe states.
6. External Market Structure Filter
Aegis also evaluates higher-level price structure independently from the Supertrend.
Confirmed swing highs and lows are detected using pivot logic.
The current default sensitivity is:
3 bars left / 3 bars right
This setting gives the structure engine enough responsiveness to detect meaningful transitions without requiring extremely large swing structures.
A structure break is confirmed using the candle close.
A wick through the level alone is not considered sufficient.
For example:
Price trades above a swing high but closes back below it:
No confirmed bullish break.
Price closes above the swing high:
Bullish structure confirmation.
The same logic applies in reverse for bearish structure.
7. External Structure as a Hard Filter
Unlike the higher-timeframe Supertrend, external structure operates as a hard directional filter.
When external structure is bullish, LONG signals are allowed.
When external structure is bearish, SHORT signals are allowed.
This helps prevent the strategy from repeatedly reacting to small Supertrend fluctuations against the broader structural direction.
It is particularly useful during choppy environments where short-term indicators may change direction several times while the larger market structure remains intact.
8. ATR Volatility Guard
Markets behave very differently under extremely low and extremely high volatility.
The Aegis Trend Engine therefore compares current ATR with its longer-term average.
This creates a normalized volatility ratio.
By default, signals are permitted only inside a configurable volatility range.
This can help avoid:
Extremely quiet markets, where Supertrend signals may repeatedly whipsaw.
And:
Extreme volatility spikes, where price behaviour may become unusually unstable.
Because the measurement is relative to recent ATR, it automatically adapts to different price levels.
9. Optional Squeeze Filter
The system includes an optional volatility compression detector using Bollinger Bands and Keltner Channels.
When enabled, entries can be blocked while the market remains inside a squeeze.
This feature is optional because some strong trends begin directly from compressed conditions.
Users can therefore test whether excluding squeeze environments improves performance for their chosen market and timeframe.
10. Optional Trading Session
A session filter is included for users who want to limit entries to particular trading hours.
The default session template is based on New York time.
The filter can be disabled completely.
This makes the system flexible across assets that behave differently during various market sessions.
11. Exit Philosophy
The system intentionally separates:
Entry quality
from
Trend invalidation.
A trade may require several confirmations to enter.
But once a position exists, a raw opposite Supertrend flip can close the position.
This means the strategy does not require another complete high-quality setup in the opposite direction before protecting an existing trade.
In other words:
Entry should be selective. Exit should remain responsive.
This design attempts to reduce the risk of holding a trade simply because the opposite setup has not yet accumulated enough confirmation points.
12. Clean Stop-Loss Visualization
The strategy uses a deliberately minimal chart design.
Instead of covering the chart with multiple indicator lines, the interface focuses on the information most relevant for decision-making.
During bullish conditions:
Green stop dots appear below price.
During bearish conditions:
Red stop dots appear above price.
These dots represent the current Supertrend protective level.
The purpose is to provide an intuitive visual reference for where trend invalidation is currently located.
13. Dynamic Trend Strength Coloring
The color intensity of the stop dots also provides information.
A lighter shade indicates a weaker or less developed trend environment.
A darker shade indicates stronger trend conditions.
The visual strength model considers information already calculated by the strategy, including:
Quality Score
ADX strength
Higher-timeframe trend strength
The color is purely visual.
It does not modify the strategy's entry or exit logic.
Its purpose is to make the current market condition easier to interpret at a glance.
14. BUY and SELL Labels
Accepted entries are displayed directly on the chart.
Green BUY
A bullish Supertrend reversal has passed:
Quality requirements
Volatility conditions
External structure confirmation
Higher-timeframe scoring
Red SELL
The corresponding bearish conditions have been satisfied.
This means the labels represent filtered strategy signals, not every Supertrend flip.
15. FTMO / OANDA Environment Mode
Aegis includes an environment selector designed to make strategy analysis easier across different execution assumptions.
Users can switch between:
FTMO Mode
and
OANDA Mode
Each environment can have its own modeled values for:
Spread
Slippage
Commission
This allows the strategy's gross historical performance to be compared with a more conservative estimate after modeled execution costs.
The cost values remain user-configurable because actual trading costs vary by instrument, account type, market conditions and broker environment.
Important:
The environment selector does not change the PulseWire market data feed.
For example, when testing OANDA data, the appropriate OANDA chart should also be selected.
16. Strategy Dashboard
The built-in dashboard provides a quick overview of the internal state of the system.
Depending on the version and configuration, it can display information such as:
Current Supertrend direction
External structure
Higher-timeframe direction
HTF strength
Base LONG / SHORT scores
Final LONG / SHORT scores
Raw Supertrend signals
Rejected signals
Accepted setups
Selected execution environment
Modeled trading costs
Modeled net result
The purpose of the dashboard is transparency.
Instead of simply printing a BUY label, users can see why the system currently considers the market strong or weak.
Why Aegis Is Different From a Standard Supertrend
A traditional Supertrend system might behave like this:
Supertrend turns green → BUY
Supertrend turns red → SELL
Aegis instead evaluates:
Supertrend reversal
↓
Trend quality
↓
Momentum
↓
Volatility
↓
External structure
↓
Higher-timeframe context
↓
Final quality threshold
↓
BUY / SELL
The Supertrend provides timing.
The additional layers attempt to provide context.
That distinction is the foundation of the strategy.
Recommended Starting Configuration
The following configuration can be used as a starting point for experimentation:
Supertrend
Factor: 3.0
ATR Length: 10
Quality Score
Minimum Final Score: 5
External Structure
Swing Left: 3
Swing Right: 3
Higher Timeframe
HTF: 1 Hour
HTF ST Factor: 3.0
HTF ATR Length: 10
These are starting values rather than universal optimal settings.
Different instruments and timeframes can behave very differently.
Designed for Trend-Following Markets
Aegis is fundamentally a trend-following system.
Its purpose is not to predict every market top or bottom.
It attempts to participate when several independent measurements indicate that directional conditions are becoming favorable.
The strategy may perform best during periods where:
Price develops sustained directional movement
Momentum and market structure align
Volatility supports expansion
Higher-timeframe conditions provide confirmation
Like most trend-following systems, it can struggle during prolonged sideways and highly mean-reverting environments.
No filter can completely eliminate this behaviour.
Suggested Markets
The framework can be tested on:
Gold / XAUUSD
Equity indices
Forex
Crypto
Other sufficiently liquid markets
However, parameters should not automatically be assumed to transfer from one instrument to another.
Market structure, volatility, spread and trend persistence vary significantly between assets.
Suggested Timeframe
The strategy has been developed primarily with intraday trend-following behaviour in mind.
15-minute charts provide a useful starting point.
Higher and lower timeframes can also be tested, but the behaviour of the system can change substantially.
Always evaluate a sufficiently large sample before drawing conclusions.
Backtesting
Users should evaluate more than Net Profit.
Important metrics include:
Profit Factor
Maximum Drawdown
Expected Payoff
Number of Trades
Average Winner
Average Loser
Risk-adjusted performance
Performance across different market periods
A strategy producing excellent performance during one isolated market regime may behave very differently when conditions change.
For this reason, testing across multiple years and different volatility environments is strongly recommended.
Important Note About Costs
Backtests can look significantly better than real execution.
Real trading may include:
Spread
Commission
Slippage
Latency
Different broker pricing
Unexpected volatility
Order execution differences
The FTMO/OANDA modeled cost section is included to make users more aware of this issue, but any modeled execution environment remains an approximation.
Non-Repainting Philosophy
The strategy is designed around confirmed information wherever higher-timeframe state is involved.
Higher-timeframe Supertrend calculations use completed HTF candles rather than relying on the unfinished current HTF candle.
External structure also requires confirmed pivots and closing-price breaks.
This does not mean that every indicator value is permanently fixed while the current chart candle is still forming.
As with virtually all real-time strategies, values on the active candle can evolve before that candle closes.
For backtesting and signal evaluation, confirmed-bar behaviour should therefore be considered.
Who Is This Strategy For?
Aegis may be useful for traders who prefer:
Trend following
Systematic decision-making
Multi-factor confirmation
Clear directional signals
Minimal chart clutter
Higher-timeframe context
Market structure confirmation
Objective rule-based entries
It is not intended for traders looking for guaranteed reversals, perfect tops and bottoms, or extremely high-frequency signals.
Philosophy Behind the Name
Aegis traditionally represents protection or a shield.
That reflects the philosophy behind the system.
The goal is not to generate the maximum possible number of signals.
The goal is to place several defensive layers between the trader and low-quality market conditions.
Supertrend provides the signal.
The Aegis attempts to decide whether that signal deserves to be traded.
Disclaimer
Aegis Trend Engine is provided for educational, analytical and research purposes only.
It does not constitute financial or investment advice.
Historical and backtested performance does not guarantee future results.
Trading leveraged products can result in substantial losses.
Execution costs, spread, slippage and market conditions can materially affect live results.
Users are responsible for testing the strategy, understanding its logic and determining whether it is suitable for their own trading objectives and risk tolerance. OANDA:XAUUSD Strategy

Sector SuperTrend TrackerSector SuperTrend Tracker — Documentation
Platform: PulseWire (Pine Script v6) Type: Overlay Indicator (dashboard table)
Purpose
Tracks the SuperTrend "Buy" / "Sell" state for a customizable list of sector indices (or any symbols) in a single on-chart table. Designed for a quick, at-a-glance read of market breadth across sectors — which are trending up, which are trending down, how strong the move is, and how long it's lasted.
How It Works
For each symbol in your list, the script runs a standard SuperTrend calculation (via request.security) on the current chart's timeframe and derives three things per sector:
Metric Meaning
Status BUY = price above the SuperTrend line (uptrend). SELL = price below it (downtrend).
% Dist Current price's percentage distance from the SuperTrend line. Positive = bullish cushion; negative = bearish cushion. Larger magnitude = further extended from the line.
Duration Number of consecutive bars the current Status has held, i.e. bars since the last flip.
Table Sorting
Rows are automatically sorted ascending by Status, then by Duration — so all BUY sectors are grouped first (newest flips at the top, most established uptrends lower), followed by all SELL sectors in the same newest-first order. This surfaces sectors that just flipped trend at the top of each group — often the most actionable signals.
A summary row (optional) shows the total count of Buy vs. Sell sectors — a quick breadth gauge.
Inputs
SuperTrend Settings
ATR Period (default 10)
ATR Multiplier (default 3.0)
Symbols
Text box, one symbol per line (e.g. NSE:CNXAUTO). Add or remove lines to track more/fewer sectors — no code changes needed (tested up to ~40 symbols, PulseWire's request.security limit).
Toggle to show/hide the exchange prefix (NSE:) in the table.
Decimal places for the % Dist column.
Table Appearance
Position (9 preset screen locations)
Text size (Tiny → Huge)
Header / Buy / Sell / Cell background colors, text color
Toggle for the summary row
Setup
Paste the script into a new Pine Script (Pine Editor → New → Blank).
Click Add to Chart.
Open indicator Settings to customize symbols, SuperTrend parameters, and table styling.
The table auto-resizes to fit however many symbols you list — just edit the text box, no need to touch the code.
Notes & Limitations
SuperTrend direction convention matches PulseWire's built-in SuperTrend exactly (so values will match if plotted directly on each index's own chart).
Because it recalculates via request.security on the current timeframe, the real-time (currently forming) bar can repaint slightly — normal behavior for a live dashboard, but not intended for strict bar-close backtesting logic.
Duration is measured in bars, not calendar time — 1 bar = 1 unit of whatever timeframe the chart is on (e.g. 1 day on a Daily chart, 1 hour on an Hourly chart).
Table row count is rebuilt every bar update (table.delete + table.new) to match your current symbol list — this is required because Pine tables have a fixed size once created. Indicator

Indicator
