ATR Anchored Range %b by TradeSeekersAll time highs got you spooked to enter with no levels in sight?
Stuck in a multi-week range and wondering where the heck the pivots are!?
Wondering if you're longing the top or shorting the potential bottom and about to get smoked, sending you back to burger flipping?!
Fret not trading friends!
I've been crafting the ultimate map for scalpers, slingers, swingers, swindlers, swashbucklers -and traders too.
Why should I care about this, what's an ATR!?
Nearly any trader that's entered the markets has heard of ATR, perhaps even taken a stab at trying to calculate the flux capacity of a weekly ATR on a lower timeframe. Continually calculating things manually sucks!
Ok, so you haven't heard of ATR? It's the average true range... what's the true range!? It's simply the low subtracted from the high (high - low) of any given candle.
How is ATR useful?
The theory is simple, if the ATRs on the daily timeframe for a stock are 5, then traders may have a reasonable expectation that any day in the near future the stock will mostly move +/- 5 pts. This +/- 5 can be used as a possible daily high and low for traders to use.
But ATR changes as time passes, with every billionaire X post, viral cat meme, fed announcement or government shutdown the market makes it's move. This means without this tool, traders need to run the standard lame (sorry) ATR indicator and then hand draw a bunch of important levels (barf).
I'm convinced and ready to join the ATR army, what do I do?
Glad to have you aboard sailor, slap this indicator on your layout - it'll initially display a bottom panel, say nice things to it.
Usage
The lower panel provides a %b plot representative of the current price relative to the timeframe and period ATR. (Defaults to 1D timeframe and 20 - 20 trading days in a month yo)
This %b plot is a map for price against the key ATR based levels and resets each time the timeframe change occurs.
Keep reading! (maybe grab a snack, you're doing great)
If you want to see what the indicator sees, how it maths the math, open the settings and check the "overlay" option... it's amazing, I know.
Main base of operations
This will be the gray area between first red and green lines, imagine this is a future candle for the timeframe anchored. The red would represent the candle high (red means stop/overbought), and the green would represent the candle low (green means go/oversold).
Regardless of the timeframe anchored, this area always represents the area the ATR indicates will be the building area of the current candle being formed. Traders should expect most of the trading to occur within this area.
The mid line
Don't diddle in the middle, this by default is the open price and it's the ultimate bias filter for bull or bear riders.
Extension areas
Beyond the gray area is the extension zone, this provides a whole ATR from the mid line to the extension.
Assembling a trade plan
There are just a couple of key concepts to master in order to become the ultimate ATR samurai warrior, capable of slicing through even the messiest liquidity.
Above the midline and holding, but still within the gray area? Could be a great long entry with targets to upper levels. The same holds true for below open and holding while still being within the lower gray area.
As price makes it's ascension or decline towards the ends of the initial gray ATR range, consider managing trades here. If it's suspected, due to a strong hold of the midline, that the range low or high is the midline, then continue to manage trades towards the extension zones.
Timeframes and periods oh my
The tooltips already provide some hints, but not everyone goes around clicking and hovering everything in sight (maybe I'm the only one that does that?).
There's a thoughtful approach to the default values, I like to consider the big market participants with my day trades, swings trades and beyond.
By default I've chosen the daily timeframe and a period of 20, one for each trading day of the calendar month.
It's no large leap to consider alternatives, what about 1W timeframe and a period of 4 (1 month) or 52 (1 year)?
The possibilities are nearly infinite, comment on any particular favorite combos.
An Italian Special Bonus!!!
...sorry, it's not pizza....
First, did you know the famous Italian Fibonacci's real name was actually Leonardo? I'm not sure how I feel about that. Fun fact, my ancestors are Italian.
Alright, you may have guessed that the special bonus is the mythical Fibonacci inspired "Golden Pocket", maybe it's a foreshadowing of your pockets - one can only hope.
Use this feature to show the commonly referenced Fibonacci levels within each major ATR range. I've seen some totally mathematical epic-ness with these hence the addition.
Once key ATR levels have been hit look for reversals back to golden pockets (you tricksy hobbits) for potential entry back towards the prior hit ATR level.
The %b turns gold if you have the feature enabled and of course the overlay displays them also, how fun!
Final thoughts
I hope you have as much fun using this indicator as I do, it has brought much joy to my trading experience. If you don't have fun with it, well I hope you had fun reading about it at least.
100% human crafted and darn proud of it
- SyntaxGeek
指標和策略
Smart Money Panel By: arisutiknoKEY FEATURES:
✅ Smart Money Detection - Automatic Order Blocks Detection
✅ Full Customization - All colors can be customized
✅ Clean Panel Design - Professional and informative look
✅ Real-time Signals - Actionable trading signals
✅ Multiple Signal Types - BUY/SELL AT OB, NEAR ZONE, WAITING
✅ Custom Signal Colors - Signal colors can be set separately
Makes it easier to make decisions. Good Luck Brooo
Bollinger Bands Squeeze📈 Bollinger Bands Squeeze
This indicator enhances traditional Bollinger Bands by integrating Keltner Channel layers to visualize market compression and volatility expansion — allowing traders to easily identify when a squeeze is building or releasing.
🔍 Overview
This is a refined version of the classic Bollinger Bands, designed to detect volatility squeezes using multiple Keltner Channel thresholds.
The script plots standard Bollinger Bands and dynamically colors the bands according to the degree of compression relative to the Keltner Channels.
⚙️ How It Works
Bollinger Bands are calculated from a selected moving average (SMA, EMA, SMMA, WMA, or VWMA) and standard deviation multiplier.
Keltner Channels are derived from ATR (True Range) using three sensitivity levels (1.0, 1.5, and 2.0× multipliers).
When Bollinger Bands contract inside a Keltner Channel, the script marks a squeeze state:
🟠 High Compression (Orange): Very tight volatility — expect breakout soon.
🔴 Mid Compression (Red): Moderate contraction — volatility is building.
⚫ Low Compression (Gray/Black): Early compression phase.
🧩 Inputs & Customization
Length : Period for both Bollinger and Keltner calculations.
Basis MA Type: Choose from SMA, EMA, SMMA (RMA), WMA, or VWMA.
StdDev Multiplier : Controls Bollinger Bandwidth.
Keltner Multipliers (1.0 / 1.5 / 2.0) : Adjust compression thresholds.
Offset : Shifts the bands visually on the chart.
🕹️ Best Use Cases
Identify pre-breakout conditions before volatility expansion.
Combine with volume, momentum, or trend indicators (e.g., RSI) for confirmation.
Ideal for scalping, breakout trading, or volatility-based entries during session opens.
Aggregated Long Short Ratio (Binance + Bybit)This indicator displays the Long/Short Ratio (LSR) from Binance and Bybit exchanges, plus an aggregated average. LSR shows the ratio between traders holding long positions vs short positions.
Settings AvailableExchanges Group:
☑️Show Binance - Display Binance LSR line
☑️ Show Bybit - Display Bybit LSR line
☑️ Show Aggregated LSR - Display combined average
Timeframe - Choose data timeframe (leave empty for chart timeframe)
Visualization Group:
🎨 Binance Color - Default: Yellow
🎨 Bybit Color - Default: Orange
🎨 Aggregated Color - Default: White
📖 How to Read the Indicator
⚠️ CRITICAL: Always analyze LSR together with Open Interest (OI)
Key Levels:
LSR = 1.0 (gray dashed line) = Balance - Equal longs and shorts
LSR > 1.0 = More longs than shorts (bullish sentiment)
LSR < 1.0 = More shorts than longs (bearish sentiment)
Extreme Zones:
LSR > 1.5 (green zone) = Very bullish - Possible market top
LSR < 0.5 (red zone) = Very bearish - Possible market bottom
Why Open Interest Matters:
LSR alone doesn't tell the full story. You MUST check Open Interest:
Rising OI + High LSR (>1.5) = New longs opening → Strong momentum OR potential trap
Rising OI + Low LSR (<0.5) = New shorts opening → Strong momentum OR potential trap
Falling OI + Extreme LSR = Positions closing → Weak signal, avoid trading
Stable OI + Extreme LSR = No new positions → Less reliable signal
💡 Trading Interpretation
⚠️ ALWAYS combine LSR with Open Interest analysis!
Contrarian Strategy (High Leverage Zones):
High LSR (>1.5) + Rising OI → Many new longs → Potential short squeeze OR reversal down
Low LSR (<0.5) + Rising OI → Many new shorts → Potential long squeeze OR reversal up
Trend Confirmation:
Rising LSR + Rising price + Rising OI = Strong bullish trend with new positions
Falling LSR + Falling price + Rising OI = Strong bearish trend with new positions
Weak Signals (Avoid):
Extreme LSR + Falling OI = Positions closing → Low conviction
Extreme LSR + Stable OI = No new money → Wait for confirmation
Divergences:
Price higher highs but LSR falling + Rising OI = Bearish divergence (shorts accumulating)
Price lower lows but LSR rising + Rising OI = Bullish divergence (longs accumulating)
Best Setups:
Reversal: Extreme LSR (>1.5 or <0.5) + Rising OI + Price rejection
Trend: LSR trending with price + Steadily rising OI
Caution: Extreme LSR + Falling OI = Ignore signal
Built-in Alerts
The indicator includes 4 preset alerts:
LSR Crossed Above 1.0 - Market turned bullish
LSR Crossed Below 1.0 - Market turned bearish
LSR Very High - Above 1.5 (possible top)
LSR Very Low - Below 0.5 (possible bottom)
To Set Up Alerts:
Click the "..." on the indicator
Select "Add Alert"
Choose the condition you want
Configure notification method
Best Practices
MANDATORY: Always add Open Interest indicator to your chart alongside LSR
To add OI: Click Indicators → Search "Open Interest" → Add official TradingView OI
Use on perpetual futures charts (symbols ending in .P)
Works best on USDT pairs (BTCUSDT, ETHUSDT, etc.)
Combine LSR + OI + price action + support/resistance levels
Higher timeframes (4h, 1D) give more reliable signals
Don't trade LSR extremes without confirming OI direction
Golden Rule: Rising OI = Strong signal | Falling OI = Weak signal
⚠️ Important Notes
Indicator requires TradingView Premium or above (uses Request library)
Only works on crypto perpetual futures
Data availability depends on exchange API
NA values mean data is not available for that exchange/symbol
Never use LSR without Open Interest context
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.
Narrowing Range PredictorNarrowing Range Indicator with several configurables. Recommended to play around with customised settings.
Liquidations Aggregated (Lite)Liquidations Aggregated (Lite)
The Liquidations Aggregated (Lite) script provides a unified cross-exchange visualization of short and long liquidation volumes, allowing traders to identify high-impact market events and sentiment reversals driven by forced position closures. It aggregates normalized liquidation data from Binance, Bybit, and OKX into a single coherent output, offering a consolidated perspective of derivative market stress across major venues.
Core Concept
Liquidations are involuntary closures of leveraged positions when margin requirements are breached. They represent points of structural orderflow imbalance, often triggering localized volatility spikes and price pivots. This indicator isolates and aggregates those liquidation volumes by direction (short vs. long), allowing traders to map where leveraged traders are being forced out and whether current market movement is driven by short covering or long capitulation.
Underlying Methodology
Each connected exchange provides liquidation feeds via standardized symbols (e.g., BTCUSDT.P_LQBUY or BTCUSD.P_LQSELL).
The script differentiates between:
Short Liquidations → Buy Volume: Forced covering of shorts, representing upward pressure.
Long Liquidations → Sell Volume: Forced selling of longs, representing downward pressure.
Bybit’s inverse data is normalized to align directional logic with Binance and OKX. Data is drawn through the request.security() function per symbol and per exchange, with per-exchange scaling adjustments applied to compensate for differences in reported nominal sizes (USD vs. coin-margined). The script is meant to match the calculation methods of professional-grade data sources (e.g., Velodata, Coinalyze). The value is denominated in the base currency at all times.
Computation Logic
Liquidation volumes are fetched separately for USD- and USDT-margined pairs on each exchange.
Exchange-specific magnitude adjustments are applied to account for nominal denomination differences.
Normalized liquidation buy and sell volumes are summed into two global aggregates:
combinedBuyVolumeLiquidationsShort → aggregated buy volume from forced short positions closes (Short Liquidations)
combinedSellVolumeLiquidationsLong → aggregated sell pressure from forced long position closes (Long Liquidations)
Final series are plotted as mirrored column charts around a zero baseline for direct comparison.
How to Use
Apply the script to any crypto perpetual futures symbol (e.g., BTCUSDT, ETHUSDT).
Observe teal bars (Buy Volume from Short Liquidations) for short squeezes and red bars (Sell Volume from Long Liquidations) for long wipes.
Strong teal spikes during downtrends often indicate aggressive short liquidations leading to short-term bounces.
Strong red spikes during uptrends often mark long unwinds that can trigger sharp retracements.
Sustained asymmetry in either direction suggests systemic imbalance across leveraged positioning.
Engulfing bull & bear w/ Volume Confirmation (v6)This script ID's bullish & bearish engulfing bars with volume ≥ SMA (volume, 20) x 1.3 and (optionally) ≥ previous bar's volume.
Parameters adjustable
Custom MTF EMA CloudsVisualize market structure and trend alignment across multiple timeframes with six layered EMA clouds — from short-term momentum to macro trend anchors.
Each pair of EMAs forms a dynamic cloud that adapts to your selected timeframe.
Colors, lengths, and visibility are fully customizable, allowing you to tailor the setup for any trading style.
⚙️ Default Configuration
EMA Short Long Purpose
1 8 13 🔸 Intraday momentum cloud (scalping layer)
2 21 24 🟩 Short-term trend confirmation
3 50 55 🔵 Medium-term swing structure
4 120 144 🔴 Long-term support/resistance band
5 200 238 🟠 Institutional trend foundation
6 400 460 🟣 Macro directional anchor
🧩 Features
✅ Up to 6 independent EMA clouds
✅ Fully customizable short & long lengths
✅ Individual line and cloud colors
✅ Toggle each layer on/off
✅ Works with any timeframe via the Resolution input
✅ Automatic cloud transparency for better chart clarity
📈 How to Use
Use EMA 1–2 (8/13, 21/24) for momentum shifts and intraday entries.
Use EMA 3–4 (50/55, 120/144) for swing confirmation and trend continuation.
Use EMA 5–6 (200/238, 400/460) as long-term anchors to stay aligned with institutional flow.
Watch for crossovers or price breaking in/out of clouds — they often precede strong directional moves.
EMA/VWAP/Volume/MACD指标// === 控制输出 ===
macd_plot_line = show_macd ? macd_line : na
macd_signal_plot = show_macd ? signal_line : na
macd_hist_plot = show_macd ? hist_line : na
adx_plot_line = show_adx ? adx : na
plusdi_plot_line = show_adx ? diplus : na
minusdi_plot_line = show_adx ? diminus : na
// === 绘制 MACD ===
plot(macd_plot_line, title="MACD Line", color=color.new(color.aqua, 0))
plot(macd_signal_plot, title="Signal Line", color=color.new(color.orange, 0))
plot(macd_hist_plot, title="Histogram", style=plot.style_columns,
color=macd_hist_plot >= 0 ? color.new(color.green, 0) : color.new(color.red, 0))
Moving Average Convergence-Divergence (MACD)This script implements the Moving Average Convergence-Divergence (MACD), a popular momentum indicator used in technical analysis to identify trend direction, momentum shifts, and potential buy/sell signals.
🔹 Key Features
1. Inputs & Customization
MACD Lines Toggle: Enable/disable the MACD and signal lines.
Source Price: Defaults to close but can be adjusted (e.g., open, high, low, hl2).
Fast Length (12): The period for the faster-moving EMA.
Slow Length (26): The period for the slower-moving EMA.
Signal Length (9): The smoothing period for the signal line.
2. Calculations
Computes the MACD Line (fast EMA - slow EMA).
Computes the Signal Line (EMA of the MACD line).
Computes the Histogram (difference between MACD and Signal lines).
3. Visual Indicators
Zero Line: A white horizontal line at 0 for reference.
MACD Line: Plotted in green when above the signal line, red when below.
Signal Line: Displayed as a yellow line.
Histogram:
Green bars when MACD > Signal (bullish momentum).
Red bars when MACD < Signal (bearish momentum).
Background Highlights:
Light green on bullish crossovers (MACD crosses above Signal).
Light red on bearish crossunders (MACD crosses below Signal).
4. Alerts
Triggers when:
Bullish Crossover (MACD crosses above Signal).
Bearish Crossunder (MACD crosses below Signal).
🔹 How Traders Use This Indicator
Trend Identification:
MACD above zero → bullish trend.
MACD below zero → bearish trend.
Momentum Signals:
Bullish Crossover (Buy Signal): MACD crosses above Signal.
Bearish Crossunder (Sell Signal): MACD crosses below Signal.
Divergence (Not in this script, but useful):
Price makes higher highs, but MACD makes lower highs → Potential reversal.
🔹 Strengths of This Script
✅ Clean and Efficient Code – Uses Pine Script v6 best practices.
✅ Customizable Inputs – Adjust lengths and source price.
✅ Clear Visuals – Color-coded for easy interpretation.
✅ Built-in Alerts – For automated trading strategies.
Jul 1
Release Notes
This script implements the Moving Average Convergence-Divergence (MACD), a popular momentum indicator used in technical analysis to identify trend direction, momentum shifts, and potential buy/sell signals.
🔹 Key Features
1. Inputs & Customization
MACD Lines Toggle: Enable/disable the MACD and signal lines.
Source Price: Defaults to close but can be adjusted (e.g., open, high, low, hl2).
Fast Length (12): The period for the faster-moving EMA.
Slow Length (26): The period for the slower-moving EMA.
Signal Length (9): The smoothing period for the signal line.
2. Calculations
Computes the MACD Line (fast EMA - slow EMA).
Computes the Signal Line (EMA of the MACD line).
Computes the Histogram (difference between MACD and Signal lines).
3. Visual Indicators
Zero Line: A white horizontal line at 0 for reference.
MACD Line: Plotted in green when above the signal line, red when below.
Signal Line: Displayed as a yellow line.
Histogram:
Green bars when MACD > Signal (bullish momentum).
Red bars when MACD < Signal (bearish momentum).
Background Highlights:
Light green on bullish crossovers (MACD crosses above Signal).
Light red on bearish crossunders (MACD crosses below Signal).
4. Alerts
Triggers when:
Bullish Crossover (MACD crosses above Signal).
Bearish Crossunder (MACD crosses below Signal).
🔹 How Traders Use This Indicator
Trend Identification:
MACD above zero → bullish trend.
MACD below zero → bearish trend.
Momentum Signals:
Bullish Crossover (Buy Signal): MACD crosses above Signal.
Bearish Crossunder (Sell Signal): MACD crosses below Signal.
Divergence (Not in this script, but useful):
Price makes higher highs, but MACD makes lower highs → Potential reversal.
🔹 Strengths of This Script
✅ Clean and Efficient Code – Uses Pine Script v6 best practices.
✅ Customizable Inputs – Adjust lengths and source price.
✅ Clear Visuals – Color-coded for easy interpretation.
✅ Built-in Alerts – For automated trading strategies.
Asia Range Breakout Asia Range Breakout
Description:
Asia Range Breakout is a sophisticated, multi-filter trading tool designed to identify high-probability breakout opportunities during the core Asian trading session. By combining session-based range analysis with advanced confirmation filters like Heiken Ashi momentum, Ichimoku baseline trends, and EMA alignment, this indicator helps traders capture decisive moves while filtering out market noise.
Tired of false breakouts? This system provides a structured framework to trade the Sydney and Tokyo sessions with precision and confidence.
Key Features:
Multi-Session Range Tracking:
Monitors 6 distinct pre-defined Asian sessions (Sydney Box, Tokyo Pre-Open, Tokyo Launch, etc.).
Dynamically plots High and Low boundaries for each session (Teal for Highs, Red for Lows).
Individually toggleable sessions to focus on your preferred trading window.
Smart Alert & Signal System:
Generates alerts based on Heiken Ashi candle closings relative to session ranges.
Dual-Size Signals: Differentiates between "Large" breakouts (outside the range) and "Small" signals (within the range).
Configurable alert timeframe for confirmation candle closure.Built-in Sound Alerts for real-time notifications.
Advanced Confirmation Filters:
Heiken Ashi Momentum Filter: Ensures breakout candles have significant momentum, adjustable via a threshold multiplier.
EMA 200 Filter: Confirms the breakout's alignment with the broader trend.
Ichimoku Baseline (Kijun-sen) Filter: Uses a dynamic support/resistance level for additional confirmation.
Ichimoku Baseline Divergence Filter: A unique feature that requires the baseline's slope to match the breakout direction (Bullish for buys, Bearish for sells).
ATR Volatility Filter: (Optional) Ensures the breakout candle has sufficient range relative to recent market volatility.
Visual Enhancements:
Take-Profit Lines: Projects profit targets using ATR and connects consecutive alerts with a trendline.
Heiken Ashi Overlay: Displays smoothed Heiken Ashi candles directly on the main chart for cleaner trend visualization.
Divergence Trend Line: Visually plots the slope of the Ichimoku Baseline for quick trend assessment.
Session Background Highlighter: Shades the active sessions for easy time reference.
Comprehensive Debug Info Box: Provides real-time feedback on filter status, perfect for strategy validation and learning.
Usage Instructions & Tips:
1. Initial Setup:
Start simple! Apply the indicator to a 5-minute or 1-minute chart.
Recommended Instruments:
Forex: Major pairs like AUD/USD , USD/JPY or EUR/JPY.
Indices: `NAS100` (Nasdaq), `US30` (Dow Jones), `JP225` (Nikkei 225).
Commodities: `XAUUSD` (Gold).
Initially, enable only the Sydney Box (00:30 - 03:15 UTC) as it is the most robust session, then explore others.
2. Interpreting the Signals:
Large Green Arrow (Above Bar): A strong BUY signal. The Heiken Ashi candle closed above the session's High, and all enabled filters are confirmed.
Small Green Arrow (Above Bar): A moderate BUY signal. The candle closed bullishly but within the session range.
Large Red Arrow (Below Bar): A strong SELL signal. The Heiken Ashi candle closed below the session's Low, with filter confirmation.
Small Red Arrow (Below Bar): A moderate SELL signal. The candle closed bearishly but within the session range.
3. Optimizing Your Strategy:
Filter Tuning: The default filters are balanced. Adjust them based on your risk appetite:
Increase the Heiken Ashi Threshold (e.g., to 0.2) for fewer, but stronger signals.
Disable filters like ATR or Divergence if you find them too restrictive.
The Power of Divergence: The Ichimoku Divergence filter is a powerful trend-confirmation tool. Pay close attention to it for the highest-quality signals.
Use the Debug Box: Enable the "Show Debug Info Box" to see exactly why a signal did or did not trigger. This is invaluable for understanding the indicator's logic and avoiding bad trades.
4. Risk Management:
The TP Lines provide a logical profit target based on market volatility. Consider using them for setting take-profit orders.
Always use a stop-loss. A logical level is the opposite side of the session range (e.g., for a buy signal, place a stop below the session low).
You're very welcome! I'm glad I could help you create a professional tool. Wishing you great success with your Trading! 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
Previous Day High-LowIt will show Previous Day High-Low. This will create two horizontal lines automatically updated each day, marking yesterday’s high and low levels clearly on any intraday chart.
Super Secret 50 EMADynamic 50 EMA
The 50 EMA changes color during uptrend and another color during downtrend. User chooses colors.
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))
Regular-Delta RSI Gap Indicator# Regular-Delta RSI Gap Indicator
## Overview
The **Regular-Delta RSI Gap Indicator** is a sophisticated momentum oscillator that compares traditional RSI with volume-based Delta RSI to identify trend strength and potential reversal points. This unique indicator combines price action with volume dynamics to provide enhanced market insights.
## Key Features
### 🔄 Dual RSI Analysis
- **Regular RSI**: Standard RSI based on price changes
- **Delta RSI**: Volume-weighted RSI calculated from volume change rates
- **Visual Comparison**: Clear plotting of both RSIs with ribbon fill
### 💪 Strength Measurement
- **ADX-style Strength Calculation**: Measures the divergence strength between Regular and Delta RSI
- **Configurable Threshold**: Customizable strength level for trend validation
- **Trend Classification**: Identifies strong vs. weak market conditions
### 📊 Multiple Display Options
- **Histogram Visualization**: Columns showing the gap between Regular and Delta RSI
- **Cross Signals**: Triangle markers for crossover events
- **Ribbon Fill**: Color-coded area between the two RSI lines
- **Real-time Table**: Summary table showing current values and trends
## Input Parameters
### Core Settings
- **RSI Period** (default: 14): Calculation period for both RSIs
- **Strength Smoothing** (default: 14): Smoothing period for strength calculation
- **Strength Threshold** (default: 5): Minimum level for strong trend classification
### Visual Customization
- **Show Histogram**: Toggle histogram display
- **Show Signals**: Display crossover signals
- **Show Labels**: Enable trend labels and information table
- **Histogram Height Scale**: Adjust histogram visibility (0.1-3.0)
- **Apply Ribbon Fill**: Enable/disable ribbon coloring
### Color Scheme
- Fully customizable colors for bullish, bearish, neutral, and strength elements
## Interpretation
### Trend Signals
- **Strong Uptrend**: Regular RSI > Delta RSI + Strength above threshold
- **Strong Downtrend**: Regular RSI < Delta RSI + Strength above threshold
- **Weak Trend**: Strength below threshold
### Key Levels
- **Overbought**: 70 level (red line)
- **Oversold**: 30 level (blue line)
- **Midline**: 50 level (gray dotted line)
- **Zero Line**: Histogram baseline
- **Threshold**: Strength reference line
### Signal Types
1. **Crossover Signals**: Regular RSI crossing above/below Delta RSI
2. **Strength Transitions**: Strength line crossing threshold
3. **Histogram Patterns**: Column color and height changes
## Alerts
The indicator provides four alert conditions:
- Divergence Strength Rising
- Divergence Strength Falling
- RSI Crossover (Regular above Delta)
- RSI Crossunder (Regular below Delta)
## Use Cases
- **Trend Confirmation**: Validate price trends with volume confirmation
- **Reversal Detection**: Spot potential trend changes early
- **Momentum Analysis**: Gauge market momentum strength
- **Divergence Trading**: Identify regular/volume RSI divergences
## Optimization Tips
- Adjust period lengths based on trading timeframe
- Modify threshold based on market volatility
- Combine with price action for confirmation
- Use in conjunction with support/resistance levels
This indicator is particularly useful for traders looking to incorporate volume confirmation into their RSI analysis and identify high-probability trend continuations or reversals.
Wyckoff Accumulation / Distribution Detector (v3)🌱 Spring (Bullish Wyckoff Signature)
🧠 Definition
A Spring happens when price dips below a well-defined support level, usually near the end of an accumulation phase, then quickly reverses back above support.
This is not ordinary volatility — it's usually intentional by large operators (“Composite Man”) to:
Trigger stop-losses of weak holders
Create the illusion of a breakdown to scare late sellers in
Absorb all remaining supply at low prices
Launch the next markup leg once weak hands are flushed out
🧭 Typical Spring Characteristics
Feature Behavior
Location Near the bottom of a trading range after a decline
Price Action Temporary breakdown below support, then sharp reversal above
Volume Usually low to average on the break, indicating lack of real selling pressure. Sometimes a volume surge on the reversal as strong hands step in
Candle Often shows a long lower wick, closes back inside the range
Intent Shakeout of weak holders, allow institutions to accumulate more quietly
📈 Why It's Bullish
Springs typically mark the final test of supply. If price can dip below support and immediately recover, it means:
Selling pressure is exhausted (no follow-through)
Strong hands are absorbing remaining shares
A bullish breakout is often imminent
🪤 Upthrust (Bearish Wyckoff Signature)
🧠 Definition
An Upthrust is the mirror image of a Spring. It happens when price pokes above a resistance level, usually near the end of a distribution phase, but then fails to hold above it and falls back inside the range.
This is typically smart money distributing to eager buyers:
Late breakout traders pile in
Institutions sell into that strength
Price collapses back into the range, trapping breakout buyers
🧭 Typical Upthrust Characteristics
Feature Behavior
Location Near the top of a trading range after a rally
Price Action Temporary breakout above resistance, then quick reversal down
Volume Frequently low on the breakout, suggesting a lack of real buying interest — or sometimes high but with no progress, showing hidden selling
Candle Often shows a long upper wick, closes back inside the range
Intent Trap breakout buyers, provide liquidity for institutional sellers to unload near highs
📉 Why It's Bearish
Upthrusts show demand failure and supply swamping:
Buyers cannot sustain the breakout.
The sharp reversal signals large players are exiting.
Typically precedes markdown phases or sharp declines.
📝 Trading Implications
Spring → Often followed by a sign of strength rally → good long entry if confirmed with volume expansion and follow-through.
Upthrust → Often followed by a sign of weakness → short setups, especially if the next rally fails at lower highs.
The script looks for:
🌱 Spring:
Price makes a low below recent pivot support,
Closes back above,
Does so on low volume → likely a shakeout.
🪤 Upthrust:
Price makes a high above recent pivot resistance,
Closes back below,
On low volume → likely a bull trap.
EMA50/EMA250 + SAR + 3-Candle EMA FilterBUY Trigger:
EMA50>250EMA and current values of both EMAs are higher from 3 previous candles
First appearance of bullish Parabolci Sar
SELL Trigger:
EMA50<250EMA and current values of both EMAs are lower from 3 previous candles
First appearance of bearish Parabolci Sar
- Marlon C
BTC — CVD Divergence (Spot & Perp, robuste v6)If the price is above the CVD, it usually means the move is being pushed by leverage rather than real buying — the market is stretched and at risk of a correction.
If the price is below the CVD, it suggests that buyers are quietly absorbing — pressure is building for a bullish recovery once leverage clears out.