RelativeValue█ OVERVIEW
This library is a Pine Script™ programmer's tool offering the ability to compute relative values, which represent comparisons of current data points, such as volume, price, or custom indicators, with their analogous historical data points from corresponding time offsets. This approach can provide insightful perspectives into the intricate dynamics of relative market behavior over time.
█ CONCEPTS
Relative values
In this library, a relative value is a metric that compares a current data point in a time interval to an average of data points with corresponding time offsets across historical periods. Its purpose is to assess the significance of a value by considering the historical context within past time intervals.
For instance, suppose we wanted to calculate relative volume on an hourly chart over five daily periods, and the last chart bar is two hours into the current trading day. In this case, we would compare the current volume to the average of volume in the second hour of trading across five days. We obtain the relative volume value by dividing the current volume by this average.
This form of analysis rests on the hypothesis that substantial discrepancies or aberrations in present market activity relative to historical time intervals might help indicate upcoming changes in market trends.
Cumulative and non-cumulative values
In the context of this library, a cumulative value refers to the cumulative sum of a series since the last occurrence of a specific condition (referred to as `anchor` in the function definitions). Given that relative values depend on time, we use time-based conditions such as the onset of a new hour, day, etc. On the other hand, a non-cumulative value is simply the series value at a specific time without accumulation.
Calculating relative values
Four main functions coordinate together to compute the relative values: `maintainArray()`, `calcAverageByTime()`, `calcCumulativeSeries()`, and `averageAtTime()`. These functions are underpinned by a `collectedData` user-defined type (UDT), which stores data collected since the last reset of the timeframe along with their corresponding timestamps. The relative values are calculated using the following procedure:
1. The `averageAtTime()` function invokes the process leveraging all four of the methods and acts as the main driver of the calculations. For each bar, this function adds the current bar's source and corresponding time value to a `collectedData` object.
2. Within the `averageAtTime()` function, the `maintainArray()` function is called at the start of each anchor period. It adds a new `collectedData` object to the array and ensures the array size does not exceed the predefined `maxSize` by removing the oldest element when necessary. This method plays an essential role in limiting memory usage and ensuring only relevant data over the desired number of periods is in the calculation window.
3. Next, the `calcAverageByTime()` function calculates the average value of elements within the `data` field for each `collectedData` object that corresponds to the same time offset from each anchor condition. This method accounts for cases where the current index of a `collectedData` object exceeds the last index of any past objects by using the last available values instead.
4. For cumulative calculations, the `averageAtTime()` function utilizes the `isCumulative` boolean parameter. If true, the `calcCumulativeSeries()` function will track the running total of the source data from the last bar where the anchor condition was met, providing a cumulative sum of the source values from one anchor point to the next.
To summarize, the `averageAtTime()` function continually stores values with their corresponding times in a `collectedData` object for each bar in the anchor period. When the anchor resets, this object is added to a larger array. The array's size is limited by the specified number of periods to be averaged. To correlate data across these periods, time indexing is employed, enabling the function to compare corresponding points across multiple periods.
█ USING THIS LIBRARY
The library simplifies the complex process of calculating relative values through its intuitive functions. Follow the steps below to use this library in your scripts.
Step 1: Import the library and declare inputs
Import the library and declare variables based on the user's input. These can include the timeframe for each period, the number of time intervals to include in the average, and whether the calculation uses cumulative values. For example:
//@version=5
import TradingView/RelativeValue/1 as TVrv
indicator("Relative Range Demo")
string resetTimeInput = input.timeframe("D")
int lengthInput = input.int(5, "No. of periods")
Step 2: Define the anchor condition
With these inputs declared, create a condition to define the start of a new period (anchor). For this, we use the change in the time value from the input timeframe:
bool anchor = timeframe.change(resetTimeInput)
Step 3: Calculate the average
At this point, one can calculate the average of a value's history at the time offset from the anchor over a number of periods using the `averageAtTime()` function. In this example, we use True Range (TR) as the `source` and set `isCumulative` to false:
float pastRange = TVrv.averageAtTime(ta.tr, lengthInput, anchor, false)
Step 4: Display the data
You can visualize the results by plotting the returned series. These lines display the non-cumulative TR alongside the average value over `lengthInput` periods for relative comparison:
plot(pastRange, "Past True Range Avg", color.new(chart.bg_color, 70), 1, plot.style_columns)
plot(ta.tr, "True Range", close >= open ? color.new(color.teal, 50) : color.new(color.red, 50), 1, plot.style_columns)
This example will display two overlapping series of columns. The green and red columns depict the current TR on each bar, and the light gray columns show the average over a defined number of periods, e.g., the default inputs on an hourly chart will show the average value at the hour over the past five days. This comparative analysis aids in determining whether the range of a bar aligns with its typical historical values or if it's an outlier.
█ NOTES
• The foundational concept of this library was derived from our initial Relative Volume at Time script. This library's logic significantly boosts its performance. Keep an eye out for a forthcoming updated version of the indicator. The demonstration code included in the library emulates a streamlined version of the indicator utilizing the library functions.
• Key efficiencies in the data management are realized through array.binary_search_leftmost() , which offers a performance improvement in comparison to its loop-dependent counterpart.
• This library's architecture utilizes user-defined types (UDTs) to create custom objects which are the equivalent of variables containing multiple parts, each able to hold independent values of different types . The recently added feature was announced in this blog post.
• To enhance readability, the code substitutes array functions with equivalent methods .
Look first. Then leap.
█ FUNCTIONS
This library contains the following functions:
calcCumulativeSeries(source, anchor)
Calculates the cumulative sum of `source` since the last bar where `anchor` was `true`.
Parameters:
source (series float) : Source used for the calculation.
anchor (series bool) : The condition that triggers the reset of the calculation. The calculation is reset when `anchor` evaluates to `true`, and continues using the values accumulated since the previous reset when `anchor` is `false`.
Returns: (float) The cumulative sum of `source`.
averageAtTime(source, length, anchor, isCumulative)
Calculates the average of all `source` values that share the same time difference from the `anchor` as the current bar for the most recent `length` bars.
Parameters:
source (series float) : Source used for the calculation.
length (simple int) : The number of reset periods to consider for the average calculation of historical data.
anchor (series bool) : The condition that triggers the reset of the average calculation. The calculation is reset when `anchor` evaluates to `true`, and continues using the values accumulated since the previous reset when `anchor` is `false`.
isCumulative (simple bool) : If `true`, `source` values are accumulated until the next time `anchor` is `true`. Optional. The default is `true`.
Returns: (float) The average of the source series at the specified time difference.
Recherche dans les scripts pour "accumulation"
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.
═════════════════════════════════════════════════════════════════════════
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.
Market Regime | NY Session Killzones Indicator [ApexLegion]Market Regime | NY Session Killzones Indicator
Introduction and Theoretical Background
The Market Regime | NY Session Killzones indicator is designed exclusively for New York market hours (07:00-16:00 ET). Unlike universal indicators that attempt to function across disparate global sessions, this tool employs session-specific calibration to target the distinct liquidity characteristics of the NY trading day: Pre-Market structural formation (08:00-09:30), the Morning breakout window (09:30-12:00), and the Afternoon Killzone (13:30-16:00)—periods when institutional order flow exhibits the highest concentration and most definable technical structure. By restricting its operational scope to these statistically significant time windows, the indicator focuses on signal relevance while filtering the noise inherent in lower-liquidity overnight or extended-hours trading environments.
I. TECHNICAL RATIONALE: THE PRINCIPLE OF CONTEXTUAL FUSION
1. The Limitation of Acontextual Indicators
Traditional technical indicators often fail because they treat every bar and every market session equally, applying static thresholds (e.g., RSI > 70) without regard for the underlying market structure or liquidity environment. However, institutional volume and market volatility are highly dependent on the time of day (session) and the prevailing long-term risk environment.
This indicator was developed to address this "contextual deficit" by fusing three distinct yet interdependent analytical layers:
• Time and Structure (Macro): Identifying high-probability trading windows (Killzones) and critical structural levels (Pre-Market Range, PDH/PDL).
• Volatility and Scoring (Engine): Normalizing intraday momentum against annual volatility data to create an objective, statistically grounded AI Score.
• Risk Management (Execution): Implementing dynamic, volatility-adjusted Stop Loss (SL) and Take Profit (TP) parameters based on the Average True Range (ATR).
2. The Mandate for 252-Day Normalization (Z-Score)
What makes this tool unique is its 252-day Z-Score normalization engine that transforms raw momentum readings into statistically grounded probability scores, allowing the same indicator to deliver consistent, context-aware signals across any timeframe—from 1-minute scalping to 1-hour swing trades—without manual recalibration.
THE PROBLEM OF SCALE INVARIANCE
A high Relative Strength Index (RSI) reading on a 1-minute chart has a completely different market implication than a high RSI reading on a Daily chart. Simple percentage-based thresholds (like 70 or 30) do not provide true contextual significance. A sudden spike in momentum may look extreme on a 5-minute chart, but if it is statistically insignificant compared to the overall volatility of the last year, it may be a poor signal.
THE SOLUTION: CROSS-TIMEFRAME Z-SCORE NORMALIZATION
This indicator utilizes the Pine Script function request.security to reference the Daily timeframe for calculating the mean (μ) and standard deviation (σ) of a momentum oscillator (RSI) over the past 252 trading days (one year).
The indicator then calculates the Z-Score (Z) for the current bar's raw momentum (x): Z = (x - μ) / σ
Core Implementation: float raw_rsi = ta.rsi(close, 14) // x
= request.security(syminfo.tickerid, "D",
, // σ (252 days)
lookahead=barmerge.lookahead_on)
float cur_rsi_norm = d_rsi_std != 0 ? (raw_rsi - d_rsi_mean) / d_rsi_std : 0.0 // Z
This score provides an objective measurement of current intraday momentum significance by evaluating its statistical extremity against the yearly baseline of daily momentum. This standardized approach provides the scoring engine with consistent, global contextual information, independent of the chart's current viewing timeframe.
II. CORE COMPONENTS AND TECHNICAL ANALYSIS BREAKDOWN
1. TIME AND SESSION ANALYSIS (KILLZONES AND BIAS)
The indicator visually segments the trading day based on New York (NY) trading sessions, aligning the analysis with periods of high institutional liquidity events.
Pre-Market (PRE)
• Function: Defines the range before the core market opens. This range establishes structural support and resistance levels (PMH/PML).
• Technical Implementation: Uses a dedicated Session input (ny_pre_sess). The High and Low values (pm_h_val/pm_l_val) within this session are stored and plotted for structural reference.
• Smart Extension Logic: PMH/PML lines are automatically extended until the next Pre-Market session begins, providing continuous support/resistance references overnight.
NY Killzones (AM/PM)
• Function: Highlights high-probability volatility windows where institutional liquidity is expected to be highest (e.g., NY open, lunch, NY close).
• Technical Implementation: Separate session inputs (kz_ny_am, kz_ny_pm) are utilized to draw translucent background fills, providing a clear visual cue for timing.
Market Regime Bias
• Function: Determines the initial directional premise for the trading day. The bias is confirmed when the price breaks either the Pre-Market High (PMH) or the Pre-Market Low (PML).
• Technical Implementation: Involves the comparison of the close price against the predefined structural levels (check_h for PMH, check_l for PML). The variable active_bias is set to Bullish or Bearish upon confirmed breakout.
Trend Bar Coloring
• Function: Applies a visual cue to the bars based on the established regime (Bullish=Cyan, Bearish=Red). This visual filter helps mitigate noise from counter-trend candles.
• Technical Implementation: The Pine Script barcolor() function is tied directly to the value of the determined active_bias.
2. VOLATILITY NORMALIZED SCORING ENGINE
The internal scoring mechanism accumulates points from multiple market factors to determine the strength and validity of a signal. The purpose is to apply a robust filtering mechanism before generating an entry.
The score accumulation logic is based on the following factors:
• Market Bias Alignment (+3 Points): Points are awarded for conformance with the determined active_bias (Bullish/Bearish).
• VWAP Alignment (+2 Points): Assesses the position of the current price relative to the Volume-Weighted Average Price (VWAP). Alignment suggests conformity with the average institutional transaction price.
• Volume Anomaly (+2 Points): Detects a price move accompanied by an abnormally high relative volume (odd_vol_spike). This suggests potential institutional participation or significant order flow.
• VIX Integration (+2 Points): A score derived from the CBOE VIX index, assessing overall market stability and stress. Stable VIX levels add points, while high VIX levels (stress regimes) remove points or prevent signal generation entirely.
• ML Probability Score (+3 Points): This is the core predictive engine. It utilizes a Log-Manhattan Distance Kernel to compare the current market state against historical volatility patterns. The script implements a Log-linear distance formula (log(1 + |Δ|) ). This approach mathematically dampens the impact of extreme volatility spikes (outliers), ensuring that the similarity score reflects true structural alignment rather than transient market noise.
Core Technical Logic (Z-Score Normalization)
float cur_rsi_norm = d_rsi_std != 0 ? (raw_rsi - d_rsi_mean) / d_rsi_std : 0.0
• Technical Purpose: This line calculates the Z-Score (cur_rsi_norm) of the current momentum oscillator reading (raw_rsi) by normalizing it against the mean (d_rsi_mean) and standard deviation (d_rsi_std) derived from 252 days of Daily momentum data. If the standard deviation is zero (market is perfectly flat), it safely returns 0.0 to prevent division by zero runtime errors. This allows the AI's probability score to be based on the current signal's significance within the context of the entire trading year.
3. EXECUTION AND RISK MANAGEMENT (ATR MODEL)
The indicator utilizes the Average True Range (ATR) volatility model. This helps risk management scale dynamically with market volatility by allowing users to define TP/SL distances independently based on the current ATR.
Stop Loss Multiplier (sl_mult)
• Function: Sets the Stop Loss (SL) distance as a configurable multiple of the current ATR (e.g., 1.5 × ATR).
• Technical Logic: The price level is calculated as: last_sl_price := close - (atr_val * sl_mult). The mathematical sign is reversed for short trades.
Take Profit Multiplier (tp_mult)
• Function: Sets the Take Profit (TP) distance as a configurable multiple of the current ATR (e.g., 3.0 × ATR).
• Technical Logic: The price level is calculated as: last_tp_price := close + (atr_val * tp_mult). The mathematical sign is reversed for short trades.
Structural SL Option
• Function: Provides an override to the ATR-based SL calculation. When enabled, it forces the Stop Loss to the Pre-Market High/Low (PMH/PML) level, aligning the stop with a key institutional structural boundary.
• Technical Logic: The indicator checks the use_struct_sl input. If true, the calculated last_sl_price is overridden with either pm_h_val or pm_l_val, dependent on the specific trade direction.
Trend Continuation Logic
• Function: Enables signal generation in established, strong trends (typically in the Afternoon session) based on follow-through momentum (a new high/low of the previous bar) combined with a high Signal Score, rather than exclusively relying on the initial PMH/PML breakout.
• Technical Logic: For a long signal, the is_cont_long logic specifically requires checks like active_bias == s_bull AND close > high , confirming follow-through momentum within the established regime.
Smart Snapping & Cleanup (16:00 Market Close)
• Function: To maintain chart cleanliness, all trade boxes (TP/SL), AI Prediction zones, Killzone overlays (NY AM/PM), and Liquidity lines (PDH/PDL) are automatically "snapped" and cut off precisely at 16:00 NY Time (Market Close).
• Technical Logic: When is_market_close condition is met (hour == 16 and minute == 0), the script executes cleanup logic that:
◦ Closes active trades and evaluates final P&L
◦ Snaps all TP/SL box widths to current bar
◦ Truncates AI Prediction ghost boxes at market close
◦ Cuts off NY AM/PM Killzone background fills
◦ Terminates PDH/PDL line extensions
◦ Prevents visual clutter from extending into post-market sessions
4. LIQUIDITY AND STRUCTURAL ANALYSIS
The indicator plots key structural levels that serve as high-probability magnet zones or areas of potential liquidity absorption.
• Pre-Market High/Low (PMH/PML): These are the high and low established during the configured pre-market session (ny_pre_sess). They define the primary structural breakout level for the day, often serving as the initial market inflection point or the key entry level for the morning session.
• PDH (Previous Day High): The high of the calendar day immediately preceding the current bar. This represents a key Liquidity Pool; large orders are often placed above this level, making it a frequent target for stop hunts or liquidity absorption by market makers.
• PDL (Previous Day Low): The low of the calendar day immediately preceding the current bar. This also represents a key Liquidity Pool and a high-probability reversal or accumulation point, particularly during the Killzones.
FIFO Array Management
The indicator uses FIFO (First-In-First-Out) array structures to manage liquidity lines and labels, automatically deleting the oldest objects when the count exceeds 500 to comply with drawing object limits.
5. AI PREDICTION BOX (PREDICTIVE MODEL)
Function: Analyzes AI scores and volatility to project predicted killzone ranges and duration with asymmetric directional bias.
A. DIRECTIONAL BIAS (ASYMMETRIC EXPANSION)
The prediction model calculates directional probability using the ML kernel's 252-day Normalized RSI (Z-Score) and Relative Volume (RVOL). The prediction box dynamically adjusts its range based on this probability to provide immediate visual feedback on high-probability direction.
Bullish Scenario (ml_prob > 1.0):
• Upper Range: Expands significantly (1.5x multiplier) to show the aggressive upside target
• Lower Range: Tightens (0.5x multiplier) to show the invalidation level
• Visual Intent: The box is visibly skewed upward, immediately communicating bullish bias without requiring numerical analysis.
Bearish Scenario (ml_prob < -1.0):
• Upper Range: Tightens (0.5x multiplier) to show the invalidation level
• Lower Range: Expands significantly (1.5x multiplier) to show the aggressive downside target
• Visual Intent: The box is visibly skewed downward, immediately communicating bearish bias.
Neutral Scenario (-1.0 < ml_prob < 1.0):
Both ranges use balanced multipliers, creating a symmetrical box that indicates uncertainty.
B. DYNAMIC VOLATILITY BOOSTER (SESSION-BASED ADAPTATION)
The prediction box adjusts its volatility multiplier based on the current session and market conditions to account for intraday volatility patterns.
AM Session (Morning: 07:00-12:00):
• Base Multiplier: 1.0x (Neutral Base)
• Logic: Morning sessions often contain false breakouts and noise. The base multiplier starts neutral to avoid over-projecting during consolidation.
• Trend Booster: Multiplier jumps to 1.5x when:
Price > London Session Open AND AI is Bullish (ml_prob > 0), OR
Price < London Session Open AND AI is Bearish (ml_prob < 0)
• Logic: When the London trend (typically 03:00-08:00 NY time) aligns with the AI model's directional conviction, the indicator aggressively targets higher volatility expansion. This filters for "institutional follow-through" rather than random morning chop.
PM Session (Afternoon: 13:00-16:00):
• Fixed Multiplier: 1.8x
• Logic: The PM session, particularly the 13:30-16:00 ICT Silver Bullet window, often contains the "True Move" of the day. A higher baseline multiplier is applied to emphasize this session's significance over morning noise.
Safety Floor:
A minimum range of 0.2% of the current price is enforced regardless of volatility conditions.
• Purpose: Maintains the prediction box visibility during extreme low-volatility consolidation periods where ATR might collapse to near-zero values.
Volatility Clamp Protection:
Maximum volatility is capped at three times the current ATR value. During flash crashes, circuit breaker halts, or large overnight gaps, raw volatility calculations can spike to extreme levels. This clamp prevents prediction boxes from expanding to unrealistic widths.
Technical Implementation:
f_get_ai_multipliers(float _prob) =>
float _abs_prob = math.abs(_prob)
float _range_mult = 1.0
float _dur_mult = 1.0
if _abs_prob > 30
_range_mult := 1.8
else if _abs_prob > 10
_range_mult := 1.2
else
_range_mult := 0.7
C. PRACTICAL INTERPRETATION
• Wide Upper Range + Tight Lower Range: Strong bullish conviction. The model expects significant upside with limited downside risk.
• Tight Upper Range + Wide Lower Range: Strong bearish conviction. The model expects significant downside with limited upside.
• Symmetrical Range: Neutral/uncertain market. Wait for directional confirmation before entry.
• Large Box (Extended Duration): High-confidence prediction expecting sustained movement.
• Small Box (Short Duration): Low-confidence or choppy conditions. Expect quick resolution.
III. PRACTICAL USAGE GUIDE: METHODOLOGY AND EXECUTION
A. ESTABLISHING TRADING CONTEXT (THE THREE CHECKS)
The primary goal of the dashboard is to filter out low-probability trade setups before they occur.
• Timeframe Selection: Although the core AI is normalized to the Daily context, the indicator performs optimally on intraday timeframes (e.g., 5m, 15m) where session-based volatility is most pronounced.
• PHASE Check (Timing): Always confirm the current phase. The highest probability signals typically occur within the visually highlighted NY AM/PM Killzones because this is when institutional liquidity and volume are at their peak. Signals outside these zones should be treated with skepticism.
• MARKET REGIME Check (Bias): Ensure the signal (BUY/SELL arrow) aligns with the established MARKET REGIME bias (BULLISH/BEARISH). Counter-bias signals are technically allowed if the score is high, but they represent a higher risk trade.
• VIX REGIME Check (Risk): Review the VIX REGIME for overall market stress. Periods marked DANGER (high VIX) indicate elevated volatility and market uncertainty. During DANGER regimes, reducing position size or choosing a wider SL Multiplier is advisable.
B. DASHBOARD INTERPRETATION (THE REAL-TIME STATUS DISPLAY)
The indicator features a non-intrusive dashboard that provides real-time, context-aware information based on the core analytical engines.
PHASE: (PRE-MARKET, NY-AM, LUNCH, NY-PM)
• Meaning: Indicates the current institutional session time. This is derived from the customizable session inputs.
• Interpretation: Signals generated during NY-AM or NY-PM (Killzones) are generally considered higher-probability due to increased institutional participation and liquidity.
MARKET REGIME: (BULLISH, BEARISH, NEUTRAL)
• Meaning: The established directional bias for the trading day, confirmed by the price breaking above the Pre-Market High (PMH) or below the Pre-Market Low (PML).
• Interpretation: Trading with the established regime (e.g., taking a BUY signal when the regime is BULLISH) is the primary method. NEUTRAL indicates that the PMH/PML boundary has not yet been broken, suggesting market ambiguity.
VIX REGIME: (STABLE, DANGER)
• Meaning: A measure of overall market stress and stability, based on the CBOE VIX index integration. The thresholds (20.0 and 35.0 default) are customizable by the user.
• Interpretation: STABLE indicates stable volatility, favoring momentum trades. DANGER (VIX > 35.0) indicates extreme stress; signals generated in this environment require caution and often necessitate smaller position sizing.
SIGNAL SCORE: (0 to 10+ Points)
• Meaning: The accumulated score derived from the VOLATILITY NORMALIZED AI SCORING ENGINE, factoring in bias, VWAP alignment, volume, and the Z-Score probability.
• Interpretation: The indicator generates a signal when this score meets or exceeds the Minimum Entry Score (default 3). A higher score (e.g., 7+) indicates greater statistical confluence and a stronger potential entry.
AI PROBABILITY: (Bull/Bear %)
• Meaning: Directional probability derived from the ML kernel, expressed as a percentage with Bull/Bear label.
• Interpretation: Higher absolute values (>20%) indicate stronger directional conviction from the ML model.
LIVE METRICS SECTION:
• STATUS: Shows current trade state (LONG, SHORT, or INACTIVE)
• ENTRY: Displays the entry price for active trades
• TARGET: Shows the calculated Take Profit level
• ROI | KILL ZONE:
◦ For Active Trades: Displays real-time P&L percentage during NY session hours.
◦ At Market Close (16:00 NY): Since this is a NY session-specific indicator, any active position is automatically evaluated and closed at 16:00. The final result (VALIDATED or INVALIDATED) is determined based on whether the trade reached profit or loss at market close.
◦ Result Persistence: The killzone result (VALIDATED/INVALIDATED) remains displayed on the dashboard until the next NY AM KILLZONE session begins, providing a clear performance reference for the previous trading day.
Note: If a trade is still trending at 16:00, it will be force-closed and evaluated at that moment, as the indicator operates strictly within NY trading hours.
C. SIGNAL GENERATION AND ENTRY LOGIC
The indicator generates signals based on two distinct technical setups, both of which require the accumulated SIGNAL SCORE to be above the configured Minimum Entry Score.
Breakout Entry
• Trigger Condition: Price closes beyond the Pre-Market High (PMH) or Low (PML).
• Rationale: This setup targets the initial directional movement for the day. A breakout confirms the institutional bias by decisively breaking the first major structural boundary, making the signal high-probability.
Continuation Entry
• Trigger Condition: The market is already in an established regime (e.g., BULLISH), and the price closes above the high (or below the low) of the previous bar, while the SIGNAL SCORE remains high. Requires the Allow Trend Continuation parameter to be active.
• Rationale: This setup targets follow-through trades, typically in the afternoon session, capturing momentum after the morning's direction has been confirmed. This filters for sustainability in the established trend.
Execution: Execute the trade immediately upon the close of the bar that prints the BUY or SELL signal arrow.
D. MANAGING RISK AND EXITS
1. RISK PARAMETER SELECTION
The indicator immediately draws the dynamic TP/SL zones upon entry.
• Volatility-Based (Recommended Default): By setting the SL Multiplier (e.g., 1.5) and the TP Multiplier (e.g., 3.0), the indicator enforces a constant, dynamically sized risk-to-reward ratio (e.g., 1:2 in this example). This helps that risk management scales proportionally with the current market volatility (ATR).
• Structural Override: Selecting the Use Structural SL parameter fixes the stop-loss not to the ATR calculation, but to the more significant structural level of the PMH or PML. This is utilized by traders who favor institutional entry rules where the stop is placed behind the liquidity boundary.
2. EXIT METHODS
• Hard Exit: Price hits the visual TP or SL box boundary.
• Soft Exit (Momentum Decay Filter): If the trade is active and the SIGNAL SCORE drops below the Exit Score Threshold (default 3), it indicates that the momentum supporting the trade has significantly collapsed. This serves as a momentum decay filter, prompting the user to consider a manual early exit even if the SL/TP levels have not been hit, thereby preserving capital during low-momentum consolidation.
• Market Close Auto-Exit: At 16:00 NY time, any active trade is automatically closed and classified as VALIDATED (profit) or INVALIDATED (loss) based on current price vs. entry price.
IV. PARAMETER REFERENCE AND CONFIGURATION
A. GLOBAL SETTINGS
• Language (String, Default: English): Selects the language for the dashboard and notification text. Options: English, Korean, Chinese, Spanish, Portuguese, Russian, Ukrainian, Vietnamese.
B. SESSION TIMES (3 BOX SYSTEM)
• PRE-MARKET (Session, Default: 0800-0930): Defines the session range used for Pre-Market High/Low (PMH/PML) structural calculation.
• REGULAR (Morning) (Session, Default: 0930-1200): Defines the core Morning trading session.
• AFTERNOON (PM) (Session, Default: 1300-1600): Defines the main Afternoon trading session.
• Timezone (String, Default: America/New_York): Sets the timezone for all session and time-based calculations.
C. NY KILLZONES (OVERLAYS)
• Show NY Killzones (Bool, Default: True): Toggles the translucent background fills that highlight high-probability trading times (Killzones).
• NY AM Killzone (Session, Default: 0700-1000): Defines the specific time window for the first key liquidity surge (Open overlap).
• NY PM Killzone (Session, Default: 1330-1600): Defines the afternoon liquidity window, aligned with the ICT Silver Bullet and PM Trend entry timing.
• Allow Entry in Killzones (Bool, Default: True): Enables or disables signal generation specifically during the defined Killzone hours.
• Activate AI Prediction Box (Bool, Default: True): Toggles the drawing of the predicted target range boxes on the chart.
D. CORE SCORING ENGINE
• Minimum Entry Score (Int, Default: 3): The lowest accumulated score required for a Buy/Sell signal to be generated and plotted.
• Allow Trend Continuation (Bool, Default: True): Enables the secondary entry logic that fires signals based on momentum in an established trend.
• Force Ignore Volume (Bool, Default: False): Overrides the volume checks in the scoring engine. Useful for markets where volume data is unreliable or nonexistent.
• Force Show Signals (Ignore Score) (Bool, Default: False): Debug mode that displays all signals regardless of score threshold.
• Integrate CBOE:VIX (Bool, Default: True): Enables the connection to the VIX index for market stress assessment.
• Stable VIX (<) (Float, Default: 20.0): VIX level below which market stress is considered low (increases score).
• Stress VIX (>) (Float, Default: 35.0): VIX level above which market stress is considered high (decreases score/flags DANGER).
• Use ML Probability (Bool, Default: True): Activates the volatility-normalized AI Z-Score kernel. Disabling this removes the cross-timeframe normalization filter.
• Max Learning History (Int, Default: 2000): Maximum number of bars stored in the ML training arrays.
• Normalization Lookback (252 Days) (Int, Default: 252): The number of DAILY bars used to calculate the Z-Score mean and standard deviation (representing approximately 1 year of data).
E. RISK MANAGEMENT (ATR MODEL)
• Use Structural SL (Bool, Default: False): Overrides the ATR-based Stop Loss distance to use the Pre-Market High/Low as the fixed stop level.
• Stop Loss Multiplier (x ATR) (Float, Default: 1.5): Defines the Stop Loss distance in multiples of the current Average True Range (ATR).
• Take Profit Multiplier (x ATR) (Float, Default: 3.0): Defines the Take Profit distance in multiples of the current Average True Range (ATR).
• Exit Score Threshold (<) (Int, Default: 3): The minimum score below which an active trade is flagged for a Soft Exit due to momentum collapse.
F. VISUAL SETTINGS
• Show Dashboard (Bool, Default: True): Toggles the real-time data panel.
• Show NY Killzones (Bool, Default: True): Toggles killzone background fills.
• Show TP/SL Zones (Bool, Default: True): Toggles the drawing of Take Profit and Stop Loss boxes.
• Show Pre-Market Extensions (Bool, Default: True): Extends PM High/Low lines across the entire chart for support/resistance reference.
• Activate AI Prediction Box (Bool, Default: True): Enable or disable the predictive range projection.
• Light Mode Optimization (Bool, Default: True): Toggles dashboard and plot colors for optimal visibility on white (light) chart backgrounds.
• Enforce Trend Coloring (Bool, Default: True): Forces candle colors based on Market Regime (Bullish=Cyan, Bearish=Pink) to emphasize trend direction.
• Label Size (String, Default: Normal): Options: Tiny, Small, Normal.
G. LIQUIDITY POOLS (PDH/PDL)
• Show Liquidity Lines (Bool, Default: True): Toggles the display of the Previous Day High (PDH) and Low (PDL) lines.
• Liquidity High Color (Color, Default: Green): Color setting for the PDH line.
• Liquidity Low Color (Color, Default: Red): Color setting for the PDL line.
🔔 ALERT CONFIGURATION GUIDE
The indicator is equipped with specific alert conditions.
How to Set Up an Alert:
Click the "Alert" (Clock icon) in the top TradingView toolbar.
Select "Market Regime NY Session " from the Condition dropdown menu.
Choose one of the specific trigger conditions below depending on your strategy:
🚀 Available Alert Conditions
1. BUY (Long Entry)
Trigger: Fires immediately when a confirmed Bullish Setup is detected.
Conditions: Market Bias is Bullish (or valid Continuation) + Signal Score ≥ Minimum Entry Score.
Usage: Use this alert to open new Long positions or close existing Short positions.
2. SELL (Short Entry)
Trigger: Fires immediately when a confirmed Bearish Setup is detected.
Conditions: Market Bias is Bearish (or valid Continuation) + Signal Score ≥ Minimum Entry Score.
Usage: Use this alert to open new Short positions or close existing Long positions.
V. IMPORTANT TECHNICAL LIMITATIONS
⚠️ Intraday Only (Timeframe Compatibility)
This indicator is strictly designed for Intraday Timeframes (1m to 4h).
Daily/Weekly Charts: The session logic (e.g., "09:30-16:00") cannot function on Daily bars because a single bar encompasses the entire session. Session boxes, TP/SL zones, and AI prediction boxes will NOT draw on the Daily timeframe. Only the PDH/PDL liquidity lines remain visible on Daily charts. This is expected behavior, not a limitation.
Maximum Supported Timeframe: All visual components (session boxes, killzone overlays, TP/SL zones, AI prediction boxes) are displayed up to the 4-hour timeframe. Above this timeframe, only PDH/PDL lines and the dashboard remain functional.
⚠️ Drawing Object Limit (Max 500)
A single script can display a maximum of 500 drawing objects (boxes/lines) simultaneously.
On lower timeframes (e.g., 1-minute), where many signals and session boxes are generated, older history (typically beyond 10-14 days) will automatically disappear to make room for new real-time data.
For deeper historical backtesting visualization, switch to higher timeframes (e.g., 15m, 1h).
The indicator implements FIFO array management to comply with this limit while maintaining the most recent and relevant visual data.
VI. PRACTICAL TRADING TIPS AND BEST PRACTICES
• Killzone Confirmation: The highest statistical validity is observed when a high-score signal occurs directly within a visible NY AM/PM Killzone. Use the Killzones as a strict time filter.
• Liquidity Awareness (PDH/PDL): Treat the Previous Day High (PDH) and Low (PDL) lines as magnets. If your dynamic Take Profit (TP) is placed just above PDH, consider adjusting your target slightly below PDH or utilizing the Soft Exit, as liquidity absorption at these levels often results in sudden, sharp reversals that stop out a trade just before the target is reached.
• VIX as a Position Sizer: During DANGER VIX regimes, the resulting high volatility means the ATR value will be large. It is prudent to either reduce the SL Multiplier or, more commonly, reduce the overall position size to maintain a constant currency risk exposure per trade.
• Continuation Filter Timing: Trend Continuation signals are most effective during the Afternoon (PM) session when the morning's directional breakout has had time to establish a strong, clear, and sustainable trend. Avoid using them in the initial AM session when the direction is still being contested.
• 16:00 Market Close Rule: All trades, boxes, and lines are automatically cleaned up at 16:00 NY time. This prevents overnight chart clutter and maintains visual clarity.
VII. DISCLAIMER & RISK WARNINGS
• Educational Purpose Only
This indicator, including all associated code, documentation, and visual outputs, is provided strictly for educational and informational purposes. It does not constitute financial advice, investment recommendations, or a solicitation to buy or sell any financial instruments.
• No Guarantee of Performance
Past performance is not indicative of future results. All metrics displayed on the dashboard (including "ROI" and trade results) are theoretical calculations based on historical data. These figures do not account for real-world trading factors such as slippage, liquidity gaps, spread costs, or broker commissions.
• High-Risk Warning
Trading cryptocurrencies, futures, and leveraged financial products involves a substantial risk of loss. The use of leverage can amplify both gains and losses. Users acknowledge that they are solely responsible for their trading decisions and should conduct independent due diligence before executing any trades.
• Software Limitations
The software is provided "as is" without warranty. Users should be aware that market data feeds on analysis platforms may experience latency or outages, which can affect signal generation accuracy.
SPX Iron Fly Session TrackerOverview
This indicator provides visual tracking for iron fly option structures designed for SPX 0-day-to-expiration (0DTE) intraday trading. It implements a two-phase position management system that adapts to different market conditions throughout the trading day.
This is a visualization and tracking tool only. It does not execute trades, access real options data, or calculate actual profit and loss. All displayed positions are theoretical representations based on underlying price movement.
Strategy Goal and Context
The Core Objective:
The strategy aims to have SPX price expire within your iron fly positions at end of day. When price expires inside a fly's profit zone (between the wings), that position captures maximum premium. The challenge is that price moves throughout the day, so static positioning rarely succeeds.
The Solution: Active Management
Rather than setting positions and hoping price cooperates, this approach continuously manages and repositions flies to keep price centered within your profit zones. As SPX drifts during the trading session, you add new flies at current price levels and close flies that price has moved away from.
The Goal: Multiple Profitable Expirations
By session end, you want as many flies as possible to have price expire within their center zones. This requires:
Adding new flies as price moves away from existing positions
Closing flies when price crosses beyond their optimal range
Building layered coverage in the afternoon to increase probability of capture
Adapting wing widths to time of day and volatility
The Reality: Capital and Time Intensive
This is not a passive strategy. Successful implementation requires:
Substantial capital (each fly requires margin, multiple flies compound this)
Active monitoring throughout trading sessions
Quick decision-making as positions trigger
Multiple position adjustments per session
Disciplined adherence to management rules
How This Indicator Helps:
For backtesting:
Use replay mode to study how positions would have managed on historical sessions
Test different parameter combinations to find optimal settings
Observe position behavior during various market conditions
Understand timing and frequency of position adds and closes
Validate whether your capital can support the required position count
For live session support:
Real-time visual tracking shows current position coverage
Alerts notify you immediately when new positions should be added
Position closure alerts help you manage exits promptly
Reference strike tracking shows where you're measuring movement from
History table provides audit trail of all position activity
The indicator handles the complex tracking and rule application, allowing you to focus on execution and risk management.
Key Use Cases
1. Replay Mode - Backtest and Study
Use TradingView's replay feature to validate the strategy on historical sessions:
Step through past SPX sessions bar-by-bar
See exactly when positions would have opened and closed
Count how many flies would have expired profitably
Analyze different parameter settings on the same historical data
Study position behavior during trending vs ranging conditions
Calculate approximate capital requirements for your setup
Refine your parameters before risking real capital
2. Live Session Alerts
Set up real-time notifications for active trading sessions:
Get alerted immediately when new positions trigger
Receive notifications when positions close
Alerts include strike level, wing width, and closure reason
Works on mobile, desktop, email, or webhook
Never miss a position signal during active trading
Maintain awareness even when away from screens briefly
3. Fully Customizable Parameters
Adapt every aspect to your risk tolerance and capital:
Adjust trigger distances for more or fewer position adds
Modify wing widths for different volatility environments
Change session timing to match your trading schedule
Set maximum concurrent positions to your capital limits
Fine-tune spacing to match available strike increments
Iron Fly Structure
An iron fly is a neutral options strategy with four legs:
- Short 1 ATM Call
- Short 1 ATM Put
- Long 1 OTM Call (upper wing protection)
- Long 1 OTM Put (lower wing protection)
The structure creates a defined risk zone. Maximum profit occurs when price expires at the center strike. Loss increases as price moves toward the wings (breakeven points). Maximum loss is defined and occurs beyond the wings.
Expiration Goal:
You want SPX to close inside the fly's wings. If SPX expires at the strike, you capture maximum premium. If SPX expires between the strike and either wing, you still profit (reduced). If SPX expires beyond the wings, you realize a loss (but it's defined and limited by the wings).
Two-Phase Management System
The indicator tracks positions across two distinct trading phases with different management rules:
Phase 1: TWO_GLASS - Morning Session (Default 10am-1pm ET)
Conservative positioning with active repositioning:
- Trigger new positions when price moves 7.5 points from reference strike (configurable)
- Maintain maximum 2 concurrent positions (configurable)
- 10-point spacing between position strikes (configurable)
- 40-point wing width (configurable)
- Exit rule: When two positions are active and price crosses to one strike level, close the OTHER position
This phase uses a "follow the price" approach. You're not trying to stack multiple positions yet - you're maintaining one or two flies centered on wherever price currently is. As price drifts, you add a new fly at the current level and close the old one when price moves too far away.
Phase 2: THREE_GLASS - Afternoon Session (Default 1pm-4pm ET)
Accumulation mode with layered coverage:
- Trigger new positions every 2.5 points of price movement (configurable)
- Maintain maximum 6 concurrent positions (configurable)
- 5-point spacing between strikes (configurable)
- 20-point wings early, reducing to 10 points after 3pm (configurable)
- Exit rule: Positions only close when price reaches wing extremes
This phase builds a stacked profit zone. Instead of swapping positions, you accumulate multiple flies as price moves. The goal is to have several flies active at expiration, creating a wider net to capture price. Tighter spacing and more frequent triggers create this layered coverage.
Why Two Different Phases?
Morning (Phase 1):
Earlier in the day, price has more time to move substantially. Maintaining many concurrent positions is riskier because price could trend and hit multiple wings. The strategy uses selective positioning with wider wings and active replacement.
Afternoon (Phase 2):
Closer to expiration, price movements typically compress. Time for large moves decreases. The strategy shifts to accumulation, building a net of positions to increase probability that final expiration price falls within at least one (ideally several) of your flies. Tighter wings and more positions become appropriate.
Exit Mechanisms
Strike Cross Exit (Phase 1 Only)
When two positions are active, if price moves to or beyond one position's strike level, the OTHER position closes. This keeps your coverage centered on current price action rather than maintaining positions price has moved away from.
Example: Flies at 5900 and 5910 are open. Price moves to 5910. The fly at 5900 closes because price has moved to the 5910 level. You're now positioned at current price (5910) rather than maintaining coverage at old price (5900).
Wing Extreme Exit (Both Phases)
Any position closes immediately when price touches its upper or lower wing boundary. This represents the breakeven/maximum loss point, so the position is closed to prevent further deterioration.
Dynamic Wing Adjustment
Wing widths automatically adjust based on time of day:
- Phase 1 (Morning): 40 points (customizable)
- Phase 2 Early (1pm-3pm): 20 points (customizable)
- Phase 2 Late (3pm-4pm): 10 points (customizable)
This progressive tightening reflects decreasing price movement potential as expiration approaches. Wider wings earlier provide more protection when price could move substantially. Tighter wings later allow more precise positioning when price movements typically compress.
All values are fully adjustable to match your risk parameters and observed market volatility.
Customization Guide
Every parameter can be modified to suit your trading style, risk tolerance, and capital:
Session Timing
- TWO_GLASS Start Hour: When Phase 1 begins (default: 10am ET)
- THREE_GLASS Start Hour: When Phase 2 begins (default: 1pm ET)
- Wing Width Change Hour: When wings tighten (default: 3pm ET)
- Session End Hour: When tracking stops (default: 4pm ET)
Phase 1 Parameters (Fully Adjustable)
- Trigger Distance: How far price must move from reference strike to add new position (default: 7.5, range: 0.1+)
- Fly Spacing: Distance between position strikes (default: 10, range: 1.0+)
- Wing Width: Distance from strike to wings (default: 40, range: 5.0+)
- Max Flies: Maximum concurrent positions (default: 2, range: 1-10)
Phase 2 Early Parameters (Fully Adjustable)
- Trigger Distance: Movement needed to add new position (default: 2.5, range: 0.1+)
- Fly Spacing: Distance between strikes (default: 5, range: 1.0+)
- Wing Width: Strike to wing distance (default: 20, range: 5.0+)
- Max Flies: Maximum concurrent positions (default: 6, range: 1-20)
Phase 2 Late Parameters
- Wing Width: Reduced width after 3pm (default: 10, range: 5.0+)
General Settings
- Strike Rounding: Round strikes to nearest multiple (default: 5.0, range: 1.0+)
- Bars Before Check: Bars to wait before allowing closure (default: 2, prevents premature exits)
Display Options
- Show History Table: Toggle detailed position log (default: on)
- History Table Rows: Number of positions displayed (default: 15, range: 5-30)
Alert Settings
- Enable Alerts: Toggle notifications for opens/closes (default: on)
How to Use
For Backtesting in Replay Mode:
Select a historical SPX trading session
Apply indicator to 1-5 minute timeframe
Configure your preferred parameters
Activate TradingView's replay feature
Play through the session (step-by-step or continuous)
Observe when positions open (green boxes appear)
Watch position closures (boxes turn gray)
Count how many flies would have expired with price inside (green at session end)
Note total number of position adds throughout session
Calculate approximate capital needed (positions × margin per fly)
Test different parameter combinations on same historical data
Study position behavior during trending vs ranging sessions
For Live Trading Sessions:
Apply indicator to SPX on 1-5 minute timeframe
Configure parameters based on your backtest results
Create alerts for "Iron Fly Opened" and "Iron Fly Closed"
Set alert frequency to "Once Per Bar Close"
Choose notification method (popup, mobile app, email, webhook)
Monitor the status table (top-right) for current session and reference strike
Review history table (bottom-right) for position log with timestamps
When alert triggers, use visual cues to manually place actual option orders
Execute position adds and closes as indicated by the tracker
Visual Interpretation:
Green boxes = Active positions (theoretical profit zones)
White lines (Phase 1) / Aqua lines (Phase 2) = Strike levels
Red/Blue dotted lines = Wing boundaries (breakeven/risk limits)
Gray boxes = Closed positions (historical reference)
Current SPX price line = Shows where price is relative to positions
Top-right table = Current session status, reference strike, open/closed counts
Bottom-right table = Complete position history with open/close timestamps
Alert System Details
The indicator generates detailed alert messages for position management:
Position Opened:
- Strike level where fly should be placed
- Wing width (±points from strike)
- Session phase (Phase 1 or Phase 2)
- Alert format example: "Iron Fly OPENED | Strike: 5900 | Wings: ±40 | Session: TWO_GLASS"
Position Closed:
- Strike level of fly being closed
- Closure reason (strike cross, wing extreme, etc.)
- Session phase
- Alert format example: "Iron Fly CLOSED | Strike: 5900 | Reason: Price crossed to lower fly | Session: TWO_GLASS"
Configure alerts once before market open, then receive automatic notifications as positions trigger throughout the trading session.
Parameter Optimization Suggestions
For Higher Volatility Environments:
- Increase trigger distances (e.g., Phase 1: 10-15 points, Phase 2: 3-5 points)
- Widen wing widths (e.g., Phase 1: 50-60 points, Phase 2: 25-30 points early, 15-20 late)
- Increase strike spacing to reduce position frequency
For Lower Volatility Environments:
- Decrease trigger distances (e.g., Phase 1: 5-7 points, Phase 2: 1.5-2 points)
- Tighten wing widths (e.g., Phase 1: 30-35 points, Phase 2: 15-18 points early, 8-10 late)
- Reduce strike spacing for more granular coverage
For Conservative Risk Management:
- Reduce maximum concurrent positions (Phase 1: 1, Phase 2: 3-4)
- Widen wing widths for more breathing room
- Increase bars before check to avoid whipsaws
- Use wider trigger distances to reduce position frequency
For Aggressive Positioning:
- Increase maximum concurrent positions (Phase 2: 8-10)
- Tighten trigger distances for more frequent adds
- Reduce bars before check for faster responses
- Use tighter spacing to create denser coverage
Capital Considerations:
Remember that each fly requires margin. If Phase 2 allows 6 concurrent flies and each requires $10,000 margin, you need $60,000 in available capital just for position requirements, plus additional cushion for adverse movement.
Use replay mode to count maximum concurrent positions that would have occurred on historical sessions with your parameters, then calculate total capital needed.
Practical Application
This tool provides visual guidance and management support. To implement the strategy:
Backtest thoroughly in replay mode first
Validate capital requirements for your parameter settings
Confirm you can actively monitor positions during trading hours
Use displayed positions as reference for manual order placement
Match indicator parameters to your actual option contracts
Account for real-world factors: commissions, slippage, bid-ask spreads, option availability
Implement proper position sizing based on available capital
Set up alerts before market open to catch all signals
Execute actual trades manually in your brokerage platform
Track actual results versus indicator expectations
Important Limitations
Theoretical tracking only - not an automated trading system
No access to real option prices, Greeks, or implied volatility
No profit/loss calculations or risk metrics
Does not account for time decay (theta), delta, gamma, vega changes
Assumes continuous price action - gaps or halts not handled
Designed for 0DTE SPX options - not suitable for other timeframes or instruments
Assumes option availability at all strike levels - may not reflect reality
Does not model actual option bid/ask spreads or liquidity
Assumes instant execution at desired strikes - slippage not considered
Historical replay shows theoretical behavior only - actual market conditions may differ
Does not adjust for changing implied volatility throughout session
Position count and timing may not match what's executable in real markets
Capital and Time Requirements
This strategy is resource-intensive:
Capital Requirements:
Each iron fly requires margin (varies by broker and strike width)
Multiple concurrent positions multiply capital needs
Example: 6 flies at $10,000 each = $60,000 minimum
Additional cushion needed for adverse movement
Pattern Day Trader rules may apply (requires $25,000 minimum)
Time Requirements:
Active monitoring during trading hours (typically 10am-4pm ET)
Quick response to position add/close signals
Multiple position adjustments per session possible
Cannot be passive or set-and-forget
Requires ability to place orders promptly when alerted
Use replay mode to understand the commitment level before attempting live implementation.
Risk Considerations
Iron fly trading involves substantial risk. This indicator provides visualization and management support only - it does not constitute financial advice or trading recommendations.
Options trading can result in total loss of capital. The indicator's theoretical positions do not reflect actual trading results. Backtest analysis and historical visualization do not guarantee similar future outcomes. Multiple concurrent positions multiply both profit potential and loss risk.
Always conduct independent research, understand all risks, validate capital requirements, and never trade with funds you cannot afford to lose. Consider starting with paper trading to validate execution capability before risking real capital.
Technical Notes
The indicator uses price-based triggers only. It does not:
Connect to options data feeds
Calculate theoretical option values or Greeks
Execute trades automatically
Provide specific trading signals or recommendations
Account for option-specific factors (implied volatility, time decay, bid/ask spreads)
All displayed information represents theoretical position placement based solely on underlying SPX price movement and user-configured parameters. The tool helps visualize the management framework but requires the trader to handle all actual execution and risk management decisions.
This is an educational and analytical tool for understanding iron fly position management concepts. It requires active interpretation, backtesting validation, and manual implementation by the user.
Whale Hunter PRO - TOMGOODCAR V1 Signals, Entry Trigger Conditions, Interpretation, and Labels on the Chart:
WHALE BUY: zUp (Standard Price Accumulation) crosses above 3.5, indicating very strong accumulation or buying pressure, which is 3.5 standard deviations above the historical average (50 candlesticks). WHALE BUY (Explosive Power)
WHALE SELL: -zDn (Negative Standard Price Distribution) crosses below -3.5, indicating very strong distribution or selling pressure, which is 3.5 standard deviations above the historical average (50 candlesticks). WHALE SELL (Smash Down)
Smart Money Concept, Modern ViewSmart Money Concept, Modern View (SMCMV)
Institutional Volume Flow Analysis with VWMA Matrix
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 OVERVIEW
SMCMV is an advanced institutional-grade indicator that combines Volume-Weighted Moving Average (VWMA) matrix analysis with sophisticated volume decomposition to detect buyer and seller entry points. The indicator provides a comprehensive real-time dashboard displaying market structure, volume dynamics, and validated trading signals.
Key Features:
• Dual Volume Model: Geometry-based (candle range split) and Intrabar (precise LTF data)
• 10-Period VWMA Spectrum: Multi-timeframe support/resistance matrix (7, 13, 19, 23, 31, 41, 47, 67, 83, 97)
• 5-Layer Scoring System: 100-point institutional-grade signal quality assessment
• State Machine Signal Engine: Validated entry/exit signals with timer and range confirmation
• Real-time Prediction Engine: Candle-by-candle buyer/seller probability estimation
• High Volume Node Detection: Automatic identification of significant volume zones
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 DASHBOARD REFERENCE
1) NOW VECTOR (Current Market State)
This section captures the immediate market conditions:
• FLOW ANGLE: Directional angle of price movement in degrees (from VWMA-5). Positive = bullish, Negative = bearish.
• LTP: Last Traded Price - current close price.
• NET FLOW (Δ): Volume Delta - net difference between buying and selling volume. Shows ⚡+ or ⚡-.
• LIQUIDITY: Total volume on the current bar (K/M format).
• BUY VOL: Estimated buying volume based on selected model.
• SELL VOL: Estimated selling volume.
• BID PRES.: Buying volume as percentage of total volume.
• ASK PRES.: Selling volume as percentage of total volume.
• DIRECTION: Current state with hysteresis: BULL (🐂), BEAR (🐻), or NEUT (⚪).
2) DATA QUALITY / CONFIG
Configuration status and data integrity monitoring:
• VOL MODEL: INTRABAR (uses LTF data) or GEOMETRY (estimates from candle structure).
• IB LTF: Intrabar Lower Timeframe for precise volume decomposition.
• MODE: Micro (7 periods: 7-47) or Macro (10 periods: 7-97).
• IB OK: Intrabar data validity - OK or NO.
• IB STREAK: Consecutive bars with valid intrabar data.
• LATENCY: Data freshness indicator. ✓ = current, ↺ = using historical reference.
3) STRUCTURE RADAR
Market structure analysis showing price position relative to VWMA matrix:
• WIRES ▲/▼: Count of VWMAs above (resistance) and below (support).
• RES: Nearest Resistance - shows MA period, "ZN RES", or "BLUE SKY".
• SUPP: Nearest Support - shows MA period, "ZN SUPP", or "FREE FALL".
4) ACTIVE INTERACTION
Real-time analysis of price interaction with key levels:
• Header Status: "⚠ TESTING SUPPLY (ASK SIDE)" / "⚠ TESTING DEMAND (BID SIDE)" / "--- NO KEY INTERACTION ---"
• TARGET: Active level being tested (MA period or zone type).
• TEST LEVEL: Exact price level being tested.
• SCORE: Total score (0-100%) with letter grade .
• VOLUME POWER: Volume ratio vs historical average (e.g., "2.5x").
• BREAKOUT: "CONFIRMED" if attacking volume exceeds defending, "REJECTED" otherwise.
• DELTA DIR: "ALIGNED" if delta matches accumulation trend, "CONFLICT" if opposing.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎯 5-LAYER SCORING SYSTEM (100 Points Total)
Layer 1: Volume Quality (Max 25 pts)
• Mass (0-10): Volume ratio vs average. 0.5x=0, 1.0x=5, 2.0x=8, 3.0x+=10
• Spike (0-8): Volume Z-Score intensity
• Trend (0-7): Volume trend alignment with price direction
Layer 2: Battle Structure (Max 25 pts)
• Break (0-10): Breakout intensity ratio (attacker vs defender)
• Dom (0-8): Internal dominance ratio
• Pres (0-7): Pressure imbalance percentage
Layer 3: Flow & Energy (Max 20 pts)
• Delta (0-8): Delta alignment with accumulation trend
• Accel (0-6): Delta acceleration
• Mom (0-6): Flow momentum
Layer 4: Geometry (Max 15 pts)
• Impact (0-7): Impact angle directness
• Vec (0-5): Vector alignment
• PriceZ (0-3): Price Z-Score position
Layer 5: Army Structure (Max 15 pts)
• Stack (0-5): MA stack depth
• Conf (0-5): Confluence percentage
• Trend (0-5): Trend alignment count (7>13, 13>23, 23>97)
Grade Scale:
• A+ = 90-100 pts (Exceptional)
• A = 80-89 pts (Strong)
• B+ = 70-79 pts (Good)
• B = 60-69 pts (Moderate)
• C+ = 50-59 pts (Below average)
• C/D/F = Below 50 pts (Weak)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5) SIGNAL STATUS PANEL
Real-time signal state machine status:
• Header: "🐂 BUYERS ACTIVE" / "🐻 SELLERS ACTIVE" / "⏳ VALIDATING..." / "⏸ RANGE / FLAT"
• LOCK PRICE: Price at which signal was locked/confirmed.
• RANGE ±: Validation range percentage.
• POSITION: Price vs lock: "▲ ABOVE" / "▼ BELOW" / "● AT LOCK"
• DISTANCE: Percentage distance from lock price.
• vs RANGE: Position vs validation range: "IN_RANGE" / "ABOVE" / "BELOW"
• VAL TICKS: Validation progress (current/required ticks).
6) REALTIME PREDICTION PANEL
Candle prediction engine:
• WINNER: Predicted dominant side: "BUYERS" / "SELLERS" / "NEUTRAL"
• CONFIDENCE: Prediction confidence percentage.
• ACCURACY: Historical prediction accuracy (session-specific).
• BUY/SELL PROB: Individual probabilities for each side.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🏷️ SIGNAL LABELS REFERENCE
• 🐂 BUYER ENTRY (Green): Confirmed buyer entry signal. Validation complete.
• 🐻 SELLER ENTRY (Red): Confirmed seller entry signal. Validation complete.
• 🔻 REVERSAL BUY→SELL (Magenta): Reversal from buyer to seller position.
• 🔺 REVERSAL SELL→BUY (Cyan): Reversal from seller to buyer position.
• ⏹ EXIT → FLAT (Gray): Position exit to flat/neutral state.
• ⬆ BUYER STRONGER (Small Green): Lock price updated higher during buyer state.
• ⬇ SELLER STRONGER (Small Red): Lock price updated lower during seller state.
Display Modes:
• Minimal: Icon only (hover for tooltip details)
• Normal: Icon + Price level
• Detailed: Full information (price, score, grade)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📈 CHART ELEMENTS
VWMA Spectrum Lines
Colored gradient lines representing the 10-period VWMA matrix. Color progresses from light blue (fast: 7-period) through purple to orange (slow: 97-period). These act as dynamic support/resistance levels weighted by volume.
High Volume Node Lines
• Blue Lines: High Buy Volume zones - potential demand areas
• Red Lines: High Sell Volume zones - potential supply areas
• Yellow Lines: Overlapping zones (buy + sell extremes) - high conflict areas
Lock Price Line & Range Band
• Dashed Line: Locked price level (green for buyers, red for sellers)
• Dotted Lines: Upper/lower bounds of validation range
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚙️ INPUT SETTINGS GUIDE
Volume Model
• Calculation Method: "Geometry (Candle-Range Split)" for universal compatibility or "Intrabar (Precise)" for accurate buy/sell separation.
• Intrabar LTF: Lower timeframe for Intrabar mode (e.g., "1" for 1-minute).
Direction Filter
• Direction Trigger Angle: Threshold for directional state change (default: 1.5°)
• Neutral Reset Angle: Threshold for returning to neutral (default: 0.7°)
Testing Filter
• Level Proximity (%): How close price must be to "test" a level (default: 0.25%)
• Require Wick Touch: If enabled, requires high/low to touch proximity band.
Signal Validation
• Lock Range (%): Price range for validation (default: 0.5%)
• Validation Ticks: Consecutive bars required (default: 3)
• Validation Time: Minimum seconds for real-time confirmation (default: 5)
• Minimum Hold Bars: Stay in position for at least this many bars (default: 5)
• Exit Mode: "Reversal Only" / "Signal Loss" / "Price Stop"
• Stop Loss (%): Exit threshold (default: 1.0%)
Signal Score Filter
• Score Range Minimum: Minimum score for signal generation (default: 10%)
• Score Range Maximum: Maximum score threshold (default: 100%)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💡 USAGE RECOMMENDATIONS
1. Start with Macro mode to see the complete VWMA spectrum, then switch to Micro for cleaner charts.
2. Use Intrabar mode when your broker provides lower timeframe data.
3. Focus on high-grade signals (B+ or better) for higher probability setups.
4. Wait for validation to complete before acting on signals.
5. Use the Lock Price line as your reference for position management.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ IMPORTANT NOTES
• This indicator is designed for educational and analytical purposes.
• Always combine with proper risk management and additional confirmation.
• Past performance and signal quality do not guarantee future results.
• The prediction accuracy is session-specific and resets on chart reload.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Volume-Based Indicator — Data Granularity & Table Guide
1) Critical warning about data granularity (read first)
Important: This indicator is built entirely on volume-derived calculations (volume, volume delta, and related flow metrics). Because of that, its precision is only as good as the granularity and history of the data you feed it.
The most granular view is a tick-based interval (e.g., 1T = one trade/tick). If tick-based intervals are not available for your symbol or your plan, the closest time-based approximation is a 1-second chart (1S).
If you enable any "high-precision / intrabar" options (anything that relies on the smallest updates), make sure you understand which TradingView plan you are using, because intrabar historical depth (how many bars you can load) varies by plan. More history generally means more stable baselines for volume statistics, regime detection, and long lookback features.
Plan-related notes (TradingView)
TradingView limits how many intrabar historical bars can be loaded, depending on your plan. The exact limits are defined by TradingView and can change over time, but as of the current documentation, the intrabar limits are:
• Basic: 5,000 bars
• Essential: 10,000 bars
• Plus: 10,000 bars
• Premium: 20,000 bars
• Expert: 25,000 bars
• Ultimate: 40,000 bars
Tick charts / tick-based intervals are currently positioned as a feature of professional-tier plans (e.g., Expert/Elite/Ultimate). Availability may also vary by symbol and data feed.
Volume Flow and Delta Analysis [MarkitTick]💡This comprehensive technical indicator is designed for traders who require a granular view of market participation that goes beyond standard volume bars. By leveraging the advanced "Intrabar Analysis" capabilities of Pine Script, this tool deconstructs every single price candle on your chart into its constituent lower-timeframe components. It effectively "X-rays" the market to determine whether the volume inside a bar was primarily driven by aggressive buying or aggressive selling, providing a definitive read on market sentiment and institutional control.
● Originality and Utility
Most standard volume indicators display a simple aggregate total—a single block of volume that fails to distinguish between buying pressure and selling pressure. A high-volume candle could represent a strong breakout, or it could represent a "selling tail" where buyers were absorbed. This script solves that ambiguity. It is not a standard oscillator; it is a quantitative flow analyzer. It reconstructs the "Delta" (the net difference between buying and selling volume) by querying lower-timeframe data (e.g., analyzing 1-minute data inside a 60-minute bar). This allows traders to spot "Hidden Accumulation" (where price is flat but Delta is rising) or "Exhaustion" (where price rises but Delta falls), offering a significant edge in identifying reversals and trend continuations.
● Methodology
The script operates through a sophisticated three-stage quantitative process:
• Intrabar Data Acquisition
The script uses the security_lower_tf function to fetch granular price and volume data from a lower timeframe (automatically detected or user-defined). This allows the script to see what happened "inside" the current chart's bar.
• Directional Flow Distribution
For every lower-timeframe interval, the script assigns volume to either "Bullish Flow" or "Bearish Flow." If the close is higher than the open on the lower timeframe, the volume is credited to buyers. If the close is lower, it is credited to sellers. This logic is far more accurate than simple "Up/Down" tick data, as it respects price action.
• Statistical Volatility Normalization
To filter out noise, the script calculates a dynamic baseline using an Exponential Moving Average (EMA) of the absolute Delta values. It then compares the current bar's Delta against this baseline. This generates an "Intensity Score" (measured in Sigma or Standard Deviations). This ensures that a "High Volume" signal is relevant to the current market volatility, rather than relying on fixed, arbitrary thresholds.
● How to Use
This tool is designed to be a complete decision-support system. Here is how to interpret its various components:
• The Volume Histogram
The background histogram displays Total Volume, while the foreground bars show the split between Buying (Teal) and Selling (Red) flow. Use this to gauge the "quality" of a move. A price rally accompanied by high Teal volume is healthy; a rally on low volume or high Red volume is suspect.
• The Delta Histogram
This plots the net difference.
Strong Positive (Green) Delta: Indicates aggressive market buy orders are hitting the ask.
Strong Negative (Red) Delta: Indicates aggressive market sell orders are hitting the bid.
Divergence: If Price makes a New High but the Delta Histogram makes a Lower High, this is a classic signal of exhaustion and potential reversal.
• The Heads-Up Display (HUD)
A dashboard table pinned to the chart provides real-time metrics:
Session Delta: The cumulative buy/sell pressure for the current trading day.
Flow Regime: Clearly states if the market is in "ACCUMULATION" or "DISTRIBUTION."
Intensity: Shows how statistically significant the current volume is (e.g., "2.5x" means the volume is 2.5 times the standard deviation, indicating an anomaly).
• Visual Signals
The script plots triangle markers on top of the chart when the Delta Intensity exceeds the user-defined threshold.
Up Triangle (Green): Signals strong institutional buying pressure (Delta > Threshold).
Down Triangle (Red): Signals strong institutional selling pressure (Delta < Threshold).
● Inputs and Configuration
Lower Timeframe: By default, the script auto-selects the best resolution (e.g., 1-minute data for hourly charts). Users can override this to fine-tune the granularity.
Volume MA Length: Defines the lookback period for the volume moving average.
Delta Volatility Threshold (Sigma): This is the sensitivity filter for signals. A higher value (e.g., 2.0) results in fewer but more significant signals. A lower value (e.g., 1.0) provides more frequent alerts.
Visual Logic: Users can toggle the Dashboard, Delta Histogram, and Moving Averages on or off to suit their charting aesthetic.
● Disclaimer
All provided scripts and indicators are strictly for educational exploration and must not be interpreted as financial advice or a recommendation to execute trades. I expressly disclaim all liability for any financial losses or damages that may result, directly or indirectly, from the reliance on or application of these tools. Market participation carries inherent risk where past performance never guarantees future returns, leaving all investment decisions and due diligence solely at your own discretion.
CUSUM Volatility BreakoutCUSUM Volatility Breakout A statistical trend-detection and volatility-breakout indicator that identifies subtle momentum shifts earlier than traditional tools.
OVERVIEW
The CUSUM control chart is a statistical tool designed to detect small, gradual shifts from a target value. In trading, it helps identify the early stages of a trend, giving traders a heads-up before momentum becomes obvious on standard price charts. By spotting these subtle movements, the CUSUM Volatility Breakout indicator (CUSUM VB) can highlight potential breakout opportunities earlier than traditional indicators. In other words, a statistical trend detection & breakout indicator.
Copyright © 2025 CoinOperator
HOW IT WORKS
CUSUM VB uses a combination of differenced price series, volume normalization, and dynamic control limits:
CUSUM Principle: Tracks cumulative deviations of price from a zero reference. Signals occur when cumulative deviations exceed a control limit shown on the chart and clears any enabled filters.
Adaptive Volatility: H adjusts automatically based on short- vs long-term ATR ratios, allowing faster detection during volatile periods and reduced false signals in calm markets.
Volume Weighting (optional): Amplifies price CUSUM values during high-volume bars to prioritize market participation strength.
ATR Confirmation (optional): Ensures breakouts are accompanied by expanded volatility.
Bollinger Band Squeeze Integration (optional): Confirms trend breakouts by detecting volatility contraction and release shown on the chart as triangles.
Signals:
Arrows on the price chart mark the bars where trades are actually filled, based on conditions detected on the prior signal bar.
Long Entry: Confirmed positive CUSUM breach (price & volume) with BB breakout (signal bar).
Short Entry: Confirmed negative CUSUM breach (price & volume) with BB breakout (signal bar).
Exit Signals: Triggered automatically by opposite-side signals.
Alerts, when created, fire on the bars where fills occur.
CHART COMPONENTS
CUSUM Upper Price (CU Price) and CUSUM Lower Price (CL Price) are green/red circles for confirmed signals.
● Rapid upward accumulation of CU Price indicates a developing bullish trend.
● Rapid downward accumulation of CL Price indicates a developing bearish trend.
Decision/Control limits (UCL/LCL, red)
Zero line (reference for the differenced price series baseline)
Optional BB triangles and volume CUSUM
SETUP AND CONFIGURATION
Differenced Price Series
Differenced Price Length and Lag
Increase differencing lag or window length → Increases variance of residuals → Wider control limits (UCL/LCL) → Slower to trigger.
Decrease lag or window → Tighter limits, more responsive to short-term regime shifts.
CUSUM Parameters
Volume-Weighted CUSUM
NOTE : Uses price length if 'Confirm Price with Volume' is disabled, otherwise will use volume length.
Amplifies CUSUM price responses during high-volume bars and reduces them during low-volume bars. This links trend detection to market participation strength.
Volume-Weighted CUSUM doesn’t replace price confirmation with volume; it modulates it by volume intensity, amplifying price signals when participation is strong and suppressing them when weak.
Recommended when analyzing assets with consistent volume patterns (e.g., stocks, major futures).
Disable for low-liquidity or irregular-volume instruments (e.g., crypto pairs, small-cap stocks).
ATR Confirmation
Enable this feature to confirm CUSUM signals only when price deviations are accompanied by higher-than-normal volatility. The indicator compares current ATR to a smoothed ATR to detect volatility expansion. This helps distinguish true breakouts from low-volatility noise and reduces false signals during quiet periods.
Adjust the ATR lookback length, smoothing length, and expansion factor to control sensitivity. Rule of thumb:
ATR Length ≈ 0.5 × differenced price length to 1.5 × differenced price length gives balanced sensitivity.
ATR Smoothing 5–10 bars.
ATR Expansion 5% to 50%.
CUSUM Input Mode
Select how CUSUM processes differenced price and log-normalized volume — either directly (Txfrm Data) or as deviations from a short-term EMA baseline (Residuals):
Txfrm Data = transformed input: differenced price & log-normalized volume as input for CUSUM (larger swings, more frequent control limit breaches)
Residuals = deviation from short-term EMA baseline (smaller swings, fewer control limit breaches, but higher signal quality).
Residual EMA Length: Defines how quickly the residual baseline adapts to recent differenced price moves. Shorter = more reactive; longer = smoother baseline. Keep EMA length moderate; over-smoothing can distort timing.
Control Sensitivity (K)
Increase K → Less sensitive → CUSUM accumulates slower → Fewer signals, captures only major trends.
Decrease K → More sensitive → CUSUM accumulates faster → More signals, captures minor swings too.
Reset Mode : Method of resetting CUSUM values.
Immediate Reset: Reset both immediately after any signal breach. Traditional SPC.
Opposite-Side Reset: Reset only the opposite side when a valid signal fires. Best for ongoing trend tracking.
Decay Reset: Gradually reduce CUSUM values toward zero with a decay factor each bar. Maintains trend memory but allows slow “forgetting.”
Threshold Reset: Reset only if CUSUM returns below a small threshold (10 % of H). Filters noise without full wipe.
No Reset / Continuous: Never reset; instead track running totals. Long-term cumulative bias measurement.
Conflict Handling : Method of handling conflicting signals.
Ignore Both: Discards both when overlap occurs.
Prioritize Latest: Chooses the direction implied by the most recent close.
Prioritize Stronger: Compares absolute magnitudes of CU Price vs CL Price.
Average Resolve: Looks at the difference; small overlap → ignore, otherwise pick direction by sign.
Sequential Confirm: Requires N consecutive same-direction signals before confirmation.
Volume Parameters (Optional)
Amplification Factor
Adjusts volume sensitivity and effectively rescales the log series of volume to a comparable magnitude with price changes.
Since price and volume are normalized in a compatible way, the amplification factor is used instead of independent K and H values for volume.
Bollinger Bands (Optional)
Lookback Synchronization
BB Lookback (for CUSUM): Number of bars that define a window for the BB signal to look back for the CUSUM signal.
CUSUM Lookback (for BB): Number of bars that define a window for the CUSUM signal to look back for the BB signal.
Both can be enabled for stricter alignment.
Relationship Between K, H, ARL₀ and ARL₁
H (max) is usually the only H you need to adjust. With everything else being constant, increasing either K or H (max) generally increases both ARL₀ and ARL₁ : higher thresholds reduce false alarms but slow detection, and lower thresholds do the opposite.
Increase Min Target ARL ratio →
ARL₀ increases (safer, fewer false alarms)
ARL₁ decreases or stays small (faster detection)
Control limits slightly expand to achieve separation
Strategy becomes more selective and stable
Decrease Min Target ARL ratio →
ARL₀ decreases (more false alarms tolerated)
ARL₁ increases (slower detection tolerated)
Control limits tighten
Strategy becomes more sensitive but lower quality
The ARL Ratio of ARL₀ / ARL₁ is typically between 3 and 8. This implies you want your ARL₀ (false-alarm interval) ≈ 'Min Target ARL ratio' × differenced price length window.
Example:
"Min Target ARL ratio = 4.0"
⇒ implies you want your ARL₀ (false-alarm interval) ≈ 4 × differenced price length.
Assume price length = 50 (typical differencing window).
ARL ratio = 4.0 → target ARL = 4 × 50 = 200 bars.
● On a 6-hour chart (≈4 bars/day) → ~50 days between expected false alarms (on average).
● On a daily chart → ~200 trading days between false alarms (very conservative).
ARL ratio = 8.0 → target ARL = 400 bars → twice as infrequent signals vs ratio=4.
ARL ratio = 2.0 → target ARL = 100 bars → about half the inter-signal interval.
Another way to think about it: probability of a false alarm on any bar ≈ 1 / target ARL. If you want ~1% of bars producing alarms, target ARL ≈ 100.
QUICK START
Start with the defaults.
Set price series → length/order/lag
Configure CUSUM thresholds → K, H min/max
1. Adjust the price differencing lag/window.
2. Verify that it captures real price inflection points without overreacting to bar noise.
Enable optional filters → Volume, ATR, BB
The optional Bollinger Bands squeeze usually works best if used with CUSUM Input Mode = Txfrm Data.
Monitor CUSUM chart → CU Price, CL Price, thresholds, zero line
Act on signals → data window / chart triangles
Adjust sensitivity → H (max), K, lengths
Monitor ARL ratio and CUSUM behavior for fine-tuning
Note : When you’ve finalized the length, lag, and order of the Price Difference, as well as the Ln(Vol) Series of “Confirm Price with Volume” if enabled, then pass both through the Augmented Dickey–Fuller (ADF) mean reversion test to ensure they are stationary, i.e., mean reverting. You can find a ready-made indicator for such use at . Many thanks to tbtkg for this indicator.
SUMMARY
CUSUM VB combines CUSUM statistical control, volatility-adaptive thresholds, volume weighting, and optional BB breakout confirmation to provide robust, actionable signals across a wide variety of trading instruments.
Why traders use it : Fast detection of shifts, reduced false alarms, versatile across markets.
Ideal for : Futures (continuous contracts), forex, crypto, stocks, ETFs, and commodity/index CFDs, especially where:
● Price and volume data exist
● Breakouts and volatility shifts are tradable
● There’s enough liquidity for meaningful signals
Visualization : Upper/lower CUSUM circles, UCL/LCL thresholds, optional highlight traded background, optional volume and BB overlays on the chart, optional entry/exit labels on the price chart, as well as entry/exit signals in the data window.
Alerts : For entry/exit labels when trades are actually filled.
CUSUM VB is designed for traders who want statistically grounded trend detection with configurable sensitivity, visual clarity, and multi-market versatility.
DISCLAIMER
This software and documentation are provided “as is” without any warranties of any kind, express or implied. CoinOperator assumes no responsibility or liability for any errors, omissions, or losses arising from the use or interpretation of this software or its outputs. Trading and investing carry inherent risks, and users are solely responsible for their own decisions and results.
Session Volume Analyzer [JOAT]
Session Volume Analyzer — Global Trading Session and Volume Intelligence System
This indicator addresses the analytical challenge of understanding market participation patterns across global trading sessions. It combines precise session detection with comprehensive volume analysis to provide insights into when and how different market participants are active. The tool recognizes that different trading sessions exhibit distinct characteristics in terms of participation, volatility, and volume patterns.
Why This Combination Provides Unique Analytical Value
Traditional session indicators typically only show time boundaries, while volume indicators show raw volume data without session context. This creates analytical gaps:
1. **Session Context Missing**: Volume spikes without session context provide incomplete information
2. **Participation Patterns Hidden**: Different sessions have different participant types (retail, institutional, algorithmic)
3. **Comparative Analysis Lacking**: No easy way to compare volume patterns across sessions
4. **Timing Intelligence Absent**: Understanding WHEN volume occurs is as important as HOW MUCH volume occurs
This indicator's originality lies in creating an integrated session-volume analysis system that:
**Provides Session-Aware Volume Analysis**: Volume data is contextualized within specific trading sessions
**Enables Cross-Session Comparison**: Compare volume patterns between Asian, London, and New York sessions
**Delivers Participation Intelligence**: Understand which sessions are showing above-normal participation
**Offers Real-Time Session Tracking**: Know exactly which session is active and how current volume compares
Technical Innovation and Originality
While session detection and volume analysis exist separately, the innovation lies in:
1. **Integrated Session-Volume Architecture**: Simultaneous tracking of session boundaries and volume statistics creates comprehensive market participation analysis
2. **Multi-Session Volume Comparison System**: Real-time calculation and comparison of volume statistics across different global sessions
3. **Adaptive Volume Threshold Detection**: Automatic identification of above-average volume periods within session context
4. **Comprehensive Visual Integration**: Session backgrounds, volume highlights, and statistical dashboards provide complete market participation picture
How Session Detection and Volume Analysis Work Together
The integration creates a sophisticated market participation analysis system:
**Session Detection Logic**: Uses Pine Script's time functions to identify active sessions
// Session detection based on exchange time
bool inAsian = not na(time(timeframe.period, asianSession))
bool inLondon = not na(time(timeframe.period, londonSession))
bool inNY = not na(time(timeframe.period, nySession))
// Session transition detection
bool asianStart = inAsian and not inAsian
bool londonStart = inLondon and not inLondon
bool nyStart = inNY and not inNY
**Volume Analysis Integration**: Volume statistics are calculated within session context
// Session-specific volume accumulation
if asianStart
asianVol := 0.0
asianBars := 0
if inAsian
asianVol += volume
asianBars += 1
// Real-time session volume analysis
float asianAvgVol = asianBars > 0 ? asianVol / asianBars : 0
**Relative Volume Assessment**: Current volume compared to session-specific averages
float volMA = ta.sma(volume, volLength)
float volRatio = volMA > 0 ? volume / volMA : 1
// Volume classification within session context
bool isHighVol = volRatio >= 1.5 and volRatio < 2.5
bool isVeryHighVol = volRatio >= 2.5
This creates a system where volume analysis is always contextualized within the appropriate trading session, providing more meaningful insights than raw volume data alone.
Comprehensive Session Analysis Framework
**Default Session Definitions** (customizable based on broker timezone):
- **Asian Session**: 1800-0300 (exchange time) - Represents Asian market participation including Tokyo, Hong Kong, Singapore
- **London Session**: 0300-1200 (exchange time) - Represents European market participation
- **New York Session**: 0800-1700 (exchange time) - Represents North American market participation
**Session Overlap Analysis**: The system recognizes and highlights overlap periods:
- **London/New York Overlap**: 0800-1200 - Typically the highest volume period
- **Asian/London Overlap**: 0300-0300 (brief) - Transition period
- **New York/Asian Overlap**: 1700-1800 (brief) - End of NY, start of Asian
**Volume Intelligence Features**:
1. **Session-Specific Volume Accumulation**: Tracks total volume within each session
2. **Cross-Session Volume Comparison**: Compare current session volume to other sessions
3. **Relative Volume Detection**: Identify when current volume exceeds historical averages
4. **Participation Pattern Analysis**: Understand which sessions show consistent high/low participation
Advanced Volume Analysis Methods
**Relative Volume Calculation**:
float volMA = ta.sma(volume, volLength) // Volume moving average
float volRatio = volMA > 0 ? volume / volMA : 1 // Current vs average ratio
// Multi-tier volume classification
bool isNormalVol = volRatio < 1.5
bool isHighVol = volRatio >= 1.5 and volRatio < 2.5
bool isVeryHighVol = volRatio >= 2.5
bool isExtremeVol = volRatio >= 4.0
**Session Volume Tracking**:
// Cumulative session volume with bar counting
if londonStart
londonVol := 0.0
londonBars := 0
if inLondon
londonVol += volume
londonBars += 1
// Average volume per bar calculation
float londonAvgVol = londonBars > 0 ? londonVol / londonBars : 0
**Cross-Session Volume Comparison**:
The system maintains running totals for each session, enabling real-time comparison of participation levels across different global markets.
What the Display Shows
Session Backgrounds — Colored backgrounds indicating which session is active
- Pink: Asian session
- Blue: London session
- Green: New York session
Session Open Lines — Horizontal lines at each session's opening price
Session Markers — Labels (AS, LN, NY) when sessions begin
Volume Highlights — Bar coloring when volume exceeds thresholds
- Orange: High volume (1.5x+ average)
- Red: Very high volume (2.5x+ average)
Dashboard — Current session, cumulative volume, and averages
Color Scheme
Asian — #E91E63 (pink)
London — #2196F3 (blue)
New York — #4CAF50 (green)
High Volume — #FF9800 (orange)
Very High Volume — #F44336 (red)
Inputs
Session Times:
Asian Session window (default: 1800-0300)
London Session window (default: 0300-1200)
New York Session window (default: 0800-1700)
Volume Settings:
Volume MA Length (default: 20)
High Volume threshold (default: 1.5x)
Very High Volume threshold (default: 2.5x)
Visual Settings:
Session colors (customizable)
Show/hide backgrounds, lines, markers
Background transparency
How to Read the Display
Background color shows which session is currently active
Session open lines show where each session started
Orange/red bars indicate above-average volume
Dashboard shows cumulative volume for each session today
Alerts
Session opened (Asian, London, New York)
High volume bar detected
Very high volume bar detected
Important Limitations and Realistic Expectations
Session times are approximate and depend on your broker's server timezone—manual adjustment may be required for accuracy
Volume data quality varies significantly by broker, instrument, and market type
Cryptocurrency and some forex markets trade continuously, making traditional session boundaries less meaningful
High volume indicates participation level only—it does not predict price direction or market outcomes
Session participation patterns can change over time due to market structure evolution, holidays, and economic conditions
This tool displays historical and current market participation data—it cannot predict future volume or price movements
Volume spikes can occur for numerous reasons unrelated to directional price movement (news, algorithmic trading, etc.)
Different instruments exhibit different session sensitivity and volume patterns
Market holidays and special events can significantly alter normal session patterns
Appropriate Use Cases
This indicator is designed for:
- Market participation pattern analysis
- Session-based trading schedule planning
- Volume context and comparison across sessions
- Educational study of global market structure
- Supplementary analysis for session-based strategies
This indicator is NOT designed for:
- Standalone trading signal generation
- Volume-based price direction prediction
- Automated trading system triggers
- Guaranteed session pattern repetition
- Replacement of fundamental or sentiment analysis
Understanding Session Analysis Limitations
Session analysis provides valuable context but has inherent limitations:
- Session patterns can change due to economic conditions, holidays, and market structure evolution
- Volume patterns may not repeat consistently across different market conditions
- Global events can override normal session characteristics
- Different asset classes respond differently to session boundaries
- Technology and algorithmic trading continue to blur traditional session distinctions
— Made with passion by officialjackofalltrades
BTC - Institutional Cost Corridor (Overlay)BTC - Institutional Cost Corridor | RM
Strategic Context
The approval of Spot Bitcoin ETFs on January 11, 2024, signaled the beginning of the "Institutional Era." Since then, price discovery has shifted from being purely retail-driven to being heavily influenced by massive, off-chain equity flows.
The Institutional Cost Corridor is an approach for a quantitative tool designed to solve the problem of "Institutional Blindness" by mapping the aggregate cost basis of Wall Street's entry. It allows for the identification of structural "gravity zones" where institutional capital is most likely to move from a state of profit into a state of defense.
The Methodology: Data Selection & Weighting
To ensure the output is statistically significant, the data engine focuses exclusively on the "Big 3" liquidity providers: BlackRock (IBIT), Fidelity (FBTC), and Bitwise (BITB). These three funds represent over 80% of total Spot ETF liquidity. A weighted ratio is applied (prioritizing BlackRock) to reflect the reality that a dollar flowing into IBIT has a significantly higher impact on market structure than a dollar in smaller, fragmented funds. This ensures the indicator follows the actual mass of institutional capital.
Recalculating the Shadow: Nominal Price & AUM
A common point of confusion is that Bitcoin ETFs have a completely different nominal price than Bitcoin itself (e.g., an IBIT share may trade at $50 while BTC is at $100,000). To solve this, the script does not look at the dollar price of the shares. Instead, it uses Assets Under Management (AUM) and Relative Performance Mapping . By calculating the percentage growth of the funds' underlying value since inception and projecting that growth onto the Bitcoin price axis, the script "re-scales" the institutional entry levels. This allows us to see exactly where Wall Street is "underwater" on a standard Bitcoin chart.
The Mathematical Foundations: Genesis vs. Anchored
The indicator utilizes two distinct mathematical approaches to triangulate the "Truth" of institutional positioning. These are not arbitrary assumptions, but forward-mapped models verified against professional financial benchmarks.
1. Conservative Floor (Genesis Mode)
• The Logic: This model uses a Cumulative Inflow VWAP . It treats every dollar that has entered the ETFs since Day 1 as part of a single, massive ledger.
• Scientific Justification: This approach maps to the "Fortress Zone" of early, high-conviction capital. Historical AUM performance data suggests that the largest influx of structural capital occurred during the launch phase of 2024. This logic identifies the Ultimate Floor —the level where the entire ETF cohort would flip to a net loss. In late 2025 research (e.g., Glassnode "True Market Mean"), this model consistently aligns with the deepest structural support of the bull cycle.
2. Wall Street Entry (Anchored Mode)
• The Logic: This model utilize a Relative Performance Anchor . It synchronizes the Bitcoin price on Launch Day with the growth performance of the ETF fund shares.
• Scientific Justification: This approach identifies the "Active Participant Basis." It reflects the entry price for the capital that fueled the most recent expansion cycles. It maps directly to the "Active Investors' Realized Price" cited by institutional research firms, identifying the immediate psychological "pain threshold" for the current market majority.
3. Institutional Mean (Hybrid Mode)
• The Logic: A 50/50 mathematical blend of the Conservative Floor and the Wall Street Entry .
• Justification: This is the "Equilibrium Zone." It serves as a neutral baseline by balancing early-stage "Genesis" conviction with late-cycle volatility. It represents the median cost basis of all current institutional holders.
4. The Shadow Corridor (Full Range)
• The Logic: Visualizes the entire spread between the Conservative Floor and the Wall Street Entry.
• Justification: The "Structural Support Cloud." Instead of a single price, it defines a regime . As long as Bitcoin remains above this cloud, the institutional trend remains in an "Expansion Phase." A re-entry into this corridor suggests a transition from a trending market into a value-accumulation phase.
Tactical Playbook: Scenario Logic
The Shadow Corridor (Full Range) visualizes the area between these two models, creating an "Institutional War Zone."
• Active Support Test: When price tests the Wall Street Entry (upper boundary), it indicates the active institutional majority is at breakeven. Expect significant defensive buying (bids) as funds protect their yearly performance reports.
• Deep Value Regime: Trading inside the Corridor is defined as a "Value Regime." This is where institutional accumulation historically absorbs retail capitulation.
• The Premium Trap: When the distance between price and the Corridor exceeds 35-40%, the market is "speculatively overextended," signaling a high probability of mean-reversion.
• Macro Breakdown: A Weekly (1W) candle closing below the Conservative Floor (lower boundary) signals a structural trend shift, indicating the majority of ETF-era capital is officially in a drawdown.
Operational Recommendation Best viewed on the Daily (1D) timeframe for macro structural analysis, providing the most reliable signal for institutional defense zones.
Tags: bitcoin, btc, etf, blackrock, ibit, institutional, cost-basis, vwap, macro, cycle, realized-price, Rob Maths
Price Contraction / Expansion1. Introduction
The Price Contraction / Expansion indicator highlights areas of market compression and volatility release by analyzing candle body size and volume behavior. It provides a fast, color-coded visualization to identify potential breakout zones, accumulation phases, or exhaustion movements.
This tool helps traders recognize when price action is tightening before a volatility expansion — a common precursor to strong directional moves.
2. Key Features
Dynamic body analysis: Compares each candle’s body size with a moving average to detect contraction (small bodies) and expansion (large bodies).
Volume confirmation: Measures whether volume is unusually high or low compared to its recent average, helping filter false breaks.
Color-coded system for clarity:
Yellow: Contraction with high volume (potential accumulation or strong activity).
Blue: Contraction with normal volume or expansion with low volume (neutral/reduced participation).
Green: Expansion in bullish candle (buyer dominance).
Red: Expansion in bearish candle (seller dominance).
Customizable parameters: Adjust body and volume averaging periods and thresholds to fit different market conditions or timeframes.
3. How to Use
Identify contraction zones: Look for blue or yellow bars to locate areas of price compression — these often precede breakouts or large movements.
Wait for expansion confirmation: A shift to green or red bars with increasing volume indicates that volatility is expanding and momentum is building.
Combine with context: Use this indicator alongside trend tools, liquidity zones, or moving averages to confirm directional bias and filter noise.
Adapt thresholds: In highly volatile markets, increase the “Threshold multiplier” to reduce false contraction signals.
This indicator is most effective for traders who focus on volatility behavior, market structure, and timing potential breakout opportunities.
Effort-Result Divergence [Interakktive]The Effort-Result Divergence (ERD) measures whether volume effort is producing proportional price result. It quantifies the classic Wyckoff principle: when price moves easily, momentum is real; when price struggles despite heavy volume, absorption is occurring.
Think of ERD as "energy efficiency" for price movement — green means price is gliding, red means price is grinding.
█ WHAT IT DOES
• Measures volume EFFORT relative to average volume
• Measures price RESULT relative to ATR-normalized movement
• Computes ERD = Result minus Effort (each scaled 0-100)
• Flags statistical divergences via Z-score analysis
• Absorption events: high effort, low result (negative ERD)
• Vacuum events: low effort, high result (positive ERD)
█ WHAT IT DOES NOT DO
• NO buy/sell signals
• NO entry/exit recommendations
• NO alerts (v1 is educational only)
• NO performance claims or guarantees
This is a context tool for understanding market participation quality.
█ HOW IT WORKS
The ERD analyzes two dimensions of market activity and compares them.
EFFORT (Volume Intensity)
Compares current volume to a moving average baseline:
Effort Ratio = Volume ÷ SMA(Volume, Length)
Effort Score = clamp(100 × Effort Ratio ÷ Effort Cap)
High effort means above-average volume participation.
Low effort means below-average volume participation.
RESULT (Price Efficiency)
Measures how much price moved relative to expected volatility:
Result Ratio = |Close − Previous Close| ÷ ATR
Result Score = clamp(100 × Result Ratio ÷ Result Cap)
High result means price moved significantly for the volatility regime.
Low result means price barely moved despite market activity.
ERD SCORE
ERD = Result − Effort
• Positive ERD: Result exceeds effort → price moved easily (vacuum/thin liquidity)
• Negative ERD: Effort exceeds result → price struggled (absorption/accumulation)
• Near zero: Balanced effort-to-result relationship
STATISTICAL DIVERGENCE DETECTION
Z-score analysis identifies statistically significant extremes:
Z = (ERD − Mean) ÷ StdDev
• Absorption Event: Z ≤ −threshold (extreme negative ERD)
• Vacuum Event: Z ≥ +threshold (extreme positive ERD)
█ INTERPRETATION
GREEN BARS (Positive ERD)
Price moved with relatively little volume effort. This suggests:
• Thin liquidity / low resistance
• Strong directional interest
• Momentum is "real" — not forced
RED BARS (Negative ERD)
Heavy volume was used but price barely moved. This suggests:
• Absorption / accumulation occurring
• Large players opposing the move
• Inefficiency — someone is working hard for little result
THE KEY INSIGHT
When you see:
• Down moves = high effort (red spikes)
• Up moves = low effort (green bars)
This means: It's easier for price to go up than down.
That is asymmetric strength — classic bullish pressure.
The reverse (red on up moves, green on down moves) signals bearish pressure.
PRACTICAL RULES
Without any other indicators:
• Avoid shorting when ERD is mostly green and red spikes appear only on down candles
• Be cautious buying when ERD turns red on up candles (signals absorption of buying pressure)
• Vacuum events (extreme green) often precede continuation or pause — not violent reversal
• Absorption events (extreme red) often precede reversals or range formation
█ VOLUME DATA NOTE
This indicator uses the volume variable which represents:
• Exchange volume on stocks and futures
• Tick volume on Forex and CFD instruments
Tick volume is a proxy for activity, not actual exchange volume. The indicator remains useful on Forex as relative volume comparisons are still meaningful, but interpretation should account for this limitation.
█ INPUTS
Core Settings
• Volume Average Length: Baseline period for effort calculation (default: 20)
• ATR Length: Volatility normalization period (default: 14)
• Effort Cap: Volume ratio that maps to 100% effort (default: 3.0)
• Result Cap: ATR multiple that maps to 100% result (default: 1.0)
Divergence Detection
• Z-Score Lookback: Statistical analysis window (default: 100)
• Z-Score Threshold: Standard deviations for event flags (default: 2.0)
Visual Settings
• Show ERD Histogram: Toggle main display
• Show Zero Line: Toggle reference line
• Show Divergence Markers: Toggle event circles
• Show Effort/Result Lines: Display component breakdown
█ ORIGINALITY
While Wyckoff's effort-versus-result principle is well-established, existing implementations are typically:
• Purely visual with no quantification
• Pattern-based requiring subjective interpretation
• Not statistically normalized for comparison across instruments
ERD is original because it:
1. Normalizes both effort and result to 0-100 scales for direct comparison
2. Uses ATR for result normalization (adapts to volatility regime)
3. Applies statistical Z-score for objective divergence detection
4. Provides quantified output suitable for systematic analysis
█ DATA WINDOW EXPORTS
When enabled, the following values are exported:
• Effort (0-100)
• Result (0-100)
• ERD Score
• Z-Score
• Absorption Event (1/0)
• Vacuum Event (1/0)
█ SUITABLE MARKETS
Works on: Stocks, Futures, Forex, Crypto
Best on: Instruments with reliable volume data (stocks, futures, crypto)
Timeframes: All timeframes — interpretation adapts accordingly
█ RELATED
• Market Efficiency Ratio — measures price path efficiency
• Wyckoff Volume Spread Analysis — conceptual foundation
█ DISCLAIMER
This indicator is for educational purposes only. It does not constitute financial advice. Past performance does not guarantee future results. Always conduct your own analysis before making trading decisions.
Amihud Illiquidity Ratio [MarkitTick]💡This indicator implements the Amihud Illiquidity Ratio, a financial metric designed to measure the price impact of trading volume. It assesses the relationship between absolute price returns and the volume required to generate that return, providing traders with insight into the "stress" levels of the market liquidity.
Concept and Originality
Standard volume indicators often look at volume in isolation. This script differentiates itself by contextualizing volume against price movement. It answers the question: "How much did the price move per unit of volume?" Furthermore, unlike static indicators, this implementation utilizes dynamic percentile zones (Linear Interpolation) to adapt to the changing volatility profile of the specific asset you are viewing.
Methodology
The calculation proceeds in three distinct steps:
1. Daily Return: The script calculates the absolute percentage change of the closing price relative to the previous close.
2. Raw Ratio: The absolute return is divided by the volume. I have introduced a standard scaling factor (1,000,000) to the calculation. This resolves the issue of the values being astronomically small (displayed as roughly 0) without altering the fundamental logic of the Amihud ratio (Absolute Return / Volume).
- High Ratio: Indicates that price is moving significantly on low volume (Illiquid/Thin Order Book).
- Low Ratio: Indicates that price requires massive volume to move (Liquid/Deep Order Book).
3. Dynamic Regimes: The script calculates the 75th and 25th percentiles of the ratio over a lookback period. This creates adaptive bands that define "High Stress" and "Liquid" zones relative to recent history.
How to Use
Traders can use this tool to identify market fragility:
- High Stress Zone (Red Background): When the indicator crosses above the 75th percentile, the market is in a High Illiquidity Regime. Price is slipping easily. This is often observed during panic selling or volatile tops where the order book is thin.
- Liquid Zone (Green Background): When the indicator drops below the 25th percentile, the market is in a Liquid Regime. The market is absorbing volume well, which is often characteristic of stable trends or accumulation phases.
- Dashboard: A visual table on the chart displays the current Amihud Ratio and the active Market Regime (High Stress, Normal, or Liquid).
Inputs
- Calculation Period: The lookback length for the average illiquidity (Default: 20).
- Smoothing Period: The length of the additional moving average to smooth out noise (Default: 5).
- Show Quant Dashboard: Toggles the visibility of the on-screen information table.
● How to read this chart
• Spike in Illiquidity (Red Zones)
Price is moving on "thin air." Expect high volatility or potential reversals.
• Low Illiquidity (Green/Stable Zones)
The market is deep and liquid. Trends here are more sustainable and reliable.
• Divergence
Watch for price making new highs while liquidity is drying up—a classic sign of an exhausted trend.
Example:
● Chart Overview
The chart displays the Amihud Illiquidity indicator applied to a Gold (XAUUSD) 4-hour timeframe.
Top Pane: Price action with manual text annotations highlighting market reversals relative to liquidity zones.
Bottom Pane: The specific technical indicator defined in the logic. It features a Blue Line (Raw Illiquidity), a Red Line (Signal/Smoothed), and dynamic background coloring (Red and Green vertical strips).
● Deep Visual Analysis
• High Stress Regime (Red Zones)
Visual Event: In the bottom pane, the background periodically shifts to a translucent red.
Technical Logic: This event is triggered when the amihudAvg (the smoothed illiquidity ratio) exceeds the 75th percentile ( hZone ) of the lookback period.
Forensic Interpretation: The logic calculates the absolute price change relative to volume. A spike into the red zone indicates that price is moving significantly on relatively lower volume (high price impact). Visually, the chart shows these red zones aligning with local price peaks (volatility expansion), leading to the bearish reversal marked by the red box in the top pane.
• Liquid Regime (Green Zones)
Visual Event: The background shifts to a translucent green in the bottom pane.
Technical Logic: This triggers when the amihudAvg falls below the 25th percentile ( lZone ).
Forensic Interpretation: This state represents a period where large volumes are absorbed with minimal price impact (efficiency). On the chart, this green zone corresponds to the consolidation trough (green box, top pane), validating the annotated accumulation phase before the bullish breakout.
• Indicator Lines
Blue Line: This is the illiquidityRaw value. It represents the raw daily return divided by volume.
Red Line: This is the smoothedVal , a Simple Moving Average (SMA) of the raw data, used to filter out noise and define the trend of liquidity stress.
● Anomalies & Critical Data
• The Reversal Pivot
The transition from the "High Stress" (Red) background to the "Liquid" (Green) background serves as a visual proxy for market regime change. The chart shows that as the Red zones dissipate (volatility contraction), the market enters a Green zone (efficient liquidity), which acted as the precursor to the sustained upward trend on the right side of the chart.
● About Yakov Amihud
Yakov Amihud is a leading researcher in market liquidity and asset pricing.
• Brief Background
Professor of Finance, affiliated with New York University (NYU).
Specializes in market microstructure, liquidity, and quantitative finance.
His work has had a major impact on both academic research and practical investment models.
● The Amihud (2002) Paper
In 2002, he published his influential paper: “Illiquidity and Stock Returns: Cross-Section and Time-Series Effects” .
• Key Contributions
Introduced the Amihud Illiquidity Measure, a simple yet powerful proxy for market liquidity.
Demonstrated that less liquid stocks tend to earn higher expected returns as compensation for liquidity risk.
The measure became one of the most widely used liquidity metrics in finance research.
● Why It Matters in Practice
Used in quantitative trading models.
Applied in portfolio construction and risk management.
Helpful as a liquidity filter to avoid assets with excessive price impact.
In short: Yakov Amihud established a practical and robust link between liquidity and returns, making his 2002 work a cornerstone in modern financial economics.
Disclaimer: All provided scripts and indicators are strictly for educational exploration and must not be interpreted as financial advice or a recommendation to execute trades. I expressly disclaim all liability for any financial losses or damages that may result, directly or indirectly, from the reliance on or application of these tools. Market participation carries inherent risk where past performance never guarantees future returns, leaving all investment decisions and due diligence solely at your own discretion.
DZDZ – Pivot Demand Zones + Trend Filter + Breadth Override + SL is a structured accumulation indicator built to identify high-probability demand areas after valid pullbacks.
The script creates **Demand Zones (DZ)** by pairing **pivot troughs (local lows)** with later **pivot peaks (local highs)**, requiring a minimum **ATR (Average True Range)** gap to confirm real price displacement. Zones are drawn only when market structure confirms strength through a **trend filter** (a required number of higher highs over a recent window) or a **breadth override**, which activates after unusually large expansion candles measured as a percentage move from the prior close.
In addition to pivots, the script detects **coiling price action**—tight trading ranges contained within an ATR band—and treats these as alternative demand bases.
Entries require price to penetrate a defined depth into the zone, preventing shallow reactions. After the first valid entry, a **DCA (Dollar-Cost Averaging)** system adds buys every 10 bars while trend or breadth conditions persist. A **ratcheting SL (Stop-Loss)** tightens upward only, using demand structure or ATR when zones are unavailable.
The focus is disciplined, volatility-aware accumulation aligned with structure.
Trendlines & SR ZonesIt's a comprehensive indicator (Pine Script v6) that represents two powerful technical analysis tools: automatic trendline detection based on pivot points and volume delta analysis with support/resistance zone identification. This overlay indicator helps traders identify potential trend directions and key price levels where significant buying or selling pressure has occurred.
Features: =
1. Price Trendlines
The indicator automatically identifies and draws trendlines based on pivot points, creating dynamic support and resistance levels.
Key Components:
Pivot Detection: Uses configurable left and right bars to identify significant pivot highs and lows
Trendline Filtering: Only draws downward-sloping resistance trendlines and upward-sloping support trendlines
Zone Creation: Creates filled zones around trendlines based on average price volatility
Automatic Management: Maintains only the 3 most recent significant trendlines to avoid chart clutter
Customization Options:
Left/Right Bars for Pivot: Adjust sensitivity of pivot detection (default: 10 bars each side)
Extension Length: Control how far trendlines extend past the second pivot (default: 50 bars)
Average Body Periods: Set the lookback period for volatility calculation (default: 100)
Tolerance Multiplier: Adjust the width of the trendline zones (default: 1.0)
Color Customization: Separate colors for high (resistance) and low (support) trendlines and their fills
2. Volume Delta % Bars
The indicator analyzes volume distribution across price levels to identify significant supply and demand zones.
Key Components:
Volume Profile Analysis: Divides the price range into rows and calculates volume delta at each level
Delta Visualization: Displays horizontal bars showing the percentage difference between buying and selling volume
Zone Identification: Automatically identifies the most significant supply and demand zones
Visual Integration: Connects volume delta bars with corresponding support/resistance zones on the price chart
Customization Options:
Lookback Period: Set the number of bars to analyze for volume (default: 200)
Price Rows: Control the granularity of the volume analysis (default: 50 rows)
Delta Sections: Adjust the number of horizontal delta bars displayed (default: 20)
Panel Appearance: Customize width, position, and direction of the delta panel
Zone Settings: Control the number of supply/demand zones and their extension (default: 3 zones)
How It Works-
Trendline Logic:
The script continuously scans for pivot highs and lows based on the specified left and right bars
When a pivot is detected, it creates a horizontal line at that price level
The script then looks for the previous pivot of the same type (high or low)
It connects these pivots with a trendline, extending it based on the user-specified setting
A parallel line is created to form a zone, with the distance based on average price volatility
The script filters out invalid trendlines (upward-sloping resistance and downward-sloping support). Only the 3 most recent trendlines are maintained to prevent chart clutter
Volume Delta Logic:
The script divides the price range over the lookback period into the specified number of rows
For each bar in the lookback period, it categorizes volume as bullish (close > open) or bearish (close < open). This volume is assigned to the appropriate price level based on the HLC3 price.
The price levels are grouped into sections, and the net delta (bullish - bearish volume) is calculated for each Horizontal bars are drawn to represent these delta percentages.
The most significant positive and negative deltas are identified and displayed as support and resistance zones. These zones are extended to the left on the price chart and connected to the delta panel with dotted lines.
Ideal Timeframes:
The indicator is versatile and can be used across multiple timeframes, but it performs optimally on specific timeframes depending on your trading style:
For Day Trading:
Optimal Timeframes: 15-minute to 1-hour charts
Why: These timeframes provide a good balance between noise reduction and sufficient volume data. The volume delta analysis is particularly effective on these timeframes as it captures intraday accumulation/distribution patterns while the trendlines remain reliable enough for intraday trading decisions.
For Swing Trading:
Optimal Timeframes: 1-hour to 4-hour charts
Why: These timeframes offer the best combination of reliable trendline formation and meaningful volume analysis. The trendlines on these timeframes are less prone to whipsaws, while the volume delta analysis captures multi-day trading sessions and institutional activity.
For Position Trading:
Optimal Timeframes: Daily and weekly charts
Why: On these higher timeframes, trendlines become extremely reliable as they represent significant market structure points. The volume delta analysis reveals longer-term accumulation and distribution patterns that can define major support and resistance zones for weeks or months.
Timeframe-Specific Adjustments:
Lower Timeframes (1-15 minutes):
Reduce left/right bars for pivots (5-8 bars)
Decrease lookback period for volume delta (50-100 bars)
Increase tolerance multiplier (1.2-1.5) to account for higher volatility
Higher Timeframes (Daily+):
Increase left/right bars for pivots (15-20 bars)
Extend lookback period for volume delta (300-500 bars)
Consider increasing the number of price rows (70-100) for more detailed volume analysis
Usage Guidelines-
For Trendline Analysis:
Use the trendlines as dynamic support and resistance levels
Price reactions at these levels can indicate potential trend continuation or reversal points
The filled zones around trendlines represent areas of price volatility or uncertainty
Consider the slope of the trendline as an indication of trend strength
For Volume Delta Analysis:
The horizontal delta bars show where buying or selling pressure has been concentrated
Green bars indicate areas where buying volume exceeded selling volume (demand)
Red bars indicate areas where selling volume exceeded buying volume (supply)
The highlighted supply and demand zones on the price chart represent significant price levels
These zones can act as future support or resistance areas as price revisits them
Customization Tips:
Trendline Sensitivity: Decrease left/right bars values to detect more pivots (more sensitive) or increase them for fewer, more significant pivots
Zone Width: Adjust the tolerance multiplier to make trendline zones wider or narrower based on your trading style
Volume Analysis: Increase the lookback period for a longer-term volume profile or decrease it for more recent activity
Visual Clarity: Adjust colors and transparency settings to match your chart theme and preferences
Conclusion:
This indicator provides traders with a comprehensive view of both trend dynamics and volume-based support/resistance levels. With these two analytical approaches, the indicator offers valuable insights for identifying potential entry and exit points, trend strength, and key price levels where significant market activity has occurred. The extensive customization options allow traders to adapt the indicator to various trading styles and timeframes, with optimal performance on 15-minute to daily charts depending on their trading horizon.
Chart Attached: NSE HINDZINC, EoD 12/12/25
DISCLAIMER: This information is provided for educational purposes only and should not be considered financial, investment, or trading advice. Please do boost if you like it. Happy Trading.






















