Volume Percentile Supertrend [BackQuant]Volume Percentile Supertrend
A volatility and participation aware Supertrend that automatically widens or tightens its bands based on where current volume sits inside its recent distribution. The goal is simple: fewer whipsaws when activity surges, faster reaction when the tape is quiet.
What it does
Calculates a standard Supertrend framework from an ATR on a volume weighted price source.
Measures current volume against its recent percentile and converts that context into a dynamic ATR multiplier.
Widens bands when volume is unusually high to reduce chop. Tightens bands when volume is unusually low to catch turns earlier.
Paints candles, draws the active Supertrend line and optional bands, and prints clear Long and Short signal markers.
Why volume percentile
Fixed ATR multipliers assume all bars are equal. They are not. When participation spikes, price swings expand and a static band gets sliced.
Percentiles place the current bar inside a recent distribution. If volume is in the top slice, the Supertrend allows more room. If volume is in the bottom slice, it expects smaller noise and tightens.
This keeps the same playbook usable across busy sessions and sleepy ones without constant manual retuning.
How it works
Volume distribution - A rolling window computes the Pth percentile of volume. Above that is flagged as high volume. A lower reference percentile marks quiet bars.
Dynamic multiplier - Start from a Base Multiplier. If bar is high volume, scale it up by a function of volume-to-average and a Sensitivity knob. If bar is low volume, scale it down. Smooth the result with an EMA to avoid jitter.
VWMA source - The price input for bands is a short volume weighted moving average of close. Heavy prints matter more.
ATR envelope - Compute ATR on your length. UpperBasic = VWMA + Multiplier x ATR. LowerBasic = VWMA - Multiplier x ATR.
Trailing logic - The final lines trail price so they only move in a direction that preserves Supertrend behavior. This prevents sudden flips from transient pokes.
Direction and signals - Direction flips when price crosses through the relevant trailing line. SupertrendLong and SupertrendShort mark those flips. The plotted Supertrend is the active trailing side.
Inputs and what they change
Volume Lookback - Window for percentile and average. Larger window = stabler percentile, smaller = snappier.
Volume Percentile Level - Threshold that defines high volume. Example 70 means top 30 percent of recent bars are treated as high activity.
Volume Sensitivity - Gain from volume ratio to the dynamic multiplier. Higher = bands expand more when volume spikes.
VWMA Source Length - Smoothing of the volume weighted price source for the bands.
ATR Length - Standard ATR window. Larger = slower, smaller = quicker.
Base Multiplier - Core band width before volume adjustment. Think of this as your neutral volatility setting.
Multiplier Smoothing - EMA on the dynamic multiplier. Reduces back and forth changes when volume oscillates around the threshold.
Show Supertrend on chart - Toggles the active line.
Show Upper Lower Bands - Draws both sides even when inactive. Good for context.
Paint candles according to Trend - Colors bars by trend direction.
Show Long and Short Signals - Prints 𝕃 and 𝕊 markers at flips.
Colors - Choose your long and short palette.
Reading the plot
Supertrend line - Thick line that hugs price from above in downtrends and from below in uptrends. Its distance breathes with volume.
Bands - Optional upper and lower rails. Useful to see the inactive side and judge how wide the envelope is right now.
Signals - 𝕃 prints when the trend flips long. 𝕊 prints when the trend flips short.
Candle colors - Quick bias read at a glance when painting is enabled.
Typical workflows
Trend following - Use 𝕃 flips to initiate longs and ride while bars remain colored long and price respects the lower trailing line. Mirror for shorts with 𝕊 and the upper trailing line. During high volume phases the line will give more room, which helps stay in the move.
Pullback adds - In an established trend, shallow tags toward the active line after a high volume expansion can be add points. The dynamic envelope adjusts to the session so your add distance is not fixed to a stale volatility regime.
Mean reversion filter - In quiet tape the multiplier contracts and flips come earlier. If you prefer fading, watch for quick toggles around the bands when volume percentile remains low. In high volume, avoid fading into the widened line unless you have other strong reasons.
Notes on behavior
High volume bar: the percentile gate opens, volRatio > 1 powers up the multiplier through the Sensitivity lever, bands widen, fewer false flips.
Low volume bar: multiplier contracts, bands tighten, flips can happen earlier which is useful when you want to catch regime changes in quiet conditions.
Smoothing matters: both the price source (VWMA) and the multiplier are smoothed to keep structure readable while still adapting.
Quick checklist
If you see frequent chop and today feels busy: check that volume is above your percentile. Wider bands are expected. Consider letting the trend prove itself against the expanded line before acting.
If everything feels slow and you want earlier entries: percentile likely marks low volume, so bands tighten and 𝕃 or 𝕊 can appear sooner.
If you want more or fewer flips overall: adjust Base Multiplier first. If you want more reaction specifically tied to volume surges: raise Volume Sensitivity. If the envelope breathes too fast: raise Multiplier Smoothing.
What the signals mean
SupertrendLong - Direction changed from non-long to long. 𝕃 marker prints. The active line switches to support below price.
SupertrendShort - Direction changed from non-short to short. 𝕊 marker prints. The active line switches to resistance above price.
Trend color - Bars painted long or short help validate context for entries and management.
Summary
Volume Percentile Supertrend adapts the classic Supertrend to the day you are trading. Volume percentile sets the mood, sensitivity translates it into dynamic band width, and smoothing keeps it clean. The result is a single plot that aims to stay conservative when the tape is loud and act decisively when it is quiet, without you having to constantly retune settings.
Volume
Volume Profile 3D (Zeiierman)█ Overview
Volume Profile 3D (Zeiierman) is a next-generation volume profile that renders market participation as a 3D-style profile directly on your chart. Instead of flat histograms, you get a depth-aware profile with parallax, gradient transparency, and bull/bear separation, so you can see where liquidity stacked up and how it shifted during the move.
Highlights:
3D visual effect with perspective and depth shading for clarity.
Bull/Bear separation to see whether up bars or down bars created the volume.
Flexible colors and gradients that highlight where the most significant trading activity took place.
This is a state-of-the-art volume profile — visually powerful, highly flexible, and unlike anything else available.
█ How It Works
⚪ Profile Construction
The price range (from highest to lowest) is divided into a number of levels (buckets). Each bar’s volume is added to the correct level, based on its average price. This builds a map of where trading volume was concentrated.
You can choose to:
Aggregate all volume at each level, or
Split bullish vs. bearish volume , slightly offset for clarity.
This creates a clear view of which price zones matter most to the market.
⚪ 3D Effect Creation
The unique part of this indicator is how the 3D projection is built. Each volume block’s width is scaled to its relative size, then tilted with a slope factor to create a depth effect.
maxVol = bins.bu.max() + bins.be.max()
width = math.max(1, math.floor(bucketVol / maxVol * ((bar_index - start) * mult)))
slope = -(step * dev) / ((bar_index - start) * (mult/2))
factor = math.pow(math.min(1.0, math.abs(slope) / step), .5)
width → determines how far the volume extends, based on relative strength.
slope → creates the angled projection for the 3D look.
factor → adjusts perspective to make deeper areas shrink naturally.
The result is a 3D-style volume profile where large areas pop forward and smaller areas fade back, giving you immediate visual context.
█ How to Use
⚪ Support & Resistance Zones (HVNs and Value Area)
Regions where a lot of volume traded tend to act like walls:
If price approaches a high-volume area from above, it may act as support.
From below, it may act as resistance.
Traders often enter or exit near these zones because they represent strong agreement among market participants.
⚪ POC Rejections & Mean Reversions
The Point of Control (POC) is the single price level with the highest volume in the profile.
When price returns to the POC and rejects it, that’s often a signal for reversal trades.
In ranging markets, price may bounce between edges of the Value Area and revert to POC.
⚪ Breakouts via Low-Volume Zones (LVNs)
Low volume areas (gaps in the profile) offer path of least resistance:
Price often moves quickly through these thin zones when momentum builds.
Use them to spot breakouts or continuation trades.
⚪ Directional Insight
Use the bull/bear separation to see whether buyers or sellers dominated at key levels.
█ Settings
Use Active Chart – Profile updates with visible candles.
Custom Period – Fixed number of bars.
Up/Down – Adjust tilt for the 3D angle.
Left/Right – Scale width of the profile.
Aggregated – Merge bull/bear volume.
Bull/Bear Shift – Separate bullish and bearish volume.
Buckets – Number of price levels.
Choose from templates or set custom colors.
POC Gradient option makes high volume bolder, low volume lighter.
-----------------
Disclaimer
The content provided in my scripts, indicators, ideas, algorithms, and systems is for educational and informational purposes only. It does not constitute financial advice, investment recommendations, or a solicitation to buy or sell any financial instruments. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, backtest, or individual's trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
Intraday Rising & Reversal ScannerPine Script Description: Intraday Rising & Reversal ScannerThis Pine Script is a TradingView indicator designed to identify stocks with intraday (1-hour timeframe) potential for bullish (rising) or bearish (reversal) movements. It scans for stocks based on user-defined technical criteria, including price change, relative volume, RSI, EMA, ATR, and VWAP. The script plots signals on the chart, displays a summary table, and triggers alerts when conditions are met.FeaturesBullish Signal (Rising Stocks):1H Price Change: > 1% (configurable, e.g., >2% for volatile markets).
Relative Volume: > 2.0 (volume is at least twice the 20-period average).
RSI (14): Between 50 and 70 (strong but not overbought momentum).
Price vs EMA 13: Price above the 13-period EMA (confirms short-term uptrend).
ATR (14): Current ATR above its 20-period average (indicates volatility).
VWAP: Price above VWAP (optional, shown on chart for manual confirmation).
Bearish Signal (Reversal Stocks):1H Price Change: < -1% (configurable, e.g., <-2% for stronger reversals).
Relative Volume: > 2.0 (high volume confirms selling pressure).
RSI (14): > 70 (overbought, increasing reversal likelihood).
Price vs EMA 13: Price below the 13-period EMA (confirms short-term downtrend).
ATR (14): Current ATR above its 20-period average (indicates volatility).
VWAP: Price below VWAP (optional, shown on chart for manual confirmation).
Visualization:Bullish Signal: Green triangle below the bar.
Bearish Signal: Red triangle above the bar.
VWAP: Plotted as a blue line for manual verification.
Table: Displays real-time metrics (Change %, Relative Volume, RSI, Price vs EMA, ATR, VWAP) in the top-right corner, color-coded (green for bullish, red for bearish).
Alerts:Separate alerts for bullish ("Intraday Bullish Signal") and bearish ("Intraday Bearish Signal") conditions.
Customizable alert messages include parameter values for easy tracking.
How It WorksThe script runs on the 1-hour (1H) timeframe, ensuring all calculations are based on hourly data.
Indicators are computed:Change %: Percentage price change over the last hour.
Relative Volume: Current volume divided by the 20-period SMA of volume.
RSI: 14-period Relative Strength Index.
EMA 13: 13-period Exponential Moving Average.
ATR: 14-period Average True Range, compared to its 20-period SMA.
VWAP: Volume Weighted Average Price, plotted for visual confirmation.
Signals are generated when all conditions for either bullish or bearish criteria are met.
A table summarizes key metrics, and alerts can be set up for real-time notifications.
Usage InstructionsApply the Script:Open TradingView’s Pine Editor.
Copy and paste the script.
Click "Add to Chart" and set the chart to the 1-hour (1H) timeframe.
Set Up Alerts:Right-click on the chart > "Add Alert".
Select "Intraday Bullish Signal" or "Intraday Bearish Signal" as the condition.
Configure notifications (e.g., SMS, email, or TradingView alerts).
Manual VWAP Check:VWAP is plotted as a blue line. Verify that the price is above VWAP for bullish signals or below for bearish signals using the table or chart.
To make VWAP a mandatory filter, uncomment the VWAP conditions in the bull_signal and bear_signal definitions.
HTF Candle Highs and Lows with Labels + High Probability Signals█ OVERVIEW
This indicator overlays Weekly, Daily, and H4 High/Low levels directly onto your chart, allowing traders to visualize key support and resistance zones from higher timeframes. It also includes high probability breakout signals that appear one candle after a confirmed breakout above or below these levels, filtered by volume and candle strength.
Use this tool to identify breakout opportunities with greater confidence and clarity.
█ FEATURES
• Plots Weekly, Daily, and H4 High and Low levels using request.security. • Customizable line colors, widths, and label sizes. • Toggle visibility for each timeframe independently. • Signals appear one candle after a confirmed breakout: • Bullish: Close above HTF High, strong candle, high volume. • Bearish: Close below HTF Low, strong candle, high volume. • Signal shapes match the color of the broken level for visual clarity.
█ HOW TO USE
1 — Enable the timeframes you want to track using the input toggles. 2 — Watch for triangle-shaped signals: • Upward triangle = Bullish breakout. • Downward triangle = Bearish breakout. 3 — Confirm the breakout: • Candle closes beyond the HTF level by at least 0.1%. • Candle body shows momentum (close > open for bullish, close < open for bearish). • Volume exceeds 20-period average. 4 — Enter trade on the candle after the signal. 5 — Use the HTF level as a reference for stop-loss placement. 6 — Combine with other indicators (e.g., RSI, EMA) for confluence.
█ LIMITATIONS
• Signals may lag by one candle due to confirmation logic. • Not optimized for low-volume assets or illiquid markets. • Best used in trending environments; avoid during consolidation. • Does not include automatic alerts (can be added manually).
█ BEST PRACTICES
• Use on H1 or higher timeframes for cleaner signals. • Avoid trading during news events or low volatility. • Backtest thoroughly before live trading. • Adjust breakout percentage and volume filter based on asset volatility. • Maintain a trading journal to track performance.
ICT SMC — OB & FVG (Enhanced v6)This indicator is a comprehensive implementation of ICT Smart Money Concepts (SMC), focusing on Order Blocks (OB) and Fair Value Gaps (FVG) with enhanced detection logic and session-based filtering.
🔍 Key Features
Impulse-Based OB Detection: Identifies bullish and bearish order blocks using configurable impulse bar logic and ATR-based movement thresholds.
Fair Value Gap Detection: Highlights FVGs based on price displacement logic, helping traders spot potential inefficiencies in price action.
Session Filtering: Allows users to filter signals based on major trading sessions (Sydney, Tokyo, London, New York).
Trend & Volume Confirmation: Integrates EMA slope, market structure breaks, and volume analysis to score trade signals.
Visual Zones: Displays OB and FVG zones using colored boxes with customizable transparency and color settings.
Signal Alerts: Generates long/short trade signals based on a scoring system and session validation, with built-in alert conditions.
⚙️ Customization
Adjustable EMA and ATR lengths
Configurable impulse bar count and movement thresholds
Toggleable session filters
Custom colors for OB and FVG zones
📈 Use Cases
This tool is ideal for traders who follow ICT concepts and want a visual, automated way to identify high-probability zones and trade setups based on smart money principles.
Rocket Scan – Midday Movers (No Pullback)This indicator is designed to spot intraday breakout movers that often appear after the market open — the ones that rip out of nowhere and cause FOMO if you’re late.
🔑 Core Logic
• Momentum Burst: Detects sudden price pops (ROC) with confirming relative volume.
• Squeeze → Breakout: Finds low-volatility compressions (tight Bollinger bandwidth) and flags the first breakout move.
• VWAP Reclaims: Highlights strong reversals when price reclaims VWAP on volume.
• Relative Volume (RVOL): Filters for unusual activity vs. recent averages.
• Gap Filter: Skips large overnight gappers, focuses on fresh intraday movers.
• Relative Strength: Optional filter requiring the symbol to outperform SPY (and sector ETF if chosen).
• Session Window: Default 10:30–15:30 ET to ignore noisy open action and catch true midday moves.
🎯 Use Case
• Built for traders who want early alerts on midday runners without waiting for pullbacks.
• Helps identify potential entry points before FOMO kicks in.
• Works best on liquid tickers (stocks, ETFs, crypto) with reliable intraday volume.
📊 Visuals
• Plots fast EMA, slow EMA, and VWAP for trend context.
• Paints green ▲ for long signals and red ▼ for short signals on the chart.
• Info label shows RVOL, ROC, RS filter status, and gap conditions.
🚨 Alerts
Two alert conditions included:
• Rocket: Midday LONG → Fires when bullish conditions align.
• Rocket: Midday SHORT → Fires when bearish conditions align.
⸻
⚠️ Disclaimer:
This tool is for educational and research purposes only. It is not financial advice. Trading involves risk; always do your own research or consult a licensed professional.
Effort vs Result TRFxThe Effort vs Result (EVR) indicator is designed to identify high-probability reversal signals based on volume and price action dynamics. It highlights points where the market “effort” (high volume) does not correspond to an immediate “result” (price continuation), providing actionable trade setups for both bullish and bearish scenarios.
Features:
Detects bullish EVR signals when a previous high-volume sell candle is followed by a strong bullish candle that sweeps the previous low.
Detects bearish EVR signals when a previous high-volume buy candle is followed by a strong bearish candle that sweeps the previous high.
Sticky arrows plot automatically above or below the candle, ensuring the signal moves with the price bar.
Considers inside bars, wick size, and relative volume to filter low-quality setups.
Fully compatible with multiple timeframes.
Inputs:
Volume Multiplier: Sets how much higher the current candle’s volume should be compared to the previous candle to count as high volume.
Min Wick % of Candle: Minimum wick size relative to the candle body to filter insignificant bars.
Max Inside Bars to Ignore: Number of inside bars between the previous candle and the EVR candle to ignore minor consolidations.
Usage:
(Green Arrow): Enter long when a green arrow appears below the candle. Place stop-loss slightly below the previous swing low.
(Red Arrow): Enter short when a red arrow appears above the candle. Place stop-loss slightly above the previous swing high.
Can be combined with support/resistance levels, trendlines, or other technical indicators for higher accuracy.
Benefits:
Simple and clean visual signals with tiny arrows that move with candles.
Helps traders identify high-probability reversal points based on volume and price action.
Ideal for intraday and swing trading strategies.
Breakout Volume
指标名称:Breakout Volume (BrkVol)
功能:本指标用于识别成交量异常放大,同时结合价格新高,帮助交易者发现潜在突破机会。
主要特性:
可调成交量均线周期(MA Length)
可调放量倍数(Volume Multiplier)
可调价格新高周期(Lookback High Length)
成交量柱颜色区分:绿色=阳线放量,红色=阴线放量,灰色=无信号
蓝色均量阈值线,可直观比较放量情况
出现成交量突破 + 新高时,图表上显示绿色三角形标记
支持提醒功能,可在条件触发时收到通知
使用建议:
调整参数以适应不同品种和时间周期
可结合趋势、支撑阻力位使用,避免假信号
适合快速发现短线或中长线突破机会
English Description
Name: Breakout Volume (BrkVol)
Function: This indicator detects unusual volume spikes combined with new highs in price, helping traders identify potential breakout opportunities.
Key Features:
Adjustable moving average period (MA Length) for volume
Adjustable volume multiplier (Volume Multiplier)
Adjustable lookback period for price highs (Lookback High Length)
Color-coded volume bars: Green = bullish candle with volume breakout, Red = bearish candle with volume breakout, Gray = normal volume
Blue threshold line (volume MA × multiplier) for easy comparison
Green triangle marker appears when both volume breakout and new high conditions are met
Supports alerts for real-time notifications
Usage Tips:
Adjust parameters to suit different symbols and timeframes
Combine with trend or support/resistance levels to reduce false signals
Useful for spotting short-term or medium/long-term breakout opportunities
CVD Divergences (cdikici71 x tncylyv)CVD Divergence
Summary
This indicator brings the powerful and creative divergence detection logic from @cdikici71's popular "cd_RSI_Divergence_Cx" script to the world of volume analysis.
While RSI is a fantastic momentum tool, I personally choose to rely on volume as a primary source of truth. This script was born from the desire to see how true buying and selling pressure—measured by Cumulative Volume Delta (CVD)—diverges from price action. It takes the brilliant engine built by @cdikici71 and applies it to CVD, offering a unique look into market conviction.
What is Cumulative Volume Delta (CVD)?
CVD is a running total of volume that transacted at the ask price (buying) minus volume that transacted at the bid price (selling). In simple terms, it shows whether buyers or sellers have been more aggressive over a period. A rising CVD suggests net buying pressure, while a falling CVD suggests net selling pressure.
Core Features
• Divergence Engine by @cdikici71: The script uses the exact same two powerful methods for finding divergences as the original RSI version:
o Alignment with HTF Sweep: The default, cleaner method for finding high-probability divergences.
o All: A more sensitive method that finds all possible divergences.
• Anchored CVD Periods: You can choose to reset the CVD calculation on a Daily, Weekly, or Monthly basis to analyze buying and selling pressure within specific periods. Or, you can leave it on Continuous to see the all-time flow.
• Automatic Higher Timeframe (HTF) Alignment: To remove the guesswork, the "Auto-Align HTF" option will automatically select a logical higher timeframe for divergence analysis based on your current chart (e.g., 15m chart uses 4H for divergence, 1H chart uses 1D, etc.). You can also turn this off for full manual control.
• Fully Customizable Information Table: An on-screen table keeps you updated on the divergence status. You can easily adjust its Position and Size in the settings to fit your chart layout.
• Built-in Alerts: Alerts are configured for both Bullish and Bearish divergences to notify you as soon as they occur.
How to Use This Indicator
The principle is the same as any divergence strategy, but with the conviction of volume behind it.
• 🔴 Bearish Divergence: Price makes a Higher High, but the CVD makes a Lower High or an equal high. This suggests that the buying pressure is weakening and may not be strong enough to support the new price high.
• 🟢 Bullish Divergence: Price makes a Lower Low, but the CVD makes a Higher Low or an equal low. This suggests that selling pressure is exhausting and the market may be ready for a reversal.
Always use divergence signals as a confluence with your own analysis, support/resistance levels, and market structure.
Huge Thanks and Credit
This script would not exist without the brilliant and creative work of @cdikici71. The entire divergence detection engine, the visualization style, and the core logic are based on his original masterpiece, "cd_RSI_Divergence_Cx". I have simply adapted his framework to a different data source.
If you find this indicator useful, please go and show your support for his original work!
________________________________________
Disclaimer: This is a tool for analysis, not a financial advice signal service. Please use it responsibly as part of a complete trading strategy.
RSI Momentum ScalperOverview
The "RSI Momentum Scalper" is a Pine Script v5 strategy crafted for trading highly volatile markets, with a special focus on newly listed cryptocurrencies. This strategy harnesses the Relative Strength Index (RSI) alongside volume analysis and momentum thresholds to pinpoint short-term trading opportunities. It supports both long and short trades, managed with customizable take profit, stop loss, and trailing stop levels, which are visually plotted on the chart for easy tracking.
Why I Created This Strategy
I developed the "RSI Momentum Scalper" because I was seeking a reliable trading strategy tailored to newly listed, highly volatile cryptocurrencies. These assets often experience rapid price fluctuations, rendering traditional strategies less effective. I aimed to create a tool that could exploit momentum and volume spikes while managing risk through adaptable exit parameters. This strategy is designed to address that need, offering a flexible approach for traders in dynamic crypto markets.
How It Works
The strategy utilizes RSI to identify momentum shifts, combined with volume confirmation, to trigger long or short entries. Trades are controlled with take profit, stop loss, and trailing stop levels, which adjust dynamically as the price moves in your favor. The trailing stop helps lock in profits, while the plotted exit levels provide clear visual cues for trade management.
Customizable Settings
The script is highly customizable, allowing you to adjust it to various market conditions and trading styles. Here’s a brief overview of the key settings:
Trade Mode: Select "Both," "Long Only," or "Short Only" to determine the trade direction.
(Default: Both)
RSI Length: Sets the lookback period for the RSI calculation (2 to 30).
(Default: 8)
A shorter length increases RSI sensitivity, suitable for volatile assets.
RSI Overbought: Defines the upper RSI threshold (60 to 99) for short entries.
(Default: 90)
Higher values signal stronger overbought conditions.
RSI Oversold: Defines the lower RSI threshold (1 to 40) for long entries.
(Default: 10)
Lower values indicate stronger oversold conditions.
RSI Momentum Threshold: Sets the minimum RSI momentum change (1 to 15) to trigger entries.
(Default: 14)
Adjusts the sensitivity to price momentum.
Volume Multiplier: Multiplies the volume moving average to filter high-volume bars (1.0 to 3.0).
(Default: 1)
Higher values require stronger volume confirmation.
Volume MA Length: Sets the lookback period for the volume moving average (5 to 50).
(Default: 13)
Influences the volume trend sensitivity.
Take Profit %: Sets the profit target as a percentage of the entry price (0.1 to 10.0).
(Default: 4.15)
Determines when to close a winning trade.
Stop Loss %: Sets the loss limit as a percentage of the entry price (0.1 to 6.0).
(Default: 1.85)
Protects against significant losses.
Trailing Stop %: Sets the trailing stop distance as a percentage (0.1 to 4.0).
(Default: 2.55)
Locks in profits as the price moves favorably.
Visual Features
Exit Levels: Take profit (green), fixed stop loss (red), and trailing stop (orange) levels are plotted when in a position.
Performance Table: Displays win rate, total trades, and net profit in the top-right corner.
How to Use
Add the strategy to your chart in TradingView.
Adjust the input settings based on the cryptocurrency and timeframe you’re trading.
Monitor the plotted exit levels for trade management.
Use the performance table to assess the strategy’s performance over time.
Notes
Test the strategy on a demo account or with historical data before live trading.
The strategy is optimized for short-term scalping; adjust settings for longer timeframes if needed.
Delta Volume Signals by Claudio [hapharmonic]Modifications:
Percentages without decimals.
I replaced the 'Current Volume' row with two boxes: "Δ Vol" and its value, which changes color depending on the direction of the bearish/bullish candle.
Signals can change color in the settings.
Box spacing so the table doesn't constantly change size.
To be modified:
The Net Volume sign shouldn't change to negative when the candle is red.
If anyone does this, let me know...
claudio.ventola@hotmail.com
Best regards!
Volume Delta Volume Signals by Claudio [hapharmonic]// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © hapharmonic
//@version=6
FV = format.volume
FP = format.percent
indicator('Volume Delta Volume Signals by Claudio ', format = FV, max_bars_back = 4999, max_labels_count = 500)
//------------------------------------------
// Settings |
//------------------------------------------
bool usecandle = input.bool(true, title = 'Volume on Candles',display=display.none)
color C_Up = input.color(#12cef8, title = 'Volume Buy', inline = ' ', group = 'Style')
color C_Down = input.color(#fe3f00, title = 'Volume Sell', inline = ' ', group = 'Style')
// ✅ Nueva entrada para colores de señales
color buySignalColor = input.color(color.new(color.green, 0), "Buy Signal Color", group = "Signals")
color sellSignalColor = input.color(color.new(color.red, 0), "Sell Signal Color", group = "Signals")
string P_ = input.string(position.top_right,"Position",options = ,
group = "Style",display=display.none)
string sL = input.string(size.small , 'Size Label', options = , group = 'Style',display=display.none)
string sT = input.string(size.normal, 'Size Table', options = , group = 'Style',display=display.none)
bool Label = input.bool(false, inline = 'l')
History = input.bool(true, inline = 'l')
// Inputs for EMA lengths and volume confirmation
bool MAV = input.bool(true, title = 'EMA', group = 'EMA')
string volumeOption = input.string('Use Volume Confirmation', title = 'Volume Option', options = , group = 'EMA',display=display.none)
bool useVolumeConfirmation = volumeOption == 'none' ? false : true
int emaFastLength = input(12, title = 'Fast EMA Length', group = 'EMA',display=display.none)
int emaSlowLength = input(26, title = 'Slow EMA Length', group = 'EMA',display=display.none)
int volumeConfirmationLength = input(6, title = 'Volume Confirmation Length', group = 'EMA',display=display.none)
string alert_freq = input.string(alert.freq_once_per_bar_close, title="Alert Frequency",
options= ,group = "EMA",
tooltip="If you choose once_per_bar, you will receive immediate notifications (but this may cause interference or indicator repainting).
However, if you choose once_per_bar_close, it will wait for the candle to confirm the signal before notifying.",display=display.none)
//------------------------------------------
// UDT_identifier |
//------------------------------------------
type OHLCV
float O = open
float H = high
float L = low
float C = close
float V = volume
type VolumeData
float buyVol
float sellVol
float pcBuy
float pcSell
bool isBuyGreater
float higherVol
float lowerVol
color higherCol
color lowerCol
//------------------------------------------
// Calculate volumes and percentages |
//------------------------------------------
calcVolumes(OHLCV ohlcv) =>
var VolumeData data = VolumeData.new()
data.buyVol := ohlcv.V * (ohlcv.C - ohlcv.L) / (ohlcv.H - ohlcv.L)
data.sellVol := ohlcv.V - data.buyVol
data.pcBuy := data.buyVol / ohlcv.V * 100
data.pcSell := 100 - data.pcBuy
data.isBuyGreater := data.buyVol > data.sellVol
data.higherVol := data.isBuyGreater ? data.buyVol : data.sellVol
data.lowerVol := data.isBuyGreater ? data.sellVol : data.buyVol
data.higherCol := data.isBuyGreater ? C_Up : C_Down
data.lowerCol := data.isBuyGreater ? C_Down : C_Up
data
//------------------------------------------
// Get volume data |
//------------------------------------------
ohlcv = OHLCV.new()
volData = calcVolumes(ohlcv)
// Plot volumes and create labels
plot(ohlcv.V, color=color.new(volData.higherCol, 90), style=plot.style_columns, title='Total',display = display.all - display.status_line)
plot(ohlcv.V, color=volData.higherCol, style=plot.style_stepline_diamond, title='Total2', linewidth = 2,display = display.pane)
plot(volData.higherVol, color=volData.higherCol, style=plot.style_columns, title='Higher Volume', display = display.all - display.status_line)
plot(volData.lowerVol , color=volData.lowerCol , style=plot.style_columns, title='Lower Volume',display = display.all - display.status_line)
S(D,F)=>str.tostring(D,F)
volStr = S(math.sign(ta.change(ohlcv.C)) * ohlcv.V, FV)
buyVolStr = S(volData.buyVol , FV )
sellVolStr = S(volData.sellVol , FV )
// ✅ MODIFICACIÓN: Porcentaje sin decimales
buyPercentStr = str.tostring(math.round(volData.pcBuy)) + " %"
sellPercentStr = str.tostring(math.round(volData.pcSell)) + " %"
totalbuyPercentC_ = volData.buyVol / (volData.buyVol + volData.sellVol) * 100
sup = not na(ohlcv.V)
if sup
TC = text.align_center
CW = color.white
var table tb = table.new(P_, 6, 6, bgcolor = na, frame_width = 2, frame_color = chart.fg_color, border_width = 1, border_color = CW)
tb.cell(0, 0, text = 'Volume Candles', text_color = #FFBF00, bgcolor = #0E2841, text_halign = TC, text_valign = TC, text_size = sT)
tb.merge_cells(0, 0, 5, 0)
tb.cell(0, 1, text = 'Current Volume', text_color = CW, bgcolor = #0B3040, text_halign = TC, text_valign = TC, text_size = sT)
tb.merge_cells(0, 1, 1, 1)
tb.cell(0, 2, text = 'Buy', text_color = #000000, bgcolor = #92D050, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(1, 2, text = 'Sell', text_color = #000000, bgcolor = #FF0000, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(0, 3, text = buyVolStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(1, 3, text = sellVolStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(0, 5, text = 'Net: ' + volStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
tb.merge_cells(0, 5, 1, 5)
tb.cell(0, 4, text = buyPercentStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(1, 4, text = sellPercentStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
cellCount = 20
filledCells = 0
for r = 5 to 1 by 1
for c = 2 to 5 by 1
if filledCells < cellCount * (totalbuyPercentC_ / 100)
tb.cell(c, r, text = '', bgcolor = C_Up)
else
tb.cell(c, r, text = '', bgcolor = C_Down)
filledCells := filledCells + 1
filledCells
if Label
sp = ' '
l = label.new(bar_index, ohlcv.V,
text=str.format('Net: {0} Buy: {1} ({2}) Sell: {3} ({4}) {5}/\ {5}l {5}l',
volStr, buyVolStr, buyPercentStr, sellVolStr, sellPercentStr, sp),
style=label.style_none, textcolor=volData.higherCol, size=sL, textalign=text.align_left)
if not History
(l ).delete()
//------------------------------------------
// Draw volume levels on the candlesticks |
//------------------------------------------
float base = na,float value = na
bool uc = usecandle and sup
if volData.isBuyGreater
base := math.min(ohlcv.O, ohlcv.C)
value := base + math.abs(ohlcv.O - ohlcv.C) * (volData.pcBuy / 100)
else
base := math.max(ohlcv.O, ohlcv.C)
value := base - math.abs(ohlcv.O - ohlcv.C) * (volData.pcSell / 100)
barcolor(sup ? color.new(na, na) : ohlcv.C < ohlcv.O ? color.red : color.green,display = usecandle? display.all:display.none)
UseC = uc ? volData.higherCol:color.new(na, na)
plotcandle(uc?base:na, uc?base:na, uc?value:na, uc?value:na,
title='Body', color=UseC, bordercolor=na, wickcolor=UseC,
display = usecandle ? display.all - display.status_line : display.none, force_overlay=true,editable=false)
plotcandle(uc?ohlcv.O:na, uc?ohlcv.H:na, uc?ohlcv.L:na, uc?ohlcv.C:na,
title='Fill', color=color.new(UseC,80), bordercolor=UseC, wickcolor=UseC,
display = usecandle ? display.all - display.status_line : display.none, force_overlay=true,editable=false)
//------------------------------------------------------------
// Plot the EMA and filter out the noise with volume control. |
//------------------------------------------------------------
float emaFast = ta.ema(ohlcv.C, emaFastLength)
float emaSlow = ta.ema(ohlcv.C, emaSlowLength)
bool signal = emaFast > emaSlow
color c_signal = signal ? C_Up : C_Down
float volumeMA = ta.sma(ohlcv.V, volumeConfirmationLength)
bool crossover = ta.crossover(emaFast, emaSlow)
bool crossunder = ta.crossunder(emaFast, emaSlow)
isVolumeConfirmed(source, length, ma) =>
math.sum(source > ma ? source : 0, length) >= math.sum(source < ma ? source : 0, length)
bool ISV = isVolumeConfirmed(ohlcv.V, volumeConfirmationLength, volumeMA)
bool crossoverConfirmed = crossover and (not useVolumeConfirmation or ISV)
bool crossunderConfirmed = crossunder and (not useVolumeConfirmation or ISV)
PF = MAV ? emaFast : na
PS = MAV ? emaSlow : na
p1 = plot(PF, color = c_signal, editable = false, force_overlay = true, display = display.pane)
plot(PF, color = color.new(c_signal, 80), linewidth = 10, editable = false, force_overlay = true, display = display.pane)
plot(PF, color = color.new(c_signal, 90), linewidth = 20, editable = false, force_overlay = true, display = display.pane)
plot(PF, color = color.new(c_signal, 95), linewidth = 30, editable = false, force_overlay = true, display = display.pane)
plot(PF, color = color.new(c_signal, 98), linewidth = 45, editable = false, force_overlay = true, display = display.pane)
p2 = plot(PS, color = c_signal, editable = false, force_overlay = true, display = display.pane)
plot(PS, color = color.new(c_signal, 80), linewidth = 10, editable = false, force_overlay = true, display = display.pane)
plot(PS, color = color.new(c_signal, 90), linewidth = 20, editable = false, force_overlay = true, display = display.pane)
plot(PS, color = color.new(c_signal, 95), linewidth = 30, editable = false, force_overlay = true, display = display.pane)
plot(PS, color = color.new(c_signal, 98), linewidth = 45, editable = false, force_overlay = true, display = display.pane)
fill(p1, p2, top_value=crossover ? emaFast : emaSlow,
bottom_value =crossover ? emaSlow : emaFast,
top_color =color.new(c_signal, 80),
bottom_color =color.new(c_signal, 95)
)
// ✅ Usar colores configurables para señales
plotshape(crossoverConfirmed and MAV, style=shape.triangleup , location=location.belowbar, color=buySignalColor , size=size.small, force_overlay=true,display =display.pane)
plotshape(crossunderConfirmed and MAV, style=shape.triangledown, location=location.abovebar, color=sellSignalColor, size=size.small, force_overlay=true,display =display.pane)
string msg = '--------- '+"Buy volume ="+buyVolStr+" Buy Percent = "+buyPercentStr+" Sell volume = "+sellVolStr+" Sell Percent = "+sellPercentStr+" Net = "+volStr+' ---------'
if crossoverConfirmed
alert("Price (" + str.tostring(close) + ") Crossed over MA " + msg, alert_freq)
if crossunderConfirmed
alert("Price (" + str.tostring(close) + ") Crossed under MA " + msg, alert_freq)
BOCS Channel Scalper Indicator - Mean Reversion Alert System# BOCS Channel Scalper Indicator - Mean Reversion Alert System
## WHAT THIS INDICATOR DOES:
This is a mean reversion trading indicator that identifies consolidation channels through volatility analysis and generates alert signals when price enters entry zones near channel boundaries. **This indicator version is designed for manual trading with comprehensive alert functionality.** Unlike automated strategies, this tool sends notifications (via popup, email, SMS, or webhook) when trading opportunities occur, allowing you to manually review and execute trades. The system assumes price will revert to the channel mean, identifying scalp opportunities as price reaches extremes and preparing to bounce back toward center.
## INDICATOR VS STRATEGY - KEY DISTINCTION:
**This is an INDICATOR with alerts, not an automated strategy.** It does not execute trades automatically. Instead, it:
- Displays visual signals on your chart when entry conditions are met
- Sends customizable alerts to your device/email when opportunities arise
- Shows TP/SL levels for reference but does not place orders
- Requires you to manually enter and exit positions based on signals
- Works with all TradingView subscription levels (alerts included on all plans)
**For automated trading with backtesting**, use the strategy version. For manual control with notifications, use this indicator version.
## ALERT CAPABILITIES:
This indicator includes four distinct alert conditions that can be configured independently:
**1. New Channel Formation Alert**
- Triggers when a fresh BOCS channel is identified
- Message: "New BOCS channel formed - potential scalp setup ready"
- Use this to prepare for upcoming trading opportunities
**2. Long Scalp Entry Alert**
- Fires when price touches the long entry zone
- Message includes current price, calculated TP, and SL levels
- Notification example: "LONG scalp signal at 24731.75 | TP: 24743.2 | SL: 24716.5"
**3. Short Scalp Entry Alert**
- Fires when price touches the short entry zone
- Message includes current price, calculated TP, and SL levels
- Notification example: "SHORT scalp signal at 24747.50 | TP: 24735.0 | SL: 24762.75"
**4. Any Entry Signal Alert**
- Combined alert for both long and short entries
- Use this if you want a single alert stream for all opportunities
- Message: "BOCS Scalp Entry: at "
**Setting Up Alerts:**
1. Add indicator to chart and configure settings
2. Click the Alert (⏰) button in TradingView toolbar
3. Select "BOCS Channel Scalper" from condition dropdown
4. Choose desired alert type (Long, Short, Any, or Channel Formation)
5. Set "Once Per Bar Close" to avoid false signals during bar formation
6. Configure delivery method (popup, email, webhook for automation platforms)
7. Save alert - it will fire automatically when conditions are met
**Alert Message Placeholders:**
Alerts use TradingView's dynamic placeholder system:
- {{ticker}} = Symbol name (e.g., NQ1!)
- {{close}} = Current price at signal
- {{plot_1}} = Calculated take profit level
- {{plot_2}} = Calculated stop loss level
These placeholders populate automatically, creating detailed notification messages without manual configuration.
## KEY DIFFERENCE FROM ORIGINAL BOCS:
**This indicator is designed for traders seeking higher trade frequency.** The original BOCS indicator trades breakouts OUTSIDE channels, waiting for price to escape consolidation before entering. This scalper version trades mean reversion INSIDE channels, entering when price reaches channel extremes and betting on a bounce back to center. The result is significantly more trading opportunities:
- **Original BOCS**: 1-3 signals per channel (only on breakout)
- **Scalper Indicator**: 5-15+ signals per channel (every touch of entry zones)
- **Trade Style**: Mean reversion vs trend following
- **Hold Time**: Seconds to minutes vs minutes to hours
- **Best Markets**: Ranging/choppy conditions vs trending breakouts
This makes the indicator ideal for active day traders who want continuous alert opportunities within consolidation zones rather than waiting for breakout confirmation. However, increased signal frequency also means higher potential commission costs and requires disciplined trade selection when acting on alerts.
## TECHNICAL METHODOLOGY:
### Price Normalization Process:
The indicator normalizes price data to create consistent volatility measurements across different instruments and price levels. It calculates the highest high and lowest low over a user-defined lookback period (default 100 bars). Current close price is normalized using: (close - lowest_low) / (highest_high - lowest_low), producing values between 0 and 1 for standardized volatility analysis.
### Volatility Detection:
A 14-period standard deviation is applied to the normalized price series to measure price deviation from the mean. Higher standard deviation values indicate volatility expansion; lower values indicate consolidation. The indicator uses ta.highestbars() and ta.lowestbars() to identify when volatility peaks and troughs occur over the detection period (default 14 bars).
### Channel Formation Logic:
When volatility crosses from a high level to a low level (ta.crossover(upper, lower)), a consolidation phase begins. The indicator tracks the highest and lowest prices during this period, which become the channel boundaries. Minimum duration of 10+ bars is required to filter out brief volatility spikes. Channels are rendered as box objects with defined upper and lower boundaries, with colored zones indicating entry areas.
### Entry Signal Generation:
The indicator uses immediate touch-based entry logic. Entry zones are defined as a percentage from channel edges (default 20%):
- **Long Entry Zone**: Bottom 20% of channel (bottomBound + channelRange × 0.2)
- **Short Entry Zone**: Top 20% of channel (topBound - channelRange × 0.2)
Long signals trigger when candle low touches or enters the long entry zone. Short signals trigger when candle high touches or enters the short entry zone. Visual markers (arrows and labels) appear on chart, and configured alerts fire immediately.
### Cooldown Filter:
An optional cooldown period (measured in bars) prevents alert spam by enforcing minimum spacing between consecutive signals. If cooldown is set to 3 bars, no new long alert will fire until 3 bars after the previous long signal. Long and short cooldowns are tracked independently, allowing both directions to signal within the same period.
### ATR Volatility Filter:
The indicator includes a multi-timeframe ATR filter to avoid alerts during low-volatility conditions. Using request.security(), it fetches ATR values from a specified timeframe (e.g., 1-minute ATR while viewing 5-minute charts). The filter compares current ATR to a user-defined minimum threshold:
- If ATR ≥ threshold: Alerts enabled
- If ATR < threshold: No alerts fire
This prevents notifications during dead zones where mean reversion is unreliable due to insufficient price movement. The ATR status is displayed in the info table with visual confirmation (✓ or ✗).
### Take Profit Calculation:
Two TP methods are available:
**Fixed Points Mode**:
- Long TP = Entry + (TP_Ticks × syminfo.mintick)
- Short TP = Entry - (TP_Ticks × syminfo.mintick)
**Channel Percentage Mode**:
- Long TP = Entry + (ChannelRange × TP_Percent)
- Short TP = Entry - (ChannelRange × TP_Percent)
Default 50% targets the channel midline, a natural mean reversion target. These levels are displayed as visual lines with labels and included in alert messages for reference when manually placing orders.
### Stop Loss Placement:
Stop losses are calculated just outside the channel boundary by a user-defined tick offset:
- Long SL = ChannelBottom - (SL_Offset_Ticks × syminfo.mintick)
- Short SL = ChannelTop + (SL_Offset_Ticks × syminfo.mintick)
This logic assumes channel breaks invalidate the mean reversion thesis. SL levels are displayed on chart and included in alert notifications as suggested stop placement.
### Channel Breakout Management:
Channels are removed when price closes more than 10 ticks outside boundaries. This tolerance prevents premature channel deletion from minor breaks or wicks, allowing the mean reversion setup to persist through small boundary violations.
## INPUT PARAMETERS:
### Channel Settings:
- **Nested Channels**: Allow multiple overlapping channels vs single channel
- **Normalization Length**: Lookback for high/low calculation (1-500, default 100)
- **Box Detection Length**: Period for volatility detection (1-100, default 14)
### Scalping Settings:
- **Enable Long Scalps**: Toggle long alert generation on/off
- **Enable Short Scalps**: Toggle short alert generation on/off
- **Entry Zone % from Edge**: Size of entry zone (5-50%, default 20%)
- **SL Offset (Ticks)**: Distance beyond channel for stop (1+, default 5)
- **Cooldown Period (Bars)**: Minimum spacing between alerts (0 = no cooldown)
### ATR Filter:
- **Enable ATR Filter**: Toggle volatility filter on/off
- **ATR Timeframe**: Source timeframe for ATR (1, 5, 15, 60 min, etc.)
- **ATR Length**: Smoothing period (1-100, default 14)
- **Min ATR Value**: Threshold for alert enablement (0.1+, default 10.0)
### Take Profit Settings:
- **TP Method**: Choose Fixed Points or % of Channel
- **TP Fixed (Ticks)**: Static distance in ticks (1+, default 30)
- **TP % of Channel**: Dynamic target as channel percentage (10-100%, default 50%)
### Appearance:
- **Show Entry Zones**: Toggle zone labels on channels
- **Show Info Table**: Display real-time indicator status
- **Table Position**: Corner placement (Top Left/Right, Bottom Left/Right)
- **Long Color**: Customize long signal color (default: darker green for readability)
- **Short Color**: Customize short signal color (default: red)
- **TP/SL Colors**: Customize take profit and stop loss line colors
- **Line Length**: Visual length of TP/SL reference lines (5-200 bars)
## VISUAL INDICATORS:
- **Channel boxes** with semi-transparent fill showing consolidation zones
- **Colored entry zones** labeled "LONG ZONE ▲" and "SHORT ZONE ▼"
- **Entry signal arrows** below/above bars marking long/short alerts
- **TP/SL reference lines** with emoji labels (⊕ Entry, 🎯 TP, 🛑 SL)
- **Info table** showing channel status, last signal, entry/TP/SL prices, risk/reward ratio, and ATR filter status
- **Visual confirmation** when alerts fire via on-chart markers synchronized with notifications
## HOW TO USE:
### For 1-3 Minute Scalping with Alerts (NQ/ES):
- ATR Timeframe: "1" (1-minute)
- ATR Min Value: 10.0 (for NQ), adjust per instrument
- Entry Zone %: 20-25%
- TP Method: Fixed Points, 20-40 ticks
- SL Offset: 5-10 ticks
- Cooldown: 2-3 bars to reduce alert spam
- **Alert Setup**: Configure "Any Entry Signal" for combined long/short notifications
- **Execution**: When alert fires, verify chart visuals, then manually place limit order at entry zone with provided TP/SL levels
### For 5-15 Minute Day Trading with Alerts:
- ATR Timeframe: "5" or match chart
- ATR Min Value: Adjust to instrument (test 8-15 for NQ)
- Entry Zone %: 20-30%
- TP Method: % of Channel, 40-60%
- SL Offset: 5-10 ticks
- Cooldown: 3-5 bars
- **Alert Setup**: Configure separate "Long Scalp Entry" and "Short Scalp Entry" alerts if you trade directionally based on bias
- **Execution**: Review channel structure on alert, confirm ATR filter shows ✓, then enter manually
### For 30-60 Minute Swing Scalping with Alerts:
- ATR Timeframe: "15" or "30"
- ATR Min Value: Lower threshold for broader market
- Entry Zone %: 25-35%
- TP Method: % of Channel, 50-70%
- SL Offset: 10-15 ticks
- Cooldown: 5+ bars or disable
- **Alert Setup**: Use "New Channel Formation" to prepare for setups, then "Any Entry Signal" for execution alerts
- **Execution**: Larger timeframes allow more analysis time between alert and entry
### Webhook Integration for Semi-Automation:
- Configure alert webhook URL to connect with platforms like TradersPost, TradingView Paper Trading, or custom automation
- Alert message includes all necessary order parameters (direction, entry, TP, SL)
- Webhook receives structured data when signal fires
- External platform can auto-execute based on alert payload
- Still maintains manual oversight vs full strategy automation
## USAGE CONSIDERATIONS:
- **Manual Discipline Required**: Alerts provide opportunities but execution requires judgment. Not all alerts should be taken - consider market context, trend, and channel quality
- **Alert Timing**: Alerts fire on bar close by default. Ensure "Once Per Bar Close" is selected to avoid false signals during bar formation
- **Notification Delivery**: Mobile/email alerts may have 1-3 second delay. For immediate execution, use desktop popups or webhook automation
- **Cooldown Necessity**: Without cooldown, rapidly touching price action can generate excessive alerts. Start with 3-bar cooldown and adjust based on alert volume
- **ATR Filter Impact**: Enabling ATR filter dramatically reduces alert count but improves quality. Track filter status in info table to understand when you're receiving fewer alerts
- **Commission Awareness**: High alert frequency means high potential trade count. Calculate if your commission structure supports frequent scalping before acting on all alerts
## COMPATIBLE MARKETS:
Works on any instrument with price data including stock indices (NQ, ES, YM, RTY), individual stocks, forex pairs (EUR/USD, GBP/USD), cryptocurrency (BTC, ETH), and commodities. Volume-based features are not included in this indicator version. Multi-timeframe ATR requires higher-tier TradingView subscription for request.security() functionality on timeframes below chart timeframe.
## KNOWN LIMITATIONS:
- **Indicator does not execute trades** - alerts are informational only; you must manually place all orders
- **Alert delivery depends on TradingView infrastructure** - delays or failures possible during platform issues
- **No position tracking** - indicator doesn't know if you're in a trade; you must manage open positions independently
- **TP/SL levels are reference only** - you must manually set these on your broker platform; they are not live orders
- **Immediate touch entry can generate many alerts** in choppy zones without adequate cooldown
- **Channel deletion at 10-tick breaks** may be too aggressive or lenient depending on instrument tick size
- **ATR filter from lower timeframes** requires TradingView Premium/Pro+ for request.security()
- **Mean reversion logic fails** in strong breakout scenarios - alerts will fire but trades may hit stops
- **No partial closing capability** - full position management is manual; you determine scaling out
- **Alerts do not account for gaps** or overnight price changes; morning alerts may be stale
## RISK DISCLOSURE:
Trading involves substantial risk of loss. This indicator provides signals for educational and informational purposes only and does not constitute financial advice. Past performance does not guarantee future results. Mean reversion strategies can experience extended drawdowns during trending markets. Alerts are not guaranteed to be profitable and should be combined with your own analysis. Stop losses may not fill at intended levels during extreme volatility or gaps. Never trade with capital you cannot afford to lose. Consider consulting a licensed financial advisor before making trading decisions. Always verify alerts against current market conditions before executing trades manually.
## ACKNOWLEDGMENT & CREDITS:
This indicator is built upon the channel detection methodology created by **AlgoAlpha** in the "Smart Money Breakout Channels" indicator. Full credit and appreciation to AlgoAlpha for pioneering the normalized volatility approach to identifying consolidation patterns. The core channel formation logic using normalized price standard deviation is AlgoAlpha's original contribution to the TradingView community.
Enhancements to the original concept include: mean reversion entry logic (vs breakout), immediate touch-based alert generation, comprehensive alert condition system with customizable notifications, multi-timeframe ATR volatility filtering, cooldown period for alert management, dual TP methods (fixed points vs channel percentage), visual TP/SL reference lines, and real-time status monitoring table. This indicator version is specifically designed for manual traders who prefer alert-based decision making over automated execution.
BOCS Channel Scalper Strategy - Automated Mean Reversion System# BOCS Channel Scalper Strategy - Automated Mean Reversion System
## WHAT THIS STRATEGY DOES:
This is an automated mean reversion trading strategy that identifies consolidation channels through volatility analysis and executes scalp trades when price enters entry zones near channel boundaries. Unlike breakout strategies, this system assumes price will revert to the channel mean, taking profits as price bounces back from extremes. Position sizing is fully customizable with three methods: fixed contracts, percentage of equity, or fixed dollar amount. Stop losses are placed just outside channel boundaries with take profits calculated either as fixed points or as a percentage of channel range.
## KEY DIFFERENCE FROM ORIGINAL BOCS:
**This strategy is designed for traders seeking higher trade frequency.** The original BOCS indicator trades breakouts OUTSIDE channels, waiting for price to escape consolidation before entering. This scalper version trades mean reversion INSIDE channels, entering when price reaches channel extremes and betting on a bounce back to center. The result is significantly more trading opportunities:
- **Original BOCS**: 1-3 signals per channel (only on breakout)
- **Scalper Version**: 5-15+ signals per channel (every touch of entry zones)
- **Trade Style**: Mean reversion vs trend following
- **Hold Time**: Seconds to minutes vs minutes to hours
- **Best Markets**: Ranging/choppy conditions vs trending breakouts
This makes the scalper ideal for active day traders who want continuous opportunities within consolidation zones rather than waiting for breakout confirmation. However, increased trade frequency also means higher commission costs and requires tighter risk management.
## TECHNICAL METHODOLOGY:
### Price Normalization Process:
The strategy normalizes price data to create consistent volatility measurements across different instruments and price levels. It calculates the highest high and lowest low over a user-defined lookback period (default 100 bars). Current close price is normalized using: (close - lowest_low) / (highest_high - lowest_low), producing values between 0 and 1 for standardized volatility analysis.
### Volatility Detection:
A 14-period standard deviation is applied to the normalized price series to measure price deviation from the mean. Higher standard deviation values indicate volatility expansion; lower values indicate consolidation. The strategy uses ta.highestbars() and ta.lowestbars() to identify when volatility peaks and troughs occur over the detection period (default 14 bars).
### Channel Formation Logic:
When volatility crosses from a high level to a low level (ta.crossover(upper, lower)), a consolidation phase begins. The strategy tracks the highest and lowest prices during this period, which become the channel boundaries. Minimum duration of 10+ bars is required to filter out brief volatility spikes. Channels are rendered as box objects with defined upper and lower boundaries, with colored zones indicating entry areas.
### Entry Signal Generation:
The strategy uses immediate touch-based entry logic. Entry zones are defined as a percentage from channel edges (default 20%):
- **Long Entry Zone**: Bottom 20% of channel (bottomBound + channelRange × 0.2)
- **Short Entry Zone**: Top 20% of channel (topBound - channelRange × 0.2)
Long signals trigger when candle low touches or enters the long entry zone. Short signals trigger when candle high touches or enters the short entry zone. This captures mean reversion opportunities as price reaches channel extremes.
### Cooldown Filter:
An optional cooldown period (measured in bars) prevents signal spam by enforcing minimum spacing between consecutive signals. If cooldown is set to 3 bars, no new long signal will fire until 3 bars after the previous long signal. Long and short cooldowns are tracked independently, allowing both directions to signal within the same period.
### ATR Volatility Filter:
The strategy includes a multi-timeframe ATR filter to avoid trading during low-volatility conditions. Using request.security(), it fetches ATR values from a specified timeframe (e.g., 1-minute ATR while trading on 5-minute charts). The filter compares current ATR to a user-defined minimum threshold:
- If ATR ≥ threshold: Trading enabled
- If ATR < threshold: No signals fire
This prevents entries during dead zones where mean reversion is unreliable due to insufficient price movement.
### Take Profit Calculation:
Two TP methods are available:
**Fixed Points Mode**:
- Long TP = Entry + (TP_Ticks × syminfo.mintick)
- Short TP = Entry - (TP_Ticks × syminfo.mintick)
**Channel Percentage Mode**:
- Long TP = Entry + (ChannelRange × TP_Percent)
- Short TP = Entry - (ChannelRange × TP_Percent)
Default 50% targets the channel midline, a natural mean reversion target. Larger percentages aim for opposite channel edge.
### Stop Loss Placement:
Stop losses are placed just outside the channel boundary by a user-defined tick offset:
- Long SL = ChannelBottom - (SL_Offset_Ticks × syminfo.mintick)
- Short SL = ChannelTop + (SL_Offset_Ticks × syminfo.mintick)
This logic assumes channel breaks invalidate the mean reversion thesis. If price breaks through, the range is no longer valid and position exits.
### Trade Execution Logic:
When entry conditions are met (price in zone, cooldown satisfied, ATR filter passed, no existing position):
1. Calculate entry price at zone boundary
2. Calculate TP and SL based on selected method
3. Execute strategy.entry() with calculated position size
4. Place strategy.exit() with TP limit and SL stop orders
5. Update info table with active trade details
The strategy enforces one position at a time by checking strategy.position_size == 0 before entry.
### Channel Breakout Management:
Channels are removed when price closes more than 10 ticks outside boundaries. This tolerance prevents premature channel deletion from minor breaks or wicks, allowing the mean reversion setup to persist through small boundary violations.
### Position Sizing System:
Three methods calculate position size:
**Fixed Contracts**:
- Uses exact contract quantity specified in settings
- Best for futures traders (e.g., "trade 2 NQ contracts")
**Percentage of Equity**:
- position_size = (strategy.equity × equity_pct / 100) / close
- Dynamically scales with account growth
**Cash Amount**:
- position_size = cash_amount / close
- Maintains consistent dollar exposure regardless of price
## INPUT PARAMETERS:
### Position Sizing:
- **Position Size Type**: Choose Fixed Contracts, % of Equity, or Cash Amount
- **Number of Contracts**: Fixed quantity per trade (1-1000)
- **% of Equity**: Percentage of account to allocate (1-100%)
- **Cash Amount**: Dollar value per position ($100+)
### Channel Settings:
- **Nested Channels**: Allow multiple overlapping channels vs single channel
- **Normalization Length**: Lookback for high/low calculation (1-500, default 100)
- **Box Detection Length**: Period for volatility detection (1-100, default 14)
### Scalping Settings:
- **Enable Long Scalps**: Toggle long entries on/off
- **Enable Short Scalps**: Toggle short entries on/off
- **Entry Zone % from Edge**: Size of entry zone (5-50%, default 20%)
- **SL Offset (Ticks)**: Distance beyond channel for stop (1+, default 5)
- **Cooldown Period (Bars)**: Minimum spacing between signals (0 = no cooldown)
### ATR Filter:
- **Enable ATR Filter**: Toggle volatility filter on/off
- **ATR Timeframe**: Source timeframe for ATR (1, 5, 15, 60 min, etc.)
- **ATR Length**: Smoothing period (1-100, default 14)
- **Min ATR Value**: Threshold for trade enablement (0.1+, default 10.0)
### Take Profit Settings:
- **TP Method**: Choose Fixed Points or % of Channel
- **TP Fixed (Ticks)**: Static distance in ticks (1+, default 30)
- **TP % of Channel**: Dynamic target as channel percentage (10-100%, default 50%)
### Appearance:
- **Show Entry Zones**: Toggle zone labels on channels
- **Show Info Table**: Display real-time strategy status
- **Table Position**: Corner placement (Top Left/Right, Bottom Left/Right)
- **Color Settings**: Customize long/short/TP/SL colors
## VISUAL INDICATORS:
- **Channel boxes** with semi-transparent fill showing consolidation zones
- **Colored entry zones** labeled "LONG ZONE ▲" and "SHORT ZONE ▼"
- **Entry signal arrows** below/above bars marking long/short entries
- **Active TP/SL lines** with emoji labels (⊕ Entry, 🎯 TP, 🛑 SL)
- **Info table** showing position status, channel state, last signal, entry/TP/SL prices, and ATR status
## HOW TO USE:
### For 1-3 Minute Scalping (NQ/ES):
- ATR Timeframe: "1" (1-minute)
- ATR Min Value: 10.0 (for NQ), adjust per instrument
- Entry Zone %: 20-25%
- TP Method: Fixed Points, 20-40 ticks
- SL Offset: 5-10 ticks
- Cooldown: 2-3 bars
- Position Size: 1-2 contracts
### For 5-15 Minute Day Trading:
- ATR Timeframe: "5" or match chart
- ATR Min Value: Adjust to instrument (test 8-15 for NQ)
- Entry Zone %: 20-30%
- TP Method: % of Channel, 40-60%
- SL Offset: 5-10 ticks
- Cooldown: 3-5 bars
- Position Size: Fixed contracts or 5-10% equity
### For 30-60 Minute Swing Scalping:
- ATR Timeframe: "15" or "30"
- ATR Min Value: Lower threshold for broader market
- Entry Zone %: 25-35%
- TP Method: % of Channel, 50-70%
- SL Offset: 10-15 ticks
- Cooldown: 5+ bars or disable
- Position Size: % of equity recommended
## BACKTEST CONSIDERATIONS:
- Strategy performs best in ranging, mean-reverting markets
- Strong trending markets produce more stop losses as price breaks channels
- ATR filter significantly reduces trade count but improves quality during low volatility
- Cooldown period trades signal quantity for signal quality
- Commission and slippage materially impact sub-5-minute timeframe performance
- Shorter timeframes require tighter entry zones (15-20%) to catch quick reversions
- % of Channel TP adapts better to varying channel sizes than fixed points
- Fixed contract sizing recommended for consistent risk per trade in futures
**Backtesting Parameters Used**: This strategy was developed and tested using realistic commission and slippage values to provide accurate performance expectations. Recommended settings: Commission of $1.40 per side (typical for NQ futures through discount brokers), slippage of 2 ticks to account for execution delays on fast-moving scalp entries. These values reflect real-world trading costs that active scalpers will encounter. Backtest results without proper cost simulation will significantly overstate profitability.
## COMPATIBLE MARKETS:
Works on any instrument with price data including stock indices (NQ, ES, YM, RTY), individual stocks, forex pairs (EUR/USD, GBP/USD), cryptocurrency (BTC, ETH), and commodities. Volume-based features require data feed with volume information but are optional for core functionality.
## KNOWN LIMITATIONS:
- Immediate touch entry can fire multiple times in choppy zones without adequate cooldown
- Channel deletion at 10-tick breaks may be too aggressive or lenient depending on instrument tick size
- ATR filter from lower timeframes requires higher-tier TradingView subscription (request.security limitation)
- Mean reversion logic fails in strong breakout scenarios leading to stop loss hits
- Position sizing via % of equity or cash amount calculates based on close price, may differ from actual fill price
- No partial closing capability - full position exits at TP or SL only
- Strategy does not account for gap openings or overnight holds
## RISK DISCLOSURE:
Trading involves substantial risk of loss. Past performance does not guarantee future results. This strategy is for educational purposes and backtesting only. Mean reversion strategies can experience extended drawdowns during trending markets. Stop losses may not fill at intended levels during extreme volatility or gaps. Thoroughly test on historical data and paper trade before risking real capital. Use appropriate position sizing and never risk more than you can afford to lose. Consider consulting a licensed financial advisor before making trading decisions. Automated trading systems can malfunction - monitor all live positions actively.
## ACKNOWLEDGMENT & CREDITS:
This strategy is built upon the channel detection methodology created by **AlgoAlpha** in the "Smart Money Breakout Channels" indicator. Full credit and appreciation to AlgoAlpha for pioneering the normalized volatility approach to identifying consolidation patterns. The core channel formation logic using normalized price standard deviation is AlgoAlpha's original contribution to the TradingView community.
Enhancements to the original concept include: mean reversion entry logic (vs breakout), immediate touch-based signals, multi-timeframe ATR volatility filtering, flexible position sizing (fixed/percentage/cash), cooldown period filtering, dual TP methods (fixed points vs channel percentage), automated strategy execution with exit management, and real-time position monitoring table.
Volume Relativo - Candle Color - CriptoBraboAssinala pela cor do candle o volume relativo. Parametros customizáveis















