The Rush
█ OVERVIEW
This script shows when buyers are in a rush to buy and when sellers are in a rush to sell
═════════════════════════════════════════════════════════════════════════
█ CONCEPTS
Prophet Mohamed Peace be upon Him once said something similar to this "It is not advisable to trade if you do not know the
Volume".
In his book "The Day Trader's Bible - Or My Secret In Day trading Of Stocks", Richard D. Kickoff wrote in page 55
"This shows that there was only 100 shares for sale at 180 1/8, none at all at 180f^, and only 500 at 3/8. The jump from 1 to 8 to 3/8
Emphasizes both the absence of pressure and persistency on the part of the buyers. They are not content to wait patiently until they can
Secure the stock at 180^/4; they "reach" for it."
This script was inspired by these two great men.
Prophet Mohamed Peace be upon Him showed the importance of the volume and Richard D. Kickoff explained what Prophet
Mohamed Peace be upon Him meant.
So I created this script that gauge the movement of the stock and the sentiments of the traders.
═════════════════════════════════════════════════════════════════════════
• FEATURES: The script calculates The Percentage Difference of the price and The Percentage Difference of the volume between
two success bullish candles (or two success bearish candles) and then it creates a ratio between these two Percentage
Differences and in the end the ratio is compared to the previous one to see if there is an increase or a decrease.
═════════════════════════════════════════════════════════════════════════
• HOW TO USE: if you see 2 or more successive red bars that mean bears are in hurry to sell and you can expect a bearish trend soon
if the Market Maker allows it or later if the Market Maker wants to do some distribution.
if you see 2 or more successive green bars that mean bulls are in hurry to buy and you can expect a bullish trend soon if the Market
Maker allows it or later if the Market Maker wants to do some accumulation.
═════════════════════════════════════════════════════════════════════════
• LIMITATIONS:
1- Use only Heikin Ashi chart
2- Good only if volume data is correct , meaning good for a centralized Market. (You can use it for forex or
crypto but at your own risk because those markets are not centralized)
═════════════════════════════════════════════════════════════════════════
• THANKS: I pay homage to Prophet Mohamed Peace be upon Him and Richard D. Kickoff who inspired the creation of this
Script.
═════════════════════════════════════════════════════════════════════════
Komut dosyalarını "accumulation" için ara
taLibrary "ta"
█ OVERVIEW
This library holds technical analysis functions calculating values for which no Pine built-in exists.
Look first. Then leap.
█ FUNCTIONS
cagr(entryTime, entryPrice, exitTime, exitPrice)
It calculates the "Compound Annual Growth Rate" between two points in time. The CAGR is a notional, annualized growth rate that assumes all profits are reinvested. It only takes into account the prices of the two end points — not drawdowns, so it does not calculate risk. It can be used as a yardstick to compare the performance of two instruments. Because it annualizes values, the function requires a minimum of one day between the two end points (annualizing returns over smaller periods of times doesn't produce very meaningful figures).
Parameters:
entryTime : The starting timestamp.
entryPrice : The starting point's price.
exitTime : The ending timestamp.
exitPrice : The ending point's price.
Returns: CAGR in % (50 is 50%). Returns `na` if there is not >=1D between `entryTime` and `exitTime`, or until the two time points have not been reached by the script.
█ v2, Mar. 8, 2022
Added functions `allTimeHigh()` and `allTimeLow()` to find the highest or lowest value of a source from the first historical bar to the current bar. These functions will not look ahead; they will only return new highs/lows on the bar where they occur.
allTimeHigh(src)
Tracks the highest value of `src` from the first historical bar to the current bar.
Parameters:
src : (series int/float) Series to track. Optional. The default is `high`.
Returns: (float) The highest value tracked.
allTimeLow(src)
Tracks the lowest value of `src` from the first historical bar to the current bar.
Parameters:
src : (series int/float) Series to track. Optional. The default is `low`.
Returns: (float) The lowest value tracked.
█ v3, Sept. 27, 2022
This version includes the following new functions:
aroon(length)
Calculates the values of the Aroon indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: ( [float, float ]) A tuple of the Aroon-Up and Aroon-Down values.
coppock(source, longLength, shortLength, smoothLength)
Calculates the value of the Coppock Curve indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
longLength (simple int) : (simple int) Number of bars for the fast ROC value (length).
shortLength (simple int) : (simple int) Number of bars for the slow ROC value (length).
smoothLength (simple int) : (simple int) Number of bars for the weigted moving average value (length).
Returns: (float) The oscillator value.
dema(source, length)
Calculates the value of the Double Exponential Moving Average (DEMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The double exponentially weighted moving average of the `source`.
dema2(src, length)
An alternate Double Exponential Moving Average (Dema) function to `dema()`, which allows a "series float" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The double exponentially weighted moving average of the `src`.
dm(length)
Calculates the value of the "Demarker" indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
donchian(length)
Calculates the values of a Donchian Channel using `high` and `low` over a given `length`.
Parameters:
length (int) : (series int) Number of bars (length).
Returns: ( [float, float, float ]) A tuple containing the channel high, low, and median, respectively.
ema2(src, length)
An alternate ema function to the `ta.ema()` built-in, which allows a "series float" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int/float) Number of bars (length).
Returns: (float) The exponentially weighted moving average of the `src`.
eom(length, div)
Calculates the value of the Ease of Movement indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
div (simple int) : (simple int) Divisor used for normalzing values. Optional. The default is 10000.
Returns: (float) The oscillator value.
frama(source, length)
The Fractal Adaptive Moving Average (FRAMA), developed by John Ehlers, is an adaptive moving average that dynamically adjusts its lookback period based on fractal geometry.
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The fractal adaptive moving average of the `source`.
ft(source, length)
Calculates the value of the Fisher Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
ht(source)
Calculates the value of the Hilbert Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
Returns: (float) The oscillator value.
ichimoku(conLength, baseLength, senkouLength)
Calculates values of the Ichimoku Cloud indicator, including tenkan, kijun, senkouSpan1, senkouSpan2, and chikou. NOTE: offsets forward or backward can be done using the `offset` argument in `plot()`.
Parameters:
conLength (int) : (series int) Length for the Conversion Line (Tenkan). The default is 9 periods, which returns the mid-point of the 9 period Donchian Channel.
baseLength (int) : (series int) Length for the Base Line (Kijun-sen). The default is 26 periods, which returns the mid-point of the 26 period Donchian Channel.
senkouLength (int) : (series int) Length for the Senkou Span 2 (Leading Span B). The default is 52 periods, which returns the mid-point of the 52 period Donchian Channel.
Returns: ( [float, float, float, float, float ]) A tuple of the Tenkan, Kijun, Senkou Span 1, Senkou Span 2, and Chikou Span values. NOTE: by default, the senkouSpan1 and senkouSpan2 should be plotted 26 periods in the future, and the Chikou Span plotted 26 days in the past.
ift(source)
Calculates the value of the Inverse Fisher Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
Returns: (float) The oscillator value.
kvo(fastLen, slowLen, trigLen)
Calculates the values of the Klinger Volume Oscillator.
Parameters:
fastLen (simple int) : (simple int) Length for the fast moving average smoothing parameter calculation.
slowLen (simple int) : (simple int) Length for the slow moving average smoothing parameter calculation.
trigLen (simple int) : (simple int) Length for the trigger moving average smoothing parameter calculation.
Returns: ( [float, float ]) A tuple of the KVO value, and the trigger value.
pzo(length)
Calculates the value of the Price Zone Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
rms(source, length)
Calculates the Root Mean Square of the `source` over the `length`.
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The RMS value.
rwi(length)
Calculates the values of the Random Walk Index.
Parameters:
length (simple int) : (simple int) Lookback and ATR smoothing parameter length.
Returns: ( [float, float ]) A tuple of the `rwiHigh` and `rwiLow` values.
stc(source, fast, slow, cycle, d1, d2)
Calculates the value of the Schaff Trend Cycle indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
fast (simple int) : (simple int) Length for the MACD fast smoothing parameter calculation.
slow (simple int) : (simple int) Length for the MACD slow smoothing parameter calculation.
cycle (simple int) : (simple int) Number of bars for the Stochastic values (length).
d1 (simple int) : (simple int) Length for the initial %D smoothing parameter calculation.
d2 (simple int) : (simple int) Length for the final %D smoothing parameter calculation.
Returns: (float) The oscillator value.
stochFull(periodK, smoothK, periodD)
Calculates the %K and %D values of the Full Stochastic indicator.
Parameters:
periodK (simple int) : (simple int) Number of bars for Stochastic calculation. (length).
smoothK (simple int) : (simple int) Number of bars for smoothing of the %K value (length).
periodD (simple int) : (simple int) Number of bars for smoothing of the %D value (length).
Returns: ( [float, float ]) A tuple of the slow %K and the %D moving average values.
stochRsi(lengthRsi, periodK, smoothK, periodD, source)
Calculates the %K and %D values of the Stochastic RSI indicator.
Parameters:
lengthRsi (simple int) : (simple int) Length for the RSI smoothing parameter calculation.
periodK (simple int) : (simple int) Number of bars for Stochastic calculation. (length).
smoothK (simple int) : (simple int) Number of bars for smoothing of the %K value (length).
periodD (simple int) : (simple int) Number of bars for smoothing of the %D value (length).
source (float) : (series int/float) Series of values to process. Optional. The default is `close`.
Returns: ( [float, float ]) A tuple of the slow %K and the %D moving average values.
supertrend(factor, atrLength, wicks)
Calculates the values of the SuperTrend indicator with the ability to take candle wicks into account, rather than only the closing price.
Parameters:
factor (float) : (series int/float) Multiplier for the ATR value.
atrLength (simple int) : (simple int) Length for the ATR smoothing parameter calculation.
wicks (simple bool) : (simple bool) Condition to determine whether to take candle wicks into account when reversing trend, or to use the close price. Optional. Default is false.
Returns: ( [float, int ]) A tuple of the superTrend value and trend direction.
szo(source, length)
Calculates the value of the Sentiment Zone Oscillator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
t3(source, length, vf)
Calculates the value of the Tilson Moving Average (T3).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
vf (simple float) : (simple float) Volume factor. Affects the responsiveness.
Returns: (float) The Tilson moving average of the `source`.
t3Alt(source, length, vf)
An alternate Tilson Moving Average (T3) function to `t3()`, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
vf (simple float) : (simple float) Volume factor. Affects the responsiveness.
Returns: (float) The Tilson moving average of the `source`.
tema(source, length)
Calculates the value of the Triple Exponential Moving Average (TEMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The triple exponentially weighted moving average of the `source`.
tema2(source, length)
An alternate Triple Exponential Moving Average (TEMA) function to `tema()`, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The triple exponentially weighted moving average of the `source`.
trima(source, length)
Calculates the value of the Triangular Moving Average (TRIMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The triangular moving average of the `source`.
trima2(src, length)
An alternate Triangular Moving Average (TRIMA) function to `trima()`, which allows a "series int" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int) Number of bars (length).
Returns: (float) The triangular moving average of the `src`.
trix(source, length, signalLength, exponential)
Calculates the values of the TRIX indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
signalLength (simple int) : (simple int) Length for smoothing the signal line.
exponential (simple bool) : (simple bool) Condition to determine whether exponential or simple smoothing is used. Optional. The default is `true` (exponential smoothing).
Returns: ( [float, float, float ]) A tuple of the TRIX value, the signal value, and the histogram.
uo(fastLen, midLen, slowLen)
Calculates the value of the Ultimate Oscillator.
Parameters:
fastLen (simple int) : (series int) Number of bars for the fast smoothing average (length).
midLen (simple int) : (series int) Number of bars for the middle smoothing average (length).
slowLen (simple int) : (series int) Number of bars for the slow smoothing average (length).
Returns: (float) The oscillator value.
vhf(source, length)
Calculates the value of the Vertical Horizontal Filter.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
vi(length)
Calculates the values of the Vortex Indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: ( [float, float ]) A tuple of the viPlus and viMinus values.
vzo(length)
Calculates the value of the Volume Zone Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
williamsFractal(period)
Detects Williams Fractals.
Parameters:
period (int) : (series int) Number of bars (length).
Returns: ( [bool, bool ]) A tuple of an up fractal and down fractal. Variables are true when detected.
wpo(length)
Calculates the value of the Wave Period Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
█ v7, Nov. 2, 2023
This version includes the following new and updated functions:
atr2(length)
An alternate ATR function to the `ta.atr()` built-in, which allows a "series float" `length` argument.
Parameters:
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The ATR value.
changePercent(newValue, oldValue)
Calculates the percentage difference between two distinct values.
Parameters:
newValue (float) : (series int/float) The current value.
oldValue (float) : (series int/float) The previous value.
Returns: (float) The percentage change from the `oldValue` to the `newValue`.
donchian(length)
Calculates the values of a Donchian Channel using `high` and `low` over a given `length`.
Parameters:
length (int) : (series int) Number of bars (length).
Returns: ( [float, float, float ]) A tuple containing the channel high, low, and median, respectively.
highestSince(cond, source)
Tracks the highest value of a series since the last occurrence of a condition.
Parameters:
cond (bool) : (series bool) A condition which, when `true`, resets the tracking of the highest `source`.
source (float) : (series int/float) Series of values to process. Optional. The default is `high`.
Returns: (float) The highest `source` value since the last time the `cond` was `true`.
lowestSince(cond, source)
Tracks the lowest value of a series since the last occurrence of a condition.
Parameters:
cond (bool) : (series bool) A condition which, when `true`, resets the tracking of the lowest `source`.
source (float) : (series int/float) Series of values to process. Optional. The default is `low`.
Returns: (float) The lowest `source` value since the last time the `cond` was `true`.
relativeVolume(length, anchorTimeframe, isCumulative, adjustRealtime)
Calculates the volume since the last change in the time value from the `anchorTimeframe`, the historical average volume using bars from past periods that have the same relative time offset as the current bar from the start of its period, and the ratio of these volumes. The volume values are cumulative by default, but can be adjusted to non-accumulated with the `isCumulative` parameter.
Parameters:
length (simple int) : (simple int) The number of periods to use for the historical average calculation.
anchorTimeframe (simple string) : (simple string) The anchor timeframe used in the calculation. Optional. Default is "D".
isCumulative (simple bool) : (simple bool) If `true`, the volume values will be accumulated since the start of the last `anchorTimeframe`. If `false`, values will be used without accumulation. Optional. The default is `true`.
adjustRealtime (simple bool) : (simple bool) If `true`, estimates the cumulative value on unclosed bars based on the data since the last `anchor` condition. Optional. The default is `false`.
Returns: ( [float, float, float ]) A tuple of three float values. The first element is the current volume. The second is the average of volumes at equivalent time offsets from past anchors over the specified number of periods. The third is the ratio of the current volume to the historical average volume.
rma2(source, length)
An alternate RMA function to the `ta.rma()` built-in, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The rolling moving average of the `source`.
supertrend2(factor, atrLength, wicks)
An alternate SuperTrend function to `supertrend()`, which allows a "series float" `atrLength` argument.
Parameters:
factor (float) : (series int/float) Multiplier for the ATR value.
atrLength (float) : (series int/float) Length for the ATR smoothing parameter calculation.
wicks (simple bool) : (simple bool) Condition to determine whether to take candle wicks into account when reversing trend, or to use the close price. Optional. Default is `false`.
Returns: ( [float, int ]) A tuple of the superTrend value and trend direction.
vStop(source, atrLength, atrFactor)
Calculates an ATR-based stop value that trails behind the `source`. Can serve as a possible stop-loss guide and trend identifier.
Parameters:
source (float) : (series int/float) Series of values that the stop trails behind.
atrLength (simple int) : (simple int) Length for the ATR smoothing parameter calculation.
atrFactor (float) : (series int/float) The multiplier of the ATR value. Affects the maximum distance between the stop and the `source` value. A value of 1 means the maximum distance is 100% of the ATR value. Optional. The default is 1.
Returns: ( [float, bool ]) A tuple of the volatility stop value and the trend direction as a "bool".
vStop2(source, atrLength, atrFactor)
An alternate Volatility Stop function to `vStop()`, which allows a "series float" `atrLength` argument.
Parameters:
source (float) : (series int/float) Series of values that the stop trails behind.
atrLength (float) : (series int/float) Length for the ATR smoothing parameter calculation.
atrFactor (float) : (series int/float) The multiplier of the ATR value. Affects the maximum distance between the stop and the `source` value. A value of 1 means the maximum distance is 100% of the ATR value. Optional. The default is 1.
Returns: ( [float, bool ]) A tuple of the volatility stop value and the trend direction as a "bool".
Removed Functions:
allTimeHigh(src)
Tracks the highest value of `src` from the first historical bar to the current bar.
allTimeLow(src)
Tracks the lowest value of `src` from the first historical bar to the current bar.
trima2(src, length)
An alternate Triangular Moving Average (TRIMA) function to `trima()`, which allows a
"series int" length argument.
Binance Z VolumeBTC perpetual volume on Binance is about 4x spot volume.
Comparing spot and perpetual volumes could provide useful insights into market sentiment.
Abnormal increases in the spot market could be associated with accumulation. Abnormal increases in the perpetual market, on the other hand, could predict volatility as well lows and highs.
This script represents a Z-score of the volume of perpetual and 4xspot on Binance.
High values above 0 mean that the volume is skewed towards perpetual contracts. Values below 0 mean that the volume is skewed towards spot contracts.
Feel free to suggest changes and improvements of this script.
Translated with www.DeepL.com (free version)
BIO
Cumulative Volume v3The script, for Pine Script version 3, shows how to accumulate volume values during a defined session/period.
The input is the period to use for accumulation. "D" is the default value, useful to view data for each session.
This is slower than version 4 because there is no "var" and you need to use a loop. Also, you can't use "sum( volume , cnt_new_day)" with a variable length argument instead of "for".
Relative Volume Strength IndexRVSI is an alternative volume-based indicator that measures the rate of change of average OBV.
How to read a chart using it?
First signal to buy is when you see RVSI is close to green oversold levels.
Once RVSI passes above it's orange EMA, that would be the second alert of accumulation.
Be always cautious when it reaches 50 level as a random statistical correction can be expected because of "market noises".
You know it's a serious uptrend when it reaches above 75 and fluctuates there, grading behind EMA.
The best signal to sell would be a situation where you see RVSI passing below it's EMA when the whole thing is close to Red overbought level
It looks simple, but it's powerful!
I'd use RVSI in combination with price-based indicators.
Cumulative VolumeThe script shows how to accumulate volume values during a defined session/period.
The input is the period to use for accumulation. "D" is the default value, useful to view data for each session.
X-volume assessment numberSee source code for more details. Src1 = distribution and Src2 = accumulation.
SN Smoothed Balance of Power v2Hi all,
here is an updated version of the indicator script I published yesterday.
The goal of this indicator is to try and find darkpool activity. The indicator itself is not enough to fully identify darkpool but it should be able to detect quiet accumulation. What makes this Balance of Power different from others on TV is that it is smoothed by using a moving average.
Notes:
- The values that are default are completely arbitrary except for the VWMA length (a 14-day period for the 1D chart is the norm). For instance the limit where it shows red/green I picked because it works best for the 1D chart I am using. Other TF's and charts will need tweaking of all the values you find in the options menu to get the best results.
- I modified the indicator such that it is usable on charts that do not show volume. HOWEVER, this chart is default to NYMEX: CL1!. To get different volume data this needs to be changed in the option menu.
- I am in no way an expert on darkpool/HFT trading and am merely going from the information I found on the internet. Consider this an experiment.
Credits:
- Lazybear for some of the plotting-code
- Igor Livshin for the formula
- TahaBintahir for the Symbol-code (although I'm not sure who the original author is...)
Indicators: Volume Zone Indicator & Price Zone IndicatorVolume Zone Indicator (VZO) and Price Zone Indicator (PZO) are by Waleed Aly Khalil.
Volume Zone Indicator (VZO)
------------------------------------------------------------
VZO is a leading volume oscillator that evaluates volume in relation to the direction of the net price change on each bar.
A value of 40 or above shows bullish accumulation. Low values (< 40) are bearish. Near zero or between +/- 20, the market is either in consolidation or near a break out. When VZO is near +/- 60, an end to the bull/bear run should be expected soon. If that run has been opposite to the long term price trend direction, then a reversal often will occur.
Traditional way of looking at this also works:
* +/- 40 levels are overbought / oversold
* +/- 60 levels are extreme overbought / oversold
More info:
drive.google.com
Price Zone Indicator (PZO)
------------------------------------------------------------
PZO is interpreted the same way as VZO (same formula with "close" substituted for "volume").
Chart Markings
------------------------------------------------------------
In the chart above,
* The red circles indicate a run-end (or reversal) zones (VZO +/- 60).
* Blue rectangle shows the consolidation zone (VZO betwen +/- 20)
I have been trying out VZO only for a week now, but I think this has lot of potential. Give it a try, let me know what you think.
MATIC Institutional Buy/Sell Zones📈 Purpose
To identify areas on the chart where institutional-level buying (accumulation) or selling (distribution) may be occurring — based on key technical and volume-based filters — and to help reduce false signals using smart logic.
✅ Smart Buy Signal (Accumulation Zone)
Triggered when:
RSI < 65 – Price is not overbought; leaves room to rise.
MACD line > Signal line – Momentum is positive.
Price is above both EMA 50 and BB midline – Price structure is bullish.
EMA 10 is below EMA 50 – Early stage of a trend shift.
Volume spike above 1.3x average – Sign of strong buyer interest.
📍 Visual Output:
Green background highlights zone.
Green “Smart Buy” label below bar.
❌ Smart Sell Signal (Distribution Zone)
Triggered when:
RSI > 55 – Price is mildly overbought, vulnerable to reversal.
MACD line < Signal line – Momentum turning bearish.
Price is below EMA 50 or BB midline – Weakening trend.
EMA 10 is above EMA 50 – Potential early shift downward.
Volume spike above 1.3x average – Distribution volume present.
📍 Visual Output:
Red background highlights zone.
Red “Smart Sell” label above bar.
🧠 Key Features
Designed for professional-level clarity.
Filters out most retail-level noise by requiring volume confirmation and trend confluence.
Combines momentum, structure, and volume into a multi-factor signal system.
🔔 Alerts
You can set TradingView alerts for:
When a Smart Buy or Smart Sell signal appears — ideal for non-screen time entry/exit alerts.
Bullish Volume AnomalyAnomaly is designed to spot hidden bullish accumulation before price actually breaks out, by blending a trend-aware volume measure with a volatility-adjusted price channel. Here’s how it works:
First, it runs a simple ATR-based zigzag to identify the current swing direction. Volume is then signed (+ for up-trends, – for down-trends) and cumulatively summed. By converting that cumulative signed volume into a z-score over the past 480 bars, we get a sense of when buying or selling pressure is unusually strong relative to its own history.
At the same time, price itself is normalized into a z-score over the same 480-bar window, and its change over that period is also tracked. These two measures—volume z-score (s) and price z-score (p)—are compared, and the indicator looks for moments when s outpaces p by at least two standard deviations (s – p > 2), while price momentum change remains low (c < 1) and the net volume is positive (s > 0). That combination flags instances where heavy buying is taking place but price hasn’t yet reacted.
To define a dynamic trading zone, it plots a 288-bar EMA of price as the middle band (t2), and builds upper and lower bands around it using the average close-to-open range multiplied by a user-set factor. The lower band (t1) sits beneath the EMA by that volatility-based margin. A signal fires only when the bar’s high stays below t1—meaning price is still “sleeping” under the lower volatility boundary even as bullish volume builds up.
Together, these filters home in on anomalies: strong, trend-aligned volume surges that outstrip price movement, occurring while price sits below its lower volatility band. In practice, that often marks early accumulation before a breakout. You can tweak the ATR length and multiplier for the zigzag, as well as the channel period and range factor, to suit different markets or timeframes.
[blackcat] L1 Net Volume DifferenceOVERVIEW
The L1 Net Volume Difference indicator serves as an advanced analytical tool designed to provide traders with deep insights into market sentiment by examining the differential between buying and selling volumes over precise timeframes. By leveraging these volume dynamics, it helps identify trends and potential reversal points more accurately, thereby supporting well-informed decision-making processes. The key focus lies in dissecting intraday changes that reflect short-term market behavior, offering critical input for both swing and day traders alike. 📊
Key benefits encompass:
• Precise calculation of net volume differences grounded in real-time data.
• Interactive visualization elements enhancing interpretability effortlessly.
• Real-time generation of buy/sell signals driven by dynamic volume shifts.
TECHNICAL ANALYSIS COMPONENTS
📉 Volume Accumulation Mechanisms:
Monitors cumulative buy/sell volumes derived from comparative closing prices.
Periodically resets accumulation counters aligning with predefined intervals (e.g., 5-minute bars).
Facilitates identification of directional biases reflecting underlying market forces accurately.
🕵️♂️ Sentiment Detection Algorithms:
Employs proprietary logic distinguishing between bullish/bearish sentiments dynamically.
Ensures consistent adherence to predefined statistical protocols maintaining accuracy.
Supports adaptive thresholds adjusting sensitivities based on changing market conditions flexibly.
🎯 Dynamic Signal Generation:
Detects transitions indicating dominance shifts between buyers/sellers promptly.
Triggers timely alerts enabling swift reactions to evolving market dynamics effectively.
Integrates conditional logic reinforcing signal validity minimizing erroneous activations.
INDICATOR FUNCTIONALITY
🔢 Core Algorithms:
Utilizes moving averages along with standardized deviation formulas generating precise net volume measurements.
Implements Arithmetic Mean Line Algorithm (AMLA) smoothing techniques improving interpretability.
Ensures consistent alignment with established statistical principles preserving fidelity.
🖱️ User Interface Elements:
Dedicated plots displaying real-time net volume markers facilitating swift decision-making.
Context-sensitive color coding distinguishing positive/negative deviations intuitively.
Background shading highlighting proximity to key threshold activations enhancing visibility.
STRATEGY IMPLEMENTATION
✅ Entry Conditions:
Confirm bullish/bearish setups validated through multiple confirmatory signals.
Validate entry decisions considering concurrent market sentiment factors.
Assess alignment between net volume readings and broader trend directions ensuring coherence.
🚫 Exit Mechanisms:
Trigger exits upon hitting predetermined thresholds derived from historical analyses.
Monitor continuous breaches signifying potential trend reversals promptly executing closures.
Execute partial/total closes contingent upon cumulative loss limits preserving capital efficiently.
PARAMETER CONFIGURATIONS
🎯 Optimization Guidelines:
Reset Interval: Governs responsiveness versus stability balancing sensitivity/stability.
Price Source: Dictates primary data series driving volume calculations selecting relevant inputs accurately.
💬 Customization Recommendations:
Commence with baseline defaults; iteratively refine parameters isolating individual impacts.
Evaluate adjustments independently prior to combined modifications minimizing disruptions.
Prioritize minimizing erroneous trigger occurrences first optimizing signal fidelity.
Sustain balanced risk-reward profiles irrespective of chosen settings upholding disciplined approaches.
ADVANCED RISK MANAGEMENT
🛡️ Proactive Risk Mitigation Techniques:
Enforce strict compliance with pre-defined maximum leverage constraints adhering strictly to guidelines.
Mandatorily apply trailing stop-loss orders conforming to script outputs reinforcing discipline.
Allocate positions proportionately relative to available capital reserves managing exposures prudently.
Conduct periodic reviews gauging strategy effectiveness rigorously identifying areas needing refinement.
⚠️ Potential Pitfalls & Solutions:
Address frequent violations arising during heightened volatility phases necessitating manual interventions judiciously.
Manage false alerts warranting immediate attention avoiding adverse consequences systematically.
Prepare contingency plans mitigating margin call possibilities preparing proactive responses effectively.
Continuously assess automated system reliability amidst fluctuating conditions ensuring seamless functionality.
PERFORMANCE AUDITS & REFINEMENTS
🔍 Critical Evaluation Metrics:
Assess win percentages consistently across diverse trading instruments gauging reliability.
Calculate average profit ratios per successful execution measuring profitability efficiency accurately.
Measure peak drawdown durations alongside associated magnitudes evaluating downside risks comprehensively.
Analyze signal generation frequencies revealing hidden patterns potentially skewing outcomes uncovering systematic biases.
📈 Historical Data Analysis Tools:
Maintain comprehensive records capturing every triggered event meticulously documenting results.
Compare realized profits/losses against backtested simulations benchmarking actual vs expected performances accurately.
Identify recurrent systematic errors demanding corrective actions implementing iterative refinements steadily.
Document evolving performance metrics tracking progress dynamically addressing identified shortcomings proactively.
PROBLEM SOLVING ADVICE
🔧 Frequent Encountered Challenges:
Unpredictable behaviors emerging within thinly traded markets requiring filtration processes.
Latency issues manifesting during abrupt price fluctuations causing missed opportunities.
Overfitted models yielding suboptimal results post-extensive tuning demanding recalibrations.
Inaccuracies stemming from incomplete/inaccurate data feeds necessitating verification procedures.
💡 Effective Resolution Pathways:
Exclude low-liquidity assets prone to erratic movements enhancing signal integrity.
Introduce buffer intervals safeguarding major news/event impacts mitigating distortions effectively.
Limit ongoing optimization attempts preventing model degradation maintaining optimal performance levels consistently.
Verify reliable connections ensuring uninterrupted data flows guaranteeing accurate interpretations reliably.
USER ENGAGEMENT SEGMENT
🤝 Community Contributions Welcome
Highly encourage active participation sharing experiences & recommendations!
THANKS
Heartfelt acknowledgment extends to all developers contributing invaluable insights about volume-based trading methodologies! ✨
Volumetric Tensegrity🧮 Volumetric Tensegrity unifies two of the Leading Indicator suite's critical engines — ZVOL ( volume anomaly detection ) and OBVX ( directional conviction ). Originally designed as a structural economizer for traders navigating strict indicator limits (e.g. < 10 slots per chart), it was forced to evolve beyond that constraint simply to fulfill it, albeit with a difference. The fatal flaw of traditional fusion, where two metrics are blended mathematically, is that they lose scale integrity (i.e. meaning). VTense encodes optical tensegrity to scale the amplitude of the ZVOL histogram and the slope of the OBVX spread independently, so that expansion and direction may coexist without either dominating the frame.
🧬 Tensegrity , by definition, is an intelligent design principle where elements in compression are suspended within a network of continuous tension, forming a stable, self-supporting structure . Originally conceived in esoteric biomorphology (c.f. Da Vinci, Snelson, Casteneda), tensegrity balances force through opposition, not rigidity. Applied to financial markets, Volumetric Tensegrity captures this same principle: price compresses, volume expands, conviction builds or fades — yet structure holds through the interplay. The result is not a prediction engine, but a pressure field — one that visualizes where structure might bend, break, or rebound based on how volume breathes.
🗜️ Rather than layering multiple indicators and consuming precious chart space, VTense frees up room for complementary overlays like momentum mapping, liquidity tiers, or volatility phase detection — making it ideal for modular traders operating in tight technical real estate.
🧠 Core Logic - VTense separates and preserves two essential structural forces:
• ZVOL Histogram : A Z-score-based expansion map that measures current volume deviation from its historical average. It reveals buildup zones, dormant stretches, and breakout pressure — regardless of price behavior.
• OBVX Spread : A directional conviction curve that tracks the difference between On-Balance Volume and its volume-weighted fast trend. It shows whether the crowd is leaning in (accumulation/distribution) or backing off.
🔊 ZVOL controls the amplitude of the histogram, while OBVX controls the curvature and slope of the spread. Without sacrificing breathing behavior or analytical depth, VTense provides a compact yet dynamic lens to track both expansion pressure and directional bias within a single footprint.
🌊 Volumetric Tensegrity forecasts breakout readiness, trend fatigue, and compression zones by measuring the volatility within volume . Unlike traditional tools that track volatility of price, this indicator reveals when effort becomes unstable — signaling inflection points before price reacts. Designed to decode rhythm shifts at the volume level, it operates as a pre-ignition scanner that thrives on low-timeframe charts (15m and under) while scaling effectively to 1H for validation.
🪖 From Generals to Scouts
👀 When used jointly, ZVOL + OBVX act as the general : deep-field analysts confirming stress, commitment, or exhaustion. VTense , by contrast, functions as a scout — capturing subtle buildup and alignment before structure fully reveals itself. The indicator aims to be a literal vanguard, establishing a position that can be confirmed or flexibly abandoned when the higher authority arrives to evaluate.
🥂 Use the ZVOL + OBVX pair when :
• You need independent axis control and manual dissection
• You’re building long-form confluence setups
• You have more indicator slots than you need
🔎 Use VTense when :
• You need compact clarity across multiple instruments
• You’re prioritizing confluence _detection_ over granular separation
• You’re building efficient multi-layered systems under slot constraints
🏗️ Structural Behavior and Interpretation
🫁 Z VOL Respiration Histogram : Structural Effort vs Baseline
🔵 Compression Coil – volume volatility is low and stable; the market is coiling
🟢 Steady Rhythm – volume is healthy but unremarkable; balanced participation
🟡 Passive/Absorbed Effort – expansion failing to manifest; watch for reversal
🟠 Clean Expansion – actionable volatility rise backed by structure
🔴 Volatile Blowout – chaos, climax; likely end-phase or fakeout
⚖️ ZVOL Respiration measures how hard the crowd is pressing — not just that volume is rising, but how statistically abnormal the surge is. Because it is rescaled proportionally to OBVX, the amplitude of the histogram reflects structural urgency without overwhelming the visual field.
🖐️ OBVX Spread : Real-Time Directional Conviction Behind Price Moves
🔑 The curvature of the spread reveals not just directional bias but crowd temp o: sharp slopes = urgent transitions; gradual slopes = building structural shifts. Curvature is key: sharp OBVX slope = urgency; gentle arcs = controlled drift or indecision.
• Green Rising : Accumulation — upward pressure from real buyers
• Red Falling : Distribution — sell pressure, downward slope
• Flat Curves : Transitional → uncertainty, microstructure digestion
🎭 Synchronized vs Divergent Behavior
⏱️ Synchronized (high-confluence) : often precedes structural breakouts, with internal conviction clearly visible before price resolves.
• ZVOL expands (yellow/orange/red) and OBVX climbs steeply green = strong bullish pressure
• ZVOL expands while OBVX steepens red = growing sell-side intent
🪤 Divergent (conflict tension) : flags potential traps, fakeouts, and liquidity sweeps.
• ZVOL expands sharply, but OBVX flattens or opposes → reactive expansion without crowd commitment
⛔️ Latent Drift + Structural Holding Patterns : tensegrity in action — the market holds tension without directional release.
• ZVOL compresses (blue) + OBVX meanders near zero → structure is resting, building up energy
• After prolonged drift, expect violent asymmetry when balance finally breaks
📚 Phase Interpretation: Dynamic Structural Read
• 1️⃣ Quiet Coil : Histogram flat, OBVX flat → no urgency
• 2️⃣ Initial Pulse : Yellow bars, OBVX slope builds → actionable tension
• 3️⃣ Structural Breath : Synchronized expansion and slope → directional commitment
• 4️⃣ Disagreement : Spike in ZVOL, flattening OBVX → exhaustion risk or false signal
💡 Suggested Use
• Run on 15m charts for breakout anticipation and 1H for validation
• Pair with ZVOL + OBVX to confirm crowd conviction behind the tension phase
• Use as a rhythm filter for the suite's trend indicators (e.g., RDI , SUPeR TReND 2.718 , et. al.)
• Ideal during low-volume regimes to detect pressure buildup before triggers
🧏🏻 Volumetric Tensegrity doesn’t signal. It breathes , and listens to pressure shifts before they speak in price. As a scout, it lets you see structural posture before signals align — helping you front-run resolution with clarity, not prediction.
DDDDD: SET50 (40 Stocks) - % New 52W LowsDDDDD: SET50 - % New 52W Lows (40 Stocks)
This indicator measures the percentage of selected SET50 stocks making a new 52-week low, helping identify periods of extreme market fear that often align with long-term buying opportunities.
How It Works:
Tracks the daily closing prices of 40 major SET50 constituents.
A stock is counted when it closes at its lowest price over the past 252 trading days (approximately 1 year).
Calculates the percentage of new 52-week lows relative to 40 stocks.
Displays threshold lines to highlight levels of market panic.
📈 Threshold Levels:
Threshold Line Color Level (%) Interpretation Action
30% Threshold Orange 30% Early signs of stress Start monitoring opportunities
33% Threshold Yellow 33% Confirmed panic Consider gradual accumulation
50% Panic Zone Red 50% Extreme market panic Aggressive accumulation zone
📌 Important Notes:
Why not use the full 50 stocks?
Due to TradingView Pine Script's current technical limits, a script cannot request data for more than 40 symbols efficiently.
Therefore, this indicator uses 40 representative SET50 stocks to ensure optimal performance without exceeding system limits.
The selected stocks are diversified across major sectors to maintain reliability.
🔥 Key Insights:
Historically, spikes above 30%-50% of stocks making new lows have coincided with major market bottoms (e.g., 2011, 2020).
Higher simultaneous new lows = stronger potential for long-term recovery.
BTC Price-Volume Efficiency Z-Score (PVER-Z)Overview:
This PVER-Z Score measures Bitcoin’s price movement efficiency relative to trading volume, normalized using a Z-Score over a long-term 200-day period.
It highlights statistically rare inefficiencies, helping investors spot extreme accumulation and distribution zones for systematic SDCA strategies.
Concept:
- Measures how efficiently price has moved relative to the volume that supported it over a long historical window (Default 200 days) but can be adjustable.
- It compares cumulative price changes vs cumulative volume flow.
- Then normalizes those inefficiencies using Z-Score statistics.
How It Works:
1. Calculates the absolute daily price change divided by volume (price-volume efficiency ratio).
2. Applies EMA smoothing to remove noisy fluctuations.
3. Normalizes the result into a Z-Score to detect statistically significant outliers.
4. Plots dynamic heatmap colors as the efficiency score moves through different deviation zones.
5. Background fills appear when the Z-Score moves beyond ±2 to ±3 SD, signaling rare macro opportunities.
Why is Bitcoin price rising while PVER-Z is falling toward green zone?
1. PVER-Z is not just "price" — it's price change relative to volume. PVER-Z measures how efficient the price movement is relative to volume. It's not "price going up" or "price going down" directly. It's how unusual or inefficient the price versus volume relationship is, compared to its historical average.
2. A rising Bitcoin price + weak efficiency = PVER-Z falls.
If Bitcoin rises but volume is super strong (normal buying volume), no problem, the PVER-Z stays normal. If Bitcoin rises but with very weak volume support, PVER-Z falls.
***Usage Notes***:
- Best used on the daily timeframe or higher.
- When the Z-Score enters the green zone (-2 to -3 SD), it signals a historically rare accumulation zone — favoring long-term buying for SDCA.
- When the Z-Score enters the red zone (+2 to +3 SD), it signals overextended distribution — caution recommended.
- Designed strictly for mean-reversion analysis, no trend-following signals.
- The red zone on a proper Z chart would be -2SD to -3SD and +2SD to +3SD for the green zone. At the time of publishing I do not know how to adjust the values on the indicator itself. The red zone at -2SD is actually +2 Standard Deviations on a Z Score SD Chart. (overbought zone).
- Your green zone at +2SD is actually -2SD Standard Deviations (oversold zone).
- Built manually with no reliance on built-in indicators
- Designed for Bitcoin on the 1D, 3D, or Weekly timeframes. NOT for intraday trading.
- DO NOT SOELY RELY ON THIS INDICATOR FOR YOUR LONG TERM VALUATION. I AM NOT RESPONSIBLE FOR YOUR FINANICAL ASSETS.
Anchored Darvas Box## ANCHORED DARVAS BOX
---
### OVERVIEW
**Anchored Darvas Box** lets you drop a single timestamp on your chart and build a Darvas-style consolidation zone forward from that exact candle. The indicator freezes the first user-defined number of bars to establish the range, verifies that price respects that range for another user-defined number of bars, then waits for the first decisive breakout. The resulting rectangle captures every tick of the accumulation phase and the exact moment of expansion—no manual drawing, complete timestamp precision.
---
### HISTORICAL BACKGROUND
Nicolas Darvas’s 1950s box theory tracked institutional accumulation by hand-drawing rectangles around tight price ranges. A trade was triggered only when price escaped the rectangle.
The anchored version preserves Darvas’s logic but pins the entire sequence to a user-chosen candle: perfect for analysing a market open, an earnings release, FOMC minute, or any other catalytic bar.
---
### ALGORITHM DETAIL
1. **ANCHOR BAR**
*You provide a timestamp via the settings panel.* The script waits until the chart reaches that bar and records its index as **startBar**.
2. **RANGE DEFINITION — BARS 1-7**
• `rangeHigh` = highest high of bars 1-7 plus optional tolerance.
• `rangeLow` = lowest low of bars 1-7 minus optional tolerance.
3. **RANGE VALIDATION — BARS 8-14**
• Price must stay inside ` `.
• Any violation aborts the test; no box is created.
4. **ARMED STATE**
• If bars 8-14 hold the range, two live guide-lines appear:
– **Green** at `rangeHigh`
– **Red** at `rangeLow`
• The script is now “armed,” waiting indefinitely for the first true breakout.
5. **BREAKOUT & BOX CREATION**
• **Up breakout** =`high > rangeHigh` → rectangle drawn in **green**.
• **Down breakout**=`low < rangeLow` → rectangle drawn in **red**.
• Box extends from **startBar** to the breakout bar and never updates again.
• Optional labels print the dollar and percentage height of the box at its left edge.
6. **OPTIONAL COOLDOWN**
• After the box is painted the script can stay silent for a user-defined number of bars, letting you study the fallout without another range immediately arming on top of it.
---
### INPUT PARAMETERS
• **ANCHOR TIME** – Precise yyyy-mm-dd HH:MM:SS that seeds the sequence.
• **BARS TO DEFINE RANGE** – Default 7; affects both definition and validation windows.
• **OPTIONAL TOLERANCE** – Absolute price buffer to ignore micro-wicks.
• **COOLDOWN BARS AFTER BREAKOUT** – Pause length before the indicator is allowed to re-anchor (set to zero to disable).
• **SHOW BOX DISTANCE LABELS** – Toggle to print Δ\$ and Δ% on every completed box.
---
### USER WORKFLOW
1. Add the indicator, open settings, and set **ANCHOR TIME** to the candle you care about (e.g., “2025-04-23 09:30:00” for NYSE open).
2. Watch live as the script:
– Paints the seven-bar range.
– Draws validation lines.
– Locks in the box on breakout.
3. Use the box boundaries as structural stops, targets, or context for further trades.
---
### PRACTICAL APPLICATIONS
• **OPENING RANGE BREAKOUTS** – Anchor at the first second of the session; capture the initial 7-bar range and trade the first clean break.
• **EVENT STUDIES** – Anchor at a news candle to measure immediate post-event volatility.
• **VOLUME PROFILE FUSION** – Combine the anchored box with VPVR to see if the breakout occurs at a high-volume node or a low-liquidity pocket.
• **RISK DISCIPLINE** – Stop-loss can sit just inside the opposite edge of the anchored range, enforcing objective risk.
---
### ADVANCED CUSTOMISATION IDEAS
• **MULTIPLE ANCHORS** – Clone the indicator and anchor several boxes (e.g., London open, New York open).
• **DYNAMIC WINDOW** – Switch the 7-bar fixed length to a volatility-scaled length (ATR percentile).
• **STRATEGY WRAPPER** – Turn the indicator into a `strategy{}` script and back-test anchored boxes on decades of data.
---
### FINAL THOUGHTS
Anchored Darvas Boxes give you Darvas’s timeless range-break methodology anchored to any candle of interest—perfect for dissecting openings, economic releases, or your own bespoke “important” bars with laboratory precision.
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.
Bitcoin NUPL IndicatorThe Bitcoin NUPL (Net Unrealized Profit/Loss) Indicator is a powerful metric that shows the difference between Bitcoin's market cap and realized cap as a percentage of market cap. This indicator helps identify different market cycle phases, from capitulation to euphoria.
// How It Works
NUPL measures the aggregate profit or loss held by Bitcoin investors, calculated as:
```
NUPL = ((Market Cap - Realized Cap) / Market Cap) * 100
```
// Market Cycle Phases
The indicator automatically color-codes different market phases:
• **Deep Red (< 0%)**: Capitulation Phase - Most coins held at a loss, historically excellent buying opportunities
• **Orange (0-25%)**: Hope & Fear Phase - Early accumulation, price uncertainty and consolidation
• **Yellow (25-50%)**: Optimism & Anxiety Phase - Emerging bull market, increasing confidence
• **Light Green (50-75%)**: Belief & Denial Phase - Strong bull market, high conviction
• **Bright Green (> 75%)**: Euphoria & Greed Phase - Potential market top, historically good profit-taking zone
// Features
• Real-time NUPL calculation with customizable smoothing
• RSI indicator for additional momentum confirmation
• Color-coded background reflecting current market phase
• Reference lines marking key transition zones
• Detailed metrics table showing NUPL value, market sentiment, market cap, realized cap, and RSI
// Strategy Applications
• **Long-term investors**: Use extreme negative NUPL values (deep red) to identify potential bottoms for accumulation
• **Swing traders**: Look for transitions between phases for potential trend changes
• **Risk management**: Consider taking profits when entering the "Euphoria & Greed" phase (bright green)
• **Mean reversion**: Watch for overbought/oversold conditions when NUPL reaches historical extremes
// Settings
• **RSI Length**: Adjusts the period for RSI calculation
• **NUPL Smoothing Length**: Applies moving average smoothing to reduce noise
// Notes
• Premium TradingView subscription required for Glassnode and Coin Metrics data
• Best viewed on daily timeframes for macro analysis
• Historical NUPL extremes have often marked cycle bottoms and tops
• Use in conjunction with other indicators for confirmation
Price Position Percentile (PPP)
Price Position Percentile (PPP)
A statistical analysis tool that dynamically measures where current price stands within its historical distribution. Unlike traditional oscillators, PPP adapts to market conditions by calculating percentile ranks, creating a self-adjusting framework for identifying extremes.
How It Works
This indicator analyzes the last 200 price bars (customizable) and calculates the percentile rank of the current price within this distribution. For example, if the current price is at the 80th percentile, it means the price is higher than 80% of all prices in the lookback period.
The indicator creates five dynamic zones based on percentile thresholds:
Extremely Low Zone (<5%) : Prices in the lowest 5% of the distribution, indicating potential oversold conditions.
Low Zone (5-25%) : Accumulation zone where prices are historically low but not extreme.
Neutral Zone (25-75%) : Fair value zone representing the middle 50% of the price distribution.
High Zone (75-95%) : Distribution zone where prices are historically high but not extreme.
Extremely High Zone (>95%) : Prices in the highest 5% of the distribution, suggesting potential bubble conditions.
Mathematical Foundation
Unlike fixed-threshold indicators, PPP uses a non-parametric approach:
// Core percentile calculation
percentile = (count_of_prices_below_current / total_prices) * 100
// Threshold calculation using built-in function
p_extremely_low = ta.percentile_linear_interpolation(source, lookback, 5)
p_low = ta.percentile_linear_interpolation(source, lookback, 25)
p_neutral_high = ta.percentile_linear_interpolation(source, lookback, 75)
p_extremely_high = ta.percentile_linear_interpolation(source, lookback, 95)
Key Features
Dynamic Adaptation : All zones adjust automatically as price distribution changes
Statistical Robustness : Works on any timeframe and any market, including highly volatile cryptocurrencies
Visual Clarity : Color-coded zones provide immediate visual context
Non-parametric Analysis : Makes no assumptions about price distribution shape
Historical Context : Shows how zones evolved over time, revealing market regime changes
Practical Applications
PPP provides objective statistical context for price action, helping traders make more informed decisions based on historical price distribution rather than arbitrary levels.
Value Investment : Identify statistically significant low prices for potential entry points
Risk Management : Recognize when prices reach historical extremes for profit taking
Cycle Analysis : Observe how percentile zones expand and contract during different market phases
Market Regime Detection : Identify transitions between accumulation, markup, distribution, and markdown phases
Usage Guidelines
This indicator is particularly effective when:
- Used across multiple timeframes for confirmation
- Combined with volume analysis for validation of extremes
- Applied in conjunction with trend identification tools
- Monitored for divergences between price action and percentile ranking
Delta Volume[integral]Delta Volume – Visualizing Accumulated Candle Dominance
This indicator measures and accumulates the net difference between bullish and bearish candle volumes over a user-defined range of bars. It integrates the volume dominance over time, offering traders a unique view into how buying or selling pressure has been distributed.
🔍 Concept & Logic
Delta Volume Calculation
For each bar, the script looks x to y bars back in time (e.g., from 10 bars ago to 5 bars ago) and:
Adds volume for bullish candles (close > open)
Subtracts volume for bearish candles (close < open)
This gives us a snapshot of volume dominance for that range.
What is Integration in This Context?
Integration, in this script, refers to the accumulation (summation) of these dominance differences over a period.
Much like integrating a function in calculus (i.e., area under the curve), here we are integrating the "net advantage" of buyers vs. sellers.
Over time, this builds a cumulative picture of directional pressure, showing whether buyers (positive integration) or sellers (negative integration) are in control.
Why It Matters
Unlike simple volume charts, this tool filters noise by focusing on who is dominating the market—buyers or sellers—and tracks that dominance over time.
It gives a macro-level view of pressure buildup, which can precede major breakouts or reversals.
📊 Visual Features
Buy Volume (green columns): Sum of volumes from bullish candles.
Sell Volume (red columns): Sum of volumes from bearish candles.
Candle Difference (white line): Net dominance difference (Buy - Sell).
Integrated Dominance Difference: Cumulative label showing the total buyer-seller dominance over the defined integration period.
Zero Line (dashed): Balance point.
🧠 Use Case
Detect divergences between price and cumulative volume pressure.
Confirm trend strength when integrated delta volume aligns with price movement.
Spot accumulation or distribution phases invisible on price action alone.
⚠️ If you're applying this to symbols with no volume data (e.g., certain Forex or indices), the script will stop with an error message.
EMA Shakeout DetectorEMA Shakeout & Reclaim Zones
Description:
This Pine Script helps traders quickly identify potential shakeout entries based on price action and volume dynamics. Shakeouts often signal strong accumulation, where institutions drive the stock below a key moving average before reclaiming it, creating an opportunity for traders to enter at favorable prices.
How It Works:
1. Volume Surge Filtering:
a. Computes the 51-day Simple Moving Average (SMA) of volume.
b. Identifies days where volume surged 2x above the 51-day average.
c. Filters stocks that had at least two such high-volume days in the last 21 trading days (configurable).
2. Stock Selection Criteria:
a. The stock must be within 25% of its 52-week high.
b. It should have rallied at least 30% from its 52-week low.
Shakeout Conditions:
1. The stock must be trading above the 51-day EMA before the shakeout.
2. A sudden price drop of more than 10% occurs, pushing the stock below the 51-day EMA.
3. A key index (e.g., Nifty 50, S&P 500) must be trading above its 10-day EMA, ensuring overall market strength.
Visualization:
Shakeout zones are highlighted in blue, making it easier to spot potential accumulation areas and study price & volume action in more detail.
This script is ideal for traders looking to identify institutional shakeouts and gain an edge by recognizing high-probability reversal setups.
Price and Volume Breakout - Jemmy TradeThe "Price and Volume Breakout" indicator is designed to identify potential breakout opportunities by analyzing both price and volume trends. It uses a combination of historical price highs, volume peaks, and a customizable Simple Moving Average (SMA) to signal bullish breakouts. When the price exceeds the highest price of the defined breakout period and is supported by high volume, the indicator triggers visual alerts on the chart. These include dotted lines, labels, and boxes highlighting accumulation zones, along with dynamically calculated stop loss and take profit levels.
Key Features:
• Breakout Detection: Compares the current closing price to the highest price and volume over specified periods to signal a breakout.
• Customizable Stop Loss Options: Offers three methods for setting stop loss levels:
o Below SMA: Positions stop loss a user-defined percentage below the SMA.
o Lowest Low: Uses the lowest low over a specific look-back period.
o Range Average: Calculates an average based on the previous price range.
• Dynamic Take Profit Calculation: Automatically computes take profit levels based on the defined risk-to-reward ratio.
• Visual Chart Elements: Draws breakout lines, stop loss and take profit indicators, labels (e.g., "🚀 Breakout Buy", "🔴 Stop Loss", "🟢 Take Profit"), and boxes marking accumulation zones for easy visualization.
• Alert Conditions: Includes alert functionality to notify traders when breakout conditions are met, enabling timely trading decisions.
How to Use:
1. Customization: Adjust settings such as the breakout periods for price and volume, the length of the SMA, stop loss options, and the risk-to-reward ratio to fit your trading strategy.
2. Signal Identification: When the price exceeds the highest value from the previous period, accompanied by high volume and confirmation from the SMA, the indicator displays a "Breakout Buy" signal.
3. Risk Management: The indicator calculates appropriate stop loss and take profit levels automatically based on your selected parameters, ensuring a balanced risk/reward setup.
4. Alerts: Utilize the built-in alert conditions to receive notifications whenever the breakout criteria are satisfied, helping you act promptly.
PLEASE USE IT AS PER YOUR OWN RISK MANAGEMENT STRATEGIES.
Keywords:
#Breakout #Trading #VolumeAnalysis #TechnicalAnalysis #PriceAction #RiskManagement #TrendFollowing #TradingSignals #PriceBreakout #SmartTrading #JemmyTrade
Auto Wyckoff Schematic [by DanielM]This indicator is designed to automatically detect essential components of Wyckoff schematics. This tool aims to capture the critical phases of liquidity transfer from weak to strong hands, occurring before a trend reversal. While the Wyckoff method is a comprehensive and a very nuanced approach, every Wyckoff schematic is unique, making it impractical to implement all its components without undermining the detection of the pattern. Consequently, this script focuses on the essential elements critical to identifying these schematics effectively.
Key Features:
Swing Detection Sensitivity:
The sensitivity of swing detection is adjustable through the input parameter. This parameter controls the number of past bars analyzed to determine swing highs and lows, allowing users to fine-tune detection based on market volatility and timeframes.
Pattern Detection Logic:
Accumulation Schematic:
Detects consecutive lower swing lows, representing phases like Selling Climax (SC) and Spring, which often precede a trend reversal upward. After the final low is identified, a higher high is detected to confirm the upward trend initiation.
Labeled Key Points:
SC: Selling Climax, marking the beginning of the accumulation zone.
ST: Secondary Test during the schematic.
ST(b): Secondary Test in phase B.
Spring: The lowest point in the schematic, signaling a final liquidity grab.
SOS: Sign of Strength, confirming a bullish breakout.
The schematic is outlined visually with a rectangle to highlight the price range.
Distribution Schematic:
Detects consecutive higher swing highs, which indicate phases such as Buying Climax (BC) and UTAD, often leading to a bearish reversal. After the final high, a lower low is detected to confirm the downward trend initiation.
Labeled Key Points:
BC: Buying Climax, marking the beginning of the distribution zone.
ST: Secondary Test during the schematic.
UT: Upthrust.
UTAD: Upthrust After Distribution, signaling the final upward liquidity grab before a bearish trend.
SOW: Sign of Weakness, confirming a bearish breakout.
The schematic is visually outlined with a rectangle to highlight the price range.
Notes:
Simplification for Practicality: Due to the inherent complexity and variability of Wyckoff schematics, the indicator focuses only on the most essential features—liquidity transfer and key reversal signals.
Limitations: The tool does not account for all components of Wyckoff's method (e.g., minor phases or nuanced volume analysis) to maintain clarity and usability.
Unique Behavior: Every Wyckoff schematic is different, and this tool is designed to provide a simplified, generalized approach to detecting these unique patterns.