Indicator

Indicator

Dynamic Buying and Selling Power (ADTM)
什么是 ADTM?
ADTM(Dynamic Buying and Selling Power Indicator,动态买卖气指标)是一种经典的动量与反转量化指标。它通过对比开盘价的跃升与下挫,精确量化开盘后多空双方的推进力度(即爆发力),并将这种力量对比归一化在 的固定区间内。
与传统单纯依赖收盘价(Close)的振荡指标不同,ADTM 更加关注 开盘价(Open)相对于前一交易日的位置以及当日极值(High/Low)的延伸空间 ,从而能够更敏锐地捕捉到市场资金的日内异动。
---
为什么使用它?
在波诡云谲的市场中,单纯的均线或 lagging 指标容易产生钝化。ADTM 的优势在于:
无量纲化区间:其输出被严格限制在 之间,避免了绝对数值对趋势研判的干扰。
日内真实动能:通过计算买方动态能量(DTM)和卖方动态能量(DBM),能够更早地在左侧识别出多空力量的衰竭点。
极佳的反转提示:特别适合配合超买超卖边界进行逆势(反转)波段的卡点操作。
---
怎么用?
本指标的使用逻辑非常直观,默认参数为经典配置: N = 23(求和周期),M = 8(信号均线周期)。
左侧买点(超卖区):
当蓝色 ADTM 曲线跌破 -0.5 时,意味着市场短期内空头宣泄极快,进入超卖状态。这通常是极佳的左侧分批布局或观察止跌反转的买点。
左侧风险(超买区):
当蓝色 ADTM 曲线突破 +0.5 时,意味着多头短期冲锋过急,进入超买状态。此时应防范多头力竭回撤,注意锁定利润或降低仓位。
中轴信号:
0轴为多空分界线。当 ADTM 在 0 轴上方运行时,多头占优;反之,空头占优。
均线交叉:
蓝色主线(ADTM)与橙色信号线(MA_ADTM)的黄金交叉与死亡交叉,可作为右侧动能确认的辅助信号。
---
在哪里用?
本指标采用纯粹的价格几何结构算法,具有极强的普适性:
适用市场:广泛适用于 A 股、美股、加密货币、商品期货以及外汇等主流交易市场。
适用周期:在日线(Daily)及以上大周期中表现尤为稳定,能够有效过滤盘整期的日内噪音;在小周期(如 1H/4H)中,配合趋势背景亦可用于日内波段捕捉。
---
原创与致谢声明
指标原创作者: 本指标的核心算法源自经典量化分析领域的经典设计。
脚本重构与发布: 由本人进行 Pine Script v6 的标准化重构、算法优化与开源发布。
风险提示: 任何技术指标都无法百分之百预测市场。建议将 ADTM 融入自身的交易系统中,结合量价结构、关键支撑阻力位以及严谨的资金管理共同使用。
---
What is ADTM?
ADTM (Dynamic Buying and Selling Power Indicator) is a classic momentum and reversal quantification tool. It precisely quantifies the offensive strength (i.e., explosive power) of both bulls and bears after the market opens by comparing the upward jumps and downward drops of the opening price, and normalizes this power comparison within a fixed range of .
Unlike traditional oscillators that rely solely on the closing price (Close), ADTM places greater emphasis on the opening price (Open) relative to the previous trading day's position, as well as the extension space of the day's extremes (High/Low) , enabling it to more keenly capture intraday anomalies in market capital flow.
---
Why Use It?
In volatile and unpredictable markets, simple moving averages or lagging indicators are prone to desensitization (flattening). The advantages of ADTM are:
Dimensionless interval: Its output is strictly confined within , eliminating the interference of absolute price levels on trend assessment.
Intraday true momentum: By calculating Dynamic Buying Momentum (DTM) and Dynamic Selling Momentum (DBM), it can identify exhaustion points of bullish/bearish power earlier on the left side.
Excellent reversal signals: Particularly well-suited for contrarian (reversal) swing trading by utilizing overbought/oversold boundaries.
---
How to Use It?
The usage logic of this indicator is highly intuitive, with default parameters set to the classic configuration: N = 23 (Summation Period), M = 8 (Signal MA Period).
Left-side Buy Signal (Oversold Zone):
When the blue ADTM line drops below -0.5, it indicates that bearish forces have been excessively unleashed in the short term, entering an oversold state. This is typically an excellent opportunity for left-side accumulation or observing for a bullish reversal.
Left-side Risk Signal (Overbought Zone):
When the blue ADTM line rises above +0.5, it indicates that bullish forces have pushed too aggressively in the short term, entering an overbought state. At this point, one should be cautious of bullish exhaustion and pullbacks, and consider locking in profits or reducing positions.
Zero-Line Signal:
The 0.0 axis serves as the bull-bear dividing line. When ADTM is above 0, bulls are in control; when below 0, bears are in control.
Moving Average Crossover:
The golden cross and death cross between the blue main line (ADTM) and the orange signal line (MA_ADTM) can serve as auxiliary signals for right-side momentum confirmation.
---
Where to Use It?
This indicator employs a pure geometric price-structure algorithm, offering strong universality:
Applicable Markets: Widely applicable to A-shares, U.S. stocks, cryptocurrencies, commodity futures, forex, and other major trading markets.
Applicable Timeframes: Performs particularly well on Daily and higher timeframes, effectively filtering out intraday noise during consolidation periods. On lower timeframes (e.g., 1H/4H), it can also be used for intraday swing trading when combined with the broader trend context.
---
Acknowledgments & Originality Statement
Original Author: The core algorithm of this indicator originates from classic designs in the field of quantitative analysis.
Script Re-engineering & Release: This script has been fully refactored, optimized, and released as open-source by myself.
Risk Disclaimer: No technical indicator can predict the market with 100% accuracy. It is strongly recommended to integrate ADTM into your own trading system, combining it with volume-price structure, key support/resistance levels, and strict risk management practices. Indicator

