MACD-V Adaptive FluxProMACD-V Adaptive FluxPro
Type: Multi-Factor Volatility-Normalized Momentum & Regime Framework
Overlay: ✅ Yes (on price chart)
Purpose: Detect high-probability trend continuation or reversal zones through volatility-adjusted momentum, VWAP structure, and adaptive filters.
🧩 Concept Overview
MACD-V Adaptive FluxPro is a next-generation, multi-factor analytical framework that merges the principles of Linda Raschke’s 3-10-16 MACD with modern volatility normalization and adaptive filtering.
Instead of generating raw buy/sell signals, it builds a probability-driven environment model — showing when price action, volatility, and structure align for high-confidence trades.
The “V” in MACD-V stands for Volatility Normalization: every MACD component is divided by ATR to stabilize amplitude across fast or slow markets.
This enables the indicator to remain consistent across timeframes, instruments, and volatility regimes.
⚙️ Core Components
1️⃣ Volatility-Normalized MACD (MACD-V)
A traditional MACD built on Linda Raschke’s 3-10-16 structure, but adjusted by ATR to create a volatility-invariant momentum profile.
You can toggle to alternative presets (Scalp / Swing / Trend) for faster or slower environments.
2️⃣ Dynamic Regime Detection
A slope-based classifier that identifies whether the market is:
Trend Up 🟢
Trend Down 🔴
Compression / Squeeze 🟧
Transition / Neutral ⚫
The background color updates dynamically as momentum, volatility, and slope shift between these states.
3️⃣ VWAP Structure Bands
Adaptive VWAP with inner and outer ATR-scaled envelopes.
These act as short-term mean-reversion and breakout zones.
The indicator can optionally gate entries to occur only within defined VWAP proximity.
4️⃣ EMAs for Micro-Trend Confirmation
Includes 9-EMA and 21-EMA, color-configurable for visual crossovers and short-term momentum bias.
5️⃣ Multi-Timeframe Confirmation Tiles
Top-center dashboard tiles display directional bias from higher timeframes (e.g., 15m / 1h / 4h).
When all align, it confirms multi-frame trend coherence.
6️⃣ Adaptive Probability Engine
All subsystems — MACD-V, slope, compression, volume z-score, and VWAP distance — feed into a logistic scoring model that outputs a real-time AOI Probability (0-100%).
When conditions align, probabilities rise above 60% (long bias) or drop below 40% (short bias).
These are your high-probability “Areas of Interest.”
7️⃣ Dashboard HUD
The top-right status console provides a one-glance view of system state:
Field Meaning
AOI Prob Long Real-time probability of bullish bias
Regime Market state (Trend, Transition, Compression)
Risk Gate ATR-based volatility filter
News Mute Manual toggle for event-risk suppression
ATR (≈ risk) Real-time volatility readout
Status ✅ Trading OK / 🧱 Risk Gate / 🔇 News Mute / 🟧 Compression
🎯 Interpretation Guide
Visual Meaning
🟢 Green background Confirmed uptrend regime
🔴 Red background Confirmed downtrend regime
🟧 Orange background Volatility compression (squeeze forming)
⚫ Gray background Transitional / indecisive structure
Teal % (AOI Prob Long) Bullish probability > 60%
Arrows Optional: appear only when all gates align (rare, filtered signals)
🧮 Mathematical Notes
MACD-V = (EMA_fast(src) − EMA_slow(src)) / ATR(n)
Normalized score is smoothed, scaled 0–100 via logistic curve
Slope = Δ(EMA(src, n)) / ATR(n)
Probabilities gated by:
Minimum slope magnitude (minAbsSlope)
VWAP proximity (maxVWAPDistATR)
Multi-TF agreement
Cooldown interval (cooldownBars)
ATR-based risk gate
No repainting — all calculations use barstate.isconfirmed.
⚡ Use Cases
✅ Identify trend regime changes before major expansions
✅ Filter breakout vs. compression setups
✅ Quantify volatility conditions before entries
✅ Confirm multi-timeframe alignment
✅ Serve as a visual regime map for automated systems or discretionary traders
🧠 Recommended Presets
Market Type Setting Preset Behavior
Index Futures (ES/NQ) LBR 3-10-16 SMA (default) Classic swing/momentum balance
Scalping (1m–5m) Fast Adaptive Higher frequency, shorter cooldown
Swing Trading (1h–4h) Smooth ATR Broader, trend-only signals
Trend-Following Futures Wide ATR Bands Filters noise, favors strong continuation
⚠️ Notes
Non-repainting, bar-confirmed calculations
Signal arrows are optional and rare — intended for precision setups
ATR and slope thresholds should be tuned per instrument
Compatible with all TradingView markets and resolutions
🏁 Summary
“MACD-V Adaptive FluxPro” is not a simple MACD — it’s a volatility-normalized market state engine that adapts to changing conditions.
It fuses Linda Raschke’s timeless MACD logic with modern volatility, slope, and multi-timeframe analytics — giving you a live market dashboard that tells you when not to trade just as clearly as when you should.
오실레이터
Quantum Edge Signals — trend-aware buy/sell signalsQuantum Edge Signals (Fixed) is a practical, performance-minded indicator for swing and trend traders. It blends StochRSI and volatility to generate buy/sell signals, then filters and classifies those signals with an optional EMA trend filter and an RSI confirmation. The indicator also draws premium/discount price zones, reports buy/sell power inside those zones, plots pivot support/resistance, and places three ATR-based targets plus a stop — all while minimizing chart redraws so objects stay anchored and won’t shift when you pan or drag the chart.
Key features
• Signal engine: StochRSI oversold/overbought conditions combined with a volatility filter (price change vs. moving average of changes).
• Strong signal classification: optional EMA fast/slow trend filter to mark stronger buys/sells.
• Non-repainting confirmation: signals are confirmed using the previous bar (the entry price is the close of the confirmed bar).
• TP/SL management: three TP levels and one SL derived from ATR. Targets are created at the signal and are recalculated only when the trend flips (adaptive without constant movement).
• Premium / Discount zones: boxes drawn around a configurable MA band; zones are created once on entry and anchored to their start bar.
• Buy / Sell power: a zone-level buy/sell ratio (smoothed up/down volume) shown as a compact label at zone entry.
• Support & resistance: pivot S/R lines and small boxed zones for visual context.
• Whale screener: optional background highlight for large-volume bars.
• Performance-first: objects are created only when needed and anchored to fixed bar indices to prevent object churn and chart hanging.
How signals and targets behave
• A signal is considered “confirmed” on the previous bar to avoid repainting. The confirmed signal’s close is used as entryPrice.
• TP/SL lines are anchored to the signal bar. By default they are created at signal time and only recalc when the EMA-based trend flips direction — this keeps targets adaptive to meaningful trend changes while avoiding per-bar jitter.
• Zones and power labels are created once when price enters the premium or discount region and stay anchored to the zone start bar (so they don’t drift when you pan/drag the chart).
Main inputs (what you’ll usually tweak)
• Signal Length, Signal Factor — control StochRSI smoothing and the volatility multiplier.
• Use 2SD Filter — require price to be outside ±2 standard deviations of MA to trigger a signal.
• Show Signals (Classic / Strong / All) — which labels to display.
• Zone Length, Zone Offset — how wide and how many bars the premium/discount zones span.
• Buy/Sell Power thresholds — set numeric cutoffs for “Weak” / “Strong” labels.
• TP/SL Factors & ATR period — the multipliers used to calculate TP1/2/3 and SL from ATR.
• Fast/Slow EMA periods — used for the strong signal / trend filter.
• S/R Strength & Zone Width — pivot lookback and how wide S/R boxes are.
Recommended usage
• Timeframes: try 1H, 4H and Daily for swing/trend setups.
• Filters: enable the Strong (EMA) filter to limit trades to the direction of the trend.
• Zones: keep zone length moderate (10–30 bars) for readability.
• Testing: run forward paper trading and walk-forward tests before using real capital.
Why this version
This release focuses on reliability and chart performance. Objects (labels, lines and boxes) are anchored to the bar that created them, and the indicator avoids repeatedly creating and deleting the same objects on every historical bar — this prevents TradingView from hanging when dragging or panning.
Limitations & notes
• TP recalculation is based on ATR at the flip bar; the script keeps the original entry price fixed to avoid repainting entries.
• If you run many other drawing-heavy indicators at the same time, TradingView may still slow down — use a single instance while testing.
• The indicator is visual/confirmational — it is not a fully automated order-execution strategy.
Easy-Read MACD (Signals & Zones)This Pine Script transforms the traditional MACD into a much clearer, more visual momentum tool. It calculates the standard MACD (12, 26, 9) and then enhances readability using color cues and signal markers. The histogram bars dynamically change brightness to show whether momentum is strengthening or weakening — bright green/red means increasing strength, while faded colors mean losing momentum.
Background colors further simplify interpretation: green when MACD is above zero and above the signal (bullish), red when below zero and below the signal (bearish), and pale yellow in neutral or transition periods. Arrows clearly mark signal-line and zero-line crossovers, giving instant visual confirmation of bullish or bearish momentum shifts. The indicator also includes optional alerts for these events, so you can get notified when momentum flips even without watching the chart.
⚡ Quick-Read Sheet
Green background:
→ MACD > 0 and above signal — bullish momentum zone. Market trending up.
Red background:
→ MACD < 0 and below signal — bearish momentum zone. Market trending down.
Yellow background:
→ Transition or sideways momentum. Trend is uncertain — avoid strong directional trades.
Bright green histogram bars:
→ Positive momentum increasing — bulls gaining strength.
Faded green histogram bars:
→ Positive momentum weakening — rally may be losing steam.
Bright red histogram bars:
→ Negative momentum increasing — bears gaining control.
Faded red histogram bars:
→ Negative momentum weakening — possible bottoming or reversal setup.
Up arrow “MACD↑Sig”:
→ MACD crosses above signal line — bullish shift, potential buy or long continuation signal.
Down arrow “MACD↓Sig”:
→ MACD crosses below signal line — bearish shift, possible sell or short signal.
Up arrow “MACD>0”:
→ MACD crosses above zero line — confirms bullish trend bias.
Down arrow “MACD<0”:
→ MACD crosses below zero line — confirms bearish trend bias.
Easy-Read RSI (Signals & Zones)This custom Pine Script reimagines the traditional RSI to make signals easier to see and act on. It smooths the RSI line using an EMA, adds a signal line (a moving average of the RSI), and colors the background for quick visual reference. Green shading marks oversold conditions, red shading marks overbought conditions, and a faint yellow band highlights the neutral zone (45–55). Together, these visual cues help you instantly recognize momentum shifts and potential reversals without staring at raw numbers.
The script also plots bullish and bearish signal arrows: upward arrows appear when RSI crosses above its signal line or exits the oversold zone, while downward arrows mark when RSI crosses below its signal or falls from the overbought zone. It includes built-in TradingView alerts for each event, so you can receive notifications of key turning points automatically.
Quick-Read Guide for Easy-Read RSI
Green background: RSI is in the oversold zone (typically below 30). The market may be near a short-term bottom. Watch for an up arrow (OS↑) — this suggests a possible bullish reversal or entry point.
Red background: RSI is in the overbought zone (typically above 70). The market may be overextended to the upside. Watch for a down arrow (OB↓) — this can signal a bearish reversal or exit opportunity.
Yellow background: RSI is in the neutral zone (roughly between 45 and 55). This usually means the market is consolidating or lacks a clear direction. Signals in this area are weaker and often less reliable.
Up arrow (RSI↑MA): RSI crosses above its signal line — a sign of strengthening bullish momentum or trend continuation. Can be used as a buy or add signal when confirmed by price action.
Down arrow (RSI↓MA): RSI crosses below its signal line — a sign of weakening momentum or potential reversal to the downside. Can be used as a sell or reduce-exposure signal.
OS↑ arrow: RSI moves up out of the oversold zone. This indicates early recovery momentum and potential reversal from a dip.
OB↓ arrow: RSI moves down out of the overbought zone. This signals momentum cooling and possible reversal from a high.
Swing Breakout Strategy ver 1Overview
A multi-confirmation swing strategy that seeks trend breakouts and adds three optional confluence modules: candlestick patterns, RSI/MACD regular divergences, and simple chart patterns (double top/bottom). Built for clarity, fast testing, and togglable debug markers.
Core Logic
Trend filter: SMA(50) vs SMA(200) + price vs SMA(21).
Breakout engine: Close breaks prior N-bar high/low (lookback configurable).
Momentum: Stochastic cross (optional view), MACD cross/zone, RSI regime (>50 or <50).
Volume: Above SMA(volume) filter.
Optional Confluence Modules
Candlestick analysis (enable/disable):
Bull/Bear Engulfing, Hammer, Shooting Star, Inside Bar (bull/bear flavors).
Divergence (enable/disable):
Regular divergences on RSI and MACD histogram using confirmed pivots (HH/LH or LL/HL).
Chart patterns (enable/disable):
Double Bottom (two similar lows + neckline break).
Double Top (two similar highs + neckline break).
Tolerance and pivot width are configurable.
Entries & Exits
Entry Long: Any of (Base Breakout + Trend + Momentum + Volume) OR enabled confluences (candles / divergence / pattern).
Entry Short: Symmetric logic for downside.
Risk management: Optional ATR-based stop loss and take profit (configurable length & multipliers).
Note: If you prefer confluences to be filters (AND), change the final buySignal/sellSignal lines accordingly.
Inputs (key)
SMA lengths (21/50/200), RSI length, Stochastic lengths & smoothing, MACD (12/26/9).
Breakout lookback, Volume SMA.
ATR exits (on/off, ATR length, SL/TP multipliers).
Toggles for Candlesticks, Divergences, Patterns, plus per-module debug markers.
Plots & Markers
Plots SMA 21/50/200.
Buy/Sell arrows on chart.
Optional debug markers for each condition (global-scope safe).
Divergence/pattern markers offset to the actual pivot/neckline bars.
Good Practices
Test on multiple timeframes and instruments; tune lookbacks and ATR multipliers.
Consider using the modules as filters in trending markets to reduce whipsaws.
Always forward-test and combine with position sizing.
Disclaimer
For educational purposes only. This is not financial advice. Trading involves risk.
Version & Credits
Pine Script® v6 — Strategy.
Developed by: Mohammed Bedaiwi.
SALSA MultiStrategy DashboardENGLISH VERSION (Primary)
Why I Created This Unified Dashboard
The Problem with Analysis Fragmentation:
As an active trader, I found myself constantly struggling with chart clutter - having 5-8 separate indicators open simultaneously. This created cognitive overload and made it difficult to identify confluence across different technical approaches. The constant switching between indicators and managing multiple windows was disrupting my trading workflow and decision-making process.
My Solution:
I developed the SALSA MultiStrategy Dashboard to solve this specific problem by integrating complementary technical methodologies into a single, cohesive view. This isn't just a random collection of indicators, but a carefully curated selection that work together to provide comprehensive market analysis.
What Makes This Dashboard Unique
Integrated Analysis Framework:
Squeeze Momentum System: Identifies consolidation periods and potential breakout directions with color-coded momentum signals
ADX Trend Strength Analysis: Customizable key level (default: 23) for trend strength assessment with visual scaling
RSI with Built-in Divergence: Dual-timeframe RSI analysis with automatic divergence detection
Multi-Timeframe Confirmation: Additional oscillators (MFI, Stochastic, AO, MACD, CCI) for signal validation
Key Innovations:
Unified Scaling System: All indicators share a common scale, making visual comparison intuitive
Integrated Divergence Detection: Consistent divergence logic applied across both Squeeze Momentum and RSI
Smart Color Coding: Visual cues that highlight momentum shifts and trend strength
Trading Status Module: Real-time market condition assessment based on multiple factor confluence
How It Works - Technical Foundation
Squeeze Momentum Component:
Uses Bollinger Bands® and Keltner Channels to detect market compression
Momentum calculation based on linear regression of price action
Color transitions indicate momentum shifts (Cyan/Blue for bullish, Yellow/Orange for bearish)
ADX with Custom Key Levels:
Implements Wilder's ADX with adjustable key level threshold
Visual scaling adapts to market conditions
Separate +DI/-DI plotting options for additional trend direction insight
Advanced RSI System:
Standard RSI with fast-slow momentum divergence detection
Configurable overbought/oversold levels
SMA smoothing for reduced noise
Practical Usage Guidelines
For Trend Identification:
Watch for Squeeze Momentum breaking above/below zero with corresponding ADX above key level
Look for RSI confirmation in the same direction
Use additional oscillators for secondary confirmation
For Divergence Trading:
Monitor for regular and hidden divergences on both Squeeze and RSI
Wait for price action confirmation
Use ADX trend strength to filter high-probability setups
Customization Options:
Toggle individual components on/off based on your trading style
Adjust sensitivity parameters for different timeframes
Modify key levels to match specific market conditions
SPANISH VERSION (Secondary)
Por Qué Creé Este Dashboard Unificado
El Problema con la Fragmentación del Análisis:
Como trader activo, me encontraba constantemente luchando con el desorden en los gráficos - teniendo 5-8 indicadores separados abiertos simultáneamente. Esto creaba sobrecarga cognitiva y dificultaba identificar confluencia entre diferentes enfoques técnicos. El cambio constante entre indicadores y la gestión de múltiples ventanas estaba interrumpiendo mi flujo de trabajo y proceso de decisión.
Mi Solución:
Desarrollé el SALSA MultiStrategy Dashboard para resolver este problema específico integrando metodologías técnicas complementarias en una vista única y cohesiva. Esto no es solo una colección aleatoria de indicadores, sino una selección cuidadosamente curada que trabajan juntos para proporcionar análisis de mercado integral.
Componentes Principales y Su Función
Sistema de Momento Squeeze:
Detecta períodos de consolidación y direcciones potenciales de ruptura
Señales de momento codificadas por colores para identificación visual rápida
Análisis de Fuerza de Tendencia ADX:
Nivel clave personalizable (por defecto: 23) para evaluación de fuerza de tendencia
Escalado visual adaptativo a condiciones de mercado
RSI con Detección de Divergencia Integrada:
Análisis RSI de doble marco temporal con detección automática de divergencias
Niveles de sobrecompra/sobreventa configurables
Cómo Utilizar el Dashboard
Para Trading de Tendencia:
Squeeze Momentum rompiendo arriba/abajo de cero con ADX sobre nivel clave
Confirmación RSI en la misma dirección
Osciladores adicionales para confirmación secundaria
Para Trading por Divergencia:
Monitorear divergencias regulares y ocultas en Squeeze y RSI
Esperar confirmación de acción del precio
Usar fuerza de tendencia ADX para filtrar setups de alta probabilidad
Important Compliance Notes:
Title: "SALSA MultiStrategy Dashboard" (English only, no emojis)
Language: English first, Spanish translation provided
Originality: Focus on solving the specific problem of analysis fragmentation
Chart Requirements: Clean chart showing only this indicator's output
Open Source: Complete transparency about methodology and calculations
Trading Disclaimer:
This tool is designed for educational and analytical purposes to help traders develop a systematic approach to market analysis. It is not financial advice. Always conduct your own research and backtesting before making trading decisions.
2 Bandas de Bollinguer (10-20) + 4 EMA + 2 SMA 2 BB (10-20) + 4 EMA (35-50-100-200) + 2 SMA (75-100) configurable
Scalping m15 indicator RovTradingScalping Indicator Combining UT Bot and Linear Regression Candles.
UT Bot uses ATR Trailing Stop to identify entry points.
Linear Regression Candles smooth price action and provide trend signals.
The indicator is suitable for scalping trading on the M15 timeframe.
Bull vs Bear Volume(Simplified)Bull vs Bear Volume
After experimenting with countless volume-based indicators, I sought a simple way to visualize buying and selling pressure with just two lines—an indicator that stays closely coupled with price action.
I went through endless trial and error, building extremely complex volume indicators, only to find that in live trading, errors kept arising and the tools became more hindrance than help. Yet, to enhance the reliability of price indicators, a trustworthy volume measure is indispensable. Even after testing numerous community-shared indicators, I could not find one that met my needs.
This led me to a simple idea: process volume only when Close > Open for buying pressure, and Close < Open for selling pressure, while cleaning out the noise. By reflecting only the volume contributing to price movement, the indicator remains stable and intuitive.
Implementing this concept, I created an indicator that, among countless volume tools, stands out for its clarity and lack of extraneous functions. Users can freely adjust the sum periods of the Bull and Bear lines, choose line styles, and even enjoy the dynamic color changes when the lines cross.
If this indicator can provide even a little assistance in trading, then my purpose is fulfilled.
Stochastic Clean & ClearA simple yet sharp take on the Stochastic Oscillator, built for traders who want to read momentum cleanly without extra clutter.
💡 Main Features:
Dynamic %K and %D line colors — green for bullish momentum, red for bearish.
Auto dots appear whenever %K crosses %D, so you’ll never miss a signal.
Clearly marked overbought (80) and oversold (20) zones with a soft transparent background.
Adjustable smoothing parameters to fit your trading style.
🎯 Perfect for traders who rely on price action + momentum, especially on intraday and swing timeframes.
Minimalist design, no noise — just colors and dots that tell you when the market mood starts to shift.
ADX +DI/-DI with Buy/Sell Signals//@version=5
indicator("ADX +DI/-DI with Buy/Sell Signals", overlay=true)
// Inputs
adxLength = input.int(14, "ADX Length")
threshold = input.float(25.0, "ADX Threshold")
// Directional Movement
upMove = ta.change(high)
downMove = -ta.change(low)
plusDM = (upMove > downMove and upMove > 0) ? upMove : 0.0
minusDM = (downMove > upMove and downMove > 0) ? downMove : 0.0
// True Range and Smoothed Values
tr = ta.rma(ta.tr, adxLength)
plusDI = 100 * ta.rma(plusDM, adxLength) / tr
minusDI = 100 * ta.rma(minusDM, adxLength) / tr
dx = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adx = ta.rma(dx, adxLength)
// Buy/Sell Conditions
buySignal = ta.crossover(plusDI, minusDI) and adx > threshold
sellSignal = ta.crossover(minusDI, plusDI) and adx > threshold
// Plot Buy/Sell markers
plotshape(buySignal, title="BUY", location=location.belowbar,
color=color.new(color.lime, 0), style=shape.triangleup, size=size.large, text="BUY")
plotshape(sellSignal, title="SELL", location=location.abovebar,
color=color.new(color.red, 0), style=shape.triangledown, size=size.large, text="SELL")
// Optional ADX + DI lines (hidden by default)
plot(adx, title="ADX", color=color.yellow, linewidth=2, display=display.none)
plot(plusDI, title="+DI", color=color.green, display=display.none)
plot(minusDI, title="-DI", color=color.red, display=display.none)
hline(threshold, "ADX Threshold", color=color.gray, linestyle=hline.style_dotted)
// Alerts
alertcondition(buySignal, title="BUY Alert", message="ADX Buy Signal Triggered")
alertcondition(sellSignal, title="SELL Alert", message="ADX Sell Signal Triggered")
Indicateur d'executionThis indicator is based on a 50-period RSI and a 50-period SMA. It allows you to visualize the rebounds between the different curves. These rebounds have proven to be relevant for execution.
Le vrai parmi les trois
Volume Pressure Oscillator (VPO)🔹 Core Logic
VPO Calculation:
The indicator measures price momentum weighted by volume, smoothed by EMA, and normalized within a dynamic range to highlight relative pressure extremes.
Signal Line:
A secondary EMA of VPO acts as a signal baseline for crossovers and trend confirmation.
Entry Triggers:
Zero-line Crossovers: Momentum shifts from bearish to bullish (or vice versa).
Signal Crossovers: Confirmation of sustained directional momentum.
Filters:
Volume Filter: Only trades when volume is above the moving average.
VWAP Slope Filter: Ensures trades align with intraday institutional flow.
Higher Timeframe VWAP: Confirms multi-timeframe directional bias.
RSI Filter: Avoids overextended entries.
Optional Divergence Confirmation: Adds precision in reversal environments.
Lesh_ghoti_2Custom Timeframe 2 randomness, Custom Timeframe 2 randomness, Custom Timeframe 2 randomness
byquan GP - SRSI Channel🔍 What Is It?
The GP – SRSI Channel is a momentum-based oscillator that measures the relative strength of price movements across multiple timeframes using the Stochastic RSI (SRSI) method.
Instead of using a single RSI line, this indicator analyzes four price inputs and four timeframes to create a dynamic channel that reflects the true market momentum — helping traders identify overbought and oversold zones with higher accuracy.
⚙️ How It Works
The indicator combines multiple layers of analysis to produce a smooth and reliable momentum channel.
1. Multi-Source RSI Calculation
It computes RSI and Stochastic RSI values for four different price sources:
Open
High
Low
Close
Each source generates its own SRSI value:
dsopen, dshigh, dslow, and dsclose
From these, it extracts:
starraymin: the lowest (most oversold) SRSI value
starraymax: the highest (most overbought) SRSI value
This forms a momentum range based on all price inputs.
2. Multi-Timeframe (MTF) Integration
To strengthen signal reliability, it repeats this SRSI analysis across four higher timeframes (configurable by user):
Parameter Default Value Meaning
Time 1 180 minutes 3-hour chart
Time 2 360 minutes 6-hour chart
Time 3 720 minutes 12-hour chart
Time 4 1D Daily chart
Each timeframe produces its own set of minimum, maximum, and close SRSI values.
These are then combined and normalized to a 0–100 scale.
3. Normalization and Channel Plot
The combined results create three main lines:
Min Line (Green–Red gradient) → represents oversold strength
Max Line (Green–Red gradient) → represents overbought strength
Close Line (White) → represents average SRSI value
The area between the Min and Max lines is filled with a color gradient to form the SRSI Channel, visually showing momentum strength and range.
4. Signal & Alerts
Two alert levels are defined:
Alert Min Level → Default = 5 (oversold)
Alert Max Level → Default = 95 (overbought)
When:
oranmin ≤ Alert Min Level → Market is in an oversold state (potential reversal up).
oranmax ≥ Alert Max Level → Market is in an overbought state (potential reversal down).
When either of these thresholds is crossed, the indicator triggers:
A white square marker on the chart.
A custom alert with the message:
“SRSI Channel reached alert threshold (oranmax ≥ MaxLevel or oranmin ≤ MinLevel)”
🧭 How to Use It
🪄 Step 1 — Add to Chart
Copy the code into a new Pine Script in TradingView.
Click Add to chart.
You’ll see three lines and a colored channel between them.
⚙️ Step 2 — Adjust Inputs
Core SRSI Settings
Setting Description
K, D Smoothing factors for Stochastic RSI.
RSI Length Number of bars for RSI calculation.
S Length Period used for %K in Stochastic RSI.
Alert Min/Max Level Defines oversold/overbought zones.
Multi-Timeframe Settings
Change Time 1 to Time 4 to suit your trading style:
Shorter timeframes → faster but more noise.
Longer timeframes → smoother, more reliable momentum.
📈 Step 3 — Interpret the Chart
Indicator Element Meaning
🟩 Lower Boundary (Min) Lowest SRSI reading → momentum weakness / possible rebound area
🟥 Upper Boundary (Max) Highest SRSI reading → strong momentum / possible exhaustion
⚪ Middle Line (Close) Average of all SRSI readings → overall momentum strength
🌈 Channel Fill Visualizes balance between overbought and oversold levels
When the channel widens → market volatility and strength increase.
When it narrows → consolidation or low-momentum phase.
🔔 Step 4 — Alerts
You can create alerts using:
Condition: SRSI Extreme
Message: SRSI Channel reached alert threshold
Use this to receive notifications when the market hits extreme momentum levels (great for reversal traders).
💡 Trading Tips
✅ Combine with Supertrend, MACD, or Moving Averages for confirmation.
✅ Look for SRSI extremes aligning with price support/resistance for stronger reversal entries.
✅ Use different timeframe combinations (e.g., 1H–4H–12H–1D) depending on your trading style.
✅ Treat it as a momentum filter — not a direct buy/sell signal tool.
⚖️ Summary
The GP – SRSI Channel is a sophisticated multi-timeframe momentum indicator that helps traders visualize market strength and identify overbought or oversold conditions with exceptional clarity.
Features:
4 price sources × 4 timeframes = deep momentum insight
Dynamic, color-coded SRSI channel
Built-in alert system for extreme conditions
Clean and intuitive visual design
Best suited for:
Swing and position traders
Traders who use RSI/Stoch indicators
Those seeking to confirm entries with multi-timeframe momentum data
🎯 Understand the market’s true momentum — before it moves.
RSI + Stochastic Combo (fixed) by howhaber# RSI + Stochastic Indicator
**Summary**
This indicator combines RSI and Stochastic to generate BUY and SELL signals in oversold or overbought market conditions. It merges both indicators for higher accuracy, reducing false signals. Includes visual signals on the chart, alerts, and an info label for quick analysis.
---
## 📈 How the Indicator Works
### RSI Component
- Calculates standard RSI based on the specified period (`rsiLen`).
- Indicates oversold (< 30) or overbought (> 70) conditions.
### Stochastic Component
- Manually calculated to avoid compatibility issues.
- Measures the current price position relative to the price range (highs/lows) over the selected period.
- Smoothed using two SMA filters (%K and %D).
### Signal Logic
**BUY Signal**:
- %K crosses above %D (`ta.crossover(k, d)`).
- %K < 20 (oversold market).
- RSI < specified threshold (default < 40).
**SELL Signal**:
- %K crosses below %D (`ta.crossunder(k, d)`).
- %K > 80 (overbought market).
- RSI > specified threshold (default > 60).
---
## 📍 What's Displayed on the Chart
- 🟢 **Green arrow** below the bar → BUY signal.
- 🔴 **Red arrow** above the bar → SELL signal.
- **In a separate window**:
- RSI line (blue).
- Stochastic %K (orange).
- Stochastic %D (purple).
- Reference levels: 30/70 (RSI), 20/80 (Stochastic).
---
## 🔔 Alerts
- **RSI+Stoch BUY**: Notification on BUY signal.
- **RSI+Stoch SELL**: Notification on SELL signal.
Receive alerts via email, Telegram, or directly on the platform.
---
## 🧩 Additional Feature
- Info label on the last bar, displaying:
- Current RSI value.
- %K and %D values.
- Facilitates quick visual checks of the indicator's current state.
---
## 💡 Interpretation
- **Oversold market** (confirmed by RSI and Stochastic): Likely upward reversal.
- **Overbought market** (confirmed by RSI and Stochastic): Likely downward reversal.
- Combining both reduces false signals and improves accuracy in choppy markets.
---
## ⚠️ Important Note
This indicator is not financial advice. It is designed for technical analysis and educational purposes. Combine it with other tools like trend analysis, volume, and price patterns for better results.
RSI// This source code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © xdecow
//@version=5
indicator("RSI", overlay=true)
g_panel = 'Panel Options'
i_orientation = input.string('Vertical', 'Orientation', options = , group = g_panel)
i_position = input.string('Bottom Right', 'Position', options = , group = g_panel)
i_border_width = input.int(1, 'Border Width', minval = 0, maxval = 10, group = g_panel, inline = 'border')
i_color_border = input.color(#000000, '', group = g_panel, inline = 'border')
i_showHeaders = input.bool(true, 'Show Headers', group = g_panel)
i_color_header_bg = input.color(#5d606b, 'Headers Background', group = g_panel, inline = 'header')
i_color_header_text = input.color(color.white, 'Text', group = g_panel, inline = 'header')
i_color_tf_bg = input.color(#2a2e39, 'Timeframe Background', group = g_panel, inline = 'tf')
i_color_tf_text = input.color(color.white, 'Text', group = g_panel, inline = 'tf')
i_debug = input.bool(false, 'Display colors palette (debug)', group = g_panel)
// rsi bg colors
g_rsi = 'RSI Colors'
i_threshold_ob = input.int(70, 'Overbought Threshold', minval=51, maxval=100, group = g_rsi)
i_color_ob = input.color(#128416, 'Overbought Background', inline = 'ob', group = g_rsi)
i_tcolor_ob = input.color(color.white, 'Text', inline = 'ob', group = g_rsi)
i_threshold_uptrend = input.int(60, 'Uptrend Threshold', minval=51, maxval=100, group = g_rsi)
i_color_uptrend = input.color(#2d472e, 'Uptrend Background', inline = 'up', group = g_rsi)
i_tcolor_uptrend = input.color(color.white, 'Text', inline = 'up', group = g_rsi)
i_color_mid = input.color(#131722, 'No Trend Background', group = g_rsi, inline = 'mid')
i_tcolor_mid = input.color(#b2b5be, 'Text', group = g_rsi, inline = 'mid')
i_threshold_downtrend = input.int(40, 'Downtrend Threshold', group = g_rsi, minval=0, maxval=49)
i_color_downtrend = input.color(#5b2e2e, 'Downtrend Background', group = g_rsi, inline = 'down')
i_tcolor_downtrend = input.color(color.white, 'Text', group = g_rsi, inline = 'down')
i_threshold_os = input.int(30, 'Oversold Threshold', minval=0, maxval=49, group = g_rsi)
i_color_os = input.color(#db3240, 'Oversold Background', group = g_rsi, inline = 'os')
i_tcolor_os = input.color(color.white, 'Text', group = g_rsi, inline = 'os')
g_rsi1 = 'RSI #1'
i_rsi1_enabled = input.bool(true, title = 'Enabled', group = g_rsi1)
i_rsi1_tf = input.timeframe('5', 'Timeframe', group = g_rsi1)
i_rsi1_len = input.int(14, 'Length', minval = 1, group = g_rsi1)
i_rsi1_src = input.source(close, 'Source', group = g_rsi1) * 10000
v_rsi1 = i_rsi1_enabled ? request.security(syminfo.tickerid, i_rsi1_tf, ta.rsi(i_rsi1_src, i_rsi1_len)) : na
g_rsi2 = 'RSI #2'
i_rsi2_enabled = input.bool(true, title = 'Enabled', group = g_rsi2)
i_rsi2_tf = input.timeframe('15', 'Timeframe', group = g_rsi2)
i_rsi2_len = input.int(14, 'Length', minval = 1, group = g_rsi2)
i_rsi2_src = input.source(close, 'Source', group = g_rsi2) * 10000
v_rsi2 = i_rsi2_enabled ? request.security(syminfo.tickerid, i_rsi2_tf, ta.rsi(i_rsi2_src, i_rsi2_len)) : na
g_rsi3 = 'RSI #3'
i_rsi3_enabled = input.bool(true, title = 'Enabled', group = g_rsi3)
i_rsi3_tf = input.timeframe('60', 'Timeframe', group = g_rsi3)
i_rsi3_len = input.int(14, 'Length', minval = 1, group = g_rsi3)
i_rsi3_src = input.source(close, 'Source', group = g_rsi3) * 10000
v_rsi3 = i_rsi3_enabled ? request.security(syminfo.tickerid, i_rsi3_tf, ta.rsi(i_rsi3_src, i_rsi3_len)) : na
g_rsi4 = 'RSI #4'
i_rsi4_enabled = input.bool(true, title = 'Enabled', group = g_rsi4)
i_rsi4_tf = input.timeframe('240', 'Timeframe', group = g_rsi4)
i_rsi4_len = input.int(14, 'Length', minval = 1, group = g_rsi4)
i_rsi4_src = input.source(close, 'Source', group = g_rsi4) * 10000
v_rsi4 = i_rsi4_enabled ? request.security(syminfo.tickerid, i_rsi4_tf, ta.rsi(i_rsi4_src, i_rsi4_len)) : na
g_rsi5 = 'RSI #5'
i_rsi5_enabled = input.bool(true, title = 'Enabled', group = g_rsi5)
i_rsi5_tf = input.timeframe('D', 'Timeframe', group = g_rsi5)
i_rsi5_len = input.int(14, 'Length', minval = 1, group = g_rsi5)
i_rsi5_src = input.source(close, 'Source', group = g_rsi5) * 10000
v_rsi5 = i_rsi5_enabled ? request.security(syminfo.tickerid, i_rsi5_tf, ta.rsi(i_rsi5_src, i_rsi5_len)) : na
g_rsi6 = 'RSI #6'
i_rsi6_enabled = input.bool(true, title = 'Enabled', group = g_rsi6)
i_rsi6_tf = input.timeframe('W', 'Timeframe', group = g_rsi6)
i_rsi6_len = input.int(14, 'Length', minval = 1, group = g_rsi6)
i_rsi6_src = input.source(close, 'Source', group = g_rsi6) * 10000
v_rsi6 = i_rsi6_enabled ? request.security(syminfo.tickerid, i_rsi6_tf, ta.rsi(i_rsi6_src, i_rsi6_len)) : na
g_rsi7 = 'RSI #7'
i_rsi7_enabled = input.bool(false, title = 'Enabled', group = g_rsi7)
i_rsi7_tf = input.timeframe('W', 'Timeframe', group = g_rsi7)
i_rsi7_len = input.int(14, 'Length', minval = 1, group = g_rsi7)
i_rsi7_src = input.source(close, 'Source', group = g_rsi7) * 10000
v_rsi7 = i_rsi7_enabled ? request.security(syminfo.tickerid, i_rsi7_tf, ta.rsi(i_rsi7_src, i_rsi7_len)) : na
g_rsi8 = 'RSI #8'
i_rsi8_enabled = input.bool(false, title = 'Enabled', group = g_rsi8)
i_rsi8_tf = input.timeframe('W', 'Timeframe', group = g_rsi8)
i_rsi8_len = input.int(14, 'Length', minval = 1, group = g_rsi8)
i_rsi8_src = input.source(close, 'Source', group = g_rsi8) * 10000
v_rsi8 = i_rsi8_enabled ? request.security(syminfo.tickerid, i_rsi8_tf, ta.rsi(i_rsi8_src, i_rsi8_len)) : na
g_rsi9 = 'RSI #9'
i_rsi9_enabled = input.bool(false, title = 'Enabled', group = g_rsi9)
i_rsi9_tf = input.timeframe('W', 'Timeframe', group = g_rsi9)
i_rsi9_len = input.int(14, 'Length', minval = 1, group = g_rsi9)
i_rsi9_src = input.source(close, 'Source', group = g_rsi9) * 10000
v_rsi9 = i_rsi9_enabled ? request.security(syminfo.tickerid, i_rsi9_tf, ta.rsi(i_rsi9_src, i_rsi9_len)) : na
g_rsi10 = 'RSI #10'
i_rsi10_enabled = input.bool(false, title = 'Enabled', group = g_rsi10)
i_rsi10_tf = input.timeframe('W', 'Timeframe', group = g_rsi10)
i_rsi10_len = input.int(14, 'Length', minval = 1, group = g_rsi10)
i_rsi10_src = input.source(close, 'Source', group = g_rsi10) * 10000
v_rsi10 = i_rsi10_enabled ? request.security(syminfo.tickerid, i_rsi10_tf, ta.rsi(i_rsi10_src, i_rsi10_len)) : na
f_StrPositionToConst(_p) =>
switch _p
'Top Left' => position.top_left
'Top Right' => position.top_right
'Top Center' => position.top_center
'Middle Left' => position.middle_left
'Middle Right' => position.middle_right
'Middle Center' => position.middle_center
'Bottom Left' => position.bottom_left
'Bottom Right' => position.bottom_right
'Bottom Center' => position.bottom_center
=> position.bottom_right
f_timeframeToHuman(_tf) =>
seconds = timeframe.in_seconds(_tf)
if seconds < 60
_tf
else if seconds < 3600
str.tostring(seconds / 60) + 'm'
else if seconds < 86400
str.tostring(seconds / 60 / 60) + 'h'
else
switch _tf
"1D" => "D"
"1W" => "W"
"1M" => "M"
=> str.tostring(_tf)
type TPanel
table src = na
bool vertical_orientation = true
int row = 0
int col = 0
method incCol(TPanel _panel) =>
if _panel.vertical_orientation
_panel.col += 1
else
_panel.row += 1
method incRow(TPanel _panel) =>
if not _panel.vertical_orientation
_panel.col += 1
_panel.row := 0
else
_panel.row += 1
_panel.col := 0
method add(TPanel _panel, string _v1, color _bg1, color _ctext1, string _v2, color _bg2, color _ctext2) =>
table.cell(_panel.src, _panel.col, _panel.row, _v1, text_color = _ctext1, bgcolor = _bg1)
_panel.incCol()
table.cell(_panel.src, _panel.col, _panel.row, _v2, text_color = _ctext2, bgcolor = _bg2)
_panel.incRow()
f_bg(_rsi) =>
c_line = na(_rsi) ? i_color_mid :
_rsi >= i_threshold_ob ? i_color_ob :
_rsi >= i_threshold_uptrend ? i_color_uptrend :
_rsi <= i_threshold_os ? i_color_os :
_rsi <= i_threshold_downtrend ? i_color_downtrend :
i_color_mid
f_rsi_text_color(_rsi) =>
c_line = na(_rsi) ? i_tcolor_mid :
_rsi >= i_threshold_ob ? i_tcolor_ob :
_rsi >= i_threshold_uptrend ? i_tcolor_uptrend :
_rsi <= i_threshold_os ? i_tcolor_os :
_rsi <= i_threshold_downtrend ? i_tcolor_downtrend :
i_tcolor_mid
f_formatRsi(_rsi) => na(_rsi) ? 'N/A' : str.tostring(_rsi, '0.00')
if barstate.islast
v_panel = TPanel.new(vertical_orientation = i_orientation == 'Vertical')
v_max_rows = 20
v_panel.src := table.new(f_StrPositionToConst(i_position), v_max_rows, v_max_rows, border_width = i_border_width, border_color = i_color_border)
if i_showHeaders
v_panel.add('TF', i_color_header_bg, i_color_header_text, 'RSI', i_color_header_bg, i_color_header_text)
if i_rsi1_enabled
v_panel.add(f_timeframeToHuman(i_rsi1_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi1), f_bg(v_rsi1), f_rsi_text_color(v_rsi1))
if i_rsi2_enabled
v_panel.add(f_timeframeToHuman(i_rsi2_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi2), f_bg(v_rsi2), f_rsi_text_color(v_rsi2))
if i_rsi3_enabled
v_panel.add(f_timeframeToHuman(i_rsi3_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi3), f_bg(v_rsi3), f_rsi_text_color(v_rsi3))
if i_rsi4_enabled
v_panel.add(f_timeframeToHuman(i_rsi4_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi4), f_bg(v_rsi4), f_rsi_text_color(v_rsi4))
if i_rsi5_enabled
v_panel.add(f_timeframeToHuman(i_rsi5_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi5), f_bg(v_rsi5), f_rsi_text_color(v_rsi5))
if i_rsi6_enabled
v_panel.add(f_timeframeToHuman(i_rsi6_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi6), f_bg(v_rsi6), f_rsi_text_color(v_rsi6))
if i_rsi7_enabled
v_panel.add(f_timeframeToHuman(i_rsi7_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi7), f_bg(v_rsi7), f_rsi_text_color(v_rsi7))
if i_rsi8_enabled
v_panel.add(f_timeframeToHuman(i_rsi8_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi8), f_bg(v_rsi8), f_rsi_text_color(v_rsi8))
if i_rsi9_enabled
v_panel.add(f_timeframeToHuman(i_rsi9_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi9), f_bg(v_rsi9), f_rsi_text_color(v_rsi9))
if i_rsi10_enabled
v_panel.add(f_timeframeToHuman(i_rsi10_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi10), f_bg(v_rsi10), f_rsi_text_color(v_rsi10))
if i_debug
t = table.new(position.middle_center, 21, 20, border_width = i_border_width, border_color = i_color_border)
v_panel2 = TPanel.new(t, vertical_orientation = i_orientation == 'Vertical')
v_panel2.add('Debug', i_color_header_bg, i_color_header_text, 'Colors', i_color_header_bg, i_color_header_text)
demo = map.new()
map.put(demo, 'Overbought', i_threshold_ob)
map.put(demo, 'Uptrend', i_threshold_uptrend)
map.put(demo, 'No Trend', 50)
map.put(demo, 'Downtrend', i_threshold_downtrend)
map.put(demo, 'Oversold', i_threshold_os)
demoKeys = map.keys(demo)
for key in demoKeys
tf = key
rsi = map.get(demo, key)
v_panel2.add(tf, i_color_tf_bg, i_color_tf_text, f_formatRsi(rsi), f_bg(rsi), f_rsi_text_color(rsi))
Logit RSI [AdaptiveRSI]The traditional 0–100 RSI scale makes statistical overlays, such as Bollinger Bands or even moving averages, technically invalid. This script solves this issue by placing RSI on an unbounded, continuous scale, enabling these tools to work as intended.
The Logit function takes bounded data, such as RSI values ranging from 0 to 100, and maps them onto an unbounded scale ranging from negative infinity (−∞) to positive infinity (+∞).
An RSI reading of 50 becomes 0 on the Logit scale, indicating a balanced market. Readings above 50 map to positive Logit values (price above Wilder’s EMA / RSI above 50), while readings below 50 map to negative values (price below Wilder’s EMA / RSI below 50).
For the detailed formula, which calculates RSI as a scaled distance from Wilder’s EMA, check the RSI
: alternative derivation script.
The main issue with the 0–100 RSI scale is that different lookback periods produce very different distributions of RSI values. The histograms below illustrate how often RSIs of various lengths spend time within each 5-point range.
On RSI(2), the tallest bars appear at the edges (0–5 and 95–100), meaning short-term RSI spends most of its time at the extremes. For longer lookbacks, the bars cluster around the center and rarely reach 70 or 30.
This behavior makes it difficult to generalize the two most common RSI techniques:
Fixed 70/30 thresholds: These overbought and oversold levels only make sense for short- or mid-range lookbacks (around the low teens). For very short periods, RSI spends most of its time above or below these levels, while for long-term lookbacks, RSI rarely reaches them.
Bollinger Bands (±2 standard deviations): When applied directly to RSI, the bands often extend beyond the 0–100 limits (especially for short-term lookbacks) making them mathematically invalid. While the issue is less visible on longer settings, it remains conceptually incorrect.
To address this, we apply the Logit Transform :
Logit RSI = LN(RSI / (100 − RSI))
The transformed data fits a smooth bell-shaped curve, allowing statistical tools like Bollinger Bands to function properly for the first time.
Why Logit RSI Matters:
Makes RSI statistically consistent across all lookback periods.
Greatly improves the visual clarity of short-term RSIs
Allows proper use of volatility tools (like Bollinger Bands) on RSI.
Replaces arbitrary 70/30 levels with data-driven thresholds.
Simplifies RSI interpretation for both short- and long-term analysis.
INPUTS:
RSI Length — set the RSI lookback period used in calculations.
RSI Type — choose between Regular RSI or Logit RSI .
Plot Bollinger Bands — ON/OFF toggle to overlay statistical envelopes around RSI or Logit RSI.
SMA and Standard Deviation Length — defines the lookback period for both the SMA (Bollinger Bands midline) and Standard Deviation calculations.
Standard Deviation Multiplier — controls the width of the Bollinger Bands (e.g., 2.0 for ±2σ).
While simple, the Logit transformation represents an unexplored yet powerful mathematically grounded improvement to the classic RSI.
It offers traders a structured, intuitive, and statistically consistent way to use RSI across all timeframes.
I welcome your feedback, suggestions, and code improvements—especially regarding performance and efficiency. Your insights are greatly appreciated.
CMF, RSI, CCI, MACD, OBV, Fisher, Stoch RSI, ADX (+DI/-DI)Eight normalized indicators are used in conjunction with the CMF, CCI, MACD, and Stoch RSI indicators. You can track buy and sell decisions by tracking swings. The zero line is for reversal tracking at -20, +20, +50, and +80. You can use any of the nine indicators individually or in combination.