Arbor_Gradient_Boosting_GainzAlgoGainzAlgo is excited to bring the ability to perform gradient boosting and feature importance selection to Pine Script. Currently, there are no native capabilities within Pine Script for gradient boosting or feature importance selection. Arbor fills this significant gap by introducing a from-scratch Gradient Boosting Machine (GBM) engineered with XGBoost-style mechanics.
Designed to support both classification and regression tasks, and building on our Random Forest approach to Pinescript, Arbor utilizes depth-1 stumps, meaning it performs one split per round without column subsampling.
Because PulseWire automatically lists the exported types and function parameters, the following outlines the core mechanics and capabilities you unlock by importing Arbor.
Core Mechanics
Arbor brings advanced machine-learning concepts directly into your Pine Script workflows:Advanced Training: Utilizes Newton leaf steps (second-order hessian weighting) and the exact XGBoost gain formula.
Regularization & Pruning: Integrates L2 regularization (lambda), minimum gain pruning (gamma), and minimum child weight checks to manage model complexity and prevent overfitting.
Stochasticity: Implements Fisher-Yates row subsampling to provide genuine round-to-round stochasticity matching XGBoost's subsample behavior.
Reproducibility: You can pass an optional seed to any fit function to ensure reproducible training runs across reloads.
Model Tiers
The library supports models scaled across three specific feature tiers:
GBM (1 Feature): Built for rapid classification or regression implementations.
GBM3 (3 Features): Purpose-built specifically for classification tasks.
GBM4 (4 Features): Supports both classification and regression, and uniquely offers XGBoost-style, gain-based feature importance evaluation.
Library "Arbor_Gradient_Boosting_GainzAlgo"
Arbor — gradient boosting for Pine Script. From-scratch GBM v2
with XGBoost-style mechanics: Fisher-Yates row subsampling, Newton leaf steps
(second-order hessian weighting), exact XGBoost gain formula with L2
regularization (lambda), minimum gain pruning (gamma), and minimum child
weight. Trees are depth-1 stumps (one split per round) and there is no
column (feature) subsampling — this is an XGBoost-style boosting scheme,
not a full XGBoost reimplementation. Supports classification and regression
across three feature tiers:
- GBM (1 feature) : gbm_fit / gbm_predict
classification or regression via is_classifier
- GBM3 (3 features) : gbm3_fit / gbm3_predict
classification only
- GBM4 (4 features) : gbm4_fit / gbm4_predict / gbm4_importance_pct
classification or regression with XGBoost-style
gain-based feature importance
All variants use Newton leaf steps, exact gain formula, L2 regularization,
Fisher-Yates shuffle subsampling, and gamma/min_child_weight pruning. Pass
an optional seed to any fit function for reproducible training runs.
gbm_fit(feat, target, n_rounds, lr, n_thresh, is_classifier, lambda, gamma, min_child_w, subsample, seed)
Fits a single-feature gradient-boosted stump ensemble using
XGBoost-style mechanics: Newton leaf steps (second-order hessian weighting),
exact gain formula with L2 regularization, gamma pruning, minimum child
weight, and Fisher-Yates row subsampling. Each round fits one depth-1 stump
(this is not a full multi-level tree, and there is no column subsampling).
Supports both binary classification (log-odds + sigmoid) and regression (MSE).
Parameters:
feat (array) : Array of feature values, one per training row
target (array) : Array of targets — 0.0/1.0 for classification, continuous for regression
n_rounds (int) : Number of boosting rounds / stumps to fit
lr (float) : Learning rate / shrinkage applied to each round's leaf contribution
n_thresh (int) : Candidate split thresholds to scan per round
is_classifier (bool) : True = binary classification, False = squared-error regression
lambda (float) : L2 leaf regularization — Ridge-style shrinkage toward zero (XGBoost default: 1.0)
gamma (float) : Minimum gain required to accept a split — prunes weak splits (XGBoost default: 0.0)
min_child_w (float) : Minimum hessian sum per child node — prevents tiny noisy splits (XGBoost default: 1.0)
subsample (float) : Fraction of rows randomly sampled per round via Fisher-Yates (default: 1.0 = all rows)
seed (int) : Optional seed for the row-subsampling shuffle — pass a fixed value for reproducible fits across reloads (default: na = unseeded/random each time)
Returns: Fitted GBM object ready for gbm_predict()
gbm_predict(model, x)
Scores a single feature value against a fitted GBM ensemble.
Parameters:
model (GBM) : A GBM object previously returned by gbm_fit()
x (float) : Feature value to score (same feature definition used in training)
Returns: Predicted probability if classifier, raw predicted value if regressor
gbm3_fit(feat1, feat2, feat3, target, n_rounds, lr, n_thresh, lambda, gamma, min_child_w, subsample, seed)
Fits a 3-feature gradient-boosted classifier using XGBoost-style
mechanics: Newton leaf steps, exact gain formula, L2 regularization, gamma
pruning, minimum child weight, and Fisher-Yates row subsampling. Selects the
best (feature, threshold) pair each round and boosts in log-odds space.
Each round fits a single depth-1 stump; there is no column subsampling.
Parameters:
feat1 (array) : Array of feature 1 values, one per training row
feat2 (array) : Array of feature 2 values, one per training row
feat3 (array) : Array of feature 3 values, one per training row
target (array) : Array of binary targets (0.0 or 1.0), one per training row
n_rounds (int) : Number of boosting rounds
lr (float) : Learning rate / shrinkage
n_thresh (int) : Candidate thresholds scanned per feature per round
lambda (float) : L2 leaf regularization (Ridge shrinkage, XGBoost default: 1.0)
gamma (float) : Minimum gain to accept a split (XGBoost default: 0.0)
min_child_w (float) : Minimum hessian sum per child node (XGBoost default: 1.0)
subsample (float) : Row sampling fraction per round via Fisher-Yates (default: 1.0)
seed (int) : Optional seed for the row-subsampling shuffle — pass a fixed value for reproducible fits across reloads (default: na = unseeded/random each time)
Returns: Fitted GBM3 object ready for gbm3_predict()
gbm3_predict(model, x1, x2, x3)
Scores 3 feature values against a fitted GBM3 classifier.
Parameters:
model (GBM3) : GBM3 object from gbm3_fit()
x1 (float) : Current value of feature 1
x2 (float) : Current value of feature 2
x3 (float) : Current value of feature 3
Returns: Predicted probability
gbm4_fit(feat1, feat2, feat3, feat4, target, n_rounds, lr, n_thresh, is_classifier, lambda, gamma, min_child_w, subsample, seed)
Fits a 4-feature gradient-boosted ensemble with Newton steps, exact gain
formula, L2 regularization, gamma pruning, minimum child weight, Fisher-Yates
row subsampling, and gain-based feature importance tracking.
Supports both binary classification and regression. Each round fits a single
depth-1 stump; there is no column subsampling.
Parameters:
feat1 (array) : Array of feature 1 values, one per training row
feat2 (array) : Array of feature 2 values, one per training row
feat3 (array) : Array of feature 3 values, one per training row
feat4 (array) : Array of feature 4 values, one per training row
target (array) : Array of targets — 0.0/1.0 for classification, continuous for regression
n_rounds (int) : Number of boosting rounds
lr (float) : Learning rate / shrinkage
n_thresh (int) : Candidate thresholds scanned per feature per round
is_classifier (bool) : True = binary classification, False = regression
lambda (float) : L2 leaf regularization (Ridge shrinkage, XGBoost default: 1.0)
gamma (float) : Minimum gain to accept a split (XGBoost default: 0.0)
min_child_w (float) : Minimum hessian sum per child node (XGBoost default: 1.0)
subsample (float) : Row sampling fraction per round via Fisher-Yates (default: 1.0)
seed (int) : Optional seed for the row-subsampling shuffle — pass a fixed value for reproducible fits across reloads (default: na = unseeded/random each time)
Returns: Fitted GBM4 object with importance scores, ready for gbm4_predict() / gbm4_importance_pct()
gbm4_predict(model, x1, x2, x3, x4)
Scores 4 feature values against a fitted GBM4 ensemble.
Parameters:
model (GBM4) : GBM4 object from gbm4_fit()
x1 (float) : Current value of feature 1
x2 (float) : Current value of feature 2
x3 (float) : Current value of feature 3
x4 (float) : Current value of feature 4
Returns: Predicted probability if classifier, raw predicted value if regressor
gbm4_importance_pct(model, feat_idx)
Returns normalized feature importance as % of total gain for one feature.
Importance = accumulated gain credited to this feature across all boosting rounds,
matching XGBoost's xgb.importance() Gain column definition.
Parameters:
model (GBM4) : GBM4 object from gbm4_fit()
feat_idx (int) : Feature index to query (0-3)
Returns: Percentage of total ensemble gain attributed to this feature (0.0–100.0)
GBM
Holds a fitted gradient-boosted stump ensemble (1 feature).
Fields:
thresh (array) : Split threshold for each round's stump
left_val (array) : Newton leaf value when feature < threshold
right_val (array) : Newton leaf value when feature >= threshold
base_score (series float) : Log-odds of training mean (classifier) or mean (regressor)
lr (series float) : Learning rate stored for inference
is_classifier (series bool) : True = sigmoid probability output, False = raw regression output
GBM3
Holds a fitted 3-feature gradient-boosted stump ensemble (classification only).
Fields:
stump_feat (array) : Which feature index (0-2) each round's stump split on
thresh (array) : Split threshold for each round's stump
left_val (array) : Newton leaf value when feature < threshold
right_val (array) : Newton leaf value when feature >= threshold
base_score (series float) : Log-odds of training mean
lr (series float) : Learning rate stored for inference
GBM4
Holds a fitted 4-feature gradient-boosted ensemble with gain-based importance.
Fields:
stump_feat (array) : Which feature index (0-3) each round's stump split on
thresh (array) : Split threshold for each round's stump
left_val (array) : Newton leaf value when feature < threshold
right_val (array) : Newton leaf value when feature >= threshold
importance (array) : Accumulated gain per feature (indices 0-3), raw — normalize via gbm4_importance_pct()
base_score (series float) : Log-odds (classifier) or mean (regressor)
lr (series float) : Learning rate stored for inference
is_classifier (series bool) : True = sigmoid probability output, False = raw regression output Library