Percentile Context [RC Tools]RC Tools — Percentile Context
─────────────────────────────────────────────────────────────
█ OVERVIEW
Not "is RSI over 70" — "where does today's reading actually sit in its own history?" This tool takes a metric of your choice (realised volatility, RSI, volume, rate of change, or any custom source you plug in) and ranks it as a percentile against its own trailing distribution. It's the statistical primitive underneath most technical analysis, made explicit instead of buried in a fixed threshold.
█ WHAT IT DOES
Plots a 0–100 percentile-rank line for the selected metric, flags "extreme" zones (default: below the 10th percentile or above the 90th), and shows a stats table with the current value, current percentile, all-time min/max seen on the chart, and how many bars it's been since the metric last hit either extreme.
█ THE THEORY BEHIND IT
Fixed thresholds ("RSI > 70 = overbought") assume a metric's meaningful range never changes. It does — across assets, and across time on the same asset. A percentile rank fixes this by asking a relative question instead of an absolute one: given everything this metric has done over its own trailing window, how unusual is today's reading? This is the same idea underneath the Regime Classifier's volatility-state measure, generalised to any metric.
█ HOW IT IS CALCULATED
The selected metric is computed per bar:
• Realised Volatility: stdev(log(close/close ), N)
• RSI: standard Wilder RSI
• Volume: raw bar volume
• Rate of Change %: (close − close ) / close × 100
• Custom Source: whatever series you plug into the source input (e.g. another indicator's plot)
The metric is then percentile-ranked against its own trailing window (default 750 bars ≈ 3 years on daily): what percentage of the last N readings were below today's value. Display values update ONLY on confirmed bar close — nothing here repaints.
█ SETTINGS & CONFIGURATION
• Metric (default Realised Volatility) — what gets ranked
• Custom Source — only used when Metric = Custom Source
• Realised Volatility / RSI / Rate of Change lookbacks (defaults 20 / 14 / 20)
• Percentile Ranking Window (default 750 bars) — longer = more stable, needs more history
• Low / High Extreme Thresholds (default 10 / 90)
• Paint Main Chart Background — off by default to avoid clashing with the Regime Classifier's background if you run both at once
█ HOW TO USE IT
Use it to calibrate how seriously to take a "normal" indicator reading. Example: RSI at 75 means something different on a stock that's rarely above 60 than on one that regularly touches 85 — the percentile rank makes that comparison explicit for the SAME asset over time. Also useful for volatility context ahead of position sizing: current realised vol at the 95th percentile is a different risk environment than the same absolute vol reading at the 40th percentile.
Works on any asset and timeframe with sufficient history for the percentile window.
█ LIMITATIONS
• Percentile rank describes the past relative to itself — it says nothing about direction or what happens next. A metric at its 99th percentile can stay there.
• Needs substantial history for a stable ranking. On short-history assets, treat the percentile as unreliable.
• "Extreme" is relative to the metric's OWN range. A percentile extreme on a low-volatility asset is not directly comparable in absolute terms to one on a high-volatility asset — that's the point of the tool, but it means percentiles aren't comparable across symbols.
• All-time min/max and "bars since" stats are only as long as the chart's available history, not a fixed universal record.
• This script does NOT repaint. Display values update on confirmed bar close only.
█ DISCLAIMER
For educational and informational purposes only. Nothing here is financial advice. Past behaviour of any metric does not indicate future results. Trade at your own risk.
Indicator

Crypto Market RSI Heatmap [BigBeluga]🔵 OVERVIEW
The Crypto Market RSI Heatmap is a comprehensive, institutional-grade sector momentum matrix built for TradingView. It consolidates relative strength metrics for up to 20 cross-sectional crypto assets into a single, highly readable multi-group pane. Instead of forcing you to open dozens of browser tabs or flip back and forth between charts, this system runs concurrent structural background queries to map real-time market overbought expansions and oversold depressions using an advanced, color-gradient visual framework.
🔵 FEATURES
The indicator tracks cross-asset momentum cycles through an isolated data processing engine:
1 — Multi-Asset Matrix Architecture
Modular Asset Grouping: Assets are automatically split into 4 distinct structural sectors (Group A through Group D). Each section handles up to 5 completely customizable tickers, allowing you to organize setups by Layer 1s, DeFi, Memes, or Major pairs.
Independent Timeframe Anchors: Every group has an isolated execution timeframe filter ( Timeframe ). This allows you to monitor short-term scalping momentum in one sector while simultaneously tracking macroscopic daily trend structures in another.
Dynamic Highlight Tracking: The background matrix scans the active workspace. The exact asset loaded on your current open chart is highlighted with a custom accent marker ( Current Chart Asset Highlight ) so you never lose your visual anchor.
2 — Momentum Filters & Statistical Computations
Flexible Core Oscillators: The engine isn't limited to standard RSI calculations. Users can instantly toggle between a classic Relative Strength Index, Money Flow Index (MFI) to capture volume distribution, or a fast-response Stochastic RSI.
Group Average Horizon Lines: Dotted real-time horizontal baselines calculate the mean historical mathematical score of each active group, providing an instant look at overall sector health.
Real-Time Cluster Stats: A live sub-label maps out the active average, minimum, and maximum value points for every cluster directly across the base of the indicator workspace.
// 3-Point Color Gradient Engine & Highlighting Mechanism
color dynamicCoinColor = colorMidYel
if coinRSI >= 50.0
dynamicCoinColor := color.from_gradient(coinRSI, 50.0, 75.0, colorMidYel, colorMaxRed)
else
dynamicCoinColor := color.from_gradient(coinRSI, 25.0, 50.0, colorMaxGrn, colorMidYel)
bool isActiveChartAsset = str.contains(str.split(symbol, ":").last(), syminfo.ticker)
if isActiveChartAsset
dynamicCoinColor := colorActive
🔵 HOW TO USE
Using the system to gauge sector rotation requires a systematic analysis flow:
Evaluating Sector Divergences: Monitor the separate group structures to identify relative market leaders and laggards. When Group A’s average baseline pushes deeply into the upper red expansion zone while Group B remains pinned inside the lower green oversold region, money is explicitly rotating out of one pocket and into the other.
Tracking Active Momentum Continuations: Watch the trailing dashed historical lines to catch velocity expansions. Assets that break heavily out of the neutral 50 level and carry an institutional-grade gradient color shift provide high-probability breakout opportunities.
Isolating Market Anomalies: Use the bottom statistics panel to hunt down structural outliers. If a major sector average is floating heavily at a overbought 75 reading, but an individual coin within that exact cluster is sitting at a depressed 35 minimum level, you have found an inefficiencies setup.
🔵 NOTES
Why this implementation is unique:
It completely replaces standard, bulky multi-pane monitor clusters by arranging up to 20 assets side-by-side using a clean, space-staggered horizontal charting layout.
The dual-layer label framework overlays readable ticker identifiers directly on top of real-time momentum tracking nodes, preserving chart real estate without sacrificing readability.
It bridges standard price-derived momentum structures with user-defined asset lists, creating a bespoke internal crypto index tracking workspace.
Indicator

Composite Reversion OscillatorComposite Reversion Oscillator
A short-term mean-reversion oscillator that blends three different "how stretched is this?" reads into one 0–100 line: how overbought/oversold momentum is, how long the current up/down streak has run, and where the latest return ranks against its own recent history. Each measures a different face of over-extension; together they flag exhaustion more reliably than any one alone.
Why these parts are combined (not a mashup for show). A short momentum oscillator flags overbought/oversold but ignores persistence. A streak read (an oscillator of the consecutive up/down-close count) captures persistence it misses — three green closes isn't one. A return-rank read captures the size of the latest move relative to its own norm, which neither of the others sees. Averaging the three yields a composite that only reaches an extreme when momentum, streak and move-size all agree — far fewer false "oversold" prints.
What's different here. Rather than presenting the composite as a fixed rule, it forward-calibrates whether those agreed extremes actually revert on this symbol, with an out-of-sample split and a multiple-testing check — because mean-reversion edges are regime-dependent and decay, which is exactly where symbol-specific honesty matters most. Signals fire once per excursion (no zone-edge whipsaw).
How it works. Component 1: a short-period momentum oscillator of price. Component 2: the same oscillator applied to the signed consecutive-close streak. Component 3: the percentile rank of the latest return within a recent window. The composite is their average, mapped to a ±100 pane. A long fires on the cross up out of oversold (and locks out until the line recovers to mid); a short mirrors it. Each is labelled by a triple barrier — a profit target and equal stop in ATR units plus a time limit — split into in-sample and recent out-of-sample.
How to use. Read the Verdict (Long/Short/Watch/Wait) and the Conviction, which reads "High" only when that turn type shows a positive edge that survives the test here — otherwise it openly says so. Best used with your own trend and risk plan, not alone. Non-repainting.
Disclaimer: for research and education only. Not financial advice. Trading carries risk of loss; manage your own positions. Indicator

Mean-Deviation Divergence OscillatorMean-Deviation Divergence Oscillator
A bounded oscillator that measures how far the typical price has stretched from its own recent mean, scaled by how much it normally deviates — so a reading tells you "how unusual is this move," not just "how big." That normalization makes its swings comparable across calm and volatile regimes and well suited to divergence. It adds higher-timeframe confirmation and a plain-language forward-calibration layer, so you can see at a glance whether a divergence is corroborated and whether it has actually paid on this symbol.
Why this construction (not a mashup for show). Each part fixes a flaw in naive divergence. Raw distance-from-mean isn't comparable across regimes — dividing by the average absolute deviation (with the conventional 0.015 scaling, chosen so that roughly 70–80% of readings fall within ±100) makes the oscillator regime-comparable, which is the whole reason it's a good divergence base. Higher-timeframe confirmation removes single-timeframe noise. Forward calibration removes blind faith: instead of assuming a divergence "should" reverse price, it measures whether it actually has, with realistic profit/stop outcomes. The normalized oscillator, the divergence engine, the MTF check and the calibration form one coherent tool.
How it works. Oscillator = (typical price − its moving average) ÷ (0.015 × mean absolute deviation), soft-bounded to a clean ±100 pane that auto-fits its own recent magnitude. Divergence is detected from confirmed price pivots versus the oscillator (regular and optional hidden). With MTF confirmation on, a divergence counts only if a same-direction divergence is also present on the chosen higher timeframe. Each signal is then labelled by a triple barrier — a profit target and equal stop in ATR units plus a time limit — split into in-sample and recent out-of-sample, with a confidence interval and a multiple-testing check.
How to use. Read the Verdict row (Bull/Bear divergence confirmed, "unconfirmed," or Wait) and the Conviction row, which reads "High" only when that divergence type shows a positive edge that survives the test on this symbol. A divergence is a reversal warning, not a trend signal — pair it with your own entry trigger and risk plan.
What's original. Higher-timeframe divergence confirmation on a mean-deviation normalized oscillator, the forward triple-barrier calibration with an out-of-sample split, and a conviction read that openly admits when there's no proven edge.
Inputs. Price/High/Low sources (change them for any market), reading mode (Simple/Pro), engine length and deviation scale, divergence and HTF-confirm controls, full calibration settings, and an auto-adapting dashboard legible on dark or light charts. Defaults are tuned for NSE:NIFTY1! intraday.
Honesty & limitations. Edge figures are computed on this chart's own history with overlapping windows and no costs — context, not a guaranteed backtest; past behaviour doesn't predict the future. Divergence is inherently early and can persist before price turns.
Disclaimer: for research and education only. Not financial advice. Trading carries risk of loss; manage your own positions. Indicator

Smoothed Momentum Divergence OscillatorSmoothed Momentum Divergence Oscillator
A bounded momentum oscillator whose momentum is double-smoothed — once on the price change and once on its size — which makes its swings unusually clean and well suited to divergence. It adds higher-timeframe confirmation and a plain-language forward-calibration layer, so you can see at a glance whether a divergence is corroborated and whether it has actually paid on this symbol.
Why this construction (not a mashup for show). Each part removes a weakness of raw divergence. Raw momentum is jagged, so single-pass divergence is noisy — smoothing the price change twice (and dividing by the twice-smoothed size of the change) produces a clean bounded line whose pivots are stable, which is the core reason this construction suits divergence at all. Higher-timeframe confirmation removes single-timeframe noise: a divergence that also shows on a higher timeframe is far less likely to be a fluke. Forward calibration removes blind faith: instead of assuming a divergence "should" reverse price, it measures whether it actually has, with realistic profit/stop outcomes. The smoothed oscillator, the divergence engine, the MTF check and the calibration form one coherent tool.
How it works. Momentum = double-smoothed price change ÷ double-smoothed absolute price change, scaled to a bounded line with a signal average. Divergence is detected from confirmed price pivots versus the oscillator (regular and optional hidden). With MTF confirmation on, a divergence counts only if a same-direction divergence is also present on the chosen higher timeframe. Each signal is then labelled by a triple barrier — a profit target and equal stop in ATR units plus a time limit — split into in-sample and recent out-of-sample, with a confidence interval and a multiple-testing check.
How to use. Read the Verdict row (Bull/Bear divergence confirmed, "unconfirmed," or Wait) and the Conviction row, which reads "High" only when that divergence type shows a positive edge that survives the test on this symbol. A divergence is a reversal warning, not a trend signal — pair it with your own entry trigger and risk plan.
What's original. Higher-timeframe divergence confirmation on a double-smoothed oscillator, the forward triple-barrier calibration with an out-of-sample split, and a conviction read that openly admits when there's no proven edge.
Inputs. Price/High/Low sources (change them for any market), reading mode (Simple/Pro), momentum windows, divergence and HTF-confirm controls, full calibration settings, and an auto-adapting dashboard legible on dark or light charts. Defaults are tuned for NSE:NIFTY1! intraday.
Honesty & limitations. Edge figures are computed on this chart's own history with overlapping windows and no costs — context, not a guaranteed backtest; past behaviour doesn't predict the future. Divergence is inherently early and can persist before price turns.
Disclaimer: for research and education only. Not financial advice. Trading carries risk of loss; manage your own positions. Indicator

Multi-Period Divergence OscillatorMulti-Period Divergence Oscillator
A bounded buying-pressure oscillator built to expose divergences that are corroborated across multiple measurement windows at once — and, optionally, across timeframes — then scores its own divergences forward on your chart in plain language so you can see at a glance whether to act or wait.
Why this construction (not a mashup for show). Single-window oscillators throw frequent, fragile divergences. The fix, by design, is to measure buying pressure over three windows (fast, medium, slow) and weight them into one line, so a divergence only forms when short-, medium- and long-horizon pressure agree. This tool layers two further filters that each remove a class of false signal: higher-timeframe confirmation (a divergence that also shows on a higher timeframe is far less likely to be noise), and forward calibration (instead of assuming a divergence "should" reverse price, it measures whether it actually has, on this symbol, with realistic profit/stop outcomes). The oscillator, the divergence engine, the MTF check and the calibration form one coherent tool — none alone is sufficient, which is why they're combined.
How it works. Buying pressure = close − min(low, prior close); true range = max(high, prior close) − min(low, prior close). The oscillator weights their sums over three windows (default 7/14/28). Divergence is detected from confirmed price pivots versus the oscillator (regular and optional hidden). With HTF confirmation on, a signal counts only if a same-direction divergence is also present on the chosen higher timeframe. Each signal is then labelled by a triple barrier — a profit target and equal stop in ATR units plus a time limit — split into in-sample and recent out-of-sample, with a confidence interval and a multiple-testing check.
How to use. Read the Verdict row (Bull/Bear divergence confirmed, "unconfirmed," or Wait) and the Conviction row, which reads "High" only when that divergence type shows a positive edge that survives the test on this symbol. A divergence is a reversal warning, not a trend signal — pair it with your own entry trigger and risk plan. Best used alongside structure, not alone.
What's original. Higher-timeframe divergence confirmation on a multi-window oscillator, the forward triple-barrier calibration with an out-of-sample split, and a conviction read that openly admits when there's no proven edge.
Inputs. High/Low/Close sources (change them for any market), reading mode (Simple/Pro), oscillator windows, divergence and HTF-confirm controls, full calibration settings, and an auto-adapting dashboard legible on dark or light charts. Defaults are tuned for NSE:NIFTY1! intraday.
Honesty & limitations. Edge figures are computed on this chart's own history with overlapping windows and no costs — context, not a guaranteed backtest; past behaviour doesn't predict the future. Divergence is inherently early and can persist before price turns.
Disclaimer: for research and education only. Not financial advice. Trading carries risk of loss; manage your own positions. Indicator

Sharp Reversal OscillatorSharp Reversal Oscillator
A reversal-timing oscillator that re-shapes price into a near-Gaussian form so turning points snap into sharp, clear extremes instead of rounded, ambiguous ones — then scores its own turns forward on your chart, in plain language, so you can see at a glance whether to act or wait.
Why these parts are combined (not a mashup for show). Three steps are stacked, each fixing the previous one's flaw. Raw price excursions are fat-tailed, so it's unclear where an extreme really is; a distribution-normalizing transform stretches values near the edges, turning a compressed extreme into a clear spike. But that transform is easily biased by trend — in a strong move it pins to one side — so the input is first band-pass cleaned (slow trend and fastest noise removed), leaving the tradable swing it should sharpen. The normalization window is then set from the market's measured dominant cycle rather than a fixed guess, so it stays tuned as cycles stretch and compress. The three only work as one tool.
How it works. Band-pass clean → locate price within its recent range, scaled to (−1, 1) → distribution-normalizing transform, smoothed → signal when the line crosses its one-bar trigger from an extreme. The window optionally follows a dominant cycle measured by autocorrelation of the band-passed price. Each signal is then labelled by a triple barrier — a profit target and an equal stop in ATR units, plus a time limit — so a "win" means the target was hit before the stop. Results split into in-sample and recent out-of-sample, with a confidence interval and a multiple-testing check.
How to use. Read the Verdict row (Long/Short signal, Watch, or Wait). Check Conviction — it reads "High" only when that signal type shows a positive edge that survives the statistical test on this symbol; otherwise treat it as context. Green wave above zero is up-pressure, red below is down; shaded bands are extremes; the faint line is the trigger. Best used with your own trend and risk plan, not alone.
What's original. The band-pass-cleaned input, the self-tuning window, the forward triple-barrier calibration with an out-of-sample split, and a conviction read that openly admits when there's no proven edge — instead of presenting every signal as equally reliable.
Inputs. Price source (change it for any market), reading mode (Simple/Pro), engine and self-tuning controls, extreme level, full calibration settings, and an auto-adapting dashboard legible on dark or light charts. Defaults are tuned for NSE:NIFTY1! intraday.
Honesty & limitations. Edge figures are computed on this chart's own history with overlapping windows and no costs — context, not a guaranteed backtest; past behaviour doesn't predict the future, and the cycle estimate lags at regime shifts.
Disclaimer: for research and education only. Not financial advice. Trading carries risk of loss; manage your own positions. Indicator

Low-Lag Strength OscillatorLow-Lag Strength Oscillator
What this script does
LLSO is a bounded 0–100 momentum oscillator in the relative-strength family. It measures the balance between up-strength and down-strength in price, but smooths each side with a low-lag two-pole low-pass filter instead of the rolling/exponential average a classic strength index uses. The result keeps the familiar overbought/oversold behaviour and the 50 balance line, but turns several bars earlier — better measurement of the same momentum, not a different concept bolted on.
Why these components are combined (mashup justification)
This is not several indicators shown side by side. There is exactly one plotted value — the smoothed strength oscillator. Everything else is a decision-support layer built on that single value, and each layer answers one specific question about the same oscillator:
The low-lag smoother is the core. A short EMA reduces lag but overshoots and adds noise; a long average is smooth but late. The two-pole low-pass filter removes lag in the pass band without the overshoot, so the up/down strength legs are both responsive and stable. This is what makes the oscillator usable for early reads.
Divergence compares price pivots to oscillator pivots. Because the oscillator is a strength reading, a higher price high against a lower oscillator high is fading strength — information that the line alone doesn't make explicit. Regular and hidden divergences are detected from confirmed pivots only.
Reversal dots mark the moment the line turns back from inside the overbought/oversold bands — a context cue about where in the range the turn happened, which a bare line forces you to eyeball.
The calibration harness is the reason the rest is trustworthy. It logs every signal the oscillator produces and, a fixed horizon later, checks whether price actually moved at least k×ATR in the signal's direction — then reports Hit %, the unconditional Base %, and the Edge (Hit − Base). It scores the oscillator's own output against reality.
These belong in one script because they all operate on, and report about, the same single oscillator. Splitting them into separate studies would mean re-deriving the oscillator three times and losing the shared pivot/threshold context that ties them together.
What makes it original
Two things. First, the strength index is rebuilt on a low-lag low-pass smoother rather than the conventional average, which changes its timing without changing its bounded, mean-reverting character. Second — and more importantly — most oscillators emit signals and never tell you whether those signals lead anywhere. LLSO carries a built-in honesty layer: the calibration harness shows the realized hit rate of its own signals against the base rate on your instrument and timeframe. If the Edge sits near zero, the script says so plainly. That measurement-first design, not the oscillator alone, is the contribution.
How to use it
Add to a chart. Defaults target intraday index futures (e.g. NSE NIFTY); for other instruments simply change the chart, or set the Price / High / Low source inputs (group 01) to retarget the engine — you can even feed it another indicator's plot.
Read the line: green above the 50 balance line = net up-strength, red below = net down-strength; the gradient fill and color saturation scale with conviction (distance from 50). The dashed bands mark overbought/oversold.
Use divergences as early warning of fading strength and reversal dots as in-band turn cues — points to investigate, not automatic trades.
Read the Edge row in the panel before trusting signals. A positive Edge means the signal preceded a forward move more often than chance on this symbol/timeframe; near zero means it didn't. The panel shows "warming" until enough samples accumulate.
The smoother period, OB/OS levels, divergence pivots, and the calibration horizon/threshold are all configurable.
Limitations
Statistics are in-sample, close-to-close, without costs — a study aid, not a backtest. They describe past behaviour on loaded history, not a forward guarantee.
Lower lag is better measurement, not an edge; an earlier turn is still wrong if the turn leads nowhere.
Divergence prints a few bars after the pivot it confirms — that lag is inherent to honest, non-repainting pivot detection.
This is an analytical oscillator. It issues no automated buy/sell instructions and is not a strategy.
Concept credit
The low-lag two-pole low-pass smoother and the strength-index reformulation are based on the published work of John F. Ehlers (Technical Analysis of Stocks & Commodities, 2024).
The Relative Strength Index that this oscillator generalizes is by J. Welles Wilder (New Concepts in Technical Trading Systems, 1978).
The implementation, the calibration harness, the divergence/reversal layers and the packaging are original.
Disclaimer
For research and educational purposes only. This script is not financial advice, not a recommendation, and not a guarantee of future results. Indicators describe price behaviour; they do not predict the future. Trading carries risk of loss. Test on out-of-sample data and make your own decisions. The author accepts no liability for any use of this script. Indicator

Reversion Setup - Bollinger Bands + RSI Live Dashboard📊 REVERSION SETUP — Bollinger Bands + Live RSI Dashboard
A focused mean-reversion tool combining Bollinger Bands with a real-time
RSI dashboard — built to spot potential reversal zones without cluttering
your chart or burning extra indicator slots.
✅ Bollinger Bands — fully configurable (period, deviation, source, color)
✅ Live RSI Dashboard — current RSI value, overbought/oversold levels,
and real-time alert status, shown in a clean table instead of a
separate pane
🎯 WHY THIS COMBO
Bollinger Bands highlight when price stretches to a statistical extreme,
while the RSI dashboard confirms whether momentum actually backs up that
move. When price tags a band AND RSI flags overbought/oversold at the
same time, that's your reversion signal — two confirmations, one chart.
🔧 FULLY CONFIGURABLE
— Adjust Bollinger period, deviation, source, and color
— Set your own RSI period and overbought/oversold levels
— Adjust dashboard text size
💡 HOW IT WORKS
The RSI dashboard updates live as new candles form, showing:
— Current RSI value
— Upper/Lower band levels
— Alert status (Overbought ↑ / Oversold ↓ / Neutral →)
🔗 PAIRS WELL WITH
Check out my Trend Setup (EMA 50/100/200 + RSI Dashboard) for the
trend-following counterpart to this mean-reversion tool.
💬 Suggestions for the next setup? Drop a comment below — more tools
coming based on community feedback.
If this helped your charts, a like goes a long way 🙏 Indicator

Trend Setup - 3 EMA + RSI Dashboard📊 TREND SETUP — EMAs + Live RSI Dashboard
A clean, all-in-one trend tool combining the 3 most-used EMAs with a
real-time RSI dashboard — no need to load multiple indicators separately.
✅ EMA 50 / 100 / 200 — fully configurable (period, source, color, on/off)
✅ Live RSI Dashboard — shows current RSI value, overbought/oversold
levels, and a real-time status alert, displayed in a sleek table
instead of a cluttered separate pane
🎯 WHY THIS COMBO
EMAs give you the big-picture trend direction, while the RSI dashboard
tells you instantly if price is stretched (overbought/oversold) —
without needing a second indicator slot, perfect if you're on a free
TradingView plan and want to save your indicator limit.
🔧 FULLY CONFIGURABLE
— Toggle each EMA on/off independently
— Set your own RSI period and overbought/oversold levels
— Adjust dashboard text size
💡 HOW IT WORKS
The RSI dashboard updates live as new candles form, showing:
— Current RSI value
— Upper/Lower band levels
— Alert status (Overbought ↑ / Oversold ↓ / Neutral →)
💬 Got a suggestion for the next version? Drop a comment below —
I'm actively building more setups based on community feedback.
If this helped your charts, a like goes a long way 🙏 Indicator

MTF Stoch RSI Snapshot 9 Timeframe OverviewThis indicator provides a compact multi-timeframe view of the Stochastic RSI across 9 different timeframes:
1m, 5m, 15m, 30m, 45m, 1h, 2h, 6h, 1D
Instead of switching between charts, the script displays all selected timeframes side by side in a clean column layout. Each column represents one timeframe and shows the current position of the two Stoch RSI lines, making it easier to quickly understand momentum conditions across multiple market structures.
Main Features
Multi-timeframe Stoch RSI visualization
9 fixed timeframe columns
K and D lines shown inside each column
Gradient background based on oscillator level
Quick visual identification of overbought and oversold areas
20 / 50 / 80 reference levels
Optional numeric K and D values
Compact layout designed for fast market reading
How to Read It
Each column represents a timeframe.
The vertical position of the lines shows where the Stoch RSI currently is:
Near the bottom: oversold / weak momentum area
Around the middle: neutral zone
Near the top: overbought / strong momentum area
The background gradient helps identify the oscillator zone immediately, while the two plotted lines allow you to see the current relationship between K and D.
This is useful when you want to compare short-term and higher-timeframe momentum at a glance.
Typical Use Cases
Scalping confirmation
Multi-timeframe momentum alignment
Spotting overbought / oversold conditions across timeframes
Filtering entries based on higher-timeframe context
Quickly checking whether short-term movement agrees with broader market structure
Notes
This indicator does not generate buy or sell signals by itself.
It is intended as a visual decision-support tool and should be used together with price action, trend analysis, support and resistance, and proper risk management.
Disclaimer
This script is for educational and informational purposes only.
It is not financial advice. Always test any trading approach carefully before using it in live markets. Indicator

Exhaustion Zones (Momentum Episodes) [HermesCore]WHAT THIS INDICATOR DOES
Exhaustion Zones (Momentum Episodes) watches RSI, the Relative Strength Index, a standard momentum gauge that runs from 0 to 100. When it closes beyond a threshold (70 high, 30 low by default), a saturation episode begins. While the episode lasts I track two things: the most extreme price it prints, and the highest or lowest RSI it reaches. The moment RSI closes back inside, the episode is over and one event fires.
That event leaves a zone on the chart. Not an arbitrary band: the zone is the wick of the bar that printed the episode extreme. That wick is the exact range where the last buyers or sellers ran out. The question this script keeps asking is simple: where did price stand when the fuel ran out, and does that place get respected afterwards?
Every zone gets a 0 to 6 quality score at birth, and from then on the script counts what happens: held or broken, per grade, with sample sizes shown.
WHY IT IS DIFFERENT
Most overbought and oversold tools mark the moment and move on. An arrow prints at RSI 70 and nobody ever counts what happened next. My rules are:
- An episode is one event, not a stream of signals. RSI can sit above 70 for thirty bars; that is still one episode, one zone. The state machine needs no cooldown tricks because episodes are naturally separate: RSI has to leave and come back.
- The zone is price structure, not decoration. It spans the wick of the episode-extreme bar, padded to a minimum thickness when the wick is thin, rejected entirely when a single mega-candle would paint an unusable block (the dashboard counts those rejections too).
- The score never changes after birth. It is built only from facts known the moment the episode ends.
- Every zone resolves and every resolution is counted. Held versus broken, per grade, with n. If grade A zones hold no better than grade C zones on your chart, the dashboard will tell you so.
- Everything updates on confirmed bars only. An episode cannot start, peak or end within a forming candle. No intrabar flicker, no repainting events.
HOW TO READ THE CHART
- Zone box: red above price (exhaustion high, resistance), green below (exhaustion low, support). A label like "Exh High A S:5 RSI:77" reads: exhaustion high, grade A, score 5, the episode peaked at RSI 77.
- The saturated inner band at the extreme side is the core: the final half ATR (Average True Range, a standard volatility measure) of the wick, where the move was most exhausted. The fainter remainder is the rest of the wick.
- The vivid one-candle stripe inside the zone marks the exact bar that printed the extreme.
- Gold color with a soft glow: the grade is A or S. Those are the premium zones.
- Thicker border: the zone was touched, price came back to it at least once.
- Faint grey boxes without text: resolved history. A slightly stronger outline means the zone held, a weaker one means it broke. History whispers, it does not shout.
- Zones farther than 6 ATR from price render dimmed, so your eye goes to what is in play.
THE SCORE
- Saturation depth: peak RSI reached 80 or beyond (20 or below for lows), +2. Just past the threshold, +1.
- Climax volume: the extreme bar traded above its own volume average, +1.
- Fast fade: RSI closed back inside within 5 bars of its peak, a fast rejection, +1.
- Episode divergence: price printed a more extreme level than the previous episode while peak RSI stayed less extreme, +1. Compared episode to episode, and stated as such.
- Wick quality: the rejection wick of the extreme bar is at least 45 percent of its body, +1.
Grades: S (6), A (5), B (4), C (3), D (0 to 2). The strength filter is off by default: episodes are scarce enough to show them all and let the grade speak. Turn it on if you only want premium zones.
HELD VERSUS BROKEN
A zone is broken when price closes beyond its far edge. A zone is held when it survives to its maximum age (400 bars by default) without that happening. Every resolved zone lands in the per-grade statistics: "18% held 32 / 149 (n=181)" reads as 32 held, 149 broken, 181 judged in total.
Be aware what the definition means: held is a strict standard. Surviving 400 bars unbroken is a long time, so the absolute percentages run low by design. What matters is the ordering. On my charts S grades hold clearly better than A and B, which hold better than C. That ordering is the evidence that the score measures something real, and your own dashboard will show you whether it does on your market.
DASHBOARD
RSI now with its state. Episode now: when a saturation episode is live you see its running extreme and peak RSI update bar by bar, so you watch the zone being born. Active zone count per side. Five grade rows with held percentage, raw counts and n. Lifetime events per side plus total touches. Guard rejects, the oversized zones that were refused. Heat bars are proportional.
HOW I USE IT
This script is deliberately timeframe agnostic: an RSI episode means the same thing on every chart, only the rhythm changes.
- 4H is where I read regime. Episodes are scarce there and the zones land on swing highs and lows you would have marked by hand. An A or S exhaustion high on 4H is a place I expect sellers to defend.
- 1H is the middle ground: more events, still clean structure.
- 15m is the execution and evidence frame. Episodes are frequent, so the statistics build n fast, and I use the zones as intraday reaction levels. Expect more mediocre grades here; the dashboard shows you exactly how mediocre.
My core read is the combination of grade and first touch. A fresh A or S zone that gets its first touch is the highest quality moment this script produces: price returning to the exact range where the last push died, while the statistics tell me how often that place held in the past. A D zone breaking is not a surprise, it is the base rate.
SETTINGS THAT MATTER
- Saturation Level High and Low (70/30): the episode thresholds. Widen to 75/25 for fewer, heavier episodes.
- Deep Saturation Level (80): the line between +1 and +2 for depth.
- Zone Max Age (400 bars): the held standard. Lower it and held becomes easier to earn; the statistics will recalculate accordingly. Neither setting is the truth, they answer different questions.
- Min Zone Thickness (0.25 ATR) and Max Zone Height (3.0 ATR): the zone sanity guards.
- Broken Zones Become: greyed history or deleted. Your choice of how loud the past is.
- Show Exhaustion Core, Highlight Extreme Candle, Focus Fade: the visual layers, all styling only, all on by default.
ALERTS
New Exhaustion High Zone, New Exhaustion Low Zone, Exhaustion High First Touch, Exhaustion Low First Touch, Exhaustion Zone Broken, New A/S Exhaustion Zone. Touch alerts fire on the first touch only.
CALCULATION DETAILS
- All state changes happen on confirmed bars. Episodes start, extend and end on closes only.
- RSI length 14 on close by default. The episode tracks the running price extreme and RSI peak; both freeze the moment the episode ends.
- The zone spans from the episode extreme to the body edge of the extreme bar, padded to the minimum thickness, rejected above the height cap.
- Divergence needs a previous episode on the same side to compare against, so the first episode per side can never score that point.
- The statistics are computed from the bars your chart loads, so they differ per timeframe and per symbol. Neither is wrong, they measure different samples.
HONEST LIMITATIONS
- The statistics describe the past. They tell you how often these zones held on the loaded history, not what the next one will do.
- Held is defined as surviving the maximum age. That is a strict standard and it keeps the absolute percentages modest. Read the ordering between grades, not the raw numbers, and recalibrate the age to your own horizon.
- Scores on a fresh chart need history: volume averages and the previous episode for divergence take time to fill in.
- RSI is calculated on the chart's candles. On Heikin Ashi, Renko or other synthetic chart types the closes are not real prices and every result is distorted. Use standard candles.
- A zone is a place where exhaustion happened, not a guarantee of reversal. Strong trends break exhaustion zones routinely; that is exactly what the broken counts are there to show you.
ORIGINALITY
Overbought and oversold are as old as RSI itself. The episode state machine, the wick-anchored zone construction, the 0 to 6 scoring, the held versus broken accounting per grade and the visual language are my own work, built from scratch in Pine v6. Every number on the dashboard is recomputable from the rules in this description.
Questions and suggestions are welcome in the comments. Enjoy.
Indicator

Indicator

Peak Decoder v1.0Kurzbeschreibung:
Ein hochentwickelter, strukturbasierter Oszillator, der die relative Position des Preises innerhalb seiner aktuellen Handelsspanne entschlüsselt.
Das Tool identifiziert vollautomatisch die mathematischen und visuellen Scheitelpunkte (Peaks & Troughs) in den Extremzonen und filtert kurzfristiges Marktrauschen sowie Fehlausbrüche effektiv heraus.
Hauptfunktionen & Funktionsweise:Drei integrierte Sensitivitäts-Modi:
Über das Einstellungsmenü kann die Reaktivität des Algorithmus fliegend gewechselt werden:
Aggressiv: Extrem schnell, optimiert für das Scalping in kleinsten Zeiteinheiten.
Normal: Die ausgewogene Standard-Einstellung für das klassische Daytrading.
Passiv: Filtert starkes Rauschen heraus, ideal für die übergeordnete Trendbestimmung (HTF).
Intelligenter Bounce- & Wellenfilter: Der Indikator speichert Ausbrüche in den Extremzonen im Zwischenspeicher. Er wartet geduldig, bis eine Bewegung endgültig abgeschlossen ist. Entstehen tiefere Täler oder höhere Hochs innerhalb derselben Phase, wandert das Signal automatisch mit.
Striktes Wechselsystem: Die Logik erzwingt ein sauberes, alternierendes Signalmuster (Top ➔ Bottom ➔ Top). Dadurch werden mehrfache Fehlsignale auf derselben Seite in volatilen Seitwärtsphasen komplett eliminiert.
Präzise visuelle Signale: Bestätigte Wendepunkte werden mit dezenten Kreisen direkt auf der Wellenspitze markiert. Zur besseren Übersicht wird ein fetter Richtungspfeil horizontal (auf 3 Uhr) daneben platziert.
Anwendung im Trading:Der Oszillator dient als hervorragender Filter zur Bestimmung von Premium- (Überkauft) und Discount-Zonen (Überverkauft) im Rahmen von Smart Money Concepts (SMC) oder klassischen Marktstruktur-Strategien.
Rot (Oben): Potenzielle Erschöpfung der Käufer, Vorbereitung für Short-Setups.
Grün (Unten): Potenzielle Erschöpfung der Verkäufer, Vorbereitung für Long-Setups.
Enthält eine voll integrierte Alarm-Schnittstelle (alert()), die pro Bar-Close einmalig auslöst, sobald ein Peak final bestätigt wurde. Indicator

Indicator

Artemis Adaptive RSI🟦 Artemis Adaptive RSI is a Pine v6 self-tuning RSI workbench. Instead of shipping with a fixed period and fixed thresholds — and forcing the trader to babysit the inputs across regimes (14 / 70 / 30 on stocks, 7 / 80 / 20 on crypto, 21 / 60 / 40 in trends) — a 60-candidate optimisation grid scores Supersmoother-filtered RSI variants against their own forward-return performance on a rolling window, then picks the variant whose threshold trips deliver the cleanest mean-reversion edge on the current market. The active period, smoothing, and OB / OS thresholds update online, and a five-state regime label tells you why the optimiser chose what it chose.
The indicator integrates seven analytical layers — Supersmoother-filtered RSI core, online candidate optimiser, hysteresis-locked regime classifier, Stochastic-Extreme-style multi-band zone visual, pivot-based Regular + Hidden divergence detection with a Smart AI Filter, adaptive trigger markers, theme-adaptive bar painter, and a PRO 8-row dashboard — each operating independently and rendered on a single, clean oscillator panel.
🟦 CREDITS & ATTRIBUTION
The adaptive optimisation CORE — Supersmoother-filtered RSI fleet, rolling-window incremental scorer, champion selection with hysteresis, and the five-state regime classifier — is derived from the open-source work of **GoodBadBitcoin** and published under the same MPL-2.0 license. Full respect to the original author for the design and the open release; this project would not exist without that groundwork.
- Source script — [Adaptive Modern RSI ]()
- Original author — (www.tradingview.com)
Everything else — the Stochastic-Extreme-style multi-band zone UI, the twelve-theme palette system, the pivot-based divergence engine, the Smart AI Filter, the PRO dashboard, the hover-tooltipped regime badge, the theme-aware bar painter, and the curated nine-channel alert pack — is original work added on top.
🟦 HOW THE CORE ENGINE WORKS
**Supersmoother**
Each bar, the per-bar close change is split into two streams — positive (gains) and negative (losses) — and each stream is fed through an Ehlers two-pole Butterworth low-pass filter. The Supersmoother removes high-frequency noise without piling on the phase lag that naive EMA / RMA pre-smoothing chains accumulate. The filtered gain / loss streams then feed the classical Wilder RSI ratio:
rsi = 100 − 100 / (1 + smoothedGains / smoothedLosses)
**Candidate Fleet**
15 RSI variants are precomputed in parallel — every combination of:
| Axis | Values |
|---|---|
| RSI length | 7 / 10 / 14 / 21 / 28 |
| Supersmoother smoothing | 6 / 10 / 16 |
Combined with 4 threshold tiers (15-85 / 20-80 / 25-75 / 30-70), this gives the 60-slot fleet the optimiser grades against.
**Online Optimiser (Rolling-Edge Scorer)**
Every bar, each of the 60 slots is evaluated:
1. **Trigger detection** — for the slot's threshold pair, did the bar produce an OS-entry (RSI crossed down through OS) or an OB-exit (RSI crossed back down through OB)?
2. **Forward-return scoring** — if a trigger fired, score it by `close / close − 1` (signed by trigger direction).
3. **Rolling bookkeeping** — each slot maintains its own running mean over a sliding `scoreWindow`-bar window. Returns enter on add, exit on subtract, mean recomputed in O(1) per slot per bar — no rescans, no naive sum-of-products drift.
After every bar's update, the slot with the highest mean return wins — subject to two gates:
- **Min Triggers per Candidate** — under-sampled slots are disqualified
- **Switch Margin (%)** — a new champion must beat the current incumbent by this hysteresis margin before it actually takes over
This protects against bar-by-bar leadership flapping when two candidates trade marginal scores.
**Regime Classifier**
The crowned champion's shape (length-index, smoothing-index, level-index, mean-return) is read each bar and the market is tagged as one of five phases:
| Glyph | Phase | Meaning |
|---|---|---|
| ◐ | Adapting | Cold start — optimiser not yet armed (default RSI in use) |
| ✸ | Noisy | Score collapsed, no exploitable edge — sit out |
| ➜ | Trending | Long period + relaxed thresholds — trend dominates, avoid OB/OS reversals |
| ▣ | Range | Short period + strict thresholds — RSI's sweet spot, triggers reliable |
| ⊠ | Calm | Middling parameters — mild swings, use as light confluence |
The raw tag stream is then locked through a two-stage hysteresis machine: the displayed phase only updates after the underlying classification holds for `Regime Confirmation Bars` in a row. This keeps the floating badge from twitching on every minor optimiser jitter.
🟦 MULTI-BAND ZONE UI
A Stochastic-Extreme-style six-band visual at 100 / 80 / 70 / 50 / 30 / 20 / 0. The active OB / OS thresholds overlay as steplines that move as the optimiser updates. Zone fills key off the *adaptive* thresholds so the visual escalation tracks the actual signal logic, not a fixed 70 / 30 line.
The fills are tiered — when the RSI line plus the live champion's mean-return both confirm a zone state, the fill intensifies; otherwise the band shows a lighter tint. The 40 / 60 reference dotted lines and the 50 zero line are decorative — they are NOT the triggers.
**RSI line colour**
| Zone | Colour |
|---|---|
| Above 60 | theme-bull (price-strength bias) |
| Between 40 and 60 | neutral |
| Below 40 | theme-bear (price-weakness bias) |
These 40 / 60 bands are FIXED — they are NOT the adaptive OS / OB. The adaptive thresholds drive the triggers; the 40 / 60 bands just colour the RSI line for at-a-glance bias reading.
🟦 TRIGGER MARKERS
Triangle markers fire at the bar of OS entry / OB exit on the *adaptive* thresholds — the events the optimiser is actually scoring:
- ▲ **OS Entry Trigger** — RSI just crossed down through the adaptive OS threshold (mean-reversion long opportunity)
- ▼ **OB Exit Trigger** — RSI just crossed back down through the adaptive OB threshold from above (rejection / short opportunity)
Markers use `location.absolute` with fixed Y coordinates (10 / 90) so they stay glued to the same visual spot every bar — no drift between candles, no shift when zone fills update. Each visible triangle is paired with an invisible `label.style_circle` carrying a hover tooltip with live RSI value, active threshold, active period, and active smoothing — `plotshape()` does not support tooltips natively, so the dual-track rendering is required for hover content.
🟦 DIVERGENCE DETECTION
Pivot-based detection for the four classical divergence flavours:
| Type | Price | RSI | Signal |
|---|---|---|---|
| Regular Bull (D▲) | Lower Low | Higher Low | Potential reversal up |
| Regular Bear (D▼) | Higher High | Lower High | Potential reversal down |
| Hidden Bull (H▲) | Higher Low | Lower Low | Uptrend continuation |
| Hidden Bear (H▼) | Lower High | Higher High | Downtrend continuation |
Pivots are sampled on raw price (high / low) using `Pivot Arm` bars on each side (symmetric). Each pivot bar's RSI value is read **dynamically from the current active RSI series** via bar-index lookup — so when the optimiser switches champions between pivots, the comparison stays internally consistent (both endpoints come from the SAME series). This is a subtle but critical fix vs. naive divergence ports.
Regular Divergence labels (D▲ / D▼) use bracketed glyphs with solid styling — these are the reversal signals.
Hidden Divergence labels (H▲ / H▼) use the same bracket scheme — these are the continuation signals.
Each label hovers a tooltip with the price change, RSI change, and the pivot bar distance.
**Smart AI Filter**
An optional pre-filter that rejects low-quality divergences before they render. Three independent gates:
1. **Min RSI Swing** — minimum RSI difference between the two pivots (default: 5 points). Drops noise-level differences where RSI barely moved between pivots.
2. **Min Price Swing (%)** — minimum price swing between pivots as a percentage of the recent (80 bars) price range (default: 0.3%). Drops divergences where price barely moved relative to recent volatility.
3. **Zone Confirmation** — RSI at the current pivot must sit in the matching adaptive reversion half:
- Bullish divergence → RSI ≤ midpoint(liveOs, 50) (moderate-to-deep oversold)
- Bearish divergence → RSI ≥ midpoint(50, liveOb) (moderate-to-deep overbought)
The zone gate is adaptive — it tightens or loosens as the optimiser updates the live OS / OB thresholds. This encodes the classical "best divergences form at extremes" rule using the live adaptive thresholds, not a fixed 30 / 70.
When the master toggle is OFF (default), all detected divergences render. When ON, only divergences that clear all three gates survive. The filter applies identically to both chart rendering and alert conditions — no mismatch between visual and alert signals.
🟦 REGIME BADGE
A floating label pinned to the LATEST bar, extending rightward into the chart's right-margin / future area. The `label.style_label_left` style places the arrow tip on the LEFT of the box so it visually "points back" to the active RSI data without overlapping the oscillator line.
The badge shows:
- **Glyph + phase name** (e.g. `▣ Range`)
- **Bars stable** (how long the current phase has held)
- **Action note** (e.g. "RSI's sweet spot — triggers work well")
The background colour pulls from the theme palette — Range = theme-bull tint, Trending = theme-bear tint, Adapting / Noisy = theme-neutral tint, Calm = theme-signal tint — so the badge meaning is reinforced by the palette consistency.
**Hover tooltip**
Hovering the badge surfaces a comprehensive phase legend explaining all five glyphs, what each means, what action to take in each, and how to read the "bars stable" counter.
**Position**
User-selectable: Top (y = 80, upper third), Middle (y = 50, centre, default), Bottom (y = 20, lower third). The Y resolver maps the dropdown onto fixed pane-fraction coordinates so the badge stays parked at the same visual spot regardless of RSI value.
🟦 BAR COLORING
Two mutually exclusive modes apply a state-driven colour to every price bar on the chart:
| Mode | Behavior |
|---|---|
| None | Leave bars untouched (default) |
| RSI Zone | Theme-bear when RSI in OB zone, theme-bull when in OS zone, theme-neutral otherwise |
Uses the *adaptive* OB / OS thresholds, not fixed 30 / 70. The bar painter pulls directly from the active threshold state — when the optimiser switches candidates, the bar colour rule updates accordingly with no lag.
🟦 DASHBOARD
A compact 2-column, 8-row PRO data panel renders on the last bar when enabled. Every value derives from variables already computed upstream, so the dashboard adds zero overhead until the final bar.
| Row | Left | Right |
|---|---|---|
| Header | Artemis A-RSI | ▲ OB / ▼ OS / ■ Neutral (current bias) |
| Phase | Phase | ◐ ✸ ➜ ▣ ⊠ glyph + name (current regime) |
| Period | Period | Active RSI length (e.g. 14) |
| Smooth | Smooth | Active Supersmoother smoothing (e.g. 10) |
| OS Level | OS | Active adaptive OS threshold (e.g. 20) |
| OB Level | OB | Active adaptive OB threshold (e.g. 80) |
| Score | Score | Champion's mean forward return (in %) |
| Last Div | Last Div | Most recent divergence within last 50 bars (D▲ / D▼ / H▲ / H▼ / —) |
**Theme-Adaptive Chrome**
The dashboard auto-inverts its layout based on the active theme:
- **Dark themes** (Tropic, Amber, Pastel, Cyber, Helios, Electric, Candy, Bloomberg, Solar, Royal): header and footer use a faint `thBull` tint, middle rows stay solid dark, text uses full-saturation `thBull`. Border uses `thBull` at 20% transparency for strong theme presence.
- **Light themes** (Midnight, Graphite): backgrounds flip to white, text stays `thBull` (which is itself dark on these themes), border uses `thBull` at 40% transparency.
This guarantees text legibility against every palette without per-theme manual tuning.
**Position & Size**
Six anchor slots (Top / Middle / Bottom × Left / Right) and four text sizes (Tiny / Small / Normal / Large).
🟦 COLOR THEMES
Twelve cohesive palettes, each resolving to four axis colors. The whole script reads through these four variables — nothing below the theme resolver references a raw hex literal, so a single dropdown selection drives every plot, fill, stepline, divergence line, dashboard cell and badge.
| Theme | Character | Bull | Bear |
|---|---|---|---|
| Tropic | Cyan steel + deep orange | #00bcd4 | #ff6d00 |
| Amber | Warm amber + indigo blue | #ff9800 | #e53935 |
| Pastel | Sky blue + soft lavender | #4fc3f7 | #9575cd |
| Cyber | Neon lime + hot crimson | #00e676 | #ff1744 |
| Helios | Bright gold + scarlet | #ffd600 | #ef5350 |
| Electric | Electric aqua + magenta | #00e5ff | #e040fb |
| Candy | Neon green + hot pink | #69F0AE | #FF4081 |
| Bloomberg | Terminal orange + cyan | #ff8c00 | #00b0ff |
| Solar | Solarized olive + crimson | #859900 | #dc322f |
| Royal | Imperial gold + deep purple | #ffd700 | #6a0dad |
| Midnight | Deep navy + dark crimson | #0d47a1 | #b71c1c |
| Graphite | Near-black + silver grey | #1a1a1a | #757575 |
🟦 ALERT SYSTEM
Seven user toggles drive nine alert messages, all using `alert.freq_once_per_bar_close`:
| Toggle | Alert(s) | Condition |
|---|---|---|
| OS Entry Trigger | OS Entry | RSI crossed down through adaptive OS |
| OB Exit Trigger | OB Exit | RSI crossed back down through adaptive OB |
| Regime Change | Phase Flip | Locked regime label updates (post-hysteresis) |
| Regular Divergence | D▲ + D▼ | Reversal divergences detected (respects Smart AI Filter) |
| Hidden Divergence | H▲ + H▼ | Continuation divergences detected (respects Smart AI Filter) |
| RSI Mid Cross Up | Mid ↑ | RSI crossed above 50 |
| RSI Mid Cross Down | Mid ↓ | RSI crossed below 50 |
Each alert fires through `alert()` so the message body carries live context — current RSI value, the active adaptive threshold that triggered, active period and smoothing, and (for Regime Change) the previous phase's hold duration. Divergence alerts respect the Smart AI Filter — if the filter is ON and a divergence is rejected visually, the alert will also not fire.
🟦 SETTINGS REFERENCE
**Visual**
- Theme — 12 palette options. Default: Tropic
**Adaptation Core**
- Optimization Lookback (bars) — 100–1000. Default: 300
- Forward-Return Eval Horizon — 2–20. Default: 5
- Min Triggers per Candidate — ≥ 2. Default: 5
- Switch Margin (%) — 0–50, step 2.5. Default: 10
**Regime Label**
- Show Regime Label — Toggle. Default: ON
- Regime Label Size — Tiny / Small / Normal / Large / Huge. Default: Normal
- Regime Confirmation Bars — 1–100. Default: 10
- Regime Label Position — Top / Middle / Bottom. Default: Middle
**Zones & Levels**
- Show Adaptive Levels — Toggle. Default: ON
- Show Zone Fills — Toggle. Default: ON
- Show Trigger Signals — Toggle. Default: ON
**Divergence**
- Regular Divergence — Toggle. Default: ON
- Regular Opacity — 0–100. Default: 80
- Hidden Divergence — Toggle. Default: ON
- Hidden Opacity — 0–100. Default: 80
- Pivot Arm — 2–50. Default: 5
- Label Size — Tiny / Small / Normal / Large. Default: Tiny
- Smart AI Filter — Master toggle. Default: OFF
- Min RSI Swing — 1.0–50.0. Default: 5.0
- Min Price Swing (%) — 0.1–5.0. Default: 0.3
- Require Zone Confirmation — Toggle. Default: ON
**Bar Coloring**
- Bar Color Mode — None / RSI Zone. Default: None
**Dashboard**
- Show Dashboard — Toggle. Default: ON
- Panel Position — 6 anchor slots. Default: Middle Right
- Panel Text Size — Tiny / Small / Normal / Large. Default: Small
**Alerts**
- OS Entry Trigger — Default: ON
- OB Exit Trigger — Default: ON
- Regime Change — Default: ON
- Regular Divergence — Default: ON
- Hidden Divergence — Default: OFF
- RSI Mid Cross Up — Default: OFF
- RSI Mid Cross Down — Default: OFF
🟦 COMPATIBILITY
Works on all asset classes and all timeframes in TradingView Pine Script v6.
- Crypto: Spot, futures, perpetual contracts
- Forex: All pairs
- Equities: Stocks, ETFs, indices
- Commodities: Metals, energy, agriculture
- Timeframes: 1m through Monthly
Because the engine self-tunes its RSI period, smoothing, and OB / OS thresholds online, the same default settings work on a 5-second BTC chart and a weekly index chart without retuning. The optimiser sees the asset's actual reversion behaviour and adapts — no per-asset preset library needed.
🟦 TECHNICAL NOTES
- Pine Script v6
- `max_lines_count = 500`, `max_labels_count = 500`, `max_bars_back = 1000`
- No repainting — all values calculated on bar close. Pivot-based divergence results appear `Pivot Arm` bars late by design (standard Pine pivot confirmation behaviour)
- The adaptive RSI line is internally consistent across optimiser switches — divergence pivots read RSI dynamically via `activeRsi `, so both endpoints come from the SAME (current) RSI series even when the champion changes between pivots
- The Supersmoother filter relies on `var float lpY = 0.0` private state per call-site — Pine v6 issues one independent state slot per call-site, so the 15 fleet entries below produce 30 (15 × 2 streams) independent filter histories with zero cross-talk
- Champion switch is hysteresis-gated by `Switch Margin (%)` and an eligibility floor (`Min Triggers per Candidate`) — protects against bar-by-bar flapping when two candidates trade marginal scores
- Regime tag is doubly hysteresis-gated — first the candidate must hold, then the displayed phase only flips after `Regime Confirmation Bars` of stable tagging
- Trigger markers use `location.absolute` with fixed Y coordinates (10 / 90) for visual stability — no slide on zoom or candle-spacing changes
- Trigger marker tooltips piggy-back on invisible `label.style_circle` parallel renders — `plotshape()` does not natively support the `tooltip` argument
🟦 DISCLAIMER
This indicator is provided for educational and informational purposes only. It does not constitute financial advice. Past performance does not guarantee future results. Always conduct your own analysis and apply proper risk management. Indicator

MFI + RSI Overbought/Oversold w/ Independent Controls [idahodev]This indicator displays the Money Flow Index (MFI) and Relative Strength Index (RSI) together in a single oscillator pane, with fully independent settings for each.
Both MFI and RSI can be customized with separate source inputs, lengths, smoothing types, smoothing lengths, overbought thresholds, and oversold thresholds. This makes it easier to compare price momentum and volume-weighted momentum without forcing both oscillators to use the same settings.
The script also includes conditional threshold fills. When RSI or MFI moves above its configured overbought level, the area between the oscillator line and the overbought threshold is filled. When RSI or MFI moves below its configured oversold level, the area between the oscillator line and the oversold threshold is filled. Fill colors and opacity can be customized independently for each oscillator and condition.
Features:
- Combined RSI and MFI oscillator display
- Independent RSI and MFI lengths
- Independent RSI and MFI smoothing
- SMA, EMA, RMA, WMA, or no smoothing
- Independent overbought and oversold levels
- Conditional overbought and oversold fills
- Custom fill colors and opacity
- Useful for spotting momentum extremes, divergences, and confluence between RSI and MFI
This indicator does not generate buy or sell signals by itself. It is intended as a visual analysis tool for identifying momentum conditions and possible exhaustion zones. Indicator

Generalized Fisher Transform [LB] Concept
The Generalized Fisher Transform extends John F. Ehlers' classic Fisher Transform (2002) by introducing an adjustable shape parameter that controls the sensitivity profile of the transformation. While the original Fisher Transform maps any normalized input to a near‑Gaussian output to highlight statistical extremes, this generalized version allows traders to emphasize central regions (shape < 1) or extreme tails (shape > 1) depending on their strategy.
Mathematical Foundation
The indicator first normalizes price to a bounded range using a rolling min‑max window of length N :
x = 2 × (P - L_min) / (H_max - L_min) - 1
A signed power is then applied with a shape factor p :
x_p = sign(x) × |x|^p
The generalized Fisher Transform is computed as :
F = 0.5 × ln( (1 + x_p) / (1 - x_p) )
When p = 1 , the formula reduces to the classic Fisher Transform. Values of p < 1 amplify sensitivity near zero (central price region), while p > 1 amplify sensitivity near the edges (extreme price region). The result is smoothed by an EMA for noise reduction.
What Problem Does It Solve ?
Classic oscillators such as RSI or Stochastic use fixed non‑linear mappings that cannot adapt to different market regimes or trader preferences. The classic Fisher Transform offers a single sensitivity profile. The Generalized Fisher Transform solves this by exposing the shape parameter p , giving traders direct control over where the indicator is most responsive — near the mean or near the extremes — without changing the underlying logic or introducing additional indicators.
How To Interpret
The indicator operates in two selectable modes :
Extremes Mode – the background turns red when Fisher exceeds the upper threshold (statistically overbought), and green when it drops below the lower threshold (statistically oversold). These zones suggest potential mean‑reversion.
Direction Mode – the background turns cyan when Fisher is above zero (bullish bias) and orange when below zero (bearish bias). This mode is suited for trend‑following or directional confirmation.
In both modes, the Fisher line crossing zero indicates a shift in the price distribution relative to its recent range.
Parameters
Source – price data used for the calculation (default: close).
Normalization Period – number of bars used to compute the rolling min‑max for the normalization.
Shape Factor – exponent applied to the normalized price before the Fisher transform. 1 = classic Fisher, < 1 = center‑sensitive, > 1 = tail‑sensitive.
Smoothing Period – EMA length applied to the raw Fisher output.
Coloration Mode – switches between "Extremes" (overbought/oversold highlighting) and "Direction" (bullish/bearish highlighting).
Upper Threshold – Fisher level above which the background turns red in Extremes mode.
Lower Threshold – Fisher level below which the background turns green in Extremes mode.
Reference
Ehlers J.F., "Using the Fisher Transform", Technical Analysis of Stocks & Commodities, Vol. 20, No. 11, pp. 40‑45, November 2002.
Ehlers J.F., "Cybernetic Analysis for Stocks and Futures", Chapter 4 – The Fisher Transform, John Wiley & Sons, 2004. Indicator

Artemis Squeeze Momentum🟦 Artemis Squeeze Momentum collapses an entire momentum-and-volatility workflow into a single oscillator pane. Eight analytical layers — Squeeze Momentum core, Directional Flux, three-tier compression detection with a release tracker, dual confluence gauges, dual anchor Regular + Hidden divergence with a Smart AI Filter, a composite Trend Strength Score (0–100), a four-timeframe MTF Confluence panel with alignment / divergence detection, and a theme-adaptive PRO dashboard — operate as one integrated system, all driven by a single theme dropdown across 12 cohesive palettes.
Most squeeze indicators ship as a strip of black-and-red dots with a lone momentum histogram, then require a separate ADX, a separate divergence tool and a separate confluence gauge to complete the read. Artemis Squeeze Momentum closes that gap: every compression tier, every directional cross, every divergence, every higher-timeframe bias reads from the same pane in the same colour language — no inline colour pickers, no palette drift, no pane-hopping. The result is a complete momentum workbench where compressions, breakouts, regime flips, divergences and multi-TF bias are all readable at a glance.
🟦 HOW THE CORE ENGINE WORKS
**Squeeze Momentum Engine**
Each bar, the engine builds three anchors over the Momentum Length window:
1. **Channel midpoint** — `(highest(high, len) + lowest(low, len)) / 2`
2. **Smoothed midline** — `SMA(HL2, len)`
3. **Channel ATR** — channel range plus the gap-to-prior-close component (matches Pine v5 `tr(true)` on the synthetic channel bar)
The raw momentum is then computed as:
mom_raw = (close − avg(channelMid, smaMid)) / channelATR × 100
This produces a channel-aware, ATR-normalized residual scaled to roughly the ±100 range. The result is then passed through `ta.linreg(mom_raw, len, 0)` to produce the visible momentum line — a linear-regression smoothing that gives the curve its characteristic forward-leaning shape. An SMA of length Signal Length builds the trigger line. Crossovers between momentum and signal mark momentum regime changes — the same convention used by classical MACD.
**Directional Flux**
A custom ADX-style oscillator running in parallel. Each bar, the engine measures positive high-changes vs. negative low-changes, each RMA-smoothed and ATR-normalized:
up = RMA(max(change(high), 0), len) / ATR(len)
dn = RMA(max(−change(low), 0), len) / ATR(len)
ratio = (up − dn) / (up + dn)
flux = RMA(ratio, len / 2) × 100
The result is a directional bias oscillator bounded to ±100. An overflow branch (values past ±25 — where the directional pressure becomes structurally significant) renders as a separate, brighter fill so traders read both raw direction and acceleration in one glance.
**Heiken Ashi Bias (Optional)**
When `Use Heiken Ashi Bias` is enabled, the Flux engine reads from a Heiken Ashi bar stream instead of raw OHLC. HA bars smooth body / wick noise and emphasise trend continuation — useful on lower timeframes where raw OHLC is noisy.
🟦 SQUEEZE DETECTION
A three-tier Bollinger-vs-ATR compression detector running on the same Length as the Momentum Core (so compression and momentum stay perfectly aligned):
| Tier | Condition | Visual |
|---|---|---|
| Tight | stdev < ATR × 0.5 | Deepest, most saturated theme tone |
| Mid | stdev < ATR × 0.75 | Middle-intensity theme tone |
| Loose | stdev < ATR × 1.0 | Lightest tier — broadest detection |
Tiers nest — tight implies mid implies loose. The bottom-of-pane squeeze column lights up whenever any tier is active and the colour escalates as compression tightens, using a theme-native ramp drawn from each palette's own colour family (so the column reads as part of the theme rather than an imported generic warning).
The standard deviation is computed via a single-pass Welford algorithm — numerically stable on long histories where naive sum-of-squares accumulators drift.
**♦ Squeeze Release Marker**
The signature feature of the engine. The bar after the loosest active tier (stdev < ATR × 1.0) finally drops off, a tiny ♦ diamond paints at the midline in the theme's vivid release accent — one step brighter and more saturated than the tight tier so the climax moment reads as the most luminous point in the squeeze cycle.
This is the canonical "spring uncoiled" moment: compression has fully ended, volatility expansion begins, breakout direction is about to reveal itself. Historically the highest-conviction breakout setup the squeeze model produces. Hovering on the marker surfaces:
- Current bar state (compression ended this bar)
- Meaning (volatility expansion incoming)
- Next steps (watch the next 1–5 bars, confirm with Momentum slope, cross-check Flux, prioritise MTF-aligned setups)
🟦 CONFLUENCE GAUGES
Two horizontal strips render at the top (Bull side, +70 to +75) and bottom (Bear side, −70 to −75) of the pane. Each strip lights up when momentum and flux agree on direction, with brightness reflecting the confluence tier:
| State | Condition | Opacity |
|---|---|---|
| Strong Bull | mom > 0 AND flux > 0 | Full |
| Weak Bull | mom > 0 OR flux > 0 | Half |
| Strong Bear | mom < 0 AND flux < 0 | Full |
| Weak Bear | mom < 0 OR flux < 0 | Half |
| Neutral | Neither side dominates | Transparent |
The display mode (Both / Bull / Bear / None) lets traders mute one half if they only trade one direction.
**Confluence Buy / Sell Triangles**
A separate signal layer rides outside the gauges. The detector fires only when momentum crosses its signal line WHILE in the opposite zone past the Signal Threshold AND with flux in the opposite direction (classic mean-reversion logic):
- **Buy ▲** (below bear gauge at −90) — `xMomUp AND momVal < −threshold AND fluxVal < 0`
- **Sell ▼** (above bull gauge at +85) — `xMomDn AND momVal > +threshold AND fluxVal > 0`
Each triangle pairs with an invisible label carrying a tooltip that lists current mom, signal, flux, the active threshold, and a one-line interpretation of the trigger. The Signal Threshold (default 40) is independent of the Divergence Sensitivity setting — the two engines need different thresholds (divergence wants permissive at 25 for pivot detection, confluence wants strict at 40 for deep mean-reversion triggers).
🟦 DIVERGENCE DETECTION
A cross-confirmed, dual-anchor detector that fires on signal-line crossovers (NOT on Pine pivots). Regular divergences signal exhaustion reversals, Hidden divergences signal trend continuation.
**Four divergence types:**
| Type | Price | Momentum | Signal |
|---|---|---|---|
| Regular Bull (D▲) | Lower Low | Higher Low | Potential reversal up |
| Regular Bear (D▼) | Higher High | Lower High | Potential reversal down |
| Hidden Bull (H▲) | Higher Low | Lower Low | Uptrend continuation |
| Hidden Bear (H▼) | Lower High | Higher High | Downtrend continuation |
Regular divergence uses solid lines; Hidden uses dashed lines — visually quieter to match the continuation signal's lower conviction tier. Labels (D▲ / D▼ / H▲ / H▼) each carry a tooltip-rich hover with price + momentum + meaning context.
**Dual-Anchor Logic**
The key engineering choice. Regular and Hidden divergences each maintain their own separate anchor pair:
- **Regular anchors** — stored only at extreme-zone crosses (|mom| > Sensitivity). Catches classical exhaustion reversals at deep extremes.
- **Hidden anchors** — stored at ANY signal-line cross, regardless of zone. Shallow pullbacks inside an established trend rarely push momentum past ±Sensitivity, so the Hidden detector must accept every cross to capture the classical "price HL + mom LL" / "price LH + mom HH" continuation pattern.
A detected divergence consumes its anchor (resets to na) so the next setup starts fresh.
**Smart Divergence Filter (AI)**
Optional pre-filter that rejects low-quality divergences before they render. Three independent gates:
1. **Min Momentum Swing** — minimum |momentum| difference between the two pivot momentum values (default: 10 units). Drops noise-level differences.
2. **Min Price Swing (%)** — minimum price swing between pivots as a percentage of the recent `Momentum Length × 4` high-low range (default: 0.3%). Drops divergences where price barely moved relative to recent volatility.
3. **Require Flux Confirmation** — Flux must agree with the divergence direction at the moment of detection (Bull div needs Flux > 0, Bear div needs Flux < 0). Filters out divergences that fire counter to the broader directional bias.
When the master toggle is OFF (default), all detected divergences render. When ON, only divergences that clear all three gates survive. The filter applies identically to chart rendering and alert conditions — no mismatch between visual and alert signals.
🟦 COMPOSITE TS SCORE (0–100)
A weighted blend of every analytical layer into a single RSI-style 0–100 reading. 50 is neutral, > 50 leans bull, < 50 leans bear.
| Component | Weight | Mapping |
|---|---|---|
| Momentum | 30% | mom value mapped from −100..+100 → 0..100 |
| Flux | 30% | flux value mapped the same way |
| Mom × Signal | 15% | 70 if mom > sig, else 30 (slope direction confirmation) |
| Confluence | 25% | 90 strong-bull / 65 weak-bull / 50 neutral / 35 weak-bear / 10 strong-bear |
The score is rounded to the nearest integer and labelled into five tiers in the dashboard: STRONG BULL (≥75) / BULL (≥60) / NEUTRAL (40–59) / BEAR (≥25) / STRONG BEAR (<25), each prefixed with a directional glyph (▲ ▼ ■). The tier label gives traders an executive summary at a glance — one row in the dashboard tells you what every other row collectively says.
🟦 MULTI-TIMEFRAME CONFLUENCE
A separate PRO panel that runs the full Momentum + Flux + Confluence stack on four higher timeframes simultaneously via `request.security()` and surfaces the overall alignment state. All MTF calls use `lookahead = barmerge.lookahead_off` — fully repaint-safe on every closed bar.
**Six Presets**
Pre-tuned four-timeframe packs matched to common trader profiles:
| Preset | TF 1 | TF 2 | TF 3 | TF 4 | Use case |
|---|---|---|---|---|---|
| Scalp | 1m | 5m | 15m | 1h | Fast scalper |
| Intraday | 5m | 15m | 1h | 4h | Day trader |
| Swing | 15m | 1h | 4h | 1D | Default — swing trader |
| Position | 1h | 4h | 1D | 1W | Position trader |
| Crypto | 5m | 15m | 1h | 4h | 24/7 markets |
| Forex | 15m | 1h | 4h | 1D | Session-based markets |
**Alignment Detection**
Each TF returns a bias tag (▲ STRONG / ▲ WEAK / ▼ STRONG / ▼ WEAK / ◈ NEUTRAL) and a direction code (+1 / 0 / −1). The header rolls up the four codes into one of three states:
- **▲▲▲▲ ALIGNED** — all four TFs bullish (highest-conviction long setup)
- **▼▼▼▼ ALIGNED** — all four TFs bearish (highest-conviction short setup)
- **◈ MIXED** — TFs disagree (no clean direction)
**Divergence Detection**
When the current chart's bias contradicts ≥ 3 of the 4 HTF biases (e.g., chart bullish but 3+ HTFs bearish), an MTF Divergence flag fires — a contrarian / counter-trend warning. Treat as a "current move may be a bull / bear trap" signal.
**Panel Style**
Direction is conveyed purely by the ▲ / ▼ glyphs in each row's tag — never by cell colour. Every cell uses a uniform `thBull` text colour matching the main Dashboard, so the two panels feel like one product across all twelve themes, light and dark alike.
🟦 BAR COLORING
Five mutually exclusive modes apply an oscillator-driven colour to every price bar on the chart:
| Mode | Behavior |
|---|---|
| None | Leave bars untouched (default) |
| Momentum | Bull when mom > 0, bear when mom < 0 |
| Flux | Bull when flux > 0, bear when flux < 0 |
| Squeeze | Theme-native ramp when compressed, neutral otherwise |
| Confluence | Strong / Weak / Neutral tiers via mom + flux agreement |
| Slope | Bull when mom > signal, bear when mom < signal |
Colours are pulled from the active theme — no per-mode color picker needed.
🟦 DASHBOARD
A compact 2-column, 8-row data panel renders on the last bar when enabled. Every value derives from variables already computed upstream, so the dashboard adds zero overhead until the final bar.
| Row | Left | Right |
|---|---|---|
| Header | Artemis Squeeze | ▲ STRONG BULL / ▲ WEAK BULL / ■ NEUTRAL / ▼ WEAK BEAR / ▼ STRONG BEAR |
| TS Score | TS Score | 0–100 composite + tier label (STRONG BULL / BULL / NEUTRAL / BEAR / STRONG BEAR) |
| Momentum | Momentum | Current value + trend arrow (▲ ▼ ■) |
| Flux | Flux | Current value + trend arrow (▲ ▼ ■) |
| Squeeze | Squeeze | TIGHT / MID / LOOSE / — |
| Confluence | Confluence | STRONG BULL / WEAK BULL / NONE / WEAK BEAR / STRONG BEAR |
| Div | Div | Most recent divergence within last 50 bars (▲ REG / ▼ REG / ▲ HID / ▼ HID / —) |
| Slope | Slope | ▲ UP / ▼ DOWN / ■ FLAT |
**Theme-Adaptive Chrome**
The dashboard auto-inverts its layout based on the active theme:
- **Dark themes** (Tropic, Amber, Pastel, Cyber, Helios, Electric, Candy, Bloomberg, Solar, Royal): header and footer use a faint `thBull` tint, middle rows stay solid dark, text uses full-saturation `thBull`. Border uses `thBull` at 20% transparency for strong theme presence.
- **Light themes** (Midnight, Graphite): backgrounds flip to white, text stays `thBull` (which is itself dark on these themes), border uses `thBull` at 40% transparency.
This guarantees text legibility against every palette without per-theme manual tuning. The MTF Confluence panel uses identical chrome rules so the two panels feel like one product.
**Position & Size**
Six anchor slots (Top / Middle / Bottom × Left / Right) and four text sizes (Tiny / Small / Normal / Large). The Dashboard defaults to Bottom Right and the MTF panel to Top Right — vertically opposite so the two never overlap.
🟦 COLOR THEMES
Twelve cohesive palettes, each resolving to four axis colours plus a four-step squeeze ramp:
| Theme | Character | Bull | Bear |
|---|---|---|---|
| Tropic | Cyan steel + deep orange | #00bcd4 | #ff6d00 |
| Amber | Warm amber + ember red | #ff9800 | #e53935 |
| Pastel | Sky blue + soft lavender | #4fc3f7 | #9575cd |
| Cyber | Neon lime + hot crimson | #00e676 | #ff1744 |
| Helios | Bright gold + scarlet | #ffd600 | #ef5350 |
| Electric | Electric aqua + magenta | #00e5ff | #e040fb |
| Candy | Neon green + hot pink | #69F0AE | #FF4081 |
| Bloomberg | Terminal orange + cyan | #ff8c00 | #00b0ff |
| Solar | Solarized olive + crimson | #859900 | #dc322f |
| Royal | Imperial gold + deep purple | #ffd700 | #6a0dad |
| Midnight | Deep navy + dark crimson | #0d47a1 | #b71c1c |
| Graphite | Near-black + silver grey | #1a1a1a | #757575 |
Beyond the four axis colours (bull / bear / neutral / signal), each theme also defines its own four-step squeeze ramp (tight / mid / loose / release) drawn from its own colour family — so the squeeze column and the ♦ release marker harmonise with the active theme rather than imposing a generic warning hue. Nothing below the theme resolver block references a raw hex literal, so a single dropdown selection drives every plot, fill, gauge, divergence line, dashboard cell, MTF panel and bar colour.
🟦 ALERT SYSTEM
Twenty-two alert conditions, all using `alert.freq_once_per_bar_close`. Each alert is gated by its own toggle in the Alerts group — hiding a feature on the chart silences its alerts automatically.
| Alert | Condition |
|---|---|
| Confluence Buy | Mom crossed UP through signal while below −Threshold AND Flux bearish |
| Confluence Sell | Mom crossed DOWN through signal while above +Threshold AND Flux bullish |
| Momentum Cross Up | Mom crossed above zero |
| Momentum Cross Down | Mom crossed below zero |
| Flux Cross Up | Flux crossed above zero |
| Flux Cross Down | Flux crossed below zero |
| Bullish Swing | Mom × signal upward cross (any zone) |
| Bearish Swing | Mom × signal downward cross (any zone) |
| Strong Bull Confluence | Mom AND flux both turned bullish |
| Strong Bear Confluence | Mom AND flux both turned bearish |
| Weak Bull Confluence | Mom OR flux turned bullish |
| Weak Bear Confluence | Mom OR flux turned bearish |
| Tight Squeeze | stdev < ATR × 0.5 |
| Mid Squeeze | stdev < ATR × 0.75 |
| Loose Squeeze | stdev < ATR × 1.0 |
| Regular Divergence | D▲ or D▼ detected (respects Smart Filter) |
| Hidden Divergence | H▲ or H▼ detected (respects Smart Filter) |
| Squeeze Release ♦ | stdev re-expanded above ATR × 1.0 |
| MTF Aligned | All four MTF timeframes agree on direction |
| MTF Divergence | Current chart bias contradicts ≥ 3 of 4 HTF biases |
Each alert fires through `alert()` so the message body carries live context — direction, current values, the trigger condition, and a one-line interpretation. Divergence alerts respect the Smart Filter — if the filter is ON and a divergence is rejected visually, the alert will also not fire.
🟦 SETTINGS REFERENCE
**Visual**
- Theme — 12 cohesive palettes. Default: Tropic
**Bar Coloring**
- Bar Color Mode — None / Momentum / Flux / Squeeze / Confluence / Slope. Default: None
**Momentum Core**
- Length — Lookback for both the Momentum engine and the Squeeze window. Range 7–50. Default: 20
- Signal Length — SMA smoothing for the signal line. Range 2–7. Default: 3
- Show Momentum — Toggle. Default: ON
**Directional Flux**
- Length — Lookback for the Flux engine. Range 7–50. Default: 30
- Use Heiken Ashi Bias — Toggle. Default: OFF
- Show Flux — Toggle. Default: ON
**Squeeze Engine**
- Show Squeeze — Toggle. Default: ON
- Show Squeeze Release — Toggle for the ♦ marker. Default: ON
**Confluence Gauges**
- Display Mode — Both / Bull / Bear / None. Default: Both
- Signal Threshold — |momentum| floor for Buy ▲ / Sell ▼ arrows. Range 10–80. Default: 40
**Divergence**
- Sensitivity — |momentum| floor for Regular div detection. Range 10–50. Default: 25
- Regular Divergence — Toggle. Default: ON
- Hidden Divergence — Toggle. Default: ON
- Show Divergence Lines — Toggle. Default: ON
- Show Divergence Labels — Toggle. Default: ON
- Label Size — Tiny / Small / Normal / Large. Default: Tiny
- Smart Divergence Filter (AI) — Master toggle. Default: OFF
- Min Momentum Swing — Default: 10.0
- Min Price Swing (%) — Default: 0.3%
- Require Flux Confirmation — Default: ON
**Multi-Timeframe**
- Show MTF Panel — Toggle. Default: ON
- Timeframe Preset — Scalp / Intraday / Swing / Position / Crypto / Forex. Default: Swing
- Panel Position — 6 anchor slots. Default: Top Right
- Panel Text Size — Tiny / Small / Normal / Large. Default: Small
**Dashboard**
- Show Dashboard — Toggle. Default: ON
- Panel Position — 6 anchor slots. Default: Bottom Right
- Panel Text Size — Tiny / Small / Normal / Large. Default: Small
**Alerts**
- 20 toggles covering all 22 alert conditions (Regular and Hidden divergence each drive two alerts — bull + bear — from one toggle).
- Defaults ON: Confluence Buy/Sell, Mom Cross Up/Dn, Flux Cross Up/Dn, Strong Bull/Bear Confluence, Tight Squeeze, Regular Divergence, Squeeze Release, MTF Aligned.
- Defaults OFF: Swings, Weak Confluences, Mid/Loose Squeeze, Hidden Divergence, MTF Divergence.
🟦 COMPATIBILITY
Works on all asset classes and all timeframes in TradingView Pine Script v6.
- Crypto: Spot, futures, perpetual contracts
- Forex: All pairs
- Equities: Stocks, ETFs, indices
- Commodities: Metals, energy, agriculture
- Timeframes: 1m through Monthly
The channel-aware ATR normalization in the Momentum engine, the ATR-normalized Flux ratio, and the stdev / ATR squeeze tests make every layer volatility-agnostic. The same default settings work on a 1m BTC chart and a weekly index chart without retuning. The MTF presets cover the common scalp / intraday / swing / position profiles plus dedicated Crypto and Forex packs.
🟦 DISCLAIMER
This indicator is provided for educational and informational purposes only. It does not constitute financial advice. Past performance does not guarantee future results. Always conduct your own analysis and apply proper risk management. Indicator

Iridescent Helix [JOAT]Iridescent Helix
Iridescent Helix is a composite momentum oscillator that lives in a sub-pane and projects cross-pane visuals onto the price chart. The composite blends three orthogonal momentum legs into a single normalized score in the range -100 to +100. Above the math, it adds a layered iridescent ribbon, a breath-opacity histogram, gradient overbought / oversold zones, cross-pane iridescent candle recoloring, and an in-pane pivot divergence engine.
What makes it different
The composite blends three independent momentum lenses: a volume-weighted-median price distance, a Connors-style triple RSI, and a clamped volume Z-score. Smoothed with a Hull Moving Average to reduce phase lag while preserving sensitivity.
The visual stack uses seven plot layers per direction, hue-rotated through the bull or bear accent gradient, each layer at a different transparency and linewidth, producing a depth effect that single-color ribbons cannot match.
A breath-opacity histogram fades columns when momentum is decelerating and brightens them when momentum is accelerating, giving an at-a-glance read of momentum derivative.
An in-pane pivot divergence engine detects regular and hidden divergences and projects both as in-pane markers and as price-to-price connector lines on the price chart.
How it works
Volume-weighted median over a rolling window. Sort close prices ascending, accumulate volumes in that order. The price at which cumulative volume crosses half of total volume is the weighted median.
Composite equals 0.50 times the normalized distance from the volume-weighted median, plus 0.35 times the normalized Connors RSI, plus 0.15 times the clamped volume Z.
Hull-smoothed and scaled to centi-percent, clamped to the range -100 to +100. EMA(21) signal line drawn alongside.
Pivot divergence detection compares price pivots against composite pivots, gated to a 5-to-60-bar window between successive pivots.
Right-edge labels in the pane (composite, signal, volume Z) and on the price chart (cross-pane regime status).
Reading the chart
In-pane : seven-layer iridescent ribbon, breath-opacity histogram, volume-modulated zero line, overbought / oversold guide lines with gradient fills when the composite breaches them, composite-to-signal ribbon fill.
Cross-pane : iridescent candle recolor on price, divergence connector lines between price pivots, subtle reversal dots at extreme reversal closes, soft regime tint background when the composite is clearly above or below zero.
Right-edge label cluster : the pane shows current composite (with percentile rank), signal line, and volume Z. The price chart shows a single IRH summary label with composite value, percentile, and regime tag.
A right-edge state block lists current regime, zone (overbought, oversold, neutral), and bars since the last zero cross.
Signals
Bull / bear zero cross (composite re-crosses zero)
Overbought / oversold reversal (composite crosses back from an extreme)
Volume surge (volume Z above two)
Momentum acceleration / deceleration above a user-tunable threshold
Regular and hidden divergence detection (bull / bear pairs)
All gated on barstate.isconfirmed or barstate.ishistory. No future references. No lookahead_on.
Inputs
Composite : VW median length, volume Z length, overbought / oversold levels, divergence lookback, percentile envelope length.
Visual : bullish / bearish / accent / magenta colors, toggles for ribbon, histogram, iridescent candles, cross-pane reversal dots, divergence dots, percentile envelope, cross-pane regime tint.
Labels : pane right-edge cluster, pane state block, cross-pane IRH label, divergence lines, divergence labels, OB/OS event labels, zero-cross events, acceleration events.
Dashboard : position, size.
Alerts : acceleration magnitude threshold.
How traders use this
Trend continuation : open positions in the direction of the composite when it crosses zero from the appropriate side and the volume Z confirms.
Reversion plays : take fades when the composite reaches an extreme zone and momentum begins decelerating (histogram fades), particularly when supported by a regular divergence connector on the price chart.
Hidden divergence : in a clear trend, a hidden divergence is a continuation signal and can be used to add to existing positions on a pullback.
Cross-system confirmation : feed the composite into other JOAT scripts (for example Position Architect) as a signal source by connecting plots in the chart UI.
Limitations
The composite is a normalized smoothed reading, not a leading indicator. It quantifies present momentum strength and direction rather than predicting future direction.
Connors RSI and volume Z need warm-up bars before they stabilize.
Pivot divergence detection inherits the right-bar delay of pivot identification (the pivot is only confirmed several bars after the actual extreme).
HMA smoothing introduces a few bars of warm-up where the composite is unavailable.
Compatibility
Pine Script v6 open-source indicator (pane). Any symbol, any timeframe. Cross-pane elements use force_overlay=true. No request.security calls. Non-repainting (divergence pivots are confirmed-bar gated).
Defaults
Mint and red defaults, plus cyan (bull accent) and magenta (bear accent) hue-rotation targets. Top-right medium dashboard. All visualizations on. For fast intraday work, shorten the VW median length and the divergence lookback.
Indicator
