Johnny's Machine Learning Moving Average (MLMA) w/ Trend Alerts📖 Overview
Johnny's Machine Learning Moving Average (MLMA) w/ Trend Alerts is a powerful adaptive moving average indicator designed to capture market trends dynamically. Unlike traditional moving averages (e.g., SMA, EMA, WMA), this indicator incorporates volatility-based trend detection, Bollinger Bands, ADX, and RSI, offering a comprehensive view of market conditions.
The MLMA is "machine learning-inspired" because it adapts dynamically to market conditions using ATR-based windowing and integrates multiple trend strength indicators (ADX, RSI, and volatility bands) to provide an intelligent moving average calculation that learns from recent price action rather than being static.
🛠 How It Works
1️⃣ Adaptive Moving Average Selection
The MLMA automatically selects one of four different moving averages:
📊 EMA (Exponential Moving Average) – Reacts quickly to price changes.
🔵 HMA (Hull Moving Average) – Smooth and fast, reducing lag.
🟡 WMA (Weighted Moving Average) – Gives recent prices more importance.
🔴 VWAP (Volume Weighted Average Price) – Accounts for volume impact.
The user can select which moving average type to use, making the indicator customizable based on their strategy.
2️⃣ Dynamic Trend Detection
ATR-Based Adaptive Window 📏
The Average True Range (ATR) determines the window size dynamically.
When volatility is high, the moving average window expands, making the MLMA more stable.
When volatility is low, the window shrinks, making the MLMA more responsive.
Trend Strength Filters 📊
ADX (Average Directional Index) > 25 → Indicates a strong trend.
RSI (Relative Strength Index) > 70 or < 30 → Identifies overbought/oversold conditions.
Price Position Relative to Upper/Lower Bands → Determines bullish vs. bearish momentum.
3️⃣ Volatility Bands & Dynamic Support/Resistance
Bollinger Bands (BB) 📉
Uses standard deviation-based bands around the MLMA to detect overbought and oversold zones.
Upper Band = Resistance, Lower Band = Support.
Helps traders identify breakout potential.
Adaptive Trend Bands 🔵🔴
The MLMA has built-in trend envelopes.
When price breaks the upper band, bullish momentum is confirmed.
When price breaks the lower band, bearish momentum is confirmed.
4️⃣ Visual Enhancements
Dynamic Gradient Fills 🌈
The trend strength (ADX-based) determines the gradient intensity.
Stronger trends = More vivid colors.
Weaker trends = Lighter colors.
Trend Reversal Arrows 🔄
🔼 Green Up Arrow: Bullish reversal signal.
🔽 Red Down Arrow: Bearish reversal signal.
Trend Table Overlay 🖥
Displays ADX, RSI, and Trend State dynamically on the chart.
📢 Trading Signals & How to Use It
1️⃣ Bullish Signals 📈
✅ Conditions for a Long (Buy) Trade:
The MLMA crosses above the lower band.
The ADX is above 25 (confirming trend strength).
RSI is above 55, indicating positive momentum.
Green trend reversal arrow appears (confirmation of a bullish reversal).
🔹 How to Trade It:
Enter a long trade when the MLMA turns bullish.
Set stop-loss below the lower Bollinger Band.
Target previous resistance levels or use the upper band as take-profit.
2️⃣ Bearish Signals 📉
✅ Conditions for a Short (Sell) Trade:
The MLMA crosses below the upper band.
The ADX is above 25 (confirming trend strength).
RSI is below 45, indicating bearish pressure.
Red trend reversal arrow appears (confirmation of a bearish reversal).
🔹 How to Trade It:
Enter a short trade when the MLMA turns bearish.
Set stop-loss above the upper Bollinger Band.
Target the lower band as take-profit.
💡 What Makes This a Machine Learning Moving Average?
📍 1️⃣ Adaptive & Self-Tuning
Unlike static moving averages that rely on fixed parameters, this MLMA automatically adjusts its sensitivity to market conditions using:
ATR-based dynamic windowing 📏 (Expands/contracts based on volatility).
Adaptive smoothing using EMA, HMA, WMA, or VWAP 📊.
Multi-indicator confirmation (ADX, RSI, Volatility Bands) 🏆.
📍 2️⃣ Intelligent Trend Confirmation
The MLMA "learns" from recent price movements instead of blindly following a fixed-length average.
It incorporates ADX & RSI trend filtering to reduce noise & false signals.
📍 3️⃣ Dynamic Color-Coding for Trend Strength
Strong trends trigger more vivid colors, mimicking confidence levels in machine learning models.
Weaker trends appear faded, suggesting uncertainty.
🎯 Why Use the MLMA?
✅ Pros
✔ Combines multiple trend indicators (MA, ADX, RSI, BB).
✔ Automatically adjusts to market conditions.
✔ Filters out weak trends, making it more reliable.
✔ Visually intuitive (gradient colors & reversal arrows).
✔ Works across all timeframes and assets.
⚠️ Cons
❌ Not a standalone strategy → Best used with volume confirmation or candlestick analysis.
❌ Can lag slightly in fast-moving markets (due to smoothing).
Cari dalam skrip untuk "如何用wind搜索股票的发行价和份数"
CDZV Enhanced Coppock CurveThis indicator is a part of the CDZV toolkit (backtesting and automation)
The Enhanced Coppock Curve is an upgraded version of the classic Coppock Curve indicator. It incorporates several additional features for greater flexibility and analysis capabilities. This indicator is used to analyze market trends by plotting a weighted moving average (WMA) of the sum of two Rate of Change (ROC) values.
Key Features of the Indicator:
Base Calculation of the Coppock Curve:
The Coppock Curve is calculated as a weighted moving average (WMA) of the sum of two ROC values (long and short periods).
The source for the calculation is customizable (default is close).
Added Custom Moving Average:
The indicator supports three types of moving averages:
EMA (Exponential Moving Average),
SMA (Simple Moving Average),
HMA (Hull Moving Average).
Users can choose the type and length of the moving average via input settings.
The selected moving average values are displayed in the Data Window for easier analysis.
Dynamic Coloring of the Coppock Curve:
The Coppock Curve line changes color based on its value:
Green if the value is positive,
Red if the value is negative.
The line's color is also displayed in the Data Window as a numeric value:
1 for green (positive),
-1 for red (negative).
Data Window Output:
The values of the selected moving average are displayed in the Data Window.
The Coppock Curve line's color state (1 or -1) is also shown in the Data Window.
Visual Representation:
The Coppock Curve is plotted with dynamic color coding.
The selected moving average is overlaid on the Coppock Curve for deeper trend analysis.
Usage Instructions:
Add the indicator to your chart on TradingView.
Configure the inputs:
Smoothing length for the Coppock Curve,
Long and short periods for ROC,
Type and length of the moving average.
Analyze the chart:
A green Coppock Curve line indicates a bullish trend, while a red line signals a bearish trend.
The selected moving average helps further filter and confirm signals.
Use the Data Window to view numeric values for the moving average and the Coppock Curve line color.
Applications:
This indicator is ideal for assessing trend direction and strength. The added customization options and additional data make it a versatile tool for traders, enabling them to tailor the Coppock Curve to their strategies.
[MAD] Acceleration based dampened SMA projectionsThis indicator utilizes concepts of arrays inside arrays to calculate and display projections of multiple Smoothed Moving Average (SMA) lines via polylines.
This is partly an experiment as an educational post, on how to work with multidimensional arrays by using User-Defined Types
------------------
Input Controls for User Interaction:
The indicator provides several input controls, allowing users to adjust parameters like the SMA window, acceleration window, and dampening factors.
This flexibility lets users customize the behavior and appearance of the indicator to fit their analysis needs.
sma length:
Defines the length of the simple moving average (SMA).
acceleration window:
Sets the window size for calculating the acceleration of the SMA.
Input Series:
Selects the input source for calculating the SMA (typically the closing price).
Offset:
Determines the offset for the input source, affecting the positioning of the SMA. Here it´s possible to add external indicators like bollinger bands,.. in that case as double sma this sma should be very short.
(Thanks Fikira for that idea)
Startfactor dampening:
Initial dampening factor for the polynomial curve projections, influencing their starting curvature.
Growfactor dampening:
Growth rate of the dampening factor, affecting how the curvature of the projections changes over time.
Prediction length:
Sets the length of the projected polylines, extending beyond the current bar.
cleanup history:
Boolean input to control whether to clear the previous polyline projections before drawing new ones.
Key technologies used in this indicator include:
User-Defined Types (UDT) :
This indicator uses UDT to create a custom type named type_polypaths.
This type is designed to store information for each polyline, including an array of points (array), a color for the polyline, and a dampening factor.
UDTs in Pine Script enable the creation of complex data structures, which are essential for organizing and manipulating data efficiently.
type type_polypaths
array polyline_points = na
color polyline_color = na
float dampening_factor= na
Arrays and Nested Arrays:
The script heavily utilizes arrays.
For example, it uses a color array (colorpreset) to store different colors for the polyline.
Moreover, an array of type_polypaths (polypaths) is used, which is an array consisting of user-defined types. Each element of this array contains another array (polyline_points), demonstrating nested array usage.
This structure is essential for handling multiple polylines, each with its set of points and attributes.
var type_polypaths polypaths = array.new()
Polyline Creation and Manipulation:
The core visual aspect of the indicator is the creation of polylines.
Polyline points are calculated based on a dampened polynomial curve, which is influenced by the SMA's slope and acceleration.
Filling initial dampening data
array_size = 9
middle_index = math.floor(array_size / 2)
for i = 0 to array_size - 1
damp_factor = f_calculate_damp_factor(i, middle_index, Startfactor, Growfactor)
polyline_color = colorpreset.get(i)
polypaths.push(type_polypaths.new(array.new(0, na), polyline_color, damp_factor))
The script dynamically generates these polyline points and stores them in the polyline_points array of each type_polypaths instance based on those prefilled dampening factors
if barstate.islast or cleanup == false
for damp_factor_index = 0 to polypaths.size() - 1
GET_RW = polypaths.get(damp_factor_index)
GET_RW.polyline_points.clear()
for i = 0 to predictionlength
y = f_dampened_poly_curve(bar_index + i , src_input , sma_slope , sma_acceleration , GET_RW.dampening_factor)
p = chart.point.from_index(bar_index + i - src_off, y)
GET_RW.polyline_points.push(p)
polypaths.set(damp_factor_index, GET_RW)
Polyline Drawout
The polyline is then drawn on the chart using the polyline.new() function, which uses these points and additional attributes like color and width.
for pl_s = 0 to polypaths.size() - 1
GET_RO = polypaths.get(pl_s)
polyline.new(points = GET_RO.polyline_points, line_width = 1, line_color = GET_RO.polyline_color, xloc = xloc.bar_index)
If the cleanup input is enabled, existing polylines are deleted before new ones are drawn, maintaining clarity and accuracy in the visualization.
if cleanup
for pl_delete in polyline.all
pl_delete.delete()
------------------
The mathematics
in the (ABDP) indicator primarily focuses on projecting the behavior of a Smoothed Moving Average (SMA) based on its current trend and acceleration.
SMA Calculation:
The indicator computes a simple moving average (SMA) over a specified window (sma_window). This SMA serves as the baseline for further calculations.
Slope and Acceleration Analysis:
It calculates the slope of the SMA by subtracting the current SMA value from its previous value. Additionally, it computes the SMA's acceleration by evaluating the sum of differences between consecutive SMA values over an acceleration window (acceleration_window). This acceleration represents the rate of change of the SMA's slope.
sma_slope = src_input - src_input
sma_acceleration = sma_acceleration_sum_calc(src_input, acceleration_window) / acceleration_window
sma_acceleration_sum_calc(src, window) =>
sum = 0.0
for i = 0 to window - 1
if not na(src )
sum := sum + src - 2 * src + src
sum
Dampening Factors:
Custom dampening factors for each polyline, which are based on the user-defined starting and growth factors (Startfactor, Growfactor).
These factors adjust the curvature of the projected polylines, simulating various future scenarios of SMA movement.
f_calculate_damp_factor(index, middle, start_factor, growth_factor) =>
start_factor + (index - middle) * growth_factor
Polynomial Curve Projection:
Using the SMA value, its slope, acceleration, and dampening factors, the script calculates points for polynomial curves. These curves represent potential future paths of the SMA, factoring in its current direction and rate of change.
f_dampened_poly_curve(index, initial_value, initial_slope, acceleration, damp_factor) =>
delta = index - bar_index
initial_value + initial_slope * delta + 0.5 * damp_factor * acceleration * delta * delta
damp_factor = f_calculate_damp_factor(i, middle_index, Startfactor, Growfactor)
Have fun trading :-)
STD/Clutter Filtered, One-Sided, N-Sinc-Kernel, EFIR Filt [Loxx]STD/Clutter Filtered, One-Sided, N-Sinc-Kernel, EFIR Filt is a normalized Cardinal Sine Filter Kernel Weighted Fir Filter that uses Ehler's FIR filter calculation instead of the general FIR filter calculation. This indicator has Kalman Velocity lag reduction, a standard deviation filter, a clutter filter, and a kernel noise filter. When calculating the Kernels, the both sides are calculated, then smoothed, then sliced to just the Right side of the Kernel weights. Lastly, blackman windowing is used for our purposes here. You can read about blackman windowing here:
Blackman window
Advantages of Blackman Window over Hamming Window Method for designing FIR Filter
The Kernel amplitudes are shown below with their corresponding values in yellow:
This indicator is intended to be used with Heikin-Ashi source inputs, specially HAB Median. You can read about this here:
Moving Average Filters Add-on w/ Expanded Source Types
What is a Finite Impulse Response Filter?
In signal processing, a finite impulse response (FIR) filter is a filter whose impulse response (or response to any finite length input) is of finite duration, because it settles to zero in finite time. This is in contrast to infinite impulse response (IIR) filters, which may have internal feedback and may continue to respond indefinitely (usually decaying).
The impulse response (that is, the output in response to a Kronecker delta input) of an Nth-order discrete-time FIR filter lasts exactly {\displaystyle N+1}N+1 samples (from first nonzero element through last nonzero element) before it then settles to zero.
FIR filters can be discrete-time or continuous-time, and digital or analog.
A FIR filter is (similar to, or) just a weighted moving average filter, where (unlike a typical equally weighted moving average filter) the weights of each delay tap are not constrained to be identical or even of the same sign. By changing various values in the array of weights (the impulse response, or time shifted and sampled version of the same), the frequency response of a FIR filter can be completely changed.
An FIR filter simply CONVOLVES the input time series (price data) with its IMPULSE RESPONSE. The impulse response is just a set of weights (or "coefficients") that multiply each data point. Then you just add up all the products and divide by the sum of the weights and that is it; e.g., for a 10-bar SMA you just add up 10 bars of price data (each multiplied by 1) and divide by 10. For a weighted-MA you add up the product of the price data with triangular-number weights and divide by the total weight.
Ultra Low Lag Moving Average's weights are designed to have MAXIMUM possible smoothing and MINIMUM possible lag compatible with as-flat-as-possible phase response.
Ehlers FIR Filter
Ehlers Filter (EF) was authored, not surprisingly, by John Ehlers. Read all about them here: Ehlers Filters
What is Normalized Cardinal Sine?
The sinc function sinc (x), also called the "sampling function," is a function that arises frequently in signal processing and the theory of Fourier transforms.
In mathematics, the historical unnormalized sinc function is defined for x ≠ 0 by
sinc x = sinx / x
In digital signal processing and information theory, the normalized sinc function is commonly defined for x ≠ 0 by
sinc x = sin(pi * x) / (pi * x)
What is a Clutter Filter?
For our purposes here, this is a filter that compares the slope of the trading filter output to a threshold to determine whether to shift trends. If the slope is up but the slope doesn't exceed the threshold, then the color is gray and this indicates a chop zone. If the slope is down but the slope doesn't exceed the threshold, then the color is gray and this indicates a chop zone. Alternatively if either up or down slope exceeds the threshold then the trend turns green for up and red for down. Fro demonstration purposes, an EMA is used as the moving average. This acts to reduce the noise in the signal.
What is a Dual Element Lag Reducer?
Modifies an array of coefficients to reduce lag by the Lag Reduction Factor uses a generic version of a Kalman velocity component to accomplish this lag reduction is achieved by applying the following to the array:
2 * coeff - coeff
The response time vs noise battle still holds true, high lag reduction means more noise is present in your data! Please note that the beginning coefficients which the modifying matrix cannot be applied to (coef whose indecies are < LagReductionFactor) are simply multiplied by two for additional smoothing .
Included
Bar coloring
Loxx's Expanded Source Types
Signals
Alerts
vol_coneDraws a volatility cone on the chart, using the contract's realized volatility (rv). The inputs are:
- window: the number of past periods to use for computing the realized volatility. VIX uses 30 calendar days, which is 21 trading days, so 21 is the default.
- stdevs: the number of standard deviations that the cone will cover.
- periods to project: the length of the volatility cone.
- periods per year: the number of periods in a year. for a daily chart, this is 252. for a thirty minute chart on a contract that trades 23 hours a day, this is 23 * 2 * 252 = 11592. for an accurate cone, this input must be set correctly, according to the chart's time frame.
- history: show the lagged projections. in other words, if the cone is set to project 21 periods in the future, the lines drawn show the top and bottom edges of the cone from 23 periods ago.
- rate: the current interest or discount rate. this is used to compute the forward price of the underlying contract. using an accurate forward price allows you to compare the realized volatility projection to the implied volatility projections derived from options prices.
Example settings for a 30 minute chart of a contract that trades 23 hours per day, with 1 standard deviation, a 21 day rv calculation, and half a day projected:
- stdevs: 1
- periods to project: 23
- window: 23 * 2 * 21 = 966
- periods per year: 23 * 2 * 252 = 11592
Additionally, a table is drawn in the upper right hand corner, with several values:
- rv: the contract's current realized volatility.
- rnk: the rv's percentile rank, compared to the rv values on past bars.
- acc: the proportion of times price settled inside, versus outside, the volatility cone, "periods to project" into the future. this should be around 65-70% for most contracts when the cone is set to 1 standard deviation.
- up: the upper bound of the cone for the projection period.
- dn: the lower bound of the cone for the projection period.
Limitations:
- pinescript only seems to be able to draw a limited distance into the future. If you choose too many "periods to project", the cone will start drawing vertically at some limit.
- the cone is not totally smooth owing to the facts a) it is comprised of a limited number of lines and b) each bar does not represent the same amount of time in pinescript, as some cross weekends, session gaps, etc.
Singular and Cumulative Volume Delta (SVD+CVD)This a Volume Delta indicator with Cumulative Volume Delta.
I have been studying Volume Delta and CVD trading strategies and indicator styles.
This implementation was developed to test a basic trailing window / oscillator approach.
Script has been republished as public and searchable.
Changelog from private era follows.
Jun 9 (2022)
Release Notes:
Added option to use EMA/SMA based cumulation. This will not scale well with singular data, so default view is still SUM.
Jun 9 (2022)
Release Notes:
Outdated comment correction.
Jun 9 (2022)
Release Notes:
Added default option to normalilze visual scale of MA cumulation types. The averaging creates a singular value sized results, instead of a range-sums. This multiples that candle result by the range length to get a range-sum sized result.
Added option to scale the cumulation size relative to the volume size. 1-to-1 scaling creates singular deltas that can be hard to see with all options on. This allows you to beef them up for visual or weighting purposes.
Jun 15 (2022)
Release Notes: * Added break even level for current delta. Tells where current delta must land for cumulative delta to stay flat.
* Added comparison of historical cumulative levels to current level. The historical levels are the initial values going into current accumulation window.
* Changed title of indicator to be more generic, clear, and searchable.
Jun 15 (2022)
Release Notes: * Added option to have the cumulation cutoff line AFTER or OVER the end of the cumulation window. This change is to ensure the indicator clearly documents it's behavior and avoids confusion on this / last cumulation window semantics.
* Bugfix: Initial levels were pulled from cumulation line which was AFTER end of window. This has been changed to the initial values INSIDE the cumulation window.
* Code cleanup.
June 17th (2022)
Release Notes: Marked as beta because TV confirmed they no longer allow private scripts to be changed to public. (Despite lingering documentation that says otherwise.
June 17th (2022)
Re-published as public.
probability_of_touchBased on historical data (rather than theory), calculates the probability of a price level being "touched" within a given time frame. A "touch" means that price exceeded that level at some point. The parameters are:
- level: the "level" to be touched. it can be a number of points, percentage points, or standard deviations away from the mark price. a positive level is above the mark price, and a negative level is below the mark price.
- type: determines the meaning of the "level" parameter. "price" means price points (i.e. the numbers you see on the chart). "percentage" is expressed as a whole number, not a fraction. "stdev" means number of standard deviations, which is computed from recent realized volatlity.
- mark: the point from which the "level" is measured.
- length: the number of days within which the level must be touched.
- window: the number of days used to compute realized volatility. this parameter is only used when "type" is "stdev".
- debug: displays a fuchsia "X" over periods that touched the level. note that only a limited number of labels can be drawn.
- start: only include data after this time in the calculation.
- end: only include data before this time in the calculation.
Example: You want to know how many times Apple stock fell $1 from its closing price the next day, between 2020-02-26 and today. Use the following parameters:
level: -1
type: price
mark: close
length: 1
window:
debug:
start: 2020-02-26
end:
How does the script work? On every bar, the script looks back "length" days and sees if any day exceeded the "mark" price from "length" days ago, plus the limit. The probability is the ratio of such periods wherein price exceeded the limit to the total number of periods.
trend_vol_forecastNote: The following description is copied from the script's comments. Since TradingView does not allow me to edit this description, please refer to the comments and release notes for the most up-to-date information.
-----------
USAGE
This script compares trend trading with a volatility stop to "buy and hold".
Trades are taken with the trend, except when price exceeds a volatility
forecast. The trend is defined by a moving average crossover. The forecast
is based on projecting future volatility from historical volatility.
The trend is defined by two parameters:
- long: the length of a long ("slow") moving average.
- short: the length of a short ("fast") moving average.
The trend is up when the short moving average is above the long. Otherwise
it is down.
The volatility stop is defined by three parameters:
- volatility window: determines the number of periods in the historical
volatility calculation. More periods means a slower (smoother)
estimate of historical volatility.
- stop forecast periods: the number of periods in the volatility
forecast. For example, "7" on a daily chart means that the volatility
will be forecasted with a one week lag.
- stop forecast stdev: the number of standard deviations in the stop
forecast. For example, "2" means two standard deviations.
EXAMPLE
The default parameters are:
- long: 50
- short: 20
- volatility window: 30
- stop forecast periods: 7
- stop forecast standard deviations: 1
The trend will be up when the 20 period moving average is above the 50
period moving average. On each bar, the historical volatility will be
calculated from the previous 30 bars. If the historical volatility is 0.65
(65%), then a forecast will be drawn as a fuchsia line, subtracting
0.65 * sqrt(7 / 365) from the closing price. If price at any point falls
below the forecast, the volatility stop is in place, and the trend is
negated.
OUTPUTS
Plots:
- The trend is shown by painting the slow moving average green (up), red
(down), or black (none; volatility stop).
- The fast moving average is shown in faint blue
- The previous volatility forecasts are shown in faint fuchsia
- The current volatility forecast is shown as a fuchsia line, projecting
into the future as far as it is valid.
Tables:
- The current historical volatility is given in the top right corner, as a
whole number percentage.
- The performance table shows the mean, standard deviation, and sharpe
ratio of the volatility stop trend strategy, as well as buy and hold.
If the trend is up, each period's return is added to the sample (the
strategy is long). If the trend is down, the inverse of each period's
return is added to the sample (the strategy is short). If there is no
trend (the volatility stop is active), the period's return is excluded
from the sample. Every period is added to the buy-and-hold strategy's
sample. The total number of periods in each sample is also shown.
Opening-Range BreakoutNote: Default trading date range looks mediocre. Set date range to "Entire History" to see full effect of the strategy. 50.91% profitable trades, 1.178 profit factor, steady profits and limited drawdown. Total P&L: $154,141.18, Max Drawdown: $18,624.36. High R^2
█ Overview
The Opening-Range Breakout strategy is a mechanical, session‑based day‑trading system designed to capture the initial burst of directional momentum immediately following the market open. It defines a user‑configurable “opening range” window, measures its high and low boundaries, then places breakout stop orders at those levels once the range closes. Built‑in filters on minimum range width, reward‑to‑risk ratios, and optional reversal logic help refine entries and manage risk dynamically.
█ How It Works
Opening‑Range Formation
Between 9:30–10:15 AM ET (configurable), the script tracks the highest high and lowest low to form the day’s opening range box.
On the first bar after the range window closes, the range high (OR_high) and low (OR_low) are “locked in.”
Range‑Width Filter
To avoid false breakouts in low‑volatility mornings, the range must be at least X% of the current price (default 0.35%).
If the measured opening-range width < minimum threshold, no orders are placed that day.
Entry & Order Placement
Long: a stop‑buy order at the opening‑range high.
Short: a stop‑sell order at the opening‑range low.
Only one side can trigger (or both if reverse logic is enabled after a losing trade).
Risk Management
Once triggered, each trade uses an ATR‑style stop-loss defined as a percentage retracement of the range (default 50% of range width).
Profit target is set at a configurable Reward/Risk Ratio (default 1.1×).
Optional: Reverse on Stop‑Loss – if the initial breakout loses, immediately reverse into the opposite side on the same day.
Session Exit
Any open positions are closed at the end of the regular trading day (default 3:45 PM ET window end, with hard flat at session close).
Visual cues are provided via green (range high) and red (range low) step‑line plots directly on the chart, allowing you to see the range box and breakout triggers in real time.
█ Why It Works
Early Momentum Capture: The first 15 – 60 minutes of trading encapsulate overnight news digestion and institutional order flow, creating a well‑defined volatility “range.”
Mechanical Discipline: Clear, rule‑based entries and exits remove emotional guesswork, ensuring consistency.
Volatility Filtering: By requiring a minimum range width, the system avoids choppy, low‑range days where false breakouts are common.
Dynamic Sizing: Stops and targets scale with the opening range, adapting automatically to each day’s volatility environment.
█ How to Use
Set Your Instruments & Timeframe
-Apply to any futures contract on a 1‑ to 5‑minute chart.
-Ensure chart timezone is set to America/New_York.
Configure Inputs
-Opening‑Range Window: e.g. “0930-1015” for a 45‑minute range.
-Min. OR Width (%): e.g. 0.35 for 0.35% of current price.
-Reward/Risk Ratio: e.g. 1.1 for a modest profit target above your stop.
-Max OR Retracement %: e.g. 50 to set stop at 50% of range width.
-One Trade Per Day: toggle to limit to a single breakout.
-Reverse on Stop Loss: toggle to flip direction after a losing breakout.
Monitor the Chart
-Watch the green and red range boundaries form during the session open.
-Orders will automatically submit on the first bar after the range window closes, conditioned on your filters.
Review & Adjust
-Backtest across multiple months to validate performance on your preferred contract.
-Tweak range duration, minimum width, and R/R multiple to fit your risk tolerance and desired win‑rate vs. expectancy balance.
█ Settings Reference
Input Defaults
Opening‑Range Window - Time window to form OR (HHMM-HHMM) - 0930–1015
Regular Trading Day - Full session for EOD flat (HHMM-HHMM) - 0930–1545
Min. OR Width (%) - Minimum OR size as % of close to trigger orders - 0.35
Reward/Risk Ratio - Profit target multiple of stop‑loss distance - 1.1
Max OR Retracement (%) - % of OR width to use as stop‑loss distance - 50
One Trade Per Day - Limit to a single breakout order per day - false
Reverse on Stop Loss - Reverse direction immediately after a losing trade - true
Disclaimer
This strategy description and any accompanying code are provided for educational purposes only and do not constitute financial advice or a solicitation to trade. Futures trading involves substantial risk, including possible loss of capital. Past performance is not indicative of future results. Traders should assess their own risk tolerance and conduct thorough backtesting and forward-testing before committing real capital.
Shifted Buy PressureDifferentiated Buy Pressure Indicator Documentation
Overview: The Differentiated Buy Pressure indicator is a custom Pine Script™ indicator designed to measure and visualize buy and sell pressure in the market. It calculates buy pressure based on a combination of volume, range, and gap, and provides a differentiated buy pressure which is shifted by 90°, offering predictive insights.
Inputs:
Window Size: The window size for average calculation (default: 20).
Show Overlay: Option to show the price overlay (default: false).
Overlay Boost Factor: Boosting factor for overlaying the price (default: 0.01).
Calculations:
Relative Range: Calculated as (high - low) / close.
Average Range: Simple moving average of the relative range over the specified window.
Average Volume: Simple moving average of the volume over the specified window.
Relative Gap: Calculated as open / close .
Average Gap: Simple moving average of the relative gap over the specified window.
Buy Pressure: Calculated using the formula: buy_pressure = -math.log(relative_range / avg_range * volume / avg_volume * relative_gap / avg_gap)
Differentiated Buy Pressure: Calculated as the difference between the current and previous buy pressure: diff_buy_pressure = buy_pressure - buy_pressure
Plots:
Zero Line: A horizontal line at zero for reference.
Buy Pressure: Plotted in blue, representing the calculated buy pressure.
Differentiated Buy Pressure: Plotted in red, representing the differentiated buy pressure.
Overlay: Optionally plots the price overlay boosted by the differentiated buy pressure.
Labels:
Labels are created to display the buy pressure and differentiated buy pressure values on the chart.
Usage: This indicator helps traders visualize the buy and sell pressure in the market. Positive values indicate buy pressure, while negative values indicate sell pressure. The differentiated buy pressure, shifted by 90°, provides predictive insights into future market movements.
This documentation provides a comprehensive overview of the Differentiated Buy Pressure indicator, explaining its purpose, inputs, calculations, and usage.
PaddingThe Padding library is a comprehensive and flexible toolkit designed to extend time series data within TradingView, making it an indispensable resource for advanced signal processing tasks such as FFT, filtering, convolution, and wavelet analysis. At its core, the library addresses the common challenge of edge effects by "padding" your data—that is, by appending additional data points beyond the natural boundaries of your original dataset. This extension not only mitigates the distortions that can occur at the endpoints but also helps to maintain the integrity of various transformations and calculations performed on the series. The library accomplishes this while preserving the ordering of your data, ensuring that the most recent point always resides at index 0.
Central to the functionality of this library are two key enumerations: Direction and PaddingType. The Direction enum determines where the padding will be applied. You can choose to extend the data in the forward direction (ahead of the current values), in the backward direction (behind the current values), or in both directions simultaneously. The PaddingType enum defines the specific method used for extending the data. The library supports several methods—including symmetric, reflect, periodic, antisymmetric, antireflect, smooth, constant, and zero padding—each of which has been implemented to suit different analytical scenarios. For instance, symmetric padding mirrors the original data across its boundaries, while reflect padding continues the trend by reflecting around endpoint values. Periodic padding repeats the data, and antisymmetric padding mirrors the data with alternating signs to counterbalance it. The antireflect and smooth methods take into account the derivatives of your data, thereby extending the series in a way that preserves or smoothly continues these derivative values. Constant and zero padding simply extend the series using fixed endpoint values or zeros. Together, these enums allow you to fine-tune how your data is extended, ensuring that the padding method aligns with the specific requirements of your analysis.
The library is designed to work with both single variable inputs and array inputs. When using array-based methods—particularly with the antireflect and smooth padding types—please note that the implementation intentionally discards the last data point as a result of the delta computation process. This behavior is an important consideration when integrating the library into your TradingView studies, as it affects the overall data length of the padded series. Despite this, the library’s structure and documentation make it straightforward to incorporate into your existing scripts. You simply provide your data source, define the length of your data window, and select the desired padding type and direction, along with any optional parameters to control the extent of the padding (using both_period, forward_period, or backward_period).
In practical application, the Padding library enables you to extend historical data beyond its original range in a controlled and predictable manner. This is particularly useful when preparing datasets for further signal processing, as it helps to reduce artifacts that can otherwise compromise the results of your analytical routines. Whether you are an experienced Pine Script developer or a trader exploring advanced data analysis techniques, this library offers a robust solution that enhances the reliability and accuracy of your studies by ensuring your algorithms operate on a more complete and well-prepared dataset.
Library "Padding"
A comprehensive library for padding time series data with various methods. Supports both single variable and array inputs, with flexible padding directions and periods. Designed for signal processing applications including FFT, filtering, convolution, and wavelets. All methods maintain data ordering with most recent point at index 0.
symmetric(source, series_length, direction, both_period, forward_period, backward_period)
Applies symmetric padding by mirroring the input data across boundaries
Parameters:
source (float) : Input value to pad from
series_length (int) : Length of the data window
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to series_length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to series_length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with symmetric padding applied
method symmetric(source, direction, both_period, forward_period, backward_period)
Applies symmetric padding to an array by mirroring the data across boundaries
Namespace types: array
Parameters:
source (array) : Array of values to pad
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to array length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to array length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with symmetric padding applied
reflect(source, series_length, direction, both_period, forward_period, backward_period)
Applies reflect padding by continuing trends through reflection around endpoint values
Parameters:
source (float) : Input value to pad from
series_length (int) : Length of the data window
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to series_length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to series_length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with reflect padding applied
method reflect(source, direction, both_period, forward_period, backward_period)
Applies reflect padding to an array by continuing trends through reflection around endpoint values
Namespace types: array
Parameters:
source (array) : Array of values to pad
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to array length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to array length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with reflect padding applied
periodic(source, series_length, direction, both_period, forward_period, backward_period)
Applies periodic padding by repeating the input data
Parameters:
source (float) : Input value to pad from
series_length (int) : Length of the data window
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to series_length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to series_length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with periodic padding applied
method periodic(source, direction, both_period, forward_period, backward_period)
Applies periodic padding to an array by repeating the data
Namespace types: array
Parameters:
source (array) : Array of values to pad
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to array length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to array length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with periodic padding applied
antisymmetric(source, series_length, direction, both_period, forward_period, backward_period)
Applies antisymmetric padding by mirroring data and alternating signs
Parameters:
source (float) : Input value to pad from
series_length (int) : Length of the data window
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to series_length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to series_length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with antisymmetric padding applied
method antisymmetric(source, direction, both_period, forward_period, backward_period)
Applies antisymmetric padding to an array by mirroring data and alternating signs
Namespace types: array
Parameters:
source (array) : Array of values to pad
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to array length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to array length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with antisymmetric padding applied
antireflect(source, series_length, direction, both_period, forward_period, backward_period)
Applies antireflect padding by reflecting around endpoints while preserving derivatives
Parameters:
source (float) : Input value to pad from
series_length (int) : Length of the data window
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to series_length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to series_length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with antireflect padding applied
method antireflect(source, direction, both_period, forward_period, backward_period)
Applies antireflect padding to an array by reflecting around endpoints while preserving derivatives
Namespace types: array
Parameters:
source (array) : Array of values to pad
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to array length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to array length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with antireflect padding applied. Note: Last data point is lost when using array input
smooth(source, series_length, direction, both_period, forward_period, backward_period)
Applies smooth padding by extending with constant derivatives from endpoints
Parameters:
source (float) : Input value to pad from
series_length (int) : Length of the data window
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to series_length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to series_length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with smooth padding applied
method smooth(source, direction, both_period, forward_period, backward_period)
Applies smooth padding to an array by extending with constant derivatives from endpoints
Namespace types: array
Parameters:
source (array) : Array of values to pad
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to array length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to array length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with smooth padding applied. Note: Last data point is lost when using array input
constant(source, series_length, direction, both_period, forward_period, backward_period)
Applies constant padding by extending endpoint values
Parameters:
source (float) : Input value to pad from
series_length (int) : Length of the data window
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to series_length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to series_length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with constant padding applied
method constant(source, direction, both_period, forward_period, backward_period)
Applies constant padding to an array by extending endpoint values
Namespace types: array
Parameters:
source (array) : Array of values to pad
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to array length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to array length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with constant padding applied
zero(source, series_length, direction, both_period, forward_period, backward_period)
Applies zero padding by extending with zeros
Parameters:
source (float) : Input value to pad from
series_length (int) : Length of the data window
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to series_length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to series_length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with zero padding applied
method zero(source, direction, both_period, forward_period, backward_period)
Applies zero padding to an array by extending with zeros
Namespace types: array
Parameters:
source (array) : Array of values to pad
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to array length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to array length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with zero padding applied
pad_data(source, series_length, padding_type, direction, both_period, forward_period, backward_period)
Generic padding function that applies specified padding type to input data
Parameters:
source (float) : Input value to pad from
series_length (int) : Length of the data window
padding_type (series PaddingType) : Type of padding to apply (see PaddingType enum)
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to series_length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to series_length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with specified padding applied
method pad_data(source, padding_type, direction, both_period, forward_period, backward_period)
Generic padding function that applies specified padding type to array input
Namespace types: array
Parameters:
source (array) : Array of values to pad
padding_type (series PaddingType) : Type of padding to apply (see PaddingType enum)
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to array length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to array length if not specified
Returns: Array ordered with most recent point at index 0, containing original data with specified padding applied. Note: Last data point is lost when using antireflect or smooth padding types
make_padded_data(source, series_length, padding_type, direction, both_period, forward_period, backward_period)
Creates a window-based padded data series that updates with each new value. WARNING: Function must be called on every bar for consistency. Do not use in scopes where it may not execute on every bar.
Parameters:
source (float) : Input value to pad from
series_length (int) : Length of the data window
padding_type (series PaddingType) : Type of padding to apply (see PaddingType enum)
direction (series Direction) : Direction to apply padding
both_period (int) : Optional - periods to pad in both directions. Overrides forward_period and backward_period if specified
forward_period (int) : Optional - periods to pad forward. Defaults to series_length if not specified
backward_period (int) : Optional - periods to pad backward. Defaults to series_length if not specified
Returns: Array ordered with most recent point at index 0, containing windowed data with specified padding applied
Price Prediction With Rolling Volatility [TradeDots]The "Price Prediction With Rolling Volatility" is a trading indicator that estimates future price ranges based on the volatility of price movements within a user-defined rolling window.
HOW DOES IT WORK
This indicator utilizes 3 types of user-provided data to conduct its calculations: the length of the rolling window, the number of bars projecting into the future, and a maximum of three sets of standard deviations.
Firstly, the rolling window. The algorithm amasses close prices from the number of bars determined by the value in the rolling window, aggregating them into an array. It then calculates their standard deviations in order to forecast the prospective minimum and maximum price values.
Subsequently, a loop is initiated running into the number of bars into the future, as dictated by the second parameter, to calculate the maximum price change in both the positive and negative direction.
The third parameter introduces a series of standard deviation values into the forecasting model, enabling users to dictate the volatility or confidence level of the results. A larger standard deviation correlates with a wider predicted range, thereby enhancing the probability factor.
APPLICATION
The purpose of the indicator is to provide traders with an understanding of the potential future movement of the price, demarcating maximum and minimum expected outcomes. For instance, if an asset demonstrates a substantial spike beyond the forecasted range, there's a significantly high probability of that price being rejected and reversed.
However, this indicator should not be the sole basis for your trading decisions. The range merely reflects the volatility within the rolling window and may overlook significant historical price movements. As with any trading strategies, synergize this with other indicators for a more comprehensive and reliable analysis.
Note: In instances where the number of predicted bars is exceedingly high, the lines may become scattered, presumably due to inherent limitations on the TradingView platform. Consequently, when applying three SD in your indicator, it is advised to limit the predicted bars to fewer than 80.
RISK DISCLAIMER
Trading entails substantial risk, and most day traders incur losses. All content, tools, scripts, articles, and education provided by TradeDots serve purely informational and educational purposes. Past performances are not definitive predictors of future results.
Rebalance as a Bear/Bull indicatorCheck if the current market has a Bear tendency or a Bull tendency.
Bear areas are marked as red squares going down from 0.
Bull areas are marked as green squares going up from 0.
Buying/Selling windows of opportunity
On top of the Bear/Bull squares, this indicator tries to show you the windows where to look for good buying/selling opportunities.
These are marked as full columns:
Blue columns represent a window to look out for good buying opportunities
Pink columns represent a window to look out for good selling opportunities
How is this possible?
This is an indicator of a simple idea to check if the market has a Bear or Bull tendency:
1. Start with a virtual portfolio of 60/40 tokens per fiat.
2. Rebalance it when its ratio oscillates by a given % (first input)
3. Count the number of times the rebalancer buys, and sells
4. When the number of buys is greater than the number of sells => the market is going down
5. When the number of sells is greater than the number of buys => the market is going up
This is shown as the "Bear/Bull Strength" squares (red when bear, green when bull)
An extra rebalancer is also kept that works at each bar (regardless of the input %).
This is used to calculate an amount of tokens beying sold/bought and used as a "market force" coefficient.
Another extra: based on both the bear/bull strengh and market force an attempt is made to
provide good buying/selling windows of analysis.
The blue background is a buying opportunity, the red background is a sell opportunity.
In a bear market sales are delayed, and in a bull market buys are delayed.
Auto Darvas Boxes## AUTO DARVAS BOXES
---
### OVERVIEW
**Auto Darvas Boxes** is a fully-automated, event-driven implementation of Nicolas Darvas’s 1950s box methodology.
The script tracks consolidation zones in real time, verifies that price truly “respects” those zones for a fixed validation window, then waits for the first decisive range violation to mark a directional breakout.
Every box is plotted end-to-end—from the first candle of the sideways range to the exact candle that ruptures it—giving you an on-chart, visually precise record of accumulation or distribution and the expansion that follows.
---
### HISTORICAL BACKGROUND
* Nicolas Darvas was a professional ballroom dancer who traded U.S. equities by telegram while touring the world.
* Without live news or Level II, he relied exclusively on **price** to infer institutional intent.
* His core insight: true market-moving entities leave footprints in the form of tight ranges; once their buying (or selling) is complete, price erupts out of the “box.”
* Darvas’s original procedure was manual—he kept notebooks, drew rectangles around highs and lows, and entered only when price punched out of the roof of a valid box.
* This indicator distills that logic into a rolling, self-resetting state machine so you never miss a box or breakout on any timeframe.
---
### ALGORITHM DETAIL (FOUR-STATE MACHINE)
**STATE 0 – RANGE DEFINITION**
• Examine the last *N* candles (default 7).
• Record `rangeHigh = highest(high, N) + tolerance`.
• Record `rangeLow = lowest(low, N) – tolerance`.
• Remember the index of the earliest bar in this window (`startBar`).
• Immediately transition to STATE 1.
**STATE 1 – RANGE VALIDATION**
• Observe the next *N* candles (again default 7).
• If **any** candle prints `high > rangeHigh` or `low < rangeLow`, the validation fails and the engine resets to STATE 0 **beginning at the violating candle**—no halfway boxes, no overlap.
• If all *N* candles remain inside the range, the box becomes **armed** and we transition to STATE 2.
**STATE 2 – ARMED (LIVE VISUAL FEEDBACK)**
• Draw a **green horizontal line** at `rangeHigh`.
• Draw a **red horizontal line** at `rangeLow`.
• Lines are extended in real time so the user can see the “live” Darvas ceiling and floor.
• Engine waits indefinitely for a breakout candle:
– **Up-Breakout** if `high > rangeHigh`.
– **Down-Breakout** if `low < rangeLow`.
**STATE 3 – BREAKOUT & COOLDOWN**
• Upon breakout the script:
1. Deletes the live range lines.
2. Draws a **filled rectangle (box)** from `startBar` to the breakout bar.
◦ **Green fill** when price exits above the ceiling.
◦ **Red fill** when price exits below the floor.
3. Optionally prints two labels at the left edge of the box:
◦ Dollar distance = `rangeHigh − rangeLow`.
◦ Percentage distance = `(rangeHigh − rangeLow) / rangeLow × 100 %`.
• After painting, the script waits a **user-defined cooldown** (default = 7 bars) before reverting to STATE 0. The cooldown guarantees separation between consecutive tests and prevents overlapping rectangles.
---
### INPUT PARAMETERS (ALL ADJUSTABLE FROM THE SETTINGS PANEL)
* **BARS TO DEFINE RANGE** – Number of candles used for both the definition and validation windows. Classic Darvas logic uses 7 but feel free to raise it on higher timeframes or volatile instruments.
* **OPTIONAL TOLERANCE** – Absolute price buffer added above the ceiling and below the floor. Use a small tolerance to ignore single-tick spikes or data-feed noise.
* **COOLDOWN BARS AFTER BREAKOUT** – How long the engine pauses before hunting for the next consolidation. Setting this equal to the range length produces non-overlapping, evenly spaced boxes.
* **SHOW BOX DISTANCE LABELS** – Toggle on/off. When on, each completed box displays its vertical size in both dollars and percentage, anchored at the box’s left edge.
---
### REAL-TIME VISUALISATION
* During the **armed** phase you see two extended, colour-coded guide-lines showing the exact high/low that must hold.
* When the breakout finally occurs, those lines vanish and the rectangle instantly appears, coloured to match the breakout direction.
* This immediate visual feedback turns any chart into a live Darvas tape—no manual drawing, no lag.
---
### PRACTICAL USE-CASES & BEST-PRACTICE WORKFLOWS
* **INTRADAY MOMENTUM** – Drop the script on 1- to 15-minute charts to catch tight coils before they explode. The coloured box marks the precise origin of the expansion; stops can sit just inside the opposite side of the box.
* **SWING & POSITION TRADING** – On 4-hour or daily charts, boxes often correspond to accumulation bases or volatility squeezes. Waiting for the box-validated breakout filters many false signals.
* **MEAN-REVERSION OR “FADE” STRATEGIES** – If a breakout immediately fails and price re-enters the box, you may have trapped momentum traders; fading that failure can be lucrative.
* **RISK MANAGEMENT** – Box extremes provide objective, structure-based stop levels rather than arbitrary ATR multiples.
* **BACK-TEST RESEARCH** – Because each box is plotted from first range candle to breakout candle, you can programmatically measure hold time, range height, and post-breakout expectancy for any asset.
---
### CUSTOMISATION IDEAS FOR POWER USERS
* **VOLATILITY-ADAPTIVE WINDOW** – Replace the fixed 7-bar length with a dynamic value tied to ATR percentile so the consolidation window stretches or compresses with volatility.
* **MULTI-TIMEFRAME LOGIC** – Only arm a 5-minute box if the 1-hour trend is aligned.
* **STRATEGY WRAPPER** – Convert the indicator to a full `strategy{}` script, automate entries on breakouts, and benchmark performance across assets.
* **ALERTS** – Create TradingView alerts on both up-breakout and down-breakout conditions; route them to webhook for broker automation.
---
### FINAL THOUGHTS
**Auto Darvas Boxes** packages one of the market’s oldest yet still potent price-action frameworks into a modern, self-resetting indicator. Whether you trade equities, futures, crypto, or forex, the script highlights genuine contraction-expansion sequences—Darvas’s original “boxes”—with zero manual effort, letting you focus solely on execution and risk.
RSI from Rolling VWAP [CHE]Introducing the RSI from Rolling VWAP Indicator
Elevate your trading strategy with the RSI from Rolling VWAP —a cutting-edge indicator designed to provide unparalleled insights and enhance your decision-making on TradingView. This advanced tool seamlessly integrates the Relative Strength Index (RSI) with a Rolling Volume-Weighted Average Price (VWAP) to deliver precise and actionable trading signals.
Why Choose RSI from Rolling VWAP ?
- Clear Trend Detection: Our enhanced algorithms ensure accurate identification of bullish and bearish trends, allowing you to capitalize on market movements with confidence.
- Customizable Time Settings: Tailor the time window in days, hours, and minutes to align perfectly with your unique trading strategy and market conditions.
- Flexible Moving Averages: Select from a variety of moving average types—including SMA, EMA, WMA, and more—to smooth the RSI, providing clearer trend analysis and reducing market noise.
- Threshold Alerts: Define upper and lower RSI thresholds to effortlessly spot overbought or oversold conditions, enabling timely and informed trading decisions.
- Visual Enhancements: Enjoy a visually intuitive interface with color-coded RSI lines, moving averages, and background fills that make interpreting market data straightforward and efficient.
- Automatic Signal Labels: Receive immediate bullish and bearish labels directly on your chart, signaling potential trading opportunities without the need for constant monitoring.
Key Features
- Inspired by Proven Tools: Building upon the robust foundation of TradingView's Rolling VWAP, our indicator offers enhanced functionality and greater precision.
- Volume-Weighted Insights: By incorporating volume into the VWAP calculation, gain a deeper understanding of price movements and market strength.
- User-Friendly Configuration: Easily adjust settings to match your trading preferences, whether you're a novice trader or an experienced professional.
- Hypothesis-Driven Analysis: Utilize hypothetical results to backtest strategies, understanding that past performance does not guarantee future outcomes.
How It Works
1. Data Integration: Utilizes the `hlc3` (average of high, low, and close) as the default data source, with customization options available to suit your trading needs.
2. Dynamic Time Window: Automatically calculates the optimal time window based on an auto timeframe or allows for fixed time periods, ensuring flexibility and adaptability.
3. Rolling VWAP Calculation: Accurately computes the Rolling VWAP by balancing price and volume over the specified time window, providing a reliable benchmark for price action.
4. RSI Analysis: Measures momentum through RSI based on Rolling VWAP changes, smoothed with your chosen moving average for enhanced trend clarity.
5. Actionable Signals: Detects and labels bullish and bearish conditions when RSI crosses predefined thresholds, offering clear indicators for potential market entries and exits.
Seamless Integration with Your TradingView Experience
Adding the RSI from Rolling VWAP to your TradingView charts is straightforward:
1. Add to Chart: Simply copy the Pine Script code into TradingView's Pine Editor and apply it to your desired chart.
2. Customize Settings: Adjust the Source Settings, Time Settings, RSI Settings, MA Settings, and Color Settings to align with your trading strategy.
3. Monitor Signals: Watch for RSI crossings above or below your set thresholds, accompanied by clear labels indicating bullish or bearish trends.
4. Optimize Your Trades: Leverage the visual and analytical strengths of the indicator to make informed buy or sell decisions, maximizing your trading potential.
Disclaimer:
The content provided, including all code and materials, is strictly for educational and informational purposes only. It is not intended as, and should not be interpreted as, financial advice, a recommendation to buy or sell any financial instrument, or an offer of any financial product or service. All strategies, tools, and examples discussed are provided for illustrative purposes to demonstrate coding techniques and the functionality of Pine Script within a trading context.
Any results from strategies or tools provided are hypothetical, and past performance is not indicative of future results. Trading and investing involve high risk, including the potential loss of principal, and may not be suitable for all individuals. Before making any trading decisions, please consult with a qualified financial professional to understand the risks involved.
By using this script, you acknowledge and agree that any trading decisions are made solely at your discretion and risk.
Get Started Today
Transform your trading approach with the RSI from Rolling VWAP indicator. Experience the synergy of momentum and volume-based analysis, and unlock the potential for more accurate and profitable trades.
Download now and take the first step towards a more informed and strategic trading journey!
For further inquiries or support, feel free to contact
Best regards
Chervolino
Inspired by the acclaimed Rolling VWAP by TradingView
Volatility Breaker Blocks [BigBeluga]The Volatility Breaker Blocks indicator identifies key market levels based on significant volatility at pivot highs and lows. It plots blocks that act as potential support and resistance zones, marked in green (support) and blue (resistance). Even after a breakout, these blocks leave behind shadow boxes that continue to impact price action. The sensitivity of block detection can be adjusted in the settings, allowing traders to customize the identification of volatility breakouts. The blocks print triangle labels (up or down) after breakouts, indicating potential areas of interest.
🔵 IDEA
The Volatility Breaker Blocks indicator is designed to highlight key areas in the market where volatility has created significant price action. These blocks, created at pivot highs and lows with increased volatility, act as potential support and resistance levels.
The idea is that even after price breaks through these blocks, the remaining shadow boxes continue to influence price movements. By focusing on volatility-driven pivot points, traders can better anticipate how price may react when it revisits these areas. The indicator also captures the natural tendency for price to retest broken resistance or support levels.
🔵 KEY FEATURES & USAGE
◉ High Volatility Breaker Blocks:
The indicator identifies areas of high volatility at pivot highs and lows, plotting blocks that represent these zones. Green blocks represent support zones (identified at pivot lows), while blue blocks represent resistance zones (identified at pivot highs).
Support:
Resistance:
◉ Shadow Blocks after Breakouts:
When price breaks through a block, the block doesn't disappear. Instead, it leaves behind a shadow box, which can still influence future price action. These shadow blocks act as secondary support or resistance levels.
If the price crosses these shadow blocks, the block stops extending, and the right edge of the box is fixed at the point where the price crosses it. This feature helps traders monitor important price levels even after the initial breakout has occurred.
◉ Triangle Labels for Breakouts:
After the price breaks through a volatility block, the indicator prints triangle labels (up or down) at the breakout points.
◉ Support and Resistance Retests:
One of the key concepts in this indicator is the retesting of broken blocks. After breaking a resistance block, price often returns to the shadow box, which then acts as support. Similarly, after breaking a support block, price tends to return to the shadow box, which becomes a resistance level. This concept of price retesting and bouncing off these levels is essential for understanding how the indicator can be used to identify potential entries and exits.
The natural tendency of price to retest broken resistance or support levels.
Additionaly indicator can display retest signals of broken support or resistance
◉ Customizable Sensitivity:
The sensitivity of volatility detection can be adjusted in the settings. A higher sensitivity captures fewer but more significant breakouts, while a lower sensitivity captures more frequent volatility breakouts. This flexibility allows traders to adapt the indicator to different trading styles and market conditions.
🔵 CUSTOMIZATION
Calculation Window: Defines the window of bars over which the breaker blocks are calculated. A larger window will capture longer-term levels, while a smaller window focuses on more recent volatility areas.
Volatility Sensitivity: Adjusts the threshold for volatility detection. Lower sensitivity captures smaller breakouts, while higher sensitivity focuses on larger, more significant moves.
Retest Signals: Display or hide retest signals of shadow boxes
Indicators OverlayHello All,
This script shows the indicators in separate windows on the main chart. Included indicators are RSI, CCI, OBV, Stochastic, Money Flow Index, Average True Range and Chande Momentum Oscillator. indicator windows are located at the top or bottom of the chart according to last moves of the Closing price. Different colors are used for each indicator. Horizontal levels are shown as dashed line and label as well.
Using the options;
You can enable/disable the indicators you want to see or not
You can change source and length for each indicator
You can set window length. using this length indicator windows are located on the chart
After you added this indicator to your chart I recommend: right click on any of the indicator windows => "Visual Order" => "Bring to front" as seen screenshot below:
in this example only 3 indicators enabled and period is set as 80:
indicator windows moves to the top or bottom of the chart according to the close price:
P.S. if you want to see any other indicator in the options then leave a comment under the indicator ;)
Enjoy!
Ultra Volume DetectorNative Volume — Auto Levels + Ultra Label
What it does
This indicator classifies volume bars into four categories — Low, Medium, High, and Ultra — using rolling percentile thresholds. Instead of fixed cutoffs, it adapts dynamically to recent market activity, making it useful across different symbols and timeframes. Ultra-high volume bars are highlighted with labels showing compacted values (K/M/B/T) and the appropriate unit (shares, contracts, ticks, etc.).
Core Logic
Dynamic thresholds: Calculates percentile levels (e.g., 50th, 80th, 98th) over a user-defined window of bars.
Categorization: Bars are colored by category (Low/Med/High/Ultra).
Ultra labeling: Only Ultra bars are labeled, preventing chart clutter.
Optional MA: A moving average of raw volume can be plotted for context.
Alerts: Supports both alert condition for Ultra events and dynamic alert() messages that include the actual volume value at bar close.
How to use
Adjust window size: Larger windows (e.g., 200+) provide stable thresholds; smaller windows react more quickly.
Set percentiles: Typical defaults are 50 for Medium, 80 for High, and 98 for Ultra. Lower the Ultra percentile to see more frequent signals, or raise it to isolate only extreme events.
Read chart signals:
Bar colors show the category.
Labels appear only on Ultra bars.
Alerts can be set up for automatic notification when Ultra volume occurs.
Why it’s unique
Adaptive: Uses rolling statistics, not static thresholds.
Cross-asset ready: Adjusts units automatically depending on instrument type.
Efficient visualization: Focuses labels only on the most significant events, reducing noise.
⚠️ Disclaimer: This tool is for educational and analytical purposes only. It does not provide financial advice. Always test and manage risk before trading live
Volume Profile + Pivot Levels [ChartPrime]⯁ OVERVIEW
Volume Profile + Pivot Levels combines a rolling volume profile with price pivots to surface the most meaningful levels in your selected lookback window. It builds a left-side profile from traded volume, highlights the session’s Point of Control (PoC) , and then filters pivot highs/lows so only those aligned with significant profile volume are promoted to chart levels. Each promoted level extends forward until price retests it—so your chart stays focused on levels that actually matter.
⯁ KEY FEATURES
Rolling Volume Profile (Period & Resolution)
Calculates a profile over the last Period bars (default 200). The profile is discretized into Volume Profile Resolution bins (default 50) between the highest high and lowest low inside the window. Each bin accumulates traded volume and is drawn as a smooth left-side polyline for compact, lightweight rendering.
HL = array.new()
// collect highs/lows over 'start' bars to define profile range
for i = 0 to start - 1
HL.push(high ), HL.push(low )
H = HL.max(), L = HL.min()
bin_size = (H - L) / bins
// accumulate per-bin volume
for i = 0 to bins - 1
for j = 0 to start - 1
if close >= (L + bin_sizei) - bin_size and close < (L + bin_size*(i+1)) + bin_size
Bins += volume
Delta-Aware Coloring
The script tracks up-minus-down volume across all period to compute a net Delta . The profile, PoC line, and PoC label adopt a teal tone when net positive, and maroon when net negative—an immediate read on buyer/seller dominance inside the window.
Point of Control (PoC) + Volume Label
Automatically marks the highest-volume bin as the PoC . A horizontal PoC line extends to the last bar, and a label shows the absolute volume at the PoC. Toggle visibility via PoC input.
Pivot Detection with Volume Filter
Identifies raw pivots using Length (default 10) on both sides of the bar. Each candidate pivot is then validated against the profile: only pivots that land within their bin and meet or exceed the Filter % threshold (percentage of PoC volume) are promoted to chart levels. This removes weak, low-participation pivots.
// pivot promotion when volume% >= pivotFilter
if abs(mid - p.value) <= bin_size and volPercent >= pivotFilter
// draw labeled pivot level
line.new(p.index - pivotLength, p.value, p.index + pivotLength, p.value, width = 2)
Forward-Extending, Self-Stopping Levels
Promoted pivot levels extend forward as dotted rays. As soon as price intersects a level (high/low straddles it), that level stops extending—so your chart doesn’t clutter with stale zones.
Concise Level Labels (Volume + %)
Each promoted pivot prints a compact label at the pivot bar with its bin’s absolute volume and percentage of PoC volume (ordering flips for highs vs. lows for quick read).
Lightweight Visuals
The volume profile is rendered as a smooth polyline rather than dozens of boxes, keeping charts responsive even at higher resolutions.
⯁ SETTINGS
Volume Profile → Period : Lookback window used to compute the profile (max 500).
Volume Profile → Resolution : Number of bins; higher = finer structure.
Volume Profile → PoC : Toggle PoC line and volume label.
Pivots → Display : Show/hide volume-validated pivot levels.
Pivots → Length : Pivot detection left/right bars.
Pivots → Filter % 0–100 : Minimum bin strength (as % of PoC) required to promote a pivot level.
⯁ USAGE
Read PoC direction/color for a quick net-flow bias within your window.
Prioritize promoted pivot levels —they’re backed by meaningful participation.
Watch for first retests of promoted levels; the line will stop extending once tested.
Adjust Period / Resolution to match your timeframe (scalps → higher resolution, shorter period; swings → lower resolution, longer period).
Tighten or loosen Filter % to control how selective the level promotion is.
⯁ WHY IT’S UNIQUE
Instead of plotting every pivot or every profile bar, this tool cross-checks pivots against the profile’s internal volume weighting . You only see levels where price structure and liquidity overlap—clean, data-driven levels that self-retire after interaction, so you can focus on what the market actually defends.
SMC - Institutional Confidence Oscillator [PhenLabs]📊 Institutional Confidence Oscillator
Version: PineScript™v6
📌 Description
The Institutional Confidence Oscillator (ICO) revolutionizes market analysis by automatically detecting and evaluating institutional activity at key support and resistance levels using our own in-house detection system. This sophisticated indicator combines volume analysis, volatility measurements, and mathematical confidence algorithms to provide real-time readings of institutional sentiment and zone strength.
Using our advanced thin liquidity detection, the ICO identifies high-volume, narrow-range bars that signal institutional zone formation, then tracks how these zones perform under market pressure. The result is a dual-wave confidence oscillator that shows traders when institutions are actively defending price levels versus when they’re abandoning positions.
The indicator transforms complex institutional behavior patterns into clear, actionable confidence percentiles, helping traders align with smart money movements and avoid common retail trading pitfalls.
🚀 Points of Innovation
Automated thin liquidity zone detection using volume threshold multipliers and zone size filtering
Dual-sided confidence tracking for both support and resistance levels simultaneously
Sigmoid function processing for enhanced mathematical accuracy in confidence calculations
Real-time institutional defense pattern analysis through complete test cycles
Advanced visual smoothing options with multiple algorithmic methods (EMA, SMA, WMA, ALMA)
Integrated momentum indicators and gradient visualization for enhanced signal clarity
🔧 Core Components
Volume Threshold System: Analyzes volume ratios against baseline averages to identify institutional activity spikes
Zone Detection Algorithm: Automatically identifies thin liquidity zones based on customizable volume and size parameters
Confidence Lifecycle Engine: Tracks institutional defense patterns through complete observation windows
Mathematical Processing Core: Uses sigmoid functions to convert raw market data into normalized confidence percentiles
Visual Enhancement Suite: Provides multiple smoothing methods and customizable display options for optimal chart interpretation
🔥 Key Features
Auto-Detection Technology: Automatically scans for institutional zones without manual intervention, saving analysis time
Dual Confidence Tracking: Simultaneously monitors both support and resistance institutional activity for comprehensive market view
Smart Zone Validation: Evaluates zone strength through volume analysis, adverse excursion measurement, and defense success rates
Customizable Parameters: Extensive input options for volume thresholds, observation windows, and visual preferences
Real-Time Updates: Continuously processes market data to provide current institutional confidence readings
Enhanced Visualization: Features gradient fills, momentum indicators, and information panels for clear signal interpretation
🎨 Visualization
Dual Oscillator Lines: Support confidence (cyan) and resistance confidence (red) plotted as percentage values 0-100%
Gradient Fill Areas: Color-coded regions showing confidence dominance and strength levels
Reference Grid Lines: Horizontal markers at 25%, 50%, and 75% levels for easy interpretation
Information Panel: Real-time display of current confidence percentiles with color-coded dominance indicators
Momentum Indicators: Rate of change visualization for confidence trends
Background Highlights: Extreme confidence level alerts when readings exceed 80%
📖 Usage Guidelines
Auto-Detection Settings
Use Auto-Detection
Default: true
Description: Enables automatic thin liquidity zone identification based on volume and size criteria
Volume Threshold Multiplier
Default: 6.0, Range: 1.0+
Description: Controls sensitivity of volume spike detection for zone identification, higher values require more significant volume increases
Volume MA Length
Default: 15, Range: 1+
Description: Period for volume moving average baseline calculation, affects volume spike sensitivity
Max Zone Height %
Default: 0.5%, Range: 0.05%+
Description: Filters out wide price bars, keeping only thin liquidity zones as percentage of current price
Confidence Logic Settings
Test Observation Window
Default: 20 bars, Range: 2+
Description: Number of bars to monitor zone tests for confidence calculation, longer windows provide more stable readings
Clean Break Threshold
Default: 1.5 ATR, Range: 0.1+
Description: ATR multiple required for zone invalidation, higher values make zones more persistent
Visual Settings
Smoothing Method
Default: EMA, Options: SMA/EMA/WMA/ALMA
Description: Algorithm for signal smoothing, EMA responds faster while SMA provides more stability
Smoothing Length
Default: 5, Range: 1-50
Description: Period for smoothing calculation, higher values create smoother lines with more lag
✅ Best Use Cases
Trending market analysis where institutional zones provide reliable support/resistance levels
Breakout confirmation by validating zone strength before position entry
Divergence analysis when confidence shifts between support and resistance levels
Risk management through identification of high-confidence institutional backing
Market structure analysis for understanding institutional sentiment changes
⚠️ Limitations
Performs best in liquid markets with clear institutional participation
May produce false signals during low-volume or holiday trading periods
Requires sufficient price history for accurate confidence calculations
Confidence readings can fluctuate rapidly during high-impact news events
Manual fallback zones may not reflect actual institutional activity
💡 What Makes This Unique
Automated Detection: First Pine Script indicator to automatically identify thin liquidity zones using sophisticated volume analysis
Dual-Sided Analysis: Simultaneously tracks institutional confidence for both support and resistance levels
Mathematical Precision: Uses sigmoid functions for enhanced accuracy in confidence percentage calculations
Real-Time Processing: Continuously evaluates institutional defense patterns as market conditions change
Visual Innovation: Advanced smoothing options and gradient visualization for superior chart clarity
🔬 How It Works
1. Zone Identification Process:
Scans for high-volume bars that exceed the volume threshold multiplier
Filters bars by maximum zone height percentage to identify thin liquidity conditions
Stores qualified zones with proximity threshold filtering for relevance
2. Confidence Calculation Process:
Monitors price interaction with identified zones during observation windows
Measures volume ratios and adverse excursions during zone tests
Applies sigmoid function processing to normalize raw data into confidence percentiles
3. Real-Time Analysis Process:
Continuously updates confidence readings as new market data becomes available
Tracks institutional defense success rates and zone validation patterns
Provides visual and numerical feedback through the oscillator display
💡 Note:
The ICO works best when combined with traditional technical analysis and proper risk management. Higher confidence readings indicate stronger institutional backing but should be confirmed with price action and volume analysis. Consider using multiple timeframes for comprehensive market structure understanding.
ATAI Volume Pressure Analyzer V 1.0 — Pure Up/DownATAI Volume Pressure Analyzer V 1.0 — Pure Up/Down
Overview
Volume is a foundational tool for understanding the supply–demand balance. Classic charts show only total volume and don’t tell us what portion came from buying (Up) versus selling (Down). The ATAI Volume Pressure Analyzer fills that gap. Built on Pine Script v6, it scans a lower timeframe to estimate Up/Down volume for each host‑timeframe candle, and presents “volume pressure” in a compact HUD table that’s comparable across symbols and timeframes.
1) Architecture & Global Settings
Global Period (P, bars)
A single global input P defines the computation window. All measures—host‑TF volume moving averages and the half‑window segment sums—use this length. Default: 55.
Timeframe Handling
The core of the indicator is estimating Up/Down volume using lower‑timeframe data. You can set a custom lower timeframe, or rely on auto‑selection:
◉ Second charts → 1S
◉ Intraday → 1 minute
◉ Daily → 5 minutes
◉ Otherwise → 60 minutes
Lower TFs give more precise estimates but shorter history; higher TFs approximate buy/sell splits but provide longer history. As a rule of thumb, scan thin symbols at 5–15m, and liquid symbols at 1m.
2) Up/Down Volume & Derived Series
The script uses TradingView’s library function tvta.requestUpAndDownVolume(lowerTf) to obtain three values:
◉ Up volume (buyers)
◉ Down volume (sellers)
◉ Delta (Up − Down)
From these we define:
◉ TF_buy = |Up volume|
◉ TF_sell = |Down volume|
◉ TF_tot = TF_buy + TF_sell
◉ TF_delta = TF_buy − TF_sell
A positive TF_delta indicates buyer dominance; a negative value indicates selling pressure. To smooth noise, simple moving averages of TF_buy and TF_sell are computed over P and used as baselines.
3) Key Performance Indicators (KPIs)
Half‑window segmentation
To track momentum shifts, the P‑bar window is split in half:
◉ C→B: the older half
◉ B→A: the newer half (toward the current bar)
For each half, the script sums buy, sell, and delta. Comparing the two halves reveals strengthening/weakening pressure. Example: if AtoB_delta < CtoB_delta, recent buying pressure has faded.
[ 4) HUD (Table) Display /i]
Colors & Appearance
Two main color inputs define the theme: a primary color and a negative color (used when Δ is negative). The panel background uses a translucent version of the primary color; borders use the solid primary color. Text defaults to the primary color and flips to the negative color when a block’s Δ is negative.
Layout
The HUD is a 4×5 table updated on the last bar of each candle:
◉ Row 1 (Meta): indicator name, P length, lower TF, host TF
◉ Row 2 (Host TF): current ↑Buy, ↓Sell, ΔDelta; plus Σ total and SMA(↑/↓)
◉ Row 3 (Segments): C→B and B→A blocks with ↑/↓/Δ
◉ Rows 4–5: reserved for advanced modules (Wings, α/β, OB/OS, Top
5) Advanced Modules
5.1 Wings
“Wings” visualize volume‑driven movement over C→B (left wing) and B→A (right wing) with top/bottom lines and a filled band. Slopes are ATR‑per‑bar normalized for cross‑symbol/TF comparability and converted to angles (degrees). Coloring mirrors HUD sign logic with a near‑zero threshold (default ~3°):
◉ Both lines rising → blue (bullish)
◉ Both falling → red (bearish)
◉ Mixed/near‑zero → gray
Left wing reflects the origin of the recent move; right wing reflects the current state.
5.2 α / β at Point B
We compute the oriented angle between the two wings at the midpoint B:
β is the bottom‑arc angle; α = 360° − β is the top‑arc angle.
◉ Large α (>180°) or small β (<180°) flags meaningful imbalance.
◉ Intuition: large α suggests potential selling pressure; small β implies fragile support. HUD cells highlight these conditions.
5.3 OB/OS Spike
OverBought/OverSold (OB/OS) labels appear when directional volume spikes align with a 7‑oscillator vote (RSI, Stoch, %R, CCI, MFI, DeMarker, StochRSI).
◉ OB label (red): unusually high sell volume + enough OB votes
◉ OS label (teal): unusually high buy volume + enough OS votes
Minimum votes and sync window are user‑configurable; dotted connectors can link labels to the candle wick.
5.4 Top3 Volume Peaks
Within the P window the script ranks the top three BUY peaks (B1–B3) and top three SELL peaks (S1–S3).
◉ B1 and S1 are drawn as horizontal resistance (at B1 High) and support (at S1 Low) zones with adjustable thickness (ticks/percent/ATR).
◉ The HUD dedicates six cells to show ↑/↓/Δ for each rank, and prints the exact High (B1) and Low (S1) inline in their cells.
6) Reading the HUD — A Quick Checklist
◉ Meta: Confirm P and both timeframes (host & lower).
◉ Host TF block: Compare current ↑/↓/Δ against their SMAs.
◉ Segments: Contrast C→B vs B→A deltas to gauge momentum change.
◉ Wings: Right‑wing color/angle = now; left wing = recent origin.
◉ α / β: Look for α > 180° or β < 180° as imbalance cues.
◉ OB/OS: Note labels, color (red/teal), and the vote count.
◉Top3: Keep B1 (resistance) and S1 (support) on your radar.
Use these together to sketch scenarios and invalidation levels; never rely on a single signal in isolation.
[ 7) Example Highlights (What the table conveys) /i]
◉ Row 1 shows the indicator name, the analysis length P (default 55), and both TFs used for computation and display.
◉ B1 / S1 blocks summarize each side’s peak within the window, with Δ indicating buyer/seller dominance at that peak and inline price (B1 High / S1 Low) for actionable levels.
◉ Angle cells for each wing report the top/bottom line angles vs. the horizontal, reflecting the directional posture.
◉ Ranks B2/B3 and S2/S3 extend context beyond the top peak on each side.
◉ α / β cells quantify the orientation gap at B; changes reflect shifting buyer/seller influence on trend strength.
Together these visuals often reveal whether the “wings” resemble a strong, upward‑tilted arm supported by buyer volume—but always corroborate with your broader toolkit
8) Practical Tips & Tuning
◉ Choose P by market structure. For daily charts, 34–89 bars often works well.
◉ Lower TF choice: Thin symbols → 5–15m; liquid symbols → 1m.
◉ Near‑zero angle: In noisy markets, consider 5–7° instead of 3°.
◉ OB/OS votes: Daily charts often work with 3–4 votes; lower TFs may prefer 4–5.
◉ Zone thickness: Tie B1/S1 zone thickness to ATR so it scales with volatility.
◉ Colors: Feel free to theme the primary/negative colors; keep Δ<0 mapped to the negative color for readability.
Combine with price action: Use this indicator alongside structure, trendlines, and other tools for stronger decisions.
Technical Notes
Pine Script v6.
◉ Up/Down split via TradingView/ta library call requestUpAndDownVolume(lowerTf).
◉ HUD‑first design; drawings for Wings/αβ/OBOS/Top3 align with the same sign/threshold logic used in the table.
Disclaimer: This indicator is provided solely for educational and analytical purposes. It does not constitute financial advice, nor is it a recommendation to buy or sell any security. Always conduct your own research and use multiple tools before making trading decisions.
Signal Stack MeterWhat it is
A lightweight “go or no‑go” meter that combines your manual read of Structure, Location, and Momentum with automatic context from volatility and macro timing. It surfaces a single, tradeable answer on the chart: OK to engage or Standby.
Why traders like it
You keep your discretion and nuance, and the meter adds guardrails. It prevents good trade ideas from being executed in the wrong conditions.
What it measures
Manual buckets you set each day: Structure, Location, Momentum from 0 to 2
Volatility from VIX, term structure, ATR 5 over 60, and session gaps
Time windows for CPI, NFP, and FOMC with ET inputs and an exchange‑offset
Total score and a simple gate: threshold plus a “strong bucket” rule you choose
How to use in 30 seconds
Pick a preset for your market.
Set Structure, Location, Momentum to 0, 1, or 2.
Leave defaults for the auto metrics while you get a feel.
Read the header. When it says OK to engage, you have both your read and the context.
Defaults we recommend
OK threshold: 5
Strong bucket rule: Either Structure or Location equals 2
VIX triggers: 22 and 1.25× the 20‑SMA
Term mode: Diff at 0.00 tolerance. Ratio mode at 1.00+ is available
ATR 5/60 defense: 1.25. Offense cue: 0.85 or lower
ATR smoothing: 1
Gap mode: RTH with 0.60× ATR5 wild gap. ON wild range at 0.80× ATR5
CPI window 08:25 to 08:40 ET. FOMC window 13:50 to 14:30 ET
ET to exchange offset: −60 for CME index futures. Set to 0 for NYSE symbols like SPY
Alert cadence: Once per RTH session. Snooze first 30 minutes optional
New since the last description
Parity with Defense Mode for presets, sessions, ratio vs diff term mode, ATR smoothing, RTH‑key cadence, and snooze options
Event windows in ET with a simple offset to your exchange time
Alternate row backgrounds and full color control for readability
Exposed series for automation: EngageOK(1=yes) plus TotalScore
Debug toggle to see ATR ratio, term, and gap measurements directly
Notes
Dynamic alerts require “Any alert() function call”.
The meter is designed to sit opposite Defense Mode on the chart. Use the position input to avoid overlap.
Vertical Time Marker Configurable (VTMC)# Vertical Time Marker Configurable (VTMC)
## Overview
The Vertical Time Marker Configurable (VTMC) is a powerful PineScript v6 indicator designed to help traders quickly identify key market times across their entire chart history. Instead of hovering over candles to check timestamps, VTMC draws clear vertical lines with customizable labels at your specified times, making it easy to spot important market sessions, news events, or personal trading windows at a glance.
## Key Features
### ⏰ Flexible Time Selection
- Set any time using an intuitive time picker (defaults to 8:30 AM Central Time)
- Automatically draws lines at your specified time across all historical data
- Perfect for marking market opens, closes, news releases, or personal trading times
### 🎨 Full Visual Customization
- **Line Color**: Choose any color (defaults to white for maximum visibility)
- **Line Style**: Solid, dashed, or dotted options
- **Line Width**: Adjustable from 1-10 pixels
- **Opacity Control**: Precise opacity slider (0-100%) for both line and text
### 🏷️ Smart Text Labels
- **Preset Options**: New York Open, New York Close, London Open, London Close, Asia Open, Asia Close
- **Custom Labels**: Enter any text for personalized marking (news events, trading windows, etc.)
- **Configurable Text**: Adjustable size (8-20px), color, and opacity
- **Smart Positioning**: Text appears just above the price action for clear visibility
### 📊 Professional Display
- Lines extend fully from top to bottom of chart
- Clean, non-intrusive design that doesn't clutter your analysis
- Works on any timeframe and market
- Historical lines persist across all chart data
## Perfect For
### Market Session Traders
- Mark key session opens and closes
- Identify overlap periods between major markets
- Track session-specific price behavior patterns
### News Traders
- Mark important economic releases (FOMC, NFP, etc.)
- Create visual reminders for scheduled events
- Track market reaction patterns around news times
### Institutional Flow Traders
- Identify key institutional activity times
- Mark order block formation periods
- Track smart money movement windows
### Personal Trading Systems
- Mark your optimal trading hours
- Create visual discipline for trading windows
- Track performance during specific time periods
## Why VTMC?
Unlike hardcoded session indicators that only work for specific markets, VTMC gives you complete flexibility to mark ANY time that matters to your trading strategy. Whether you're tracking "MY Trading Window" from 9:30-10:30 AM or marking custom news events, VTMC adapts to your specific needs.
The indicator eliminates the constant need to hover over candles to check times, instead providing instant visual reference points across your entire chart. This makes pattern recognition, backtesting, and trade timing significantly more efficient.
## Usage Tips
- Use multiple instances for different time zones or events
- Combine with other indicators for comprehensive market timing
- Customize colors to match your chart theme
- Use custom labels for personalized trading reminders
*Built with precision in PineScript v6 for reliable performance and modern TradingView compatibility.*