Adaptive Lorentzian Classification [Quantum Algo]Quantum ML Engine — Adaptive Lorentzian Classification
█ OVERVIEW
Quantum ML Engine is a machine-learning classifier that predicts the direction of price over a configurable horizon using an Approximate Nearest Neighbors (ANN) search across historical feature vectors. Instead of relying on a single oscillator, it compares the current bar's "fingerprint" — a vector of up to six normalized features — against thousands of past bars, finds the most similar market conditions, and lets those historical outcomes vote on what is likely to happen next.
By default the engine measures similarity with Lorentzian distance, log(1 + |Δ|), rather than Euclidean distance. Market data is heavily distorted around major events (CPI prints, FOMC, black swans), and Lorentzian distance naturally compresses these outliers — analogous to how mass warps space-time — so a single extreme bar cannot dominate the neighbor selection.
This is an original, fully self-contained implementation written from scratch with zero library imports. The concept of applying Lorentzian distance to kNN classification on charts was pioneered in the open-source work of @jdehorty (Machine Learning: Lorentzian Classification), building on earlier kNN studies by @capissimo. Full credit to both for the foundational research. This script does not reuse their code; it re-derives the approach independently and extends it in the ways described below.
█ WHAT IS DIFFERENT IN THIS IMPLEMENTATION
1 — Time-aligned training set
Each training sample pairs the feature vector recorded AT a given bar with the realized outcome over the following H bars. Features and labels are stored on the same time axis, so the classifier learns from correctly matched cause-and-effect pairs. There is no lookahead: a sample only enters the training set once its outcome is fully realized.
2 — ATR neutral-zone labeling
Historical moves smaller than a configurable multiple of ATR are labeled NEUTRAL instead of long/short. Sideways noise therefore never teaches the model a false directional lesson. Set the multiplier to 0 to disable.
3 — Six engineered features with importance weights
RSI, WaveTrend, CCI, ADX, MFI (volume flow) and Fisher Transform, each normalized to a common 0–1 scale. Every feature slot has its own weight input, so you can tell the engine which dimensions matter more for your market without removing features entirely.
4 — Four selectable distance metrics
Lorentzian (default), Manhattan, Euclidean, and a 50/50 Lorentzian-Manhattan Hybrid. Switching metrics changes the geometry of the neighborhood and is a powerful tuning lever per asset class.
5 — Distance-weighted voting with a confidence score
Closer neighbors vote louder (weight = 1 / (1 + distance)). The agreement between neighbors is expressed as a 0–100% confidence value printed on every bar, and a minimum-confidence gate suppresses low-conviction signals entirely.
6 — Adaptive K
The neighbor count automatically shrinks (up to 40%) when volatility ranks high over the last 100 bars, making the model more reactive in fast markets, and expands back in quiet regimes for stability. Can be disabled for a fixed K.
7 — Sliding training window
The engine always trains on the most recent N bars rather than the oldest bars in chart history, so the model reflects current market structure.
8 — Configurable prediction horizon
The training/holding horizon is an input (1–20 bars) instead of a hardcoded constant.
9 — Three exit modes
Fixed-horizon exits, dynamic kernel-slope exits, and an optional ATR trailing stop with the stop level plotted on the chart.
10 — Higher-timeframe confluence filter
Optionally require price to be above (longs) or below (shorts) an EMA on a higher timeframe of your choice.
█ HOW IT WORKS
1. On every bar, six features are computed and normalized.
2. The bar's feature vector is compared against samples inside the sliding training window, sampled with a minimum chronological spacing (default 4 bars) so neighbors come from distinct market episodes rather than one cluster.
3. A monotonic distance threshold maintains a stable pool of approximate nearest neighbors; when the pool exceeds K, the threshold resets to the 75th-percentile distance, allowing genuinely closer samples to rotate in over time.
4. Neighbors vote long / short / neutral, weighted by proximity. The weighted sum becomes the prediction; the degree of agreement becomes the confidence.
5. The raw signal is then passed through optional filters: volatility regime (recent ATR vs long-run ATR), trend regime (EMA separation normalized by ATR), ADX, EMA/SMA trend, higher-timeframe trend, and a Nadaraya-Watson kernel regression filter (rational quadratic estimate with a Gaussian crossover mode for smoother color transitions).
6. Entries print only when the ML signal, the confidence gate, and all enabled filters agree.
█ SETTINGS GUIDE
General — source, training window size, prediction horizon, neutral-zone width.
ML Engine — K, adaptive K toggle, chronological spacing, distance metric, distance weighting, minimum confidence.
Feature Engineering — feature type, parameters and weight for each of the six slots.
Filters — volatility, regime, ADX, EMA/SMA, higher-timeframe confluence.
Kernel — lookback, relative weighting, regression level, lag, smoothing mode.
Exits — fixed vs dynamic exits, ATR trailing stop and multiplier.
Display — bar colors, prediction labels (value + confidence), dashboard, color compression.
█ DASHBOARD
The on-chart panel shows the live signal, prediction confidence, current adaptive K, volatility and trend regime states, kernel bias, and a calibration win-rate. The calibration statistic simply checks whether price moved in the predicted direction over the horizon after each signal. It exists ONLY to give feedback while tuning features — it is not a backtest, includes no costs or risk management, and must not be treated as a performance claim.
█ USAGE NOTES
— Works on any symbol and timeframe; intraday (15m–4H) and daily charts are typical starting points. Crypto, FX, indices and equities all behave differently — retune the features and metric per market.
— Higher minimum confidence = fewer but more selective signals. Raising chronological spacing diversifies neighbors on lower timeframes.
— Signals are evaluated on bar close. Like any bar-close logic, the in-progress bar can change until it closes.
— Best used as a confluence layer inside a complete trading plan with your own risk management, not as a standalone buy/sell system.
█ CREDITS
Concept inspiration: @jdehorty (Machine Learning: Lorentzian Classification) and @capissimo (kNN implementations). This script is an independent, original implementation with the extensions listed above.
█ DISCLAIMER
This script is provided for educational and informational purposes only. It is not financial advice, and past behavior — including the on-chart calibration statistics — does not guarantee future results. Trading involves substantial risk of loss. Always do your own research and manage risk responsibly. Indicator

Ichimoku Regime ClassifierIchimoku Regime Classifier is an open-source market regime filter that labels conditions as TREND UP, TREND DOWN, or VOLATILE.
This script is designed to solve a practical problem: many entries fail because traders apply the same setup in all environments.
Its purpose is to classify the current market context first, so strategy rules can be adapted to regime.
Methodology
The classifier uses Daily Ichimoku structure plus ADX trend-strength confirmation:
Bullish regime:
Price above the Kumo
ADX above threshold
Tenkan above Kijun
Chikou-style confirmation (current price vs past price)
Bearish regime:
Price below the Kumo
ADX above threshold
Tenkan below Kijun
Opposite Chikou-style confirmation
Volatile regime:
If neither bullish nor bearish set is fully confirmed
Why this combination
Ichimoku provides structural trend context, while ADX filters weak directional phases.
The combination aims to reduce false directional bias during choppy periods and keep regime logic explicit.
How to use
TREND UP: prioritize long-biased setups
TREND DOWN: prioritize short-biased setups
VOLATILE: reduce risk, be selective, or wait for structure
This indicator is intentionally minimal on-chart (single regime label) to keep output readable and unambiguous.
Limitations
Regime transitions can lag, especially after sharp reversals.
This tool is a context filter, not a standalone entry/exit system.
Open-source notice
Published as open source for transparency, review, and customization.
Educational content only. Not financial advice. Indicator

Market Pressure Route [AGPro Series]Market Pressure Route
🌊 Overview
─────────────────────────────────────────────────
Market Pressure Route visualizes the directional buying/selling pressure of a market as a flowing route that tracks price from above or below, and classifies the texture of that flow in real time as Clean, Stalling, Exhausted, or Broken. It is a visualization and classification tool built around two original analytics: the Directional Pressure Score (DPS) and the Route Continuity Index (RCI). The route does not predict price — it describes how clean, consistent, and energetic the current pressure is, so you can read the order-flow texture at a glance.
🔹 Unique Edge
─────────────────────────────────────────────────
Most pressure, flow, or delta-style indicators collapse to a single oscillator or histogram and leave the trader to interpret the number. Market Pressure Route takes a different route.
• Dual-layer engine — DPS measures how directional pressure is; RCI measures how consistent that pressure has been over a lookback window. Pressure without continuity is noise; continuity without pressure is drift. Only the combination qualifies as a Clean route.
• Route, not oscillator — the analytic flows as a colored band above or below price. You read the texture of the market in the same place you read price, not in a separate pane.
• Four-state classification — Clean, Stalling, Exhausted, Broken. Every bar lands in exactly one state, driven by a deterministic decision tree. No grey zones, no ambiguous signals.
• Magnitude-gated break detection — a sign flip in pressure only counts as a Broken route when the flip happens with enough energy. This suppresses the low-amplitude zero-line noise that plagues most flow tools.
• Institutional-grade presentation — compact AGPro panel with live state, direction, DPS bar widget, RCI, and a continuity Flow bar. Badges only mark the transitions that change the market story; Stall and Exhaust transitions are conveyed by route color alone.
🔹 Methodology
─────────────────────────────────────────────────
Directional Pressure Score (DPS) — a composite bounded in blending four bar-level microstructure components:
• Body (45%): closing conviction within the bar range
• Close Location (25%): close position relative to the bar midpoint
• Volume (20%): clamped z-score of volume vs a 50-bar baseline
• Gap (10%): open-to-prior-close gap, ATR-scaled
The raw score is clamped to and then EMA-smoothed with the Pressure Length.
Route Continuity Index (RCI) — a score combining:
• Persistence (65%): fraction of bars in the lookback whose DPS sign matches the current sign
• Stability (35%): one minus the normalized dispersion of DPS across the window
Stability is calibrated for the bounded range of DPS so that RCI remains resolute and does not saturate near 1.0 on quiet markets.
State Classification — a deterministic ternary decision tree:
• Broken — the pressure sign has just flipped with magnitude above the Broken Minimum DPS. Held for up to five bars as a cooldown so the transition is visible.
• Clean — qualifies via either a magnitude path (|DPS| above Clean DPS threshold and RCI above Clean RCI threshold) or a continuity path (RCI above 0.75 with minimum pressure above the Stalling DPS threshold). The dual path handles rally/selloff asymmetry.
• Stalling — pressure still present (|DPS| above Stalling threshold) but continuity has weakened (RCI below Clean levels).
• Exhausted — pressure has faded below the Stalling threshold or is losing magnitude.
🔹 Signals & Alerts
─────────────────────────────────────────────────
State transitions are exposed in two places:
On-chart badges:
• CLEAN UP — bullish Clean route has just formed
• CLEAN DOWN — bearish Clean route has just formed
• BROKEN — pressure direction has just flipped with magnitude
Intermediate Stall and Exhaust transitions are conveyed by route color change only, keeping the chart uncluttered. A price-clustering filter suppresses repeated same-type badges in the same zone so sideways markets stay institutional.
Alerts (both alert() calls and alertcondition() entries):
• Clean Bullish Route
• Clean Bearish Route
• Route Stalling
• Route Exhausted
• Route Broken
🔹 Key Inputs
─────────────────────────────────────────────────
Core Analytics:
• Pressure Length — EMA length applied to DPS (default 14)
• Route Smoothing — visual smoothing for the route band only (default 3)
• Route Continuity Lookback — bars used to compute RCI (default 10)
• Strict Route Filter — raises Clean thresholds by 0.10 for higher timeframes
Classification Thresholds:
• Clean DPS / Clean RCI — magnitude-path qualification levels
• Stalling DPS — minimum pressure to stay out of Exhausted
• Broken Minimum DPS — magnitude gate for break detection
Visual:
• Show Route Band, Minimal Mode, Price Tint
• Route Band Offset in ATR units
• Show State Badges toggle
Panel:
• Show Panel, Location (five positions), Font Size (Tiny to Large)
• Label Font Size
🔹 How to Use
─────────────────────────────────────────────────
• Context reading — the route color tells you what kind of flow you are in before you take any decision. A bright green or pink route with a strong Flow bar is a clean regime; a grey route is an exhausted regime.
• Transition awareness — BROKEN badges mark moments where the pressure narrative has changed with energy. Use them as context signals, not as entries.
• Higher-timeframe bias — many users enable Strict Route Filter on the daily and weekly to isolate only the strongest Clean routes, then drop to intraday for execution.
• Works on any liquid market with reliable volume: crypto, majors in FX, indices, and large-cap equities. Low-volume pairs dilute the volume component of DPS.
🔹 Limitations & Transparency
─────────────────────────────────────────────────
• This is a classification and visualization tool. It does not forecast price, it does not generate buy or sell orders, and it is not a strategy.
• DPS relies on a reliable volume series. Instruments with synthetic or missing volume will weight the volume component poorly.
• Route color and state describe the current bar's classification and update in real time. Final state for any bar is determined at bar close.
• No indicator identifies every turn in the market. Clean routes can exhaust without breaking; Broken routes do not guarantee a reversal of price.
🔹 Risk Disclosure
─────────────────────────────────────────────────
This script is provided for educational and analytical purposes only. It is not financial advice, not a trading recommendation, and not a solicitation to buy or sell any asset. Trading involves significant risk, including the possible loss of principal. Past performance and historical signal behavior do not guarantee future results. Always perform your own research and risk management, and size your positions according to your own risk tolerance. Indicator

Delivery Regime Map [AGPro Series]Delivery Regime Map
🔹 Overview
Delivery Regime Map classifies the market's delivery character into four distinct regimes — Balanced, Directional, Fragmented, and Exhausted — giving traders instant context on whether the tape is trending with conviction, consolidating, breaking into volatile chop, or fading after an extended move. Rather than asking "is this bullish or bearish?", DRM answers a more useful question: "what kind of market am I in, and what kind of setup is appropriate here?"
The indicator overlays a soft state ribbon across the chart, prints confirmed regime shift labels at the moment of transition, and maintains a compact status panel with the active regime, a composite conviction score, regime duration, and time since the last shift. All outputs are confirmed on bar close with dwell-based hysteresis to suppress noise.
🎯 Unique Edge
Most regime or trend-strength tools collapse the market into a single linear axis (strong ↔ weak, bullish ↔ bearish). Delivery Regime Map is categorical, not linear — it identifies the qualitative character of price delivery by fusing four independent dimensions:
• Displacement quality (how much of each bar's range is body vs. wick)
• Directional persistence (close-to-close consistency + EMA slope alignment)
• Continuity (same-side runs penalized by gap noise)
• Range expansion (current range normalized by ATR baseline)
These dimensions combine into a composite score, but the regime classification uses banded thresholds with hysteresis — meaning a Directional tape must decisively lose its edge before flipping to Fragmented or Exhausted. This produces sparse, high-conviction transitions rather than the constant flipping typical of single-value strength meters.
⚙️ Methodology
The engine computes five rolling metrics across a user-defined window (default 20 bars):
1. Displacement Quality — |close − open| / range, smoothed. High values mean strong, decisive bars with minimal wick rejection.
2. Directional Persistence — average signed close direction plus an EMA slope-alignment check. Rewards tapes that move one way without reversing.
3. Continuity — the proportion of consecutive same-side candles, penalized by an average gap-size term (opens far from prior closes indicate fractured delivery).
4. Range Expansion — current range vs. ATR baseline, clipped to . High expansion combined with low continuity flags Fragmented tapes.
5. Exhaustion Proxy — the decay rate of displacement quality after a period of high persistence. Triggers near trend terminations where bars shrink while direction lingers.
A classifier selects the active regime by priority (Directional → Exhausted → Fragmented → Balanced), and a dwell-bar confirmation (default 5 bars, or 8 under Strict mode) plus a minimum-gap filter (default 10 bars) prevent whipsaw transitions.
🚦 Signals & Alerts
Four alert conditions are built in, each firing only on a confirmed regime shift:
• Regime shifted to Directional — conviction is rising; the tape is trending
• Regime shifted to Fragmented — wide, disconnected bars; chop risk elevated
• Regime shifted to Exhausted — prior trend is losing steam; mean-reversion risk
• Regime shifted to Balanced — low-conviction state; breakout potential building
All alerts include the ticker and interval in the message payload.
🎛️ Key Inputs
• Regime Window (8–60) — length of the measurement window
• Regime Sensitivity (Low / Normal / High) — hysteresis band width
• Strict Classifier — extends dwell requirement from 5 to 8 bars
• Minimum Bars Between Shifts — anti-chop spacing filter
• Show State Ribbon / Regime Shift Labels — visual toggles
• Panel Position + Font Size — 6 anchor positions, 5 size options
• Label Font Size — matches user's chart density preference
Every input carries an inline tooltip explaining its behavior and tradeoffs.
📚 How to Use
• Use Directional regimes to favor trend-following entries and trailing stops
• Use Balanced regimes to prepare for breakouts; volatility compression often precedes expansion
• Use Fragmented regimes as a caution flag — reduce size, widen stops, or stand aside
• Use Exhausted regimes to tighten trailing stops on open trend positions; the edge may be fading
DRM is designed to be asset-agnostic and timeframe-agnostic. On lower timeframes (1m–15m), consider Strict mode and a larger minimum-gap value. On daily charts, defaults typically work well. Combine with any entry framework — order blocks, breakout levels, VWAP reclaims — as a regime filter that answers "should I even be looking for a setup here?"
⚠️ Limitations & Transparency
• The classifier is reactive, not predictive — it confirms regime changes on close, so a Directional label appears a few bars after the trend has begun. This is by design: dwell confirmation is the primary noise filter.
• Regime definitions are categorical interpretations of price statistics. They are not forecasts.
• The composite score reflects regime conviction, not directional bias. A high score in Fragmented means "confidently choppy", not "confidently bullish".
• This indicator is not a strategy. It produces no entry signals, no take-profit targets, and no stop-loss levels. It is a market-context tool intended to be combined with a trader's existing framework.
• Past regime behavior does not guarantee future regime behavior. Market character can change abruptly on news or macro events.
📜 Risk Disclosure
This indicator is published for educational and analytical purposes only. It does not constitute financial advice, a trading recommendation, or an offer to buy or sell any instrument. Trading and investing carry risk of loss, and past performance does not guarantee future results. Users are solely responsible for their own decisions and should consult qualified professionals before committing capital. Indicator

Machine Learning: Trend Classifier [identityKa]Overview
The Machine Learning: Trend Classifier is a professional-grade algorithmic momentum and trend analysis tool designed for data-driven traders. Unlike traditional moving averages that inherently lag behind live price action, this script introduces a multi-factor mathematical classification engine that evaluates real-time market behavior to predict the true direction of the trend.
Core Mechanics & Detection
The algorithm uses a continuous data-stream calculation to locate major market shifts:
Bullish Classification (Neon Green): Detected when the underlying momentum, volatility, and trend-flow simultaneously show aggressive upward expansion. The dynamic data ribbon shifts to green, encapsulating the price.
Bearish Classification (Neon Red): Detected when the structural momentum shifts downwards. The dynamic ribbon turns red, acting as algorithmic resistance.
Neutral / Chop Zones (Orange): Detected when the market loses clear direction. The engine recognizes this as a friction zone and shifts to a neutral state, warning the trader of potential whipsaws.
The Algorithmic Classification Engine
A fundamental rule of this indicator is the "AI Confidence Score". The engine normalizes multiple indicators (RSI, CCI, and MACD flows) into a strict 0 to 100 percentage scale.
The script constantly monitors this confidence score. If the score is above 20%, a Bullish state is confirmed. If it is below -20%, a Bearish state is confirmed. Anything in between is classified as market noise.
Upon crossing these algorithmic thresholds, the script instantly updates the on-chart Ribbon, ensuring that only statistically significant trend shifts are highlighted for the trader. This keeps the workspace incredibly clean and mathematically sound.
HUD Dashboard & AI Logic
The on-chart intelligence panel evaluates the live market state and generates actionable data:
Dangerous: Displayed actively whenever the current live price is trading inside the Neutral zone (Confidence Score between -20% and 20%). This serves as a warning that the price is in a high-friction area where sharp rejections and false breakouts are imminent.
LONG / SHORT: The engine tracks the macro bias based on the classification state. If the AI Confidence heavily favors upward momentum, the bias shifts to LONG. If the momentum breaks downwards, the bias shifts to SHORT.
How to Use It
This tool provides exceptional context for trade entries and trend following. When the AI Suggestion reads "LONG," traders should look for pullbacks toward the lower band of the green ribbon. When the state reads "Dangerous," it is highly recommended to stay out of the market or tighten stop losses until a clear trend direction is re-established by the algorithm. Indicator

Institutional Order Flow Strength Classifier [LuxAlgo]The Institutional Order Flow Strength Classifier tool identifies and ranks unmitigated order blocks by analyzing the institutional intensity behind market structure breaks.
It provides a percentage-based strength score for each zone, helping traders distinguish between minor price stalls and significant institutional supply/resistance areas.
🔶 USAGE
The indicator automatically detects Order Blocks (OBs) formed during Market Structure Breaks (BOS). Unlike traditional OB tools that highlight every pivot, this script focuses on the "Institutional Footprint"—the specific area where big players positioned themselves before a significant move.
🔹 Interpreting Strength (%)
The strength score (0-100%) indicates the level of institutional participation during the zone's creation.
High Strength (>70%): Indicates massive displacement and high relative volume. These zones are high-probability areas for limit order entries as they represent significant "unfilled" interest.
Medium Strength (40-70%): Indicates standard trend continuation zones, often useful for stop-loss placement or scaling into positions.
Low Strength (<40%): Indicates zones with weak follow-through. These are often treated as "internal liquidity" and may be swept or ignored by price rather than providing a bounce.
🔹 Zonal Overlap Filtering
To prevent chart clutter, the script features an advanced "Zonal Overlap" system. If multiple Order Blocks are created within the same price range, the indicator can hide the redundant zones, ensuring that only the most relevant level is visible. This helps traders focus on "confluence zones" where multiple institutional orders may be clustered.
🔹 Strongest OB Tracking
The script includes a dynamic "Strongest OB" plot. This is a continuous filled background area that tracks the zone with the highest strength percentage within the user-defined buffer. While individual OBs are shown as dashed boxes, this solid plot highlights the single most significant institutional level currently influencing the market.
🔶 DETAILS
The philosophy behind this script is that "not all Order Blocks are created equal." To classify them, the script uses a dual-metric weighted calculation:
Displacement (60% weight): This measures the "expansion" or the distance price moved away from the OB relative to its size. A large move indicates a high imbalance between buyers and sellers, suggesting institutional urgency.
Relative Volume (40% weight): This compares the volume of the candle that formed the OB to its 20-period average. High volume confirms that the move was backed by significant capital rather than low-liquidity volatility.
The script identifies the OB by searching for the last opposite-colored candle (the "Institutional Footprint") before a break of a Pivot High or Pivot Low. Once price crosses the extreme side of the box (the bottom for bullish OBs or top for bearish OBs), the zone is marked as "mitigated" and removed from the display.
🔶 SETTINGS
🔹 Order Block Settings
Pivot Lookback: The number of bars required to confirm a pivot high or low used for market structure detection.
Max Unmitigated OBs: The maximum number of active zones displayed on the chart at once.
🔹 Visualization
Bullish/Bearish OB Color: Sets the fill color for the detected Order Block boxes.
Hide Overlapped Zones: When enabled, prevents multiple boxes from stacking in the same price area, showing only the most relevant one.
Show Strength Labels: Toggles the percentage labels on the right side of the boxes.
Show Strongest OB Plot: Enables the continuous filled background plot for the zone with the highest strength score.
Strongest OB Buffer Size: Determines how many recent unmitigated zones the script should look through to find the strongest one.
Indicator

Support Resistance Classification [LuxAlgo]The Support Resistance Classification indicator shows SR levels from a user-defined range using higher time-frame data (HTF). Levels are classified 1 through 10 based on their strength, with lower values indicating stronger support/resistance levels.
This indicator doesn't use visible range functionality, in contrast to our Support Resistance Classification (VR) indicator, it uses a set lookback period to find support/resistance levels.
Since both techniques cannot be used together in 1 script, we developed a separate, NON-VR version.
🔶 USAGE
Certain indicators on higher timeframes can provide longer-term support/resistance levels on lower timeframes. Users can use the provided levels and use them as references for future support/resistance levels.
The classification algorithm measures the strength of a support/resistance level using the set range and is in a range of 1 to 10, with higher values indicating a weaker support/resistance.
Supports/resistances highlighted by the indicator can be used for future applications by marking them on the chart (quickly done with alt + h).
🔶 DETAILS
All calculations are based on what is seen in the last amount of bars, which is the period between the blue vertical line and the last candle:
Since only Swings which are not broken are included, every break would exclude that swing. Therefore, even when 'value' is chosen at Settings ('Value'), breaks are always calculated on the entire line.
🔶 SETTINGS
Lookback: Amount of bars from current bar to x bars back , this is the period where support/resistance levels are calculated.
Fade: After x breaks the line becomes invisible
Value:
value:
• SMA, upper/lower: the breaks are triggered on the moving average itself
• Fibonacci Pivot Point levels, Previous High, Previous Low: only last HTF values can be used for breaks
• Swings (see SWING SETTINGS)
line:
• SMA, upper/lower: the breaks are triggered on the entire line, based on its latest value
• Fibonacci Pivot Point Levels, Previous High, Previous Low: breaks are triggered on the entire line, based on its latest value
• Swings (see SWING SETTINGS)
🔹 Swing Settings
Swings are always calculated at the current timeframe, setting an HTF is not applicable to Swings.
Left/Right: for Swing calculation ( pivothigh , pivotlow )
Show: enables you to see the pivot points
🔹 Set
N°: The concerning number
TYPE:
• SMA (Simple Moving Average)
• Previous High/Low
• Upper/Lower ( Bollinger Bands )
• Pivot Point levels : "Fibonacci"
LENGTH: sets the 'Number of bars', needed for calculations (applicable for SMA, upper/lower)
MULT: sets the 'Standard deviation factor' (only applicable for upper/lower - BB)
HTF: sets 'Higher Time Frame' (applicable for SMA, upper/lower, Previous High/Low, Fibonacci)
🔹 Show Values
You can make up to 5 values visible (if you want to check/verify), except for Swings (see SWING SETTINGS)
To do so, enable (A -> E), and choose the N° you want to see.
This also is a useful tool if you're not sure which value you want to set. Indicator

Indicator
