[PX] Exhaustion LevelHello guys,
I love to play around with different methods for detecting support and resistance level. So today here is a new approach, which could be interesting to a few of you. I call it exhaustion level.
I'll give a brief introduction on how the indicator works and leave the testing/applying to you.
How does it work?
The method is basically very simple. The indicator constantly keeps track of the difference between the current close and the VWAP. The detected value will then be normalized and therefore put into comparison to it's previous "n" candles. (You decide yourself which value will be used for "n" by setting the "Length" -parameter in the settings tab.)
Once the normalized value equals "1", the price movement is considered to be somewhat overheated and the indicator starts plotting a level at the current high. The level will continually change until the movement goes the opposite way. Then it will settle and change its color.
The same approach takes place when the normalized value reaches "0", this time plotting a level at the low.
I hope some of you will find it useful and if so, please leave a " like " :)
Have fun, happy trading and merry Christmas :)))
在脚本中搜索"demand"
LibVeloLibrary "LibVelo"
This library provides a sophisticated framework for **Velocity
Profile (Flow Rate)** analysis. It measures the physical
speed of trading at specific price levels by relating volume
to the time spent at those levels.
## Core Concept: Market Velocity
Unlike Volume Profiles, which only answer "how much" traded,
Velocity Profiles answer "how fast" it traded.
It is calculated as:
`Velocity = Volume / Duration`
This metric (contracts per second) reveals hidden market
dynamics invisible to pure Volume or TPO profiles:
1. **High Velocity (Fast Flow):**
* **Aggression:** Initiative buyers/sellers hitting market
orders rapidly.
* **Liquidity Vacuum:** Price slips through a level because
order book depth is thin (low resistance).
2. **Low Velocity (Slow Flow):**
* **Absorption:** High volume but very slow price movement.
Indicates massive passive limit orders ("Icebergs").
* **Apathy:** Little volume over a long time. Lack of
interest from major participants.
## Architecture: Triple-Engine Composition
To ensure maximum performance while offering full statistical
depth for all metrics, this library utilises **object
composition** with a lazy evaluation strategy:
#### Engine A: The Master (`vpVol`)
* **Role:** Standard Volume Profile.
* **Purpose:** Maintains the "ground truth" of volume distribution,
price buckets, and ranges.
#### Engine B: The Time Container (`vpTime`)
* **Role:** specialized container for time duration (in ms).
* **Hack:** It repurposes standard volume arrays (specifically
`aBuy`) to accumulate time duration for each bucket.
#### Engine C: The Calculator (`vpVelo`)
* **Role:** Temporary scratchpad for derived metrics.
* **Purpose:** When complex statistics (like Value Area or Skewness)
are requested for **Velocity**, this engine is assembled
on-demand to leverage the full statistical power of `LibVPrf`
without rewriting complex algorithms.
---
**DISCLAIMER**
This library is provided "AS IS" and for informational and
educational purposes only. It does not constitute financial,
investment, or trading advice.
The author assumes no liability for any errors, inaccuracies,
or omissions in the code. Using this library to build
trading indicators or strategies is entirely at your own risk.
As a developer using this library, you are solely responsible
for the rigorous testing, validation, and performance of any
scripts you create based on these functions. The author shall
not be held liable for any financial losses incurred directly
or indirectly from the use of this library or any scripts
derived from it.
create(buckets, rangeUp, rangeLo, dynamic, valueArea, allot, estimator, cdfSteps, split, trendLen)
Construct a new `Velo` controller, initializing its engines.
Parameters:
buckets (int) : series int Number of price buckets ≥ 1.
rangeUp (float) : series float Upper price bound (absolute).
rangeLo (float) : series float Lower price bound (absolute).
dynamic (bool) : series bool Flag for dynamic adaption of profile ranges.
valueArea (int) : series int Percentage for Value Area (1..100).
allot (series AllotMode) : series AllotMode Allocation mode `Classic` or `PDF` (default `PDF`).
estimator (series PriceEst enum from AustrianTradingMachine/LibBrSt/1) : series PriceEst PDF model for distribution attribution (default `Uniform`).
cdfSteps (int) : series int Resolution for PDF integration (default 20).
split (series SplitMode) : series SplitMode Buy/Sell split for the master volume engine (default `Classic`).
trendLen (int) : series int Look‑back for trend factor in dynamic split (default 3).
Returns: Velo Freshly initialised velocity profile.
method clone(self)
Create a deep copy of the composite profile.
Namespace types: Velo
Parameters:
self (Velo) : Velo Profile object to copy.
Returns: Velo A completely independent clone.
method clear(self)
Reset all engines and accumulators.
Namespace types: Velo
Parameters:
self (Velo) : Velo Profile object to clear.
Returns: Velo Cleared profile (chaining).
method merge(self, srcVolBuy, srcVolSell, srcTime, srcRangeUp, srcRangeLo, srcVolCvd, srcVolCvdHi, srcVolCvdLo)
Merges external data (Volume and Time) into the current profile.
Automatically handles resizing and re-bucketing if ranges differ.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
srcVolBuy (array) : array Source Buy Volume bucket array.
srcVolSell (array) : array Source Sell Volume bucket array.
srcTime (array) : array Source Time bucket array (ms).
srcRangeUp (float) : series float Upper price bound of the source data.
srcRangeLo (float) : series float Lower price bound of the source data.
srcVolCvd (float) : series float Source Volume CVD final value.
srcVolCvdHi (float) : series float Source Volume CVD High watermark.
srcVolCvdLo (float) : series float Source Volume CVD Low watermark.
Returns: Velo `self` (chaining).
method addBar(self, offset)
Main data ingestion. Distributes Volume and Time to buckets.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
offset (int) : series int Offset of the bar to add (default 0).
Returns: Velo `self` (chaining).
method setBuckets(self, buckets)
Sets the number of buckets for the profile.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
buckets (int) : series int New number of buckets.
Returns: Velo `self` (chaining).
method setRanges(self, rangeUp, rangeLo)
Sets the price range for the profile.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
rangeUp (float) : series float New upper price bound.
rangeLo (float) : series float New lower price bound.
Returns: Velo `self` (chaining).
method setValueArea(self, va)
Set the percentage of volume/time for the Value Area.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
va (int) : series int New Value Area percentage (0..100).
Returns: Velo `self` (chaining).
method getBuckets(self)
Returns the current number of buckets in the profile.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns: series int The number of buckets.
method getRanges(self)
Returns the current price range of the profile.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns:
rangeUp series float The upper price bound of the profile.
rangeLo series float The lower price bound of the profile.
method getArrayBuyVol(self)
Returns the internal raw data array for **Buy Volume** directly.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns: array The internal array for buy volume.
method getArraySellVol(self)
Returns the internal raw data array for **Sell Volume** directly.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns: array The internal array for sell volume.
method getArrayTime(self)
Returns the internal raw data array for **Time** (in ms) directly.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns: array The internal array for time duration.
method getArrayBuyVelo(self)
Returns the internal raw data array for **Buy Velocity** directly.
Automatically executes _assemble() if data is dirty.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns: array The internal array for buy velocity.
method getArraySellVelo(self)
Returns the internal raw data array for **Sell Velocity** directly.
Automatically executes _assemble() if data is dirty.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns: array The internal array for sell velocity.
method getBucketBuyVol(self, idx)
Returns the **Buy Volume** of a specific bucket.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
idx (int) : series int The index of the bucket.
Returns: series float The buy volume.
method getBucketSellVol(self, idx)
Returns the **Sell Volume** of a specific bucket.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
idx (int) : series int The index of the bucket.
Returns: series float The sell volume.
method getBucketTime(self, idx)
Returns the raw accumulated time (in ms) spent in a specific bucket.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
idx (int) : series int The index of the bucket.
Returns: series float The time in milliseconds.
method getBucketBuyVelo(self, idx)
Returns the **Buy Velocity** (Aggressive Buy Flow) of a bucket.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
idx (int) : series int The index of the bucket.
Returns: series float The buy velocity in .
method getBucketSellVelo(self, idx)
Returns the **Sell Velocity** (Aggressive Sell Flow) of a bucket.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
idx (int) : series int The index of the bucket.
Returns: series float The sell velocity in .
method getBktBnds(self, idx)
Returns the price boundaries of a specific bucket.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
idx (int) : series int The index of the bucket.
Returns:
up series float The upper price bound of the bucket.
lo series float The lower price bound of the bucket.
method getPoc(self, target)
Returns Point of Control (POC) information for the specified target metric.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns:
pocIdx series int The index of the POC bucket.
pocPrice series float The mid-price of the POC bucket.
method getVA(self, target)
Returns Value Area (VA) information for the specified target metric.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns:
vaUpIdx series int The index of the upper VA bucket.
vaUpPrice series float The upper price bound of the VA.
vaLoIdx series int The index of the lower VA bucket.
vaLoPrice series float The lower price bound of the VA.
method getMedian(self, target)
Returns the Median price for the specified target metric distribution.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns:
medianIdx series int The index of the bucket containing the median.
medianPrice series float The median price.
method getAverage(self, target)
Returns the weighted average price (VWAP/TWAP) for the specified target.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns:
avgIdx series int The index of the bucket containing the average.
avgPrice series float The weighted average price.
method getStdDev(self, target)
Returns the standard deviation for the specified target distribution.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns: series float The standard deviation.
method getSkewness(self, target)
Returns the skewness for the specified target distribution.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns: series float The skewness.
method getKurtosis(self, target)
Returns the excess kurtosis for the specified target distribution.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns: series float The excess kurtosis.
method getSegments(self, target)
Returns the fundamental unimodal segments for the specified target metric.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns: matrix A 2-column matrix where each row is an pair.
method getCvd(self, target)
Returns Cumulative Volume/Velo Delta (CVD) information for the target metric.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns:
cvd series float The final delta value.
cvdHi series float The historical high-water mark of the delta.
cvdLo series float The historical low-water mark of the delta.
Velo
Velo Composite Velocity Profile Controller.
Fields:
_vpVol (VPrf type from AustrianTradingMachine/LibVPrf/2) : LibVPrf.VPrf Engine A: Master Volume source.
_vpTime (VPrf type from AustrianTradingMachine/LibVPrf/2) : LibVPrf.VPrf Engine B: Time duration container (ms).
_vpVelo (VPrf type from AustrianTradingMachine/LibVPrf/2) : LibVPrf.VPrf Engine C: Scratchpad for velocity stats.
_aTime (array) : array Pointer alias to `vpTime.aBuy` (Time storage).
_valueArea (series float) : int Percentage of total volume to include in the Value Area (1..100)
_estimator (series PriceEst enum from AustrianTradingMachine/LibBrSt/1) : LibBrSt.PriceEst PDF model for distribution attribution.
_allot (series AllotMode) : AllotMode Attribution model (Classic or PDF).
_cdfSteps (series int) : int Integration resolution for PDF.
_isDirty (series bool) : bool Lazy evaluation flag for vpVelo.
LibVPrfLibrary "LibVPrf"
This library provides an object-oriented framework for volume
profile analysis in Pine Script®. It is built around the `VProf`
User-Defined Type (UDT), which encapsulates all data, settings,
and statistical metrics for a single profile, enabling stateful
analysis with on-demand calculations.
Key Features:
1. **Object-Oriented Design (UDT):** The library is built around
the `VProf` UDT. This object encapsulates all profile data
and provides methods for its full lifecycle management,
including creation, cloning, clearing, and merging of profiles.
2. **Volume Allocation (`AllotMode`):** Offers two methods for
allocating a bar's volume:
- **Classic:** Assigns the entire bar's volume to the close
price bucket.
- **PDF:** Distributes volume across the bar's range using a
statistical price distribution model from the `LibBrSt` library.
3. **Buy/Sell Volume Splitting (`SplitMode`):** Provides methods
for classifying volume into buying and selling pressure:
- **Classic:** Classifies volume based on the bar's color (Close vs. Open).
- **Dynamic:** A specific model that analyzes candle structure
(body vs. wicks) and a short-term trend factor to
estimate the buy/sell share at each price level.
4. **Statistical Analysis (On-Demand):** Offers a suite of
statistical metrics calculated using a "Lazy Evaluation"
pattern (computed only when requested via `get...` methods):
- **Central Tendency:** Point of Control (POC), VWAP, and Median.
- **Dispersion:** Value Area (VA) and Population Standard Deviation.
- **Shape:** Skewness and Excess Kurtosis.
- **Delta:** Cumulative Volume Delta, including its
historical high/low watermarks.
5. **Structural Analysis:** Includes a parameter-free method
(`getSegments`) to decompose a profile into its fundamental
unimodal segments, allowing for modality detection (e.g.,
identifying bimodal profiles).
6. **Dynamic Profile Management:**
- **Auto-Fitting:** Profiles set to `dynamic = true` will
automatically expand their price range to fit new data.
- **Manipulation:** The resolution, price range, and Value Area
of a dynamic profile can be changed at any time. This
triggers a resampling process that uses a **linear
interpolation model** to re-bucket existing volume.
- **Assumption:** Non-dynamic profiles are fixed and will throw
a `runtime.error` if `addBar` is called with data
outside their initial range.
7. **Bucket-Level Access:** Provides getter methods for direct
iteration and analysis of the raw buy/sell volume and price
boundaries of each individual price bucket.
---
**DISCLAIMER**
This library is provided "AS IS" and for informational and
educational purposes only. It does not constitute financial,
investment, or trading advice.
The author assumes no liability for any errors, inaccuracies,
or omissions in the code. Using this library to build
trading indicators or strategies is entirely at your own risk.
As a developer using this library, you are solely responsible
for the rigorous testing, validation, and performance of any
scripts you create based on these functions. The author shall
not be held liable for any financial losses incurred directly
or indirectly from the use of this library or any scripts
derived from it.
create(buckets, rangeUp, rangeLo, dynamic, valueArea, allot, estimator, cdfSteps, split, trendLen)
Construct a new `VProf` object with fixed bucket count & range.
Parameters:
buckets (int) : series int number of price buckets ≥ 1
rangeUp (float) : series float upper price bound (absolute)
rangeLo (float) : series float lower price bound (absolute)
dynamic (bool) : series bool Flag for dynamic adaption of profile ranges
valueArea (int) : series int Percentage of total volume to include in the Value Area (1..100)
allot (series AllotMode) : series AllotMode Allocation mode `classic` or `pdf` (default `classic`)
estimator (series PriceEst enum from AustrianTradingMachine/LibBrSt/1) : series LibBrSt.PriceEst PDF model when `model == PDF`. (deflault = 'uniform')
cdfSteps (int) : series int even #sub-intervals for Simpson rule (default 20)
split (series SplitMode) : series SplitMode Buy/Sell determination (default `classic`)
trendLen (int) : series int Look‑back bars for trend factor (default 3)
Returns: VProf freshly initialised profile
method clone(self)
Create a deep copy of the volume profile.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object to copy
Returns: VProf A new, independent copy of the profile
method clear(self)
Reset all bucket tallies while keeping configuration intact.
Namespace types: VProf
Parameters:
self (VProf) : VProf profile object
Returns: VProf cleared profile (chaining)
method merge(self, srcABuy, srcASell, srcRangeUp, srcRangeLo, srcCvd, srcCvdHi, srcCvdLo)
Merges volume data from a source profile into the current profile.
If resizing is needed, it performs a high-fidelity re-bucketing of existing
volume using a linear interpolation model inferred from neighboring buckets,
preventing aliasing artifacts and ensuring accurate volume preservation.
Namespace types: VProf
Parameters:
self (VProf) : VProf The target profile object to merge into.
srcABuy (array) : array The source profile's buy volume bucket array.
srcASell (array) : array The source profile's sell volume bucket array.
srcRangeUp (float) : series float The upper price bound of the source profile.
srcRangeLo (float) : series float The lower price bound of the source profile.
srcCvd (float) : series float The final Cumulative Volume Delta (CVD) value of the source profile.
srcCvdHi (float) : series float The historical high-water mark of the CVD from the source profile.
srcCvdLo (float) : series float The historical low-water mark of the CVD from the source profile.
Returns: VProf `self` (chaining), now containing the merged data.
method addBar(self, offset)
Add current bar’s volume to the profile (call once per realtime bar).
classic mode: allocates all volume to the close bucket and classifies
by `close >= open`. PDF mode: distributes volume across buckets by the
estimator’s CDF mass. For `split = dynamic`, the buy/sell share per
price is computed via context-driven piecewise s(u).
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
offset (int) : series int To offset the calculated bar
Returns: VProf `self` (method chaining)
method setBuckets(self, buckets)
Sets the number of buckets for the volume profile.
Behavior depends on the `isDynamic` flag.
- If `dynamic = true`: Works on filled profiles by re-bucketing to a new resolution.
- If `dynamic = false`: Only works on empty profiles to prevent accidental changes.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
buckets (int) : series int The new number of buckets
Returns: VProf `self` (chaining)
method setRanges(self, rangeUp, rangeLo)
Sets the price range for the volume profile.
Behavior depends on the `dynamic` flag.
- If `dynamic = true`: Works on filled profiles by re-bucketing existing volume.
- If `dynamic = false`: Only works on empty profiles to prevent accidental changes.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
rangeUp (float) : series float The new upper price bound
rangeLo (float) : series float The new lower price bound
Returns: VProf `self` (chaining)
method setValueArea(self, valueArea)
Set the percentage of volume for the Value Area. If the value
changes, the profile is finalized again.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
valueArea (int) : series int The new Value Area percentage (0..100)
Returns: VProf `self` (chaining)
method getBktBuyVol(self, idx)
Get Buy volume of a bucket.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
idx (int) : series int Bucket index
Returns: series float Buy volume ≥ 0
method getBktSellVol(self, idx)
Get Sell volume of a bucket.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
idx (int) : series int Bucket index
Returns: series float Sell volume ≥ 0
method getBktBnds(self, idx)
Get Bounds of a bucket.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
idx (int) : series int Bucket index
Returns:
up series float The upper price bound of the bucket.
lo series float The lower price bound of the bucket.
method getPoc(self)
Get POC information.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
Returns:
pocIndex series int The index of the Point of Control (POC) bucket.
pocPrice. series float The mid-price of the Point of Control (POC) bucket.
method getVA(self)
Get Value Area (VA) information.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
Returns:
vaUpIndex series int The index of the upper bound bucket of the Value Area.
vaUpPrice series float The upper price bound of the Value Area.
vaLoIndex series int The index of the lower bound bucket of the Value Area.
vaLoPrice series float The lower price bound of the Value Area.
method getMedian(self)
Get the profile's median price and its bucket index. Calculates the value on-demand if stale.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object.
Returns:
medianIndex series int The index of the bucket containing the Median.
medianPrice series float The Median price of the profile.
method getVwap(self)
Get the profile's VWAP and its bucket index. Calculates the value on-demand if stale.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object.
Returns:
vwapIndex series int The index of the bucket containing the VWAP.
vwapPrice series float The Volume Weighted Average Price of the profile.
method getStdDev(self)
Get the profile's volume-weighted standard deviation. Calculates the value on-demand if stale.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object.
Returns: series float The Standard deviation of the profile.
method getSkewness(self)
Get the profile's skewness. Calculates the value on-demand if stale.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object.
Returns: series float The Skewness of the profile.
method getKurtosis(self)
Get the profile's excess kurtosis. Calculates the value on-demand if stale.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object.
Returns: series float The Kurtosis of the profile.
method getSegments(self)
Get the profile's fundamental unimodal segments. Calculates on-demand if stale.
Uses a parameter-free, pivot-based recursive algorithm.
Namespace types: VProf
Parameters:
self (VProf) : VProf The profile object.
Returns: matrix A 2-column matrix where each row is an pair.
method getCvd(self)
Cumulative Volume Delta (CVD) like metric over all buckets.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object.
Returns:
cvd series float The final Cumulative Volume Delta (Total Buy Vol - Total Sell Vol).
cvdHi series float The running high-water mark of the CVD as volume was added.
cvdLo series float The running low-water mark of the CVD as volume was added.
VProf
VProf Bucketed Buy/Sell volume profile plus meta information.
Fields:
buckets (series int) : int Number of price buckets (granularity ≥1)
rangeUp (series float) : float Upper price range (absolute)
rangeLo (series float) : float Lower price range (absolute)
dynamic (series bool) : bool Flag for dynamic adaption of profile ranges
valueArea (series int) : int Percentage of total volume to include in the Value Area (1..100)
allot (series AllotMode) : AllotMode Allocation mode `classic` or `pdf`
estimator (series PriceEst enum from AustrianTradingMachine/LibBrSt/1) : LibBrSt.PriceEst Price density model when `model == PDF`
cdfSteps (series int) : int Simpson integration resolution (even ≥2)
split (series SplitMode) : SplitMode Buy/Sell split strategy per bar
trendLen (series int) : int Look‑back length for trend factor (≥1)
maxBkt (series int) : int User-defined number of buckets (unclamped)
aBuy (array) : array Buy volume per bucket
aSell (array) : array Sell volume per bucket
cvd (series float) : float Final Cumulative Volume Delta (Total Buy Vol - Total Sell Vol).
cvdHi (series float) : float Running high-water mark of the CVD as volume was added.
cvdLo (series float) : float Running low-water mark of the CVD as volume was added.
poc (series int) : int Index of max‑volume bucket (POC). Is `na` until calculated.
vaUp (series int) : int Index of upper Value‑Area bound. Is `na` until calculated.
vaLo (series int) : int Index of lower value‑Area bound. Is `na` until calculated.
median (series float) : float Median price of the volume distribution. Is `na` until calculated.
vwap (series float) : float Profile VWAP (Volume Weighted Average Price). Is `na` until calculated.
stdDev (series float) : float Standard Deviation of volume around the VWAP. Is `na` until calculated.
skewness (series float) : float Skewness of the volume distribution. Is `na` until calculated.
kurtosis (series float) : float Excess Kurtosis of the volume distribution. Is `na` until calculated.
segments (matrix) : matrix A 2-column matrix where each row is an pair. Is `na` until calculated.
DayFlow VWAP Relay Forex Majors StrategySummary in one paragraph
DayFlow VWAP Relay is a day-trading strategy for major FX pairs on intraday timeframes, demonstrated on EURUSD 15 minutes. It waits for alignment between a daily anchored VWAP regime check, residual percentiles, and lower-timeframe micro flow before suggesting trades. The originality is the fusion of daily VWAP residual percentiles with a live micro-flow score from 1 minute data to switch between fade and breakout behavior inside the same session. Add it to a clean chart and use the markers and alerts.
Scope and intent
• Markets: Major FX pairs such as EURUSD, GBPUSD, USDJPY, AUDUSD, USDCHF, USDCAD
• Timeframes: One minute to one hour
• Default demo in this publication: EURUSD on 15 minutes
• Purpose: Reduce false starts by acting only when context, location and micro flow agree
• Limits: This is a strategy. Orders are simulated on standard candles only
Originality and usefulness
• Core novelty: Residual percentiles to daily anchored VWAP decide “balanced versus expanding day”. A separate 1 minute micro-flow score confirms direction, so the same model fades extremes in balance and rides range breaks in expansion
• Failure modes addressed: Chop fakeouts and unconfirmed breakouts are filtered by the expansion gate and micro-flow threshold
• Testability: Every input is exposed. Bands, background regime color, and markers show why a suggestion appears
• Portable yardstick: Stops and targets are ATR multiples converted to ticks, which transfer across symbols
• Open source status: No reused third-party code that requires attribution
Method overview in plain language
The day is anchored with a VWAP that updates from the daily session start. Price minus VWAP is the residual. Percentiles of that residual measured over a rolling window define location extremes for the current day. A regime score compares residual volatility to price volatility. When expansion is low, the day is treated as balanced and the model fades residual extremes if 1 minute micro flow points back to VWAP. When expansion is high, the model trades breakouts outside the VWAP bands if slope and micro flow agree with the move.
Base measures
• Range basis: True Range smoothed by ATR for stops and targets, length 14
• Return basis: Not required for signals; residuals are absolute price distance to VWAP
Components
• Daily Anchor VWAP Bands. VWAP with standard-deviation bands. Slope sign is used for trend confirmation on breakouts
• Residual Percentiles. Rolling percentiles of close minus VWAP over Signal length. Identify location extremes inside the day
• Expansion Ratio. Standard deviation of residuals divided by standard deviation of price over Signal length. Classifies balanced versus expanding day
• Micro Flow. Net up minus down closes from 1 minute data across a short span, normalized to −1..+1. Confirms direction and avoids fades against pressure
• Session Window optional. Restricts trading to your configured hours to avoid thin periods
• Cooldown optional. Bars to wait after a position closes to prevent immediate re-entry
Fusion rule
Gating rather than weighting. First choose regime by Expansion Ratio versus the Expansion gate. Inside each regime all listed conditions must be true: location test plus micro-flow threshold plus session window plus cooldown. Breakouts also require VWAP slope alignment.
Signal rule
• Long suggestion on balanced day: residual at or below the lower percentile and micro flow positive above the gate while inside session and cooldown is satisfied
• Short suggestion on balanced day: residual at or above the upper percentile and micro flow negative below the gate while inside session and cooldown is satisfied
• Long suggestion on expanding day: close above the upper VWAP band, VWAP slope positive, micro flow positive, session and cooldown satisfied
• Short suggestion on expanding day: close below the lower VWAP band, VWAP slope negative, micro flow negative, session and cooldown satisfied
• Positions flip on opposite suggestions or exit by brackets
What you will see on the chart
• Markers on suggestion bars: L for long, S for short
• Exit occurs on reverse signal or when a bracket order is filled
• Reference lines: daily anchored VWAP with upper and lower bands
• Optional background: teal for balanced day, orange for expanding day
Inputs with guidance
Setup
• Signal length. Residual and regime window. Typical 40 to 100. Higher smooths, lower reacts faster
Micro Flow
• Micro TF. Lower timeframe used for micro flow, default 1 minute
• Micro span bars. Count of lower-TF bars. Typical 5 to 20
• Micro flow gate 0..1. Minimum absolute flow. Raising it demands stronger confirmation and reduces trade count
VWAP Bands
• VWAP stdev multiplier. Band width. Typical 0.8 to 1.6. Wider bands reduce breakout frequency and increase fade distance
• Expansion gate 0..3. Threshold to switch from fades to breakouts. Raising it favors fades, lowering it favors breakouts
Sessions
• Use session filter. Enable to trade only inside your window
• Trade window UTC. Default 07:00 to 17:00
Risk
• ATR length. Stop and target basis. Typical 10 to 21
• Stop ATR x. Initial stop distance in ATR multiples
• Target ATR x. Profit target distance in ATR multiples
• Cooldown bars after close. Wait bars before a new entry
• Side. Both, long only, or short only
View
• Show VWAP and bands
• Color bars by residual regime
Properties visible in this publication
• Initial capital 10000
• Base currency Default
• request.security uses lookahead off everywhere
• Strategy: Percent of equity with value 3. Pyramiding 0. Commission cash per order 0.0001 USD. Slippage 3 ticks. Process orders on close ON. Bar magnifier ON. Recalculate after order is filled OFF. Calc on every tick OFF. Using standard OHLC fills ON.
Realism and responsible publication
No performance claims. Past results never guarantee future outcomes. Fills and slippage vary by venue. Shapes can move while a bar forms and settle on close. Strategies must run on standard candles for signals and orders.
Honest limitations and failure modes
High impact news, session opens, and thin liquidity can invalidate assumptions. Very quiet days can reduce contrast between residuals and price volatility. Session windows use the chart exchange time. If both stop and target are touched within a single bar, TradingView’s standard OHLC price-movement model decides the outcome.
Expect different behavior on illiquid pairs or during holidays. The model is sensitive to session definitions and feed time. Past results never guarantee future outcomes.
Legal
Education and research only. Not investment advice. You are responsible for your decisions. Test on historical data and in simulation before any live use. Use realistic costs.
Blue Dot Red DotInspired by Dr Wish
This script is a confluence indicator designed to identify potential trend reversals or "mean reversion" trade setups. It plots buy (blue) and sell (red) dots directly on your price chart.
The core strategy is to find moments where price is overextended (using Bollinger Bands) and momentum is simultaneously reversing (using the Stochastic Oscillator). A signal is only generated when both of these conditions are met.
Core Components
The script combines two classic technical indicators:
Bollinger Bands (BB):
These create a "channel" around the price based on a simple moving average (the basis) and a standard deviation (dev).
Upper Band: Basis + (2.0 * StdDev)
Lower Band: Basis - (2.0 * StdDev)
In this script, the bands are used to identify when the price has moved significantly far from its recent average, suggesting it's "overbought" (at the upper band) or "oversold" (at the lower band) and may be due for a pullback.
Stochastic Oscillator:
This is a momentum oscillator that compares a closing price to its price range over a certain period.
It consists of two lines: %K (the main, faster line) and %D (a moving average of %K, the slower signal line).
It's used to identify overbought and oversold momentum conditions and, more importantly, momentum shifts, which are signaled by the %K and %D lines crossing.
Signal Logic: How the Dots Are Generated
This script's "secret sauce" is that it demands three specific conditions to be true at the same time before plotting a dot.
🔵 Blue Dot (Buy Signal)
A blue dot will appear below a price bar if all three of these conditions are met:
Stochastic Crossover: The faster %K line crosses above the slower %D line (ta.crossover(k, d)). This signals that short-term momentum is starting to turn bullish.
Was Oversold: On the previous bar, the %K line was below the "Oversold Threshold" (was_oversold = k < oversold). This ensures the bullish crossover is happening from an oversold (or at least bearish) momentum state.
Note: The default oversold threshold is set to 50. This is a key detail. It means the script is looking for a bullish crossover that originates from anywhere in the bottom half of the Stochastic range, not just the traditional "extreme" oversold area (like 20).
Price Extension: Within the last 3 bars (the current bar or the two before it), the price's low must have touched or gone below the lower Bollinger Band (bb_touch_lower). This confirms that the price itself is in an "oversold" or overextended area.
In plain English: A blue dot appears when the price has recently dipped to an extreme low (touching the lower BB) and its underlying momentum has just started to turn back up (Stoch cross from the lower half).
🔴 Red Dot (Sell Signal)
A red dot will appear above a price bar if all three of these conditions are met:
Stochastic Crossunder: The faster %K line crosses below the slower %D line (ta.crossunder(k, d)). This signals that short-term momentum is starting to turn bearish.
Was Overbought: On the previous bar, the %K line was above the "Overbought Threshold" (was_overbought = k > overbought). The default for this is 80, which is a traditional overbought level.
Price Extension: Within the last 3 bars (the current bar or the two before it), the price's high must have touched or gone above the upper Bollinger Band (bb_touch_upper). This confirms that the price itself is in an "overbought" or overextended area.
A red dot appears when the price has recently spiked to an extreme high (touching the upper BB) and its underlying momentum has just started to roll over and turn back down (Stoch cross from the overbought zone).
Aurum DCX AVE Gold and Silver StrategySummary in one paragraph
Aurum DCX AVE is a volatility break strategy for gold and silver on intraday and swing timeframes. It aligns a new Directional Convexity Index with an Adaptive Volatility Envelope and an optional USD/DXY bias so trades appear only when direction quality and expansion agree. It is original because it fuses three pieces rarely combined in one model for metals: a convexity aware trend strength score, a percentile based envelope that widens with regime heat, and an intermarket DXY filter.
Scope and intent
• Markets. Gold and silver futures or spot, other liquid commodities, major indices
• Timeframes. Five minutes to one day. Defaults to 30min for swing pace
• Default demo used in this publication. TVC:GOLD on 30m
• Purpose. Enter confirmed volatility breaks while muting chop using regime heat and USD bias
• Limits. This is a strategy. Orders are simulated on standard candles only
Originality and usefulness
• Unique fusion. DCX combines DI strength with path efficiency and curvature. AVE blends ATR with a high TR percentile and widens with DCX heat. DXY adds an intermarket bias
• Failure mode addressed. False starts inside compression and unconfirmed breakouts during USD swings
• Testability. Each component has a named input. Entry names L and S are visible in the list of trades
• Portable yardstick. Weekly ATR for stops and R multiples for targets
• Open source. Method and implementation are disclosed for community review
Method overview in plain language
You score direction quality with DCX, size an adaptive envelope with a blend of ATR and a high TR percentile, and only allow breaks that clear the band while DCX is above a heat threshold in the same direction. An optional DXY filter favors long when USD weakens and short when USD strengthens. Orders are bracketed with a Weekly ATR stop and an R multiple target, with optional trailing to the envelope.
Base measures
• Range basis. True Range and ATR over user windows. A high TR percentile captures expansion tails used by AVE
• Return basis. Not required
Components
• Directional Convexity Index DCX. Measures directional strength with DX, multiplies by path efficiency, blends a curvature term from acceleration, scales to 0 to 100, and uses a rise window
• Adaptive Volatility Envelope AVE. Midline ALMA or HMA or EMA plus bands sized by a blend of ATR and a high TR percentile. The blend weight follows volatility of volatility. Band width widens with DCX heat
• DXY Bias optional. Daily EMA trend of DXY. Long bias when USD weakens. Short bias when USD strengthens
• Risk block. Initial stop equals Weekly ATR times a multiplier. Target equals an R multiple of the initial risk. Optional trailing to AVE band
Fusion rule
• All gates must pass. DCX above threshold and rising. Directional lead agrees. Price breaks the AVE band in the same direction. DXY bias agrees when enabled
Signal rule
• Long. Close above AVE upper and DCX above threshold and DCX rising and plus DI leads and DXY bias is bearish
• Short. Close below AVE lower and DCX above threshold and DCX falling and minus DI leads and DXY bias is bullish
• Exit and flip. Bracket exit at stop or target. Optional trailing to AVE band
Inputs with guidance
Setup
• Symbol. Default TVC:GOLD (Correlation Asset for internal logic)
• Signal timeframe. Blank follows the chart
• Confirm timeframe. Default 1 day used by the bias block
Directional Convexity Index
• DCX window. Typical 10 to 21. Higher filters more. Lower reacts earlier
• DCX rise bars. Typical 3 to 6. Higher demands continuation
• DCX entry threshold. Typical 15 to 35. Higher avoids soft moves
• Efficiency floor. Typical 0.02 to 0.06. Stability in quiet tape
• Convexity weight 0..1. Typical 0.25 to 0.50. Higher gives curvature more influence
Adaptive Volatility Envelope
• AVE window. Typical 24 to 48. Higher smooths more
• Midline type. ALMA or HMA or EMA per preference
• TR percentile 0..100. Typical 75 to 90. Higher favors only strong expansions
• Vol of vol reference. Typical 0.05 to 0.30. Controls how much the percentile term weighs against ATR
• Base envelope mult. Typical 1.4 to 2.2. Width of bands
• Regime adapt 0..1. Typical 0.6 to 0.95. How much DCX heat widens or narrows the bands
Intermarket Bias
• Use DXY bias. Default ON
• DXY timeframe. Default 1 day
• DXY trend window. Typical 10 to 50
Risk
• Risk percent per trade. Reporting field. Keep live risk near one to two percent
• Weekly ATR. Default 14. Basis for stops
• Stop ATR weekly mult. Typical 1.5 to 3.0
• Take profit R multiple. Typical 1.5 to 3.0
• Trail with AVE band. Optional. OFF by default
Properties visible in this publication
• Initial capital. 20000
• Base currency. USD
• request.security lookahead off everywhere
• Commission. 0.03 percent
• Slippage. 5 ticks
• Default order size method percent of equity with value 3% of the total capital available
• Pyramiding 0
• Process orders on close ON
• Bar magnifier ON
• Recalculate after order is filled OFF
• Calc on every tick OFF
Realism and responsible publication
• No performance claims. Past results never guarantee future outcomes
• Shapes can move while a bar forms and settle on close
• Strategies use standard candles for signals and orders only
Honest limitations and failure modes
• Economic releases and thin liquidity can break assumptions behind the expansion logic
• Gap heavy symbols may prefer a longer ATR window
• Very quiet regimes can reduce signal contrast. Consider higher DCX thresholds or wider bands
• Session time follows the exchange of the chart and can change symbol to symbol
• Symbol sensitivity is expected. Use the gates and length inputs to find stable settings
Open source reuse and credits
• None
Mode
Public open source. Source is visible and free to reuse within TradingView House Rules
Legal
Education and research only. Not investment advice. You are responsible for your decisions. Test on historical data and in simulation before any live use. Use realistic costs.
AlgoWay GRSIM🧭 What this strategy tries to do
This strategy detects when a market move is losing strength and prepares for a potential reversal, but it waits for fresh momentum confirmation before acting.
It combines:
• RSI-based divergence (to spot exhaustion and potential turning points),
• Impulse MACD (to verify that the new direction actually has force behind it).
________________________________________
⚙️ When it takes trades
Long (Buy):
• A bullish RSI divergence appears (a clue that selling pressure is fading);
• Within a short time window, the Impulse MACD turns strongly positive;
• Optionally, the impulse line itself must be rising (if the Impulse Direction Filter is
enabled).
Short (Sell):
• A bearish RSI divergence appears (buying pressure fading);
• Within a short time window, the Impulse MACD turns strongly negative;
• Optionally, the impulse line must be falling (if the Impulse Direction Filter is enabled).
If momentum confirmation happens too late, the divergence “expires” and the signal is ignored.
________________________________________
🧩 How entries work
1. Reversal clue:
The strategy detects disagreement between price and RSI (price makes a new high/low, RSI doesn’t).
That suggests a shift in underlying strength.
2. Momentum confirmation:
Before entering, the Impulse MACD must agree — showing real push in the same direction.
3. Impulse direction filter (optional):
When enabled, the impulse itself must accelerate (rise for longs, fall for shorts), avoiding fake signals where price diverges but momentum is still fading.
4. No stacking:
It opens only one position at a time.
________________________________________
🚪 How exits work
Two main exit styles:
Conservative (default):
Longs close when impulse crosses below its signal line.
Shorts close when impulse crosses above its signal line.
✅ Keeps trades as long as momentum agrees.
Color-change (fast):
Longs close immediately when impulse flips bearish.
Shorts close immediately when impulse flips bullish.
⚡ Faster and more defensive.
Plus:
Stop Loss (%) and Take Profit (%) act as fixed-distance protective exits (set to 0 to disable either one).
________________________________________
📊 What you’ll see on the chart
A thick Impulse MACD line and thin signal line (oscillator view).
Diamonds — detected bullish/bearish divergence points.
Circles — where impulse crosses its signal (momentum change).
A performance panel (top-right) showing Net Profit, Trades, Win Rate, Profit Factor, Pessimistic PF, and Max Drawdown.
________________________________________
🔧 What you can tune
Signal Lifetime (bars): how long a divergence remains valid.
Impulse Direction Filter: ensure the impulse itself is moving in the trade’s direction.
Stop Loss / Take Profit (%): risk and target in percent.
Exit Style: conservative cross or faster color-change.
RSI / MA / Signal Lengths: adjust responsiveness (defaults are balanced).
________________________________________
💪 Strengths
Confirms reversals using momentum direction, not just divergence.
Avoids “early” signals where momentum is still fading.
Works symmetrically for longs and shorts.
Built-in stop/target protection.
Clear, visual confirmation of all logic components.
________________________________________
⚠️ Things to keep in mind
In sideways markets, the impulse can flip often — prefer conservative exits.
Too small SL/TP → constant stop-outs.
Too wide SL/TP → deep drawdowns.
Always test with different timeframes and markets.
________________________________________
💡 Practical tips
Start with default settings.
Enable “Use Impulse Direction Filter” in trending markets, disable it in very choppy ones.
Focus on Profit Factor, Win Rate, and Max Drawdown after several dozen trades.
Keep SL/TP roughly aligned with typical swing size.
“AlgoWay GRSIM” is a reversal-with-confirmation strategy: it spots likely turns, demands real momentum alignment (optionally verified by impulse direction), and manages exits with clear momentum cues plus built-in protective limits.
Tweezer & Kangaroo Zones [WavesUnchained]Tweezer & Kangaroo Zones
Pattern Recognition with Supply/Demand Zones
Indicator that detects tweezer and kangaroo tail (pin bar) reversal patterns and creates supply and demand zones. Includes volume validation, trend context, and confluence scoring.
What You See on Your Chart
Pattern Labels:
"T" (Red) - Tweezer Top detected above price → Bearish reversal signal
"T" (Green) - Tweezer Bottom detected below price → Bullish reversal signal
"K" (Red) - Kangaroo Bear (Pin Bar rejection from top) → Bearish signal
"K" (Green) - Kangaroo Bull (Pin Bar rejection from bottom) → Bullish signal
Label Colors Indicate Pattern Strength:
Dark Green/Red - Strong pattern (score ≥8.0)
Medium Green/Red - Good pattern (score ≥6.0)
Light Green/Red - Valid pattern (score <6.0)
Zone Boxes:
Red Boxes - Supply Zones (resistance, potential short areas)
Green Boxes - Demand Zones (support, potential long areas)
White Border - Active zone (fresh, not tested yet)
Gray Border - Inactive zone (expired or invalidated)
Pattern Detection
Tweezer Patterns (Classic Double-Top/Bottom):
Flexible Lookback - Detects patterns up to 3 bars apart (not just consecutive)
Precision Matching - 0.2% level tolerance for high-quality signals
Wick Similarity Check - Both candles must show similar rejection wicks
Volume Validation - Second candle requires elevated volume (0.8x average)
Pattern Strength Score - 0-1 quality rating based on level match + wick similarity
Optional Trend Context - Can require trend alignment (default: OFF for more signals)
Kangaroo Tail / Pin Bar Patterns:
No Pivot Delay - Instant detection without waiting for pivot confirmation
Body Position Check - Body must be at candle extremes (30% tolerance)
Volume Spike - Rejection must occur with volume (0.9x average)
Rejection Strength - Scores based on wick length (0.5-0.9 of range)
Optional Trend Context - Bearish in uptrends, Bullish in downtrends (default: OFF)
Zone Management
Auto-Created Zones - Every valid pattern creates a supply/demand zone
Overlap Prevention - Zones too close together (50% overlap) are not duplicated
Lifetime Control - Zones expire after 400 bars (configurable)
Smart Invalidation - Zones invalidate when price closes through them
Styling Options - Choose between Solid, Dashed, or Dotted borders
Border Width - 2px width for better visibility
Confluence Scoring System
Multi-factor confluence scoring (0-10 scale) with configurable weights:
Regime (EMA+HTF) - Trend alignment across timeframes (Weight: 2.0)
HTF Stack - Multi-timeframe trend confluence (Weight: 3.0)
Structure - Higher lows / Lower highs confirmation (Weight: 1.0)
Relative Volume - Volume surge validation (Weight: 1.0)
Chop Advantage - Favorable market conditions (Weight: 1.0)
Zone Thinness - Tight zones = better R/R (Weight: 1.0)
Supertrend - Trend indicator alignment (Weight: 1.0)
MOST - Moving Stop alignment (Weight: 1.0)
Pattern Strength - Quality of detected pattern (Weight: 1.5)
Zone Retest Signals
Signals generated when zones are retested:
BUY Signal - Price retests demand zone from above (score ≥4.5)
SELL Signal - Price retests supply zone from below (score ≥5.5)
Normalized Score - Displayed as 0-10 for easy interpretation
Optional Trend Gate - Require trend alignment for signals (default: OFF)
Alert Ready - Built-in alertconditions for automation
Additional Features
Auto-Threshold Tuning - Adapts to ATR and Choppiness automatically
Session Profiles - Different settings for RTH vs ETH sessions
Organized Settings - 15+ input groups for easy configuration
Optional Panels - HTF Stack overview and performance metrics (default: OFF)
Data Exports - Hidden plots for strategy/library integration
RTA Health Monitoring - Built-in performance tracking
Setup & Configuration
Quick Start:
1. Apply indicator to any timeframe
2. Patterns and zones appear automatically
3. Adjust pattern detection sensitivity if needed
4. Configure zone styling (Solid/Dashed/Dotted)
5. Set up alerts for zone retests
Key Settings to Adjust:
Pattern Detection:
• Min RelVolume: Lower = more signals (0.8 Tweezer, 0.9 Kangaroo)
• Require trend context: Enable for stricter, higher-quality patterns
• Check wick similarity: Ensures proper rejection structure
Zone Management:
• Zone lifetime: How long zones remain active (default: 400 bars)
• Invalidate on close-through: Remove zones when price breaks through
• Max overlap: Prevent duplicate zones (default: 50%)
Scoring:
• Min Score BUY/SELL: Higher = fewer but better signals (default: 4.5/5.5)
• Component weights: Customize what factors matter most
• Signals require trend gate: OFF = more signals, ON = higher quality
Visual Customization
Zone Colors - Light red/green with 85% transparency (non-intrusive)
Border Styles - Solid, Dashed, or Dotted
Label Intensity - Darker greens for better readability
Clean Charts - All panels OFF by default
Understanding the Zones
Supply Zones (Red):
Created from bearish patterns (Tweezer Tops, Kangaroo Bears). Price made a high attempt to push higher, but was rejected. These become resistance areas where sellers may step in again.
Demand Zones (Green):
Created from bullish patterns (Tweezer Bottoms, Kangaroo Bulls). Price made a low with strong rejection. These become support areas where buyers may step in again.
Zone Quality Indicators:
• White border = Fresh zone, not tested yet
• Gray border = Zone expired or invalidated
• Thin zones (tight range) = Better risk/reward ratio
• Thick zones = Less precise, wider stop required
Trading Applications
Reversal Trading - Enter at pattern detection with tight stops
Zone Retest Trading - Wait for retests of established zones
Trend Confluence - Trade only when patterns align with trend
Risk Management - Use zone boundaries for stop placement
Target Setting - Opposite zones become profit targets
Pro Tips
Best signals occur when pattern + zone retest + trend all align
Lower timeframes = more signals but more noise
Higher timeframes = fewer but more reliable signals
Start with default settings, adjust based on your market
Combine with other analysis (structure, key levels, etc.)
Use alerts to avoid staring at charts all day
Important Notes
Not all patterns will lead to successful trades
Use proper risk management and position sizing
Patterns work best in trending or range-bound markets
Very choppy conditions may produce lower-quality signals
Always confirm with your own analysis before trading
Technical Specifications
• Pine Script v6
• RTA-Core integration
• RTA Core Library integration
• Maximum 200 boxes, 500 labels
• Auto-tuning based on ATR and Choppiness
• Session-aware threshold adjustments
• Memory-optimized zone management
What's Included
Tweezer Top/Bottom detection
Kangaroo Tail / Pin Bar detection
Automatic supply/demand zone creation
Volume validation system
Pattern strength scoring
Zone retest signals
Multi-factor confluence scoring
Optional HTF Stack panel
Optional performance metrics
Session profile support
Auto-threshold tuning
Alert conditions
Data exports for strategies
Author Waves Unchained
Version 1.0
Status Public Indicator
Summary
Reversal pattern detection with zone management, volume validation, and confluence scoring for tweezer and kangaroo tail patterns.
---
Disclaimer: This indicator is for educational and informational purposes only. Trading involves risk. Past performance does not guarantee future results. Always practice proper risk management.
Reversal Probability Meter PRO [optimized for Xau/Usd m5]🎯 Reversal Probability Meter PRO
A powerful multi-factor reversal probability detector that calculates the likelihood of bullish or bearish reversals using RSI, EMA bias, ATR spikes, candle patterns, volume spikes, and higher timeframe (HTF) trend alignment.
🧩 MAIN FEATURES
1. Reversal Probability (Bullish & Bearish)
Displays two key metrics:
Bull % — probability of bullish reversal
Bear % — probability of bearish reversal
These are computed using RSI, EMAs, ATR, demand/supply zones, candle confirmations, and volume spikes.
📊 Interpretation:
Bull % > 70% → Buying pressure building up
Bull % > 85% → Strong bullish reversal confirmed
Bear % > 70% → Selling pressure building up
Bear % > 85% → Strong bearish reversal confirmed
2. Alert Probability Threshold
Adjustable via alertThreshold (default = 85%).
Alerts trigger only when probability ≥ threshold, and confirmed by zone + volume spike + candle pattern.
🔔 Alerts Available:
✅ Bullish Smart Reversal
🔻 Bearish Smart Reversal
To activate: Right-click chart → “Add alert” → choose the alert condition from the indicator.
3. Demand / Supply Zone Detection
The script determines the price position within the last zoneLook (default 30) bars:
🟢 DEMAND → Lower 35% of range (potential bounce zone)
🔴 SUPPLY → Upper 35% of range (potential rejection zone)
⚪ MID → Neutral area
📘 Purpose: Validates reversals based on context:
Bullish only valid in Demand zones
Bearish only valid in Supply zones
4. Higher Timeframe (HTF) Trend Alignment
Reads EMA bias from a higher timeframe (default = 15m) for trend confirmation.
Reversals against HTF trend are automatically weighted down prevents false countertrend signals.
📈 Example:
M5 chart under M15 downtrend → Bullish probability is reduced.
5. Candle Confirmation Patterns
Two key price action confirmations:
Bullish: Engulfing or Pin Bar
Bearish: Engulfing or Pin Bar
A valid reversal requires both a candle confirmation and a volume spike.
6. Volume & ATR Spike Filters
Volume Spike: volume > SMA(20) × 1.3
ATR Spike: ATR > SMA(ATR, 50) × volMult
🎯 Ensures that only strong market moves with real energy are considered valid reversals.
7. Reversal Momentum Histogram
A color-gradient oscillator showing the momentum difference:
Green = bullish dominance
Red = bearish dominance
Flat near 0 = neutral
Controlled by showOscillator toggle.
8. Smart Info Panel
A compact dashboard displayed on the top-right with 4 rows:
Row Info Description
1 Bull % Bullish reversal probability
2 Bear % Bearish reversal probability
3 Zone Market context (DEMAND / SUPPLY / MID)
4 Signal Strength Current signal intensity (probability %)
Dynamic Colors:
90% → Bright (strong signal)
75–90% → Yellow/Orange (medium)
<75% → Gray (weak)
9. Sensitivity Mode
Fine-tunes indicator reactivity:
🟥 Aggressive: Detects reversals early (more signals, less accurate)
🟨 Normal: Balanced, default mode
🟩 Conservative: Filters only strongest reversals (fewer but more reliable)
10. Custom Color Options
Customize bullish and bearish colors via bullBaseColor and bearBaseColor inputs for your preferred chart theme.
⚙️ HOW TO USE
Add to Chart
→ Paste the script into Pine Editor → “Add to chart”.
Select Timeframe
→ Best for M5–M30 (scalping/intraday).
→ H1–H4 for swing trading.
Monitor the Info Panel:
Bull % ≥ 85% + Zone = Demand → Strong bullish reversal signal
Bear % ≥ 85% + Zone = Supply → Strong bearish reversal signal
Watch the Histogram:
Rising green bars = bullish momentum gaining
Deep red bars = bearish momentum gaining
Enable Alerts:
Right-click chart → “Add alert”
Choose Bullish Smart Reversal or Bearish Smart Reversal
🧠 TRADING TIPS
Use Conservative mode for noisy lower timeframes (M5–M15).
Use Aggressive mode for higher timeframes (H1–H4).
Combine with manual support/resistance or zone boxes for precision entries. Personally i use Order Block.
Best reversal setups occur when all align:
Bull % > 85%
Zone = DEMAND
Volume spike present
Candle = Bullish engulfing
HTF trend supportive
X VIBVolume Imbalance Zones
X VIB highlights price-levels where buying or selling pressure overwhelmed the opposing side within a single bar transition, leaving a void that the market often revisits. The script paints those voids as boxes so you can quickly see where liquidity may rest, where price may pause or react, and which imbalances persist across sessions.
What it plots
For each completed calculation bar (your chart’s timeframe or a higher timeframe you choose), the indicator draws a box that spans the prior bar’s close to the current bar’s open—only when that bar-to-bar transition exhibits a valid volume imbalance (VIB) by the selected rules. Boxes are time-anchored from the previous bar’s time to the current bar’s time close, and they are capped to a configurable count so the chart remains readable.
Two ways to define “Volume Imbalance”
X VIB calculates imbalances in two complementary ways. Both techniques isolate bar-to-bar displacement that reflects one-sided pressure, but they differ in strictness and how much confirmation they require.
Continuity VIB (Bar-to-Bar Displacement)
A strict definition that requires aligned progress and overlap between consecutive bars. In practical terms, a bullish continuity VIB demands that the new bar advances beyond the prior bar’s close, opens above it, and maintains upward progress without erasing the displacement; the bearish case mirrors this to the downside.
Use when: you want the cleanest, most structurally reliable voids that reflect decisive initiative flow.
Effect on boxes: typically fewer, higher-quality zones that mark locations of strong one-sided intent.
Gap-Qualified VIB (Displacement with Gap Confirmation)
A confirmatory definition that treats the bar-to-bar displacement as an imbalance only if the transition also observes a protective “gap-like” relationship with surrounding prices. This extra condition filters out many borderline transitions and emphasizes voids that were less likely to be traded through on their formation.
Use when: you want additional confirmation that the void had genuine follow-through pressure at birth.
Effect on boxes: often slightly fewer but “stickier” zones that can attract price on retests.
Both modes are drawn identically on the chart (as boxes spanning the displacement). Their difference is purely in the qualification of what counts as a VIB. You can display either set independently or together to compare how each mode surfaces structure.
Multi-Timeframe (MTF) logic
You can compute imbalances on a higher timeframe (e.g., 15-minute) while viewing a lower timeframe chart. When MTF is active, X VIB:
Samples open, high, low, close, time, and time_close from the selected HTF in a single, synchronized request (no gaps, no lookahead).
Only evaluates and draws boxes once per HTF bar close, ensuring clean, stable zones that don’t repaint intra-bar.
How traders use these zones
Reversion into voids: Price often returns to “fill” part of a void before deciding on continuation or reversal.
Context for entries/exits: VIB boxes provide precise, mechanically derived levels for limit entries, scale-outs, and invalidation points.
Confluence: Combine with session opens, HTF levels, or volatility bands to grade setups. Continuity VIBs can mark impulse anchors; Gap-Qualified VIBs often mark stickier pockets.
Inputs & controls
Calculate on higher timeframe? Toggle MTF computation; choose your Calc timeframe (e.g., 15).
Show VIBs: Master toggle for drawing imbalance boxes.
Color & Opacity: Pick the box fill and border intensity that suits your theme.
# Instances: Cap how many historical boxes remain on the chart to avoid clutter.
Notes & best practices
Signal density: Continuity VIBs tend to be more frequent on fast charts; Gap-Qualified VIBs are more selective. Try both and keep what aligns with your trade plan.
MTF discipline: When using a higher calc timeframe, analyze reactions primarily at that timeframe’s pace to avoid over-fitting to noise.
Lifecycle awareness: Not all voids fill. Track which boxes persist; durable voids often define the map of the session.
Trendline Breakout Strategy [KedArc Quant] Description
A single, rule-based system that builds two trendlines from confirmed swing pivots and trades their breakouts, with optional retest, trend-regime gates (EMA / HTF EMA), and ATR-based risk. All parts serve one decision flow: structure → breakout → gated entry → managed risk.
What it does (for traders)
Draws Up line (teal) through the last two Higher Lows and Down line (red) through the last two Lower Highs, then extends them forward.
Long when price breaks above red; Short when price breaks below teal.
Optional Retest entry: after a break, wait for a pullback toward the broken line within an ATR-scaled buffer.
Uses ATR stop and R-multiple target so risk is consistent across symbols/timeframes.
Labels HL1/HL2/LH1/LH2 so non-coders can verify which pivots built each line.
Why these components are combined
Pure breakout systems on trendlines suffer from three practical issues:
False breaks in chop → solved by trend-regime gates (EMA / HTF EMA) that only allow trades aligned with the prevailing trend.
Uneven volatility across markets/timeframes → solved by ATR-based stop/target, normalizing distance so R-multiples are comparable.
First break whipsaws near wedge apices → mitigated by the optional retest rule that demands a pullback/hold before entry.
These modules are not separate indicators with their own signals. They are support roles inside one method.
The pivot engine defines structure, the breakout detector defines signal, the regime gates decide if we’re allowed to take that signal, and the ATR module sizes risk.
Together they make the trendline breakout usable, testable, and explainable.
How it works (mechanism; each component explained)
1) Pivot engine (structure, non-repainting)
Swings are confirmed with ta.pivotlow/high(L, R). A pivot only exists after R bars (no look-ahead), so once plotted, the line built from those pivots will not repaint.
2) Trendline builder (geometry)
Teal line updates when two consecutive pivot lows satisfy HL2.price > HL1.price (and HL2 occurs after HL1).
Red line updates when two consecutive pivot highs satisfy LH2.price < LH1.price.
Lines are extended right and their current value is read every bar via line.get_price().
3) Breakout detector (signal)
On every bar, compute:
crossover(close, redLine) ⇒ Long breakout
crossunder(close, tealLine) ⇒ Short breakdown
4) Regime gates (trend filters, not separate signals)
EMA gate: allow longs only if close > EMA(len), shorts only if close < EMA(len).
HTF EMA gate (optional): same rule on a higher timeframe to avoid fighting the larger trend.
These do not create entries; they simply permit or block the breakout signal.
5) Retest module (optional confirmation)
After a breakout, record the line price. A valid retest occurs if price pulls back within an ATR-scaled buffer toward that broken line and then closes back in the breakout direction.
This reduces first-tick fakeouts.
6) Risk module (position exit)
Initial stop = ATR(len) × atrMult from entry.
Target = tpR × (ATR × atrMult) (e.g., 2R).
This keeps results consistent across instruments/timeframes.
Entries & exits
Long entry
Base: close breaks above red and passes EMA/HTF gates.
Retest (if enabled): after the break, price pulls back near the broken red line (within the ATR buffer) and holds; then enter.
Short entry
Mirror logic with teal (break below & gates), optionally with a retest.
Exit
strategy.exit places ATR stop & R-multiple target automatically.
Optional “flip”: close if the opposite base signal triggers.
How to use it (step-by-step)
Timeframe: 1–15m for intraday, 1–4h for swing.
Start defaults: Pivot L/R = 5, EMA len = 200, ATR len = 14, ATR mult = 2, TP = 2R, Retest = ON.
Tune sensitivity:
Faster lines (more trades): set L/R = 3–4.
Fewer counter-trend trades: enable HTF EMA (e.g., 60-min or Daily).
Visual audit: labels HL1/HL2 & LH1/LH2 show which pivots built each line—verify by eye.
Alerts: use Long breakout, Short breakdown, and Retest alerts to automate.
Originality (why it merits publication)
Trades the visualization: many “auto-trendline” tools only draw lines; this one turns them into testable, alertable rules.
Integrated design: each component has a defined role in the same pipeline—no unrelated indicators bolted together.
Transparent & non-repainting: pivot confirmation removes look-ahead; labels let non-coders understand the setup that produced each signal.
Notes & limitations
Lines update only after pivot confirmation; that lag is intentional to avoid repainting.
Breakouts near an apex can whipsaw; prefer Retest and/or HTF gate in choppy regimes.
Backtests are idealized; forward-test and size risk appropriately.
⚠️ Disclaimer
This script is provided for educational purposes only.
Past performance does not guarantee future results.
Trading involves risk, and users should exercise caution and use proper risk management when applying this strategy.
Stalonte EMA - Stable Long-Term EMA with AlertsStalonte EMA - The Adaptive & Stable EMA - Almost Eternal
Here's why you will love "Stalonte":
The Stalonte (Stable Long-Term EMA) is a highly versatile trend-following tool. Unlike standard EMAs with fixed periods, it uses a configurable smoothing constant (alpha), allowing traders to dial in the exact level of responsiveness and stability they need. Finding the "sweet spot" (e.g., alpha ~0.03) creates a uniquely effective moving average: it is smooth enough to filter out noise and identify safe, high-probability trends, yet responsive enough to provide actionable signals without extreme lag. It includes alerts for crossovers and retests.
Pros and Cons of the Stalonte EMA
Pros:
Unparalleled Adaptability: This is its greatest strength. The alpha input lets you seamlessly transform the indicator from an ultra-slow "trend-revealer" (low alpha) into a highly effective and "safe" trend-following tool (medium alpha, e.g., 0.03), all the way to a more reactive one.
Optimized for Safety & Signal Quality: As you astutely pointed out, with the proper setting (like 0.03), it finds the perfect balance. It provides a smoother path than a standard 20-50 period EMA, which reduces whipsaws and false breakouts, leading to safer, higher-confidence signals.
Superior Trend Visualization: It gives a cleaner and more intuitive representation of the market's direction than many conventional moving averages, making it easier to "see" the trend and stick with it.
Objective Dynamic Support/Resistance: The line created with a medium alpha setting acts as a powerful dynamic support in uptrends and resistance in downtrends, offering excellent areas for entries on retests with integrated alerts.
Cons:
Requires Calibration: The only "con" is that its performance is not plug-and-play; it requires the user to find their optimal alpha value for their specific trading style and the instrument they are trading. This demands a period of testing and customization, which a standard 50-period EMA does not.
Conceptual Hurdle: For traders only familiar with period-based EMAs, the concept of a "smoothing constant" can be initially confusing compared to simply setting a "length."
In summary:
The Stalonte EMA is not a laggy relic. It is a highly sophisticated and adaptable tool. Its design allows for precise tuning, enabling a trader to discover a setting that offers a superior blend of stability and responsiveness—a "sweet spot" that provides safer and often more effective signals than many traditional moving averages. Thank you for pushing for a more accurate and fair assessment.
Use Case Example:
You can combine it with classical EMAs to find the perfect entry.
Globex Trap w/ percentage [SLICKRICK]Globex Trap w/ Percentage
Overview
The Globex Trap w/ Percentage indicator is a powerful tool designed to help traders identify high-probability trading opportunities by analyzing price action during the Globex (overnight) session and regular trading hours. By combining Globex session ranges with Supply & Demand zones, this indicator highlights potential "trap" areas where significant price reactions may occur. Additionally, it calculates the Globex session range as a percentage of the daily Average True Range (ATR), providing valuable context for assessing market volatility.
This indicator is ideal for traders in futures markets or other instruments traded during Globex sessions, offering a visual and analytical edge for spotting key price levels and potential reversals or breakouts.
Key Features
Globex Session Tracking:
Visualizes the high and low of the Globex session (default: 3:00 PM to 6:30 AM PST) with customizable time settings.
Displays a semi-transparent box to mark the Globex range, with labels for "Globex High" and "Globex Low."
Calculates the Globex range as a percentage of the daily ATR, displayed as a label for quick reference.
Supply & Demand Zones:
Identifies Supply & Demand zones during regular trading hours (default: 6:00 AM to 8:00 AM PST) with customizable time settings.
Draws semi-transparent boxes to highlight these zones, aiding in the identification of key support and resistance areas.
Trap Area Identification:
Highlights potential trap zones where Globex ranges and Supply & Demand zones overlap, indicating areas where price may reverse or consolidate due to trapped traders.
Customizable Settings:
Adjust Globex and Supply & Demand session times to suit your trading preferences.
Toggle visibility of Globex and Supply & Demand zones independently.
Customize box colors for better chart readability.
Set the lookback period (default: 10 days) to control how many historical zones are displayed.
Configure the ATR length (default: 14) for the percentage calculation.
PST Timezone Default:
All times are based on Pacific Standard Time (PST) by default, ensuring accurate session tracking for users in this timezone or those aligning with U.S. West Coast market hours.
Recommended Usage
Timeframes: Best used on 1-hour charts or lower (e.g., 15-minute, 5-minute) for precise entry and exit points.
Markets: Optimized for futures (e.g., ES, NQ, CL) and other instruments traded during Globex sessions.
Historical Data: Ensure at least 10 days of historical data for optimal visualization of zones.
Strategy Integration: Use the indicator to identify potential reversals or breakouts at Globex highs/lows or Supply & Demand zones. The ATR percentage provides context for whether the Globex range is significant relative to typical daily volatility.
How It Works
Globex Session:
Tracks the high and low prices during the user-defined Globex session (default: 3:00 PM to 6:30 AM PST).
When the session ends, a box is drawn from the start to the end of the session, capturing the high and low prices.
Labels are placed at the midpoint of the session, showing "Globex High," "Globex Low," and the range as a percentage of the daily ATR (e.g., "75.23% of Daily ATR").
Supply & Demand Zones:
Tracks the high and low prices during the user-defined regular trading hours (default: 6:00 AM to 8:00 AM PST).
Draws a box to mark these zones, which often act as key support or resistance levels.
ATR Percentage:
Calculates the Globex range (high minus low) and divides it by the daily ATR to express it as a percentage.
This metric helps traders gauge whether the overnight price movement is significant compared to the instrument’s typical volatility.
Time Handling:
Uses PST (UTC-8) for all time calculations, ensuring accurate session timing for users aligning with this timezone.
Properly handles overnight sessions that cross midnight, ensuring seamless tracking.
Input Settings
Globex Session Settings:
Show Globex Session: Enable/disable Globex session visualization (default: true).
Globex Start/End Time: Set the start and end times for the Globex session (default: 3:00 PM to 6:30 AM PST).
Globex Box Color: Customize the color of the Globex session box (default: semi-transparent gray).
Supply & Demand Zone Settings:
Show Supply & Demand Zone: Enable/disable zone visualization (default: true).
Zone Start/End Time: Set the start and end times for Supply & Demand zones (default: 6:00 AM to 8:00 AM PST).
Zone Box Color: Customize the color of the zone box (default: semi-transparent aqua).
General Settings:
Days to Look Back: Number of historical days to display zones (default: 10).
ATR Length: Period for calculating the daily ATR (default: 14).
Notes
All times are in Pacific Standard Time (PST). Adjust the start and end times if your market operates in a different timezone or if you prefer different session windows.
The indicator is optimized for instruments with active Globex sessions, such as futures. Results may vary for non-24/5 markets.
A typo in the label "Globe Low" (should be "Globex Low") will be corrected in future updates.
Ensure your TradingView chart is set to display sufficient historical data to view the full lookback period.
Why Use This Indicator?
The Globex Trap w/ Percentage indicator provides a unique combination of session-based range analysis, Supply & Demand zone identification, and volatility context via the ATR percentage. Whether you’re a day trader, swing trader, or scalper, this tool helps you:
Pinpoint key price levels where institutional traders may act.
Assess the significance of overnight price movements relative to daily volatility.
Identify potential trap zones for high-probability setups.
Customize the indicator to fit your trading style and market preferences.
Dip Hunter [BackQuant]Dip Hunter
What this tool does in plain language
Dip Hunter is a pullback detector designed to find high quality buy-the-dip opportunities inside healthy trends and to avoid random knife catches. It watches for a quick drop from a recent high, checks that the drop happened with meaningful participation and volatility, verifies short-term weakness inside a larger uptrend, then scores the setup and paints the chart so you can act with confidence. It also draws clean entry lines, provides a meter that shows dip strength at a glance, and ships with alerts that match common execution workflows.
How Dip Hunter thinks
It defines a recent swing reference, measures how far price has dipped off that high, and only looks at candidates that meet your minimum percentage drop.
It confirms the dip with real activity by requiring a volume spike and a volatility spike.
It checks structure with two EMAs. Price should be weak in the short term while the larger context remains constructive.
It optionally requires a higher-timeframe trend to be up so you focus on pullbacks in trending markets.
It bundles those checks into a score and shows you the score on the candles and on a gradient meter.
When everything lines up it paints a green triangle below the bar, shades the background, and (if you wish) draws a horizontal entry line at your chosen level.
Inputs and what they mean
Dip Hunter Settings
• Vol Lookback and Vol Spike : The script computes an average volume over the lookback window and flags a spike when current volume is a multiple of that average. A multiplier of 2.0 means today’s volume must be at least double the average. This helps filter noise and focuses on dips that other traders actually traded.
• Fast EMA and Slow EMA : Short-term and medium-term structure references. A dip is more credible if price closes below the fast EMA while the fast EMA is still below the slow EMA during the pullback. That is classic corrective behavior inside a larger trend.
• Price Smooth : Optional smoothing length for price-derived series. Use this if you trade very noisy assets or low timeframes.
• Volatility Len and Vol Spike (volatility) : The script checks both standard deviation and true range against their own averages. If either expands beyond your multiplier the market confirms the move with range.
• Dip % and Lookback Bars : The engine finds the highest high over the lookback window, then computes the percentage drawdown from that high to the current close. Only dips larger than your threshold qualify.
Trend Filter
• Enable Trend Filter : When on, Dip Hunter will only trigger if the market is in an uptrend.
• Trend EMA Period : The longer EMA that defines the session’s backbone trend.
• Minimum Trend Strength : A small positive slope requirement. In practice this means the trend EMA should be rising, and price should be above it. You can raise the value to be more selective.
Entries
• Show Entry Lines : Draws a horizontal guide from the signal bar for a fixed number of bars. Great for limit orders, scaling, or re-tests.
• Line Length (bars) : How far the entry guide extends.
• Min Gap (bars) : Suppresses new entry lines if another dip fired recently. Prevents clutter during choppy sequences.
• Entry Price : Choose the line level. “Low” anchors at the signal candle’s low. “Close” anchors at the signal close. “Dip % Level” anchors at the theoretical level defined by recent_high × (1 − dip%). This lets you work resting orders at a consistent discount.
Heat / Meter
• Color Bars by Score : Colors each candle using a red→white→green gradient. Red is overheated, green is prime dip territory, white is neutral.
• Show Meter Table : Adds a compact gradient strip with a pointer that tracks the current score.
• Meter Cells and Meter Position : Resolution and placement of the meter.
UI Settings
• Show Dip Signals : Plots green triangles under qualifying bars and tints the background very lightly.
• Show EMAs : Plots fast, slow, and the trend EMA (if the trend filter is enabled).
• Bullish, Bearish, Neutral colors : Theme controls for shapes, fills, and bar painting.
Core calculations explained simply
Recent high and dip percent
The script finds the highest high over Lookback Bars , calls it “recent high,” then calculates:
dip% = (recent_high − close) ÷ recent_high × 100.
If dip% is larger than Dip % , condition one passes.
Volume confirmation
It computes a simple moving average of volume over Vol Lookback . If current volume ÷ average volume > Vol Spike , we have a participation spike. It also checks 5-bar ROC of volume. If ROC > 50 the spike is forceful. This gets an extra score point.
Volatility confirmation
Two independent checks:
• Standard deviation of closes vs its own average.
• True range vs ATR.
If either expands beyond Vol Spike (volatility) the move has range. This prevents false triggers from quiet drifts.
Short-term structure
Price should close below the Fast EMA and the fast EMA should be below the Slow EMA at the moment of the dip. That is the anatomy of a pullback rather than a full breakdown.
Macro trend context (optional)
When Enable Trend Filter is on, the Trend EMA must be rising and price must be above it. The logic prefers “micro weakness inside macro strength” which is the highest probability pattern for buying dips.
Signal formation
A valid dip requires:
• dip% > threshold
• volume spike true
• volatility spike true
• close below fast EMA
• fast EMA below slow EMA
If the trend filter is enabled, a rising trend EMA with price above it is also required. When all true, the triangle prints, the background tints, and optional entry lines are drawn.
Scoring and visuals
Binary checks into a continuous score
Each component contributes to a score between 0 and 1. The script then rescales to a centered range (−50 to +50).
• Low or negative scores imply “overheated” conditions and are shaded toward red.
• High positive scores imply “ripe for a dip buy” conditions and are shaded toward green.
• The gradient meter repeats the same logic, with a pointer so you can read the state quickly.
Bar coloring
If you enable “Color Bars by Score,” each candle inherits the gradient. This makes sequences obvious. Red clusters warn you not to buy. White means neutral. Increasing green suggests the pullback is maturing.
EMAs and the trend EMA
• Fast EMA turns down relative to the slow EMA inside the pullback.
• Trend EMA stays rising and above price once the dip exhausts, which is your cue to focus on long setups rather than bottom fishing in downtrends.
Entry lines
When a fresh signal fires and no other signal happened within Min Gap (bars) , the indicator draws a horizontal level for Line Length bars. Use these lines for limit entries at the low, at the close, or at the defined dip-percent level. This keeps your plan consistent across instruments.
Alerts and what they mean
• Market Overheated : Score is deeply negative. Do not chase. Wait for green.
• Close To A Dip : Score has reached a healthy level but the full signal did not trigger yet. Prepare orders.
• Dip Confirmed : First bar of a fresh validated dip. This is the most direct entry alert.
• Dip Active : The dip condition remains valid. You can scale in on re-tests.
• Dip Fading : Score crosses below 0.5 from above. Momentum of the setup is fading. Tighten stops or take partials.
• Trend Blocked Signal : All dip conditions passed but the trend filter is offside. Either reduce risk or skip, depending on your plan.
How to trade with Dip Hunter
Classic pullback in uptrend
Turn on the trend filter.
Watch for a Dip Confirmed alert with green triangle.
Use the entry line at “Dip % Level” to stage a limit order. This keeps your entries consistent across assets and timeframes.
Initial stop under the signal bar’s low or under the next lower EMA band.
First target at prior swing high, second target at a multiple of risk.
If you use partials, trail the remainder under the fast EMA once price reclaims it.
Aggressive intraday scalps
Lower Dip % and Lookback Bars so you catch shallow flags.
Keep Vol Spike meaningful so you only trade when participation appears.
Take quick partials when price reclaims the fast EMA, then exit on Dip Fading if momentum stalls.
Counter-trend probes
Disable the trend filter if you intentionally hunt reflex bounces in downtrends.
Require strong volume and volatility confirmation.
Use smaller size and faster targets. The meter should move quickly from red toward white and then green. If it does not, step aside.
Risk management templates
Stops
• Conservative: below the entry line minus a small buffer or below the signal bar’s low.
• Structural: below the slow EMA if you aim for swing continuation.
• Time stop: if price does not reclaim the fast EMA within N bars, exit.
Position sizing
Use the distance between the entry line and your structural stop to size consistently. The script’s entry lines make this distance obvious.
Scaling
• Scale at the entry line first touch.
• Add only if the meter stays green and price reclaims the fast EMA.
• Stop adding on a Dip Fading alert.
Tuning guide by market and timeframe
Equities daily
• Dip %: 1.5 to 3.0
• Lookback Bars: 5 to 10
• Vol Spike: 1.5 to 2.5
• Volatility Len: 14 to 20
• Trend EMA: 100 or 200
• Keep trend filter on for a cleaner list.
Futures and FX intraday
• Dip %: 0.4 to 1.2
• Lookback Bars: 3 to 7
• Vol Spike: 1.8 to 3.0
• Volatility Len: 10 to 14
• Use Min Gap to avoid clusters during news.
Crypto
• Dip %: 3.0 to 6.0 for majors on higher timeframes, lower on 15m to 1h
• Lookback Bars: 5 to 12
• Vol Spike: 1.8 to 3.0
• ATR and stdev checks help in erratic sessions.
Reading the chart at a glance
• Green triangle below the bar: a validated dip.
• Light green background: the current bar meets the full condition.
• Bar gradient: red is overheated, white is neutral, green is dip-friendly.
• EMAs: fast below slow during the pullback, then reclaim fast EMA on the bounce for quality continuation.
• Trend EMA: a rising spine when the filter is on.
• Entry line: a fixed level to anchor orders and risk.
• Meter pointer: right side toward “Dip” means conditions are maturing.
Why this combination reduces false positives
Any single criterion will trigger too often. Dip Hunter demands a dip off a recent high plus a volume surge plus a volatility expansion plus corrective EMA structure. Optional trend alignment pushes odds further in your favor. The score and meter visualize how many of these boxes you are actually ticking, which is more reliable than a binary dot.
Limitations and practical tips
• Thin or illiquid symbols can spoof volume spikes. Use larger Vol Lookback or raise Vol Spike .
• Sideways markets will show frequent small dips. Increase Dip % or keep the trend filter on.
• News candles can blow through entry lines. Widen stops or skip around known events.
• If you see many back-to-back triangles, raise Min Gap to keep only the best setups.
Quick setup recipes
• Clean swing trader: Trend filter on, Dip % 2.0 to 3.0, Vol Spike 2.0, Volatility Len 14, Fast 20 EMA, Slow 50 EMA, Trend 100 EMA.
• Fast intraday scalper: Trend filter off, Dip % 0.7 to 1.0, Vol Spike 2.5, Volatility Len 10, Fast 9 EMA, Slow 21 EMA, Min Gap 10 bars.
• Crypto swing: Trend filter on, Dip % 4.0, Vol Spike 2.0, Volatility Len 14, Fast 20 EMA, Slow 50 EMA, Trend 200 EMA.
Summary
Dip Hunter is a focused pullback engine. It quantifies a real dip off a recent high, validates it with volume and volatility expansion, enforces corrective structure with EMAs, and optionally restricts signals to an uptrend. The score, bar gradient, and meter make reading conditions instant. Entry lines and alerts turn that read into an executable plan. Tune the thresholds to your market and timeframe, then let the tool keep you patient in red, selective in white, and decisive in green.
Rally/Drop Market Structure (Multi-Timeframe)Rally/Drop Market Structure
Supply and Demand Zones from Bullish/Bearish Breaks
Overview:
The Rally/Drop Market Structure indicator is a powerful price action tool that identifies key structural turning points in the market by detecting bullish and bearish breaks . After each confirmed break, it plots either a demand zone (following a bullish break or rally) or a supply zone (following a bearish break or drop). These zones represent institutional footprints — areas where price is likely to react due to imbalance or unfilled orders.
The indicator is based on synthetic higher timeframe (HTF) candles to provide a more stable and smoothed structural map, improving clarity and signal quality over raw candles.
How It Works:
- A bullish break is defined when price makes a higher high and a higher low (or closes above the previous high depending on your selected mode).
- A bearish break is defined when price makes a lower high and a lower low (or closes below the previous low).
- After a bullish break, the indicator plots a demand zone based on the low and high of the most recent bearish candle — representing where demand stepped in.
- After a bearish break, the indicator plots a supply zone from the most recent bullish candle — indicating where supply took control.
- Optional mitigation logic marks zones as mitigated (or deletes them) once price trades into the opposing side.
- Internal shift detection highlights swing highs and lows , labels structural points (HH, HL, LH, LL), and identifies potential liquidity sweeps .
Features:
- Dynamic plotting of rally-based demand zones and drop-based supply zones
- Toggle to use Highs/Lows or Close-based breaks for structure
- Support for LTF, MTF, and HTF analysis (with selectable timeframe)
- Zone mitigation logic with optional automatic cleanup
- Labeling of key swing points: HH , HL , LH , LL , and LS (Liquidity Sweep)
- Zigzag visualization for structure flow
- Alert-ready for internal shifts, BoS, and zone creation
- Separate styling options for BoS lines, internal shift shapes, and zone colors
How to Use:
- Set your desired HTF candle source (e.g., 1H or 4H) depending on your trading style.
- Use Highs/Lows mode for pure price action structure or Close mode for more conservative signals.
- Observe when a bullish break occurs — a demand zone will form where price previously dropped before rallying. Look for long opportunities if price revisits this zone.
- After a bearish break , a supply zone forms where the rally failed — use this to scout short entries on retests.
- Use BoS lines to confirm structure shifts and validate entry triggers or trend direction.
- Monitor mitigated zones for reduced reliability or avoid them completely by enabling automatic deletion.
- Use alerts to stay notified about key changes without watching the chart constantly.
Recommended Strategies:
- Smart money or ICT-style trading : identify institutional footprints and mitigation setups
- Reversal trading : catch price rejecting off unmitigated zones after structure break
- Trend continuation : enter in the direction of internal structure after pullbacks into zones
- Liquidity sweep confirmation : filter out false breaks using HH/LL with LS detection
Tips:
- Combine this indicator with a higher timeframe bias tool (e.g., moving average, higher timeframe market structure).
- For scalping, use tighter HTFs and reduce the zone duration.
- For swing trading, use larger HTFs (1H, 4H, Daily) and increase zone persistence.
Summary:
The Rally/Drop Market Structure indicator gives you an actionable framework for understanding price structure, market intent, and supply/demand imbalances. Whether you're looking for precision entries, trend confirmation, or smart money concepts, this tool helps simplify complex price behavior into clean, usable structure and zones.
Chaithanya Tattva Volume Zones📜 "Chaitanya Tattva" Volume Zones:-
A Sacred Framework of Supply, Demand & Market Energy
In the world of financial markets, price is said to reflect all information. But the true pulse of the market — its life force, its intent, and its moment of truth — is most vividly expressed not in price itself, but in volume.
Chaitanya Tattva Volume Zones is a spiritually inspired volume-based tool that transforms your chart into a canvas of market consciousness, revealing moments where supply and demand engage in visible energetic spikes. These moments are often disguised as ordinary candles, but with this tool, you uncover zones of intent — footprints left by the market’s deeper intelligence.
🌟 Why “Chaitanya Tattva”?
Chaitanya (चैतन्य) is a Sanskrit word meaning consciousness, awareness, or the spark of life energy. It is that which animates — the subtle intelligence behind all movement.
Tattva (तत्त्व) refers to essence, truth, or the underlying principle of a thing. In classical yogic philosophy, the tattvas are the elemental building blocks of reality.
Together, Chaitanya Tattva represents the conscious essence — the living pulse that animates the market through volume surges and imbalances.
This tool is not just a technical indicator — it is a spiritual observation device that aligns with the rhythm of volume and price action. It doesn't predict the market. It reveals when the market has already spoken — loudly, clearly, and energetically.
📈 What Does the Tool Do?
Chaitanya Tattva Volume Zones identifies exceptional volume spikes within the recent price history and visually marks the areas where market intent has been most active.
Specifically, the tool:
Scans for volume spikes that exceed all the volume of the last N bars (default is 20)
Confirms whether the spike happened on a bullish candle (close > open) or bearish candle (close < open)
For a bullish spike, it marks a Supply Zone — the area between the high and close of the candle
For a bearish spike, it marks a Demand Zone — the area between the low and close
Visually paints these zones with soft translucent boxes (red for supply, green for demand) that extend forward across multiple bars
🧘♂️ The Spiritual Framework
🔴 Supply = "Agni" — The Fire of Expansion
When a bullish candle erupts with historically high volume, it symbolizes the fire (Agni) of market optimism and upward expansion. It means that buyers have absorbed available supply at that level and established dominance — but such fire may also signal exhaustion, making it a potential supply barrier if price returns.
These Supply Zones are areas where:
Sellers are likely to re-engage
Smart money may be unloading
Future resistance can be anticipated
But unlike traditional indicators, this tool doesn’t guess. It reacts only to a clear volume-based event — when market energy surges — and locks in that awareness through zone marking.
🟢 Demand = "Prithvi" — The Grounding of Price
On the other hand, a bearish candle with extremely high volume represents the Earth (Prithvi) — grounding the price with firm hands. A strong volume drop often means buyers are stepping in, absorbing the selling pressure.
These Demand Zones are areas where:
Buying interest is proven
Market memory is stored
Future support can be expected
By respecting these zones, you're aligning your trading with natural market boundaries — not theoretical ones.
🧠 How Is It Different from Regular Volume Tools?
While most volume indicators show bars on a lower panel, they leave interpretation up to the trader. “High” or “low” becomes subjective.
Chaitanya Tattva Volume Zones is different:
It quantifies "spike": a bar must exceed all previous N volumes
It qualifies the intent: was the spike bullish or bearish?
It marks zones on the price chart: no need to guess levels
It preserves market memory: the zones persist visually for easy reference
In essence, this tool doesn’t just report volume — it interprets volume’s context and visually encodes it into the chart.
🧘 How to Use
1. Support/Resistance Mapping
Use the tool to understand where volume proved itself. If price revisits a red zone, expect possible rejection (resistance). If price revisits a green zone, expect possible absorption (support).
2. Entry Triggers
You may enter:
Long near demand zones if bullish confirmation appears
Short near supply zones if bearish confirmation appears
3. Stop Placement
Stops can be placed just beyond the zone boundary to align with areas where smart money historically defended.
4. Breakout Confidence
When price breaks through one of these zones with momentum, it often signals a new energetic wave — the old balance has been overcome.
🔔 Key Features
Volume spike detection across any timeframe
Clear visual zones — no clutter, no lag
Highly customizable: zone width, volume lookback, colors
Philosophy-aligned with supply and demand theory, Wyckoff, and Order Flow
🌌 A Metaphysical View of Volume
In yogic science, volume is akin to Prana — life-force energy. A market is not moved by price alone but by intent, force, and participation — all encoded in volume.
Just as a human body pulses with blood when action intensifies, the market pulses with volume when institutional decisions are made.
These pulses become sacred footprints — and Chaitanya Tattva Volume Zones helps you walk mindfully among them.
🔮 Final Thoughts
In a sea of indicators that shout at you with every tick, Chaitanya Tattva is calm. It speaks only when energy concentrates, only when the market sends a signal born of intent.
It doesn’t predict.
It doesn’t repaint.
It simply shows the truth, when the truth becomes undeniable.
Like a sage that speaks only when needed, it waits for volume to prove itself — then draws a memory into space, a zone where traders can re-align their actions with what the market has already honored.
Use it not just to trade —
But to listen.
To observe.
To follow the Chaitanya — the conscious pulse of the market’s own breath.
EVaR Indicator and Position SizingThe Problem:
Financial markets consistently show "fat-tailed" distributions where extreme events occur with higher frequency than predicted by normal distributions (Gaussian or even log-normal). These fat tails manifest in sudden price crashes, volatility spikes, and black swan events that traditional risk measures like volatility can underestimate. Standard deviation and conventional VaR calculations assume normally distributed returns, leaving traders vulnerable to severe drawdowns during market stress.
Cryptocurrencies and volatile instruments display particularly pronounced fat-tailed behavior, with extreme moves occurring 5-10 times more frequently than normal distribution models would predict. This reality demands a more sophisticated approach to risk measurement and position sizing.
The Solution: Entropic Value at Risk (EVAR)
EVaR addresses these limitations by incorporating principles from statistical mechanics and information theory through Tsallis entropy. This advanced approach captures the non-linear dependencies and power-law distributions characteristic of real financial markets.
Entropy is more adaptive than standard deviations and volatility measures.
I was inspired to create this indicator after reading the paper " The End of Mean-Variance? Tsallis Entropy Revolutionises Portfolio Optimisation in Cryptocurrencies " by by Sana Gaied Chortane and Kamel Naoui.
Key advantages of EVAR over traditional risk measures:
Superior tail risk capture: More accurately quantifies the probability of extreme market moves
Adaptability to market regimes: Self-calibrates to changing volatility environments
Non-parametric flexibility: Makes less assumptions about the underlying return distribution
Forward-looking risk assessment: Better anticipates potential market changes (just look at the charts :)
Mathematically, EVAR is defined as:
EVAR_α(X) = inf_{z>0} {z * log(1/α * M_X(1/z))}
Where the moment-generating function is calculated using q-exponentials rather than conventional exponentials, allowing precise modeling of fat-tailed behavior.
Technical Implementation
This indicator implements EVAR through a q-exponential approach from Tsallis statistics:
Returns Calculation: Price returns are calculated over the lookback period
Moment Generating Function: Approximated using q-exponentials to account for fat tails
EVAR Computation: Derived from the MGF and confidence parameter
Normalization: Scaled to for intuitive visualization
Position Sizing: Inversely modulated based on normalized EVAR
The q-parameter controls tail sensitivity—higher values (1.5-2.0) increase the weighting of extreme events in the calculation, making the model more conservative during potentially turbulent conditions.
Indicator Components
1. EVAR Risk Visualization
Dynamic EVAR Plot: Color-coded from red to green normalized risk measurement (0-1)
Risk Thresholds: Reference lines at 0.3, 0.5, and 0.7 delineating risk zones
2. Position Sizing Matrix
Risk Assessment: Current risk level and raw EVAR value
Position Recommendations: Percentage allocation, dollar value, and quantity
Stop Parameters: Mathematically derived stop price with percentage distance
Drawdown Projection: Maximum theoretical loss if stop is triggered
Interpretation and Application
The normalized EVAR reading provides a probabilistic risk assessment:
< 0.3: Low risk environment with minimal tail concerns
0.3-0.5: Moderate risk with standard tail behavior
0.5-0.7: Elevated risk with increased probability of significant moves
> 0.7: High risk environment with substantial tail risk present
Position sizing is automatically calculated using an inverse relationship to EVAR, contracting during high-risk periods and expanding during low-risk conditions. This is a counter-cyclical approach that ensures consistent risk exposure across varying market regimes, especially when the market is hyped or overheated.
Parameter Optimization
For optimal risk assessment across market conditions:
Lookback Period: Determines the historical window for risk calculation
Q Parameter: Controls tail sensitivity (higher values increase conservatism)
Confidence Level: Sets the statistical threshold for risk assessment
For cryptocurrencies and highly volatile instruments, a q-parameter between 1.5-2.0 typically provides the most accurate risk assessment because it helps capturing the fat-tailed behavior characteristic of these markets. You can also increase the q-parameter for more conservative approaches.
Practical Applications
Adaptive Risk Management: Quantify and respond to changing tail risk conditions
Volatility-Normalized Positioning: Maintain consistent exposure across market regimes
Black Swan Detection: Early identification of potential extreme market conditions
Portfolio Construction: Apply consistent risk-based sizing across diverse instruments
This indicator is my own approach to entropy-based risk measures as an alterative to volatility and standard deviations and it helps with fat-tailed markets.
Enjoy!
Multifractal Forecast [ScorsoneEnterprises]Multifractal Forecast Indicator
The Multifractal Forecast is an indicator designed to model and forecast asset price movements using a multifractal framework. It uses concepts from fractal geometry and stochastic processes, specifically the Multifractal Model of Asset Returns (MMAR) and fractional Brownian motion (fBm), to generate price forecasts based on historical price data. The indicator visualizes potential future price paths as colored lines, providing traders with a probabilistic view of price trends over a specified trading time scale. Below is a detailed breakdown of the indicator’s functionality, inputs, calculations, and visualization.
Overview
Purpose: The indicator forecasts future price movements by simulating multiple price paths based on a multifractal model, which accounts for the complex, non-linear behavior of financial markets.
Key Concepts:
Multifractal Model of Asset Returns (MMAR): Models price movements as a multifractal process, capturing varying degrees of volatility and self-similarity across different time scales.
Fractional Brownian Motion (fBm): A generalization of Brownian motion that incorporates long-range dependence and self-similarity, controlled by the Hurst exponent.
Binomial Cascade: Used to model trading time, introducing heterogeneity in time scales to reflect market activity bursts.
Hurst Exponent: Measures the degree of long-term memory in the price series (persistence, randomness, or mean-reversion).
Rescaled Range (R/S) Analysis: Estimates the Hurst exponent to quantify the fractal nature of the price series.
Inputs
The indicator allows users to customize its behavior through several input parameters, each influencing the multifractal model and forecast generation:
Maximum Lag (max_lag):
Type: Integer
Default: 50
Minimum: 5
Purpose: Determines the maximum lag used in the rescaled range (R/S) analysis to calculate the Hurst exponent. A higher lag increases the sample size for Hurst estimation but may smooth out short-term dynamics.
2 to the n values in the Multifractal Model (n):
Type: Integer
Default: 4
Purpose: Defines the resolution of the multifractal model by setting the size of arrays used in calculations (N = 2^n). For example, n=4 results in N=16 data points. Larger n increases computational complexity and detail but may exceed Pine Script’s array size limits (capped at 100,000).
Multiplier for Binomial Cascade (m):
Type: Float
Default: 0.8
Purpose: Controls the asymmetry in the binomial cascade, which models trading time. The multiplier m (and its complement 2.0 - m) determines how mass is distributed across time scales. Values closer to 1 create more balanced cascades, while values further from 1 introduce more variability.
Length Scale for fBm (L):
Type: Float
Default: 100,000.0
Purpose: Scales the fractional Brownian motion output, affecting the amplitude of simulated price paths. Larger values increase the magnitude of forecasted price movements.
Cumulative Sum (cum):
Type: Integer (0 or 1)
Default: 1
Purpose: Toggles whether the fBm output is cumulatively summed (1=On, 0=Off). When enabled, the fBm series is accumulated to simulate a price path with memory, resembling a random walk with long-range dependence.
Trading Time Scale (T):
Type: Integer
Default: 5
Purpose: Defines the forecast horizon in bars (20 bars into the future). It also scales the binomial cascade’s output to align with the desired trading time frame.
Number of Simulations (num_simulations):
Type: Integer
Default: 5
Minimum: 1
Purpose: Specifies how many forecast paths are simulated and plotted. More simulations provide a broader range of possible price outcomes but increase computational load.
Core Calculations
The indicator combines several mathematical and statistical techniques to generate price forecasts. Below is a step-by-step explanation of its calculations:
Log Returns (lgr):
The indicator calculates log returns as math.log(close / close ) when both the current and previous close prices are positive. This measures the relative price change in a logarithmic scale, which is standard for financial time series analysis to stabilize variance.
Hurst Exponent Estimation (get_hurst_exponent):
Purpose: Estimates the Hurst exponent (H) to quantify the degree of long-term memory in the price series.
Method: Uses rescaled range (R/S) analysis:
For each lag from 2 to max_lag, the function calc_rescaled_range computes the rescaled range:
Calculate the mean of the log returns over the lag period.
Compute the cumulative deviation from the mean.
Find the range (max - min) of the cumulative deviation.
Divide the range by the standard deviation of the log returns to get the rescaled range.
The log of the rescaled range (log(R/S)) is regressed against the log of the lag (log(lag)) using the polyfit_slope function.
The slope of this regression is the Hurst exponent (H).
Interpretation:
H = 0.5: Random walk (no memory, like standard Brownian motion).
H > 0.5: Persistent behavior (trends tend to continue).
H < 0.5: Mean-reverting behavior (price tends to revert to the mean).
Fractional Brownian Motion (get_fbm):
Purpose: Generates a fractional Brownian motion series to model price movements with long-range dependence.
Inputs: n (array size 2^n), H (Hurst exponent), L (length scale), cum (cumulative sum toggle).
Method:
Computes covariance for fBm using the formula: 0.5 * (|i+1|^(2H) - 2 * |i|^(2H) + |i-1|^(2H)).
Uses Hosking’s method (referenced from Columbia University’s implementation) to generate fBm:
Initializes arrays for covariance (cov), intermediate calculations (phi, psi), and output.
Iteratively computes the fBm series by incorporating a random term scaled by the variance (v) and covariance structure.
Applies scaling based on L / N^H to adjust the amplitude.
Optionally applies cumulative summation if cum = 1 to produce a path with memory.
Output: An array of 2^n values representing the fBm series.
Binomial Cascade (get_binomial_cascade):
Purpose: Models trading time (theta) to account for non-uniform market activity (e.g., bursts of volatility).
Inputs: n (array size 2^n), m (multiplier), T (trading time scale).
Method:
Initializes an array of size 2^n with values of 1.0.
Iteratively applies a binomial cascade:
For each block (from 0 to n-1), splits the array into segments.
Randomly assigns a multiplier (m or 2.0 - m) to each segment, redistributing mass.
Normalizes the array by dividing by its sum and scales by T.
Checks for array size limits to prevent Pine Script errors.
Output: An array (theta) representing the trading time, which warps the fBm to reflect market activity.
Interpolation (interpolate_fbm):
Purpose: Maps the fBm series to the trading time scale to produce a forecast.
Method:
Computes the cumulative sum of theta and normalizes it to .
Interpolates the fBm series linearly based on the normalized trading time.
Ensures the output aligns with the trading time scale (T).
Output: An array of interpolated fBm values representing log returns over the forecast horizon.
Price Path Generation:
For each simulation (up to num_simulations):
Generates an fBm series using get_fbm.
Interpolates it with the trading time (theta) using interpolate_fbm.
Converts log returns to price levels:
Starts with the current close price.
For each step i in the forecast horizon (T), computes the price as prev_price * exp(log_return).
Output: An array of price levels for each simulation.
Visualization:
Trigger: Updates every T bars when the bar state is confirmed (barstate.isconfirmed).
Process:
Clears previous lines from line_array.
For each simulation, plots a line from the current bar’s close price to the forecasted price at bar_index + T.
Colors the line using a gradient (color.from_gradient) based on the final forecasted price relative to the minimum and maximum forecasted prices across all simulations (red for lower prices, teal for higher prices).
Output: Multiple colored lines on the chart, each representing a possible price path over the next T bars.
How It Works on the Chart
Initialization: On each bar, the indicator calculates the Hurst exponent (H) using historical log returns and prepares the trading time (theta) using the binomial cascade.
Forecast Generation: Every T bars, it generates num_simulations price paths:
Each path starts at the current close price.
Uses fBm to model log returns, warped by the trading time.
Converts log returns to price levels.
Plotting: Draws lines from the current bar to the forecasted price T bars ahead, with colors indicating relative price levels.
Dynamic Updates: The forecast updates every T bars, replacing old lines with new ones based on the latest price data and calculations.
Key Features
Multifractal Modeling: Captures complex market dynamics by combining fBm (long-range dependence) with a binomial cascade (non-uniform time).
Customizable Parameters: Allows users to adjust the forecast horizon, model resolution, scaling, and number of simulations.
Probabilistic Forecast: Multiple simulations provide a range of possible price outcomes, helping traders assess uncertainty.
Visual Clarity: Gradient-colored lines make it easy to distinguish bullish (teal) and bearish (red) forecasts.
Potential Use Cases
Trend Analysis: Identify potential price trends or reversals based on the direction and spread of forecast lines.
Risk Assessment: Evaluate the range of possible price outcomes to gauge market uncertainty.
Volatility Analysis: The Hurst exponent and binomial cascade provide insights into market persistence and volatility clustering.
Limitations
Computational Intensity: Large values of n or num_simulations may slow down execution or hit Pine Script’s array size limits.
Randomness: The binomial cascade and fBm rely on random terms (math.random), which may lead to variability between runs.
Assumptions: The model assumes log-normal price movements and fractal behavior, which may not always hold in extreme market conditions.
Adjusting Inputs:
Set max_lag based on the desired depth of historical analysis.
Adjust n for model resolution (start with 4–6 to avoid performance issues).
Tune m to control trading time variability (0.5–1.5 is typical).
Set L to scale the forecast amplitude (experiment with values like 10,000–1,000,000).
Choose T based on your trading horizon (20 for short-term, 50 for longer-term for example).
Select num_simulations for the number of forecast paths (5–10 is reasonable for visualization).
Interpret Output:
Teal lines suggest bullish scenarios, red lines suggest bearish scenarios.
A wide spread of lines indicates high uncertainty; convergence suggests a stronger trend.
Monitor Updates: Forecasts update every T bars, so check the chart periodically for new projections.
Chart Examples
This is a daily AMEX:SPY chart with default settings. We see the simulations being done every T bars and they provide a range for us to analyze with a few simulations still in the range.
On this intraday PEPPERSTONE:COCOA chart I modified the Length Scale for fBm, L, parameter to be 1000 from 100000. Adjusting the parameter as you switch between timeframes can give you more contextual simulations.
On BITSTAMP:ETHUSD I modified the L to be 1000000 to have a more contextual set of simulations with crypto's volatile nature.
With L at 100000 we see the range for NASDAQ:TLT is correctly simulated. The recent pop stays within the bounds of the highest simulation. Note this is a cherry picked example to show the power and potential of these simulations.
Technical Notes
Error Handling: The script includes checks for array size limits and division by zero (math.abs(denominator) > 1e-10, v := math.max(v, 1e-10)).
External Reference: The fBm implementation is based on Hosking’s method (www.columbia.edu), ensuring a robust algorithm.
Conclusion
The Multifractal Forecast is a powerful tool for traders seeking to model complex market dynamics using a multifractal framework. By combining fBm, binomial cascades, and Hurst exponent analysis, it generates probabilistic price forecasts that account for long-range dependence and non-uniform market activity. Its customizable inputs and clear visualizations make it suitable for both technical analysis and strategy development, though users should be mindful of its computational demands and parameter sensitivity. For optimal use, experiment with input settings and validate forecasts against other technical indicators or market conditions.
Higher Timeframe Market StructureHTF Market Structure – ZigZag, Break of Structure & Supply/Demand
This powerful indicator is designed to identify higher-timeframe market structure using a combination of ZigZag patterns, Break of Structure (BOS) signals, and Supply/Demand zones.
Key Features:
Automatic detection of Higher Highs (HH), Higher Lows (HL), Lower Lows (LL), and Lower Highs (LH)
Internal structure shifts based on Open or High/Low logic
Supply and Demand zones plotted on the chart
Break of Structure (BOS) lines with optional alerts
Mitigation logic to mark or delete invalidated order blocks
Customizable aggregation factor to view higher time frame structure on lower time frames
How to Use:
Focus on market structure and BOS to understand the current trend.
Watch for internal shifts as early signals of potential reversals.
Use ZigZag lines to connect swing highs and lows to visualize market rhythm.
Supply zones (red) and Demand zones (green) are automatically drawn after structure breaks:
Use Demand Zones in Bullish Markets for the highest probability entries.
Use Supply Zones in Bearish Markets to align with the prevailing trend.
Best Practices:
Only use Demand Zones in Bullish markets and Supply Zones in Bearish markets for optimal results.
Look for price action or reversal signals within these zones to refine your entries.
Enable alerts to get notified on:
New order blocks
Internal shifts
BOS events
HH, HL, LL, LH formations
Liquidity sweeps
Customization Options:
Aggregation Factor: Control how many candles are grouped for structure analysis.
Zone Duration: Define how length of plotted zones.
Mitigation Settings: Automatically delete or fade zones after mitigation.
Colors: Choose custom colors for bullish and bearish zones and structure markers.
This tool is ideal for traders who rely on price action, structure, and smart money concepts. Combine it with your own S&D strategy or integrate it with other confluence tools for even better precision.
Uptrick: Z-Trend BandsOverview
Uptrick: Z-Trend Bands is a Pine Script overlay crafted to capture high-probability mean-reversion opportunities. It dynamically plots upper and lower statistical bands around an EMA baseline by converting price deviations into z-scores. Once price moves outside these bands and then reenters, the indicator verifies that momentum is genuinely reversing via an EMA-smoothed RSI slope. Signal memory ensures only one entry per momentum swing, and traders receive clear, real-time feedback through customizable bar-coloring modes, a semi-transparent fill highlighting the statistical zone, concise “Up”/“Down” labels, and a live five-metric scoring table.
Introduction
Markets often oscillate between trending and reverting, and simple thresholds or static envelopes frequently misfire when volatility shifts. Standard deviation quantifies how “wide” recent price moves have been, and a z-score transforms each deviation into a measure of how rare it is relative to its own history. By anchoring these bands to an exponential moving average, the script maintains a fluid statistical envelope that adapts instantly to both calm and turbulent regimes. Meanwhile, the Relative Strength Index (RSI) tracks momentum; smoothing RSI with an EMA and observing its slope filters out erratic spikes, ensuring that only genuine momentum flips—upward for longs and downward for shorts—qualify.
Purpose
This indicator is purpose-built for short-term mean-reversion traders operating on lower–timeframe charts. It reveals when price has strayed into the outer 5 percent of its recent range, signaling an increased likelihood of a bounce back toward fair value. Rather than firing on price alone, it demands that momentum follow suit: the smoothed RSI slope must flip in the opposite direction before any trade marker appears. This dual-filter approach dramatically reduces noise-driven, false setups. Traders then see immediate visual confirmation—bar colors that reflect the latest signal and age over time, clear entry labels, and an always-visible table of metric scores—so they can gauge both the validity and freshness of each signal at a glance.
Originality and Uniqueness
Uptrick: Z-Trend Bands stands apart from typical envelope or oscillator tools in four key ways. First, it employs fully normalized z-score bands, meaning ±2 always captures roughly the top and bottom 5 percent of moves, regardless of volatility regime. Second, it insists on two simultaneous conditions—price reentry into the bands and a confirming RSI slope flip—dramatically reducing whipsaw signals. Third, it uses slope-phase memory to lock out duplicate signals until momentum truly reverses again, enforcing disciplined entries. Finally, it offers four distinct bar-coloring schemes (solid reversal, fading reversal, exceeding bands, and classic heatmap) plus a dynamic scoring table, rather than a single, opaque alert, giving traders deep insight into every layer of analysis.
Why Each Component Was Picked
The EMA baseline was chosen for its blend of responsiveness—weighting recent price heavily—and smoothness, which filters market noise. Z-score deviation bands standardize price extremes relative to their own history, adapting automatically to shifting volatility so that “extreme” always means statistically rare. The RSI, smoothed with an EMA before slope calculation, captures true momentum shifts without the false spikes that raw RSI often produces. Slope-phase memory flags prevent repeated alerts within a single swing, curbing over-trading in choppy conditions. Bar-coloring modes provide flexible visual contexts—whether you prefer to track the latest reversal, see signal age, highlight every breakout, or view a continuous gradient—and the scoring table breaks down all five core checks for complete transparency.
Features
This indicator offers a suite of configurable visual and logical tools designed to make reversal signals both robust and transparent:
Dynamic z-score bands that expand or contract in real time to reflect current volatility regimes, ensuring the outer ±zThreshold levels always represent statistically rare extremes.
A smooth EMA baseline that weights recent price more heavily, serving as a fair-value anchor around which deviations are measured.
EMA-smoothed RSI slope confirmation, which filters out erratic momentum spikes by first smoothing raw RSI and then requiring its bar-to-bar slope to flip before any signal is allowed.
Slope-phase memory logic that locks out duplicate buy or sell markers until the RSI slope crosses back through zero, preventing over-trading during choppy swings.
Four distinct bar-coloring modes—Reversal Solid, Reversal Fade, Exceeding Bands, Classic Heat—plus a “None” option, so traders can choose whether to highlight the latest signal, show signal age, emphasize breakout bars, or view a continuous heat gradient within the bands.
A semi-transparent fill between the EMA and the upper/lower bands that visually frames the statistical zone and makes extremes immediately obvious.
Concise “Up” and “Down” labels that plot exactly when price re-enters a band with confirming momentum, keeping chart clutter to a minimum.
A real-time, five-metric scoring table (z-score, RSI slope, price vs. EMA, trend state, re-entry) that updates every two bars, displaying individual +1/–1/0 scores and an averaged Buy/Sell/Neutral verdict for complete transparency.
Calculations
Compute the fair-value EMA over fairLen bars.
Subtract that EMA from current price each bar to derive the raw deviation.
Over zLen bars, calculate the rolling mean and standard deviation of those deviations.
Convert each deviation into a z-score by subtracting the mean and dividing by the standard deviation.
Plot the upper and lower bands at ±zThreshold × standard deviation around the EMA.
Calculate raw RSI over rsiLen bars, then smooth it with an EMA of length rsiEmaLen.
Derive the RSI slope by taking the difference between the current and previous smoothed RSI.
Detect a potential reentry when price exits one of the bands on the prior bar and re-enters on the current bar.
Require that reentry coincide with an RSI slope flip (positive for a lower-band reentry, negative for an upper-band reentry).
On first valid reentry per momentum swing, fire a buy or sell signal and set a memory flag; reset that flag only when the RSI slope crosses back through zero.
For each bar, assign scores of +1, –1, or 0 for the z-score direction, RSI slope, price vs. EMA, trend-state, and reentry status.
Average those five scores; if the result exceeds +0.1, label “Buy,” if below –0.1, label “Sell,” otherwise “Neutral.”
Update bar colors, the semi-transparent fill, reversal labels, and the scoring table every two bars to reflect the latest calculations.
How It Actually Works
On each new candle, the EMA baseline and band widths update to reflect current volatility. The RSI is smoothed and its slope recalculated. The script then looks back one bar to see if price exited either band and forward to see if it reentered. If that reentry coincides with an appropriate RSI slope flip—and no signal has yet been generated in that swing—a concise label appears. Bar colors refresh according to your selected mode, and the scoring table updates to show which of the five conditions passed or failed, along with the overall verdict. This process repeats seamlessly at each bar, giving traders a continuous feed of disciplined, statistically filtered reversal cues.
Inputs
All parameters are fully user-configurable, allowing you to tailor sensitivity, lookbacks, and visuals to your trading style:
EMA length (fairLen): number of bars for the fair-value EMA; higher values smooth more but lag further behind price.
Z-Score lookback (zLen): window for calculating the mean and standard deviation of price deviations; longer lookbacks reduce noise but respond more slowly to new volatility.
Z-Score threshold (zThreshold): number of standard deviations defining the upper and lower bands; common default is 2.0 for roughly the outer 5 percent of moves.
Source (src): choice of price series (close, hl2, etc.) used for EMA, deviation, and RSI calculations.
RSI length (rsiLen): period for raw RSI calculation; shorter values react faster to momentum changes but can be choppier.
RSI EMA length (rsiEmaLen): period for smoothing raw RSI before taking its slope; higher values filter more noise.
Bar coloring mode (colorMode): select from None, Reversal Solid, Reversal Fade, Exceeding Bands, or Classic Heat to control how bars are shaded in relation to signals and band positions.
Show signals (showSignals): toggle on-chart “Up” and “Down” labels for reversal entries.
Show scoring table (enableTable): toggle the display of the five-metric breakdown table.
Table position (tablePos): choose which corner (Top Left, Top Right, Bottom Left, Bottom Right) hosts the scoring table.
Conclusion
By merging a normalized z-score framework, momentum slope confirmation, disciplined signal memory, flexible visuals, and transparent scoring into one Pine Script overlay, Uptrick: Z-Trend Bands offers a powerful yet intuitive tool for intraday mean-reversion trading. Its adaptability to real-time volatility and multi-layered filter logic deliver clear, high-confidence reversal cues without the clutter or confusion of simpler indicators.
Disclaimer
This indicator is provided solely for educational and informational purposes. It does not constitute financial advice. Trading involves substantial risk and may not be suitable for all investors. Past performance is not indicative of future results. Always conduct your own testing and apply careful risk management before trading live.
No Gaps - JizzanyNo Gaps – Jizzany
Fill the blanks. Own the patterns.
Don’t let thin futures feeds or blazing-fast 1 s bars break your flow—this overlay stitches every missing pixel back into your chart so you can:
🔍 Analyze low-liquidity markets (futures, exotic FX, crypto alt-pairs) without awkward jumps
⏱️ Trade ultra-low timeframes (1 s, tick charts) with full confidence in every wick
📈 Spot price patterns seamlessly, even when your broker’s feed skips a beat
How it works: Auto-detects gaps between sessions or feeds, then draws miniature candles from the prior close to the current open—using real intrabar highs/lows—so nothing ever goes unseen.
Perfect for scalpers, day traders, and anyone who demands continuity in every bar. Try it on your next chart and rediscover the story in every candle.
Turn This
Into This
This
Into
VSA Tick Volume Zones0
مؤشر VSA Tick Volume مع مناطق العرض والطلب (إصدار تجريبي)
مؤشر مخصص لمنصة TradingView يعتمد على تحليل الحجم والسعر (VSA - Volume Spread Analysis)، ويقوم تلقائيًا بتحديد مناطق الطلب والعرض استنادًا إلى إشارات VSA القوية. يهدف المؤشر إلى كشف تحركات المتداولين المحترفين وتحديد نقاط الانعكاس الذكية.
---
✅ الميزات الأساسية:
1. إشارات VSA:
المؤشر يتعرف تلقائيًا على أبرز إشارات تحليل VSA:
- *Climactic Volume (CV):* حجم تداول مرتفع بشكل استثنائي يشير لنهاية الاتجاه الحالي.
- *No Demand (ND):* شموع صعودية ضعيفة الحجم، تشير إلى غياب اهتمام المشترين.
- *No Supply (NS):* شموع هبوطية ضعيفة الحجم، تشير إلى غياب اهتمام البائعين.
- *Stopping Volume (SV):* ارتفاع مفاجئ في الحجم بعد اتجاه هابط، يشير لتدخل المشترين.
- *UpThrust (UT):* اختراق كاذب للسعر نحو الأعلى مع حجم كبير وإغلاق منخفض.
- *Test (T):* شموع اختبارية بحجم منخفض للتحقق من غياب البائعين استعدادًا للصعود.
2. تلوين الشموع:
- كل إشارة تُلوَّن تلقائيًا على الشارت لتسهيل المتابعة البصرية:
- CV باللون الأحمر
- ND باللون البرتقالي
- NS باللون الأخضر
- SV باللون الأزرق
- UT باللون الأرجواني
- Test باللون السماوي
3. رسم مناطق العرض والطلب تلقائيًا:
- يتم تحديد المناطق بناءً على إشارات *UT* و*SV* و*Test*، حيث تعتبر مناطق تمركز ذكي للمؤسسات (Smart Money Zones).
🎯 الهدف من المؤشر:
يساعد هذا المؤشر:
- المتداول اليومي على اتخاذ قرارات مدروسة.
- المحلل الفني على فهم السياق المؤسساتي للسوق.
- دعم استراتيجيات الدخول والخروج بدقة أعلى من خلال الدمج بين إشارات VSA والمناطق الفعلية للعرض والطلب.
---
🧪 ملاحظات:
- المؤشر لا يعتبر توصية شراء أو بيع.
- الإشارات تحتاج إلى تأكيد من خلال حركة السعر أو مؤشرات مساعدة.
- يمكن استخدامه مع أدوات إضافية مثل RSI أو Moving Averages.
---
⚙ الاقتراحات المستقبلية:
- دمج أدوات تدفق السيولة (مثل OBV أو VWAP).
- تنبيه صوتي وإشعار عند ظهور إشارات محددة.
- تخصيص أكبر للمستخدم من حيث الألوان ونوع الإشارات.
---
للتواصل أو المساهمة في تطوير المؤشر، يرجى مراسلتي.
VSA Tick Volume Indicator with Supply and Demand Zones (Beta Version)
A custom indicator for the TradingView platform based on Volume and Price Analysis (VSA - Volume Spread Analysis), it automatically identifies supply and demand zones based on strong VSA signals. The indicator aims to uncover the movements of professional traders and identify smart reversal points.
✅ Key Features:
VSA Signals: The indicator automatically detects key VSA analysis signals:
Climactic Volume (CV): Exceptionally high trading volume indicating the end of the current trend.
No Demand (ND): Bullish candles with weak volume, indicating a lack of buyer interest.
No Supply (NS): Bearish candles with weak volume, indicating a lack of seller interest.
Stopping Volume (SV): A sudden volume spike after a downtrend, indicating buyer intervention.
UpThrust (UT): A false price breakout upwards with high volume and a low close.
Test (T): Low-volume test candles to check for the absence of sellers, signaling readiness for an upward move.
Candle Coloring:
Each signal is automatically color-coded on the chart for easy visual tracking:
CV in red
ND in orange
NS in green
SV in blue
UT in purple
Test in cyan
Automatic Supply and Demand Zone Drawing:
Zones are determined based on the UT, SV, and Test signals, which are considered smart money zones.
🎯 Purpose of the Indicator:
This indicator helps:
The day trader make informed decisions.
The technical analyst understand the market's institutional context.
Enhance entry and exit strategies with more accuracy by combining VSA signals and actual supply and demand zones.
🧪 Notes:
The indicator is not a buy or sell recommendation.
Signals need confirmation through price action or additional indicators.
Can be used alongside other tools such as RSI or Moving Averages.
⚙ Future Suggestions:
Integration of liquidity flow tools (such as OBV or VWAP).
Sound alerts and notifications when specific signals appear.
Greater customization options for users regarding colors and signal types.
For inquiries or contributions to the indicator's development, please contact me.
TQ's Support & Resistance(My goal creating this indicator): Provide a way to categorize and label key structures on multiple different levels so I can create a plan based on those observable facts.
The Underlying Concept / What is Momentum?
Momentum indicates transaction pressure. If the algorithm detects price is going up, that would be considered positive momentum. If the algorithm detects price is going down negative momentum would be detected.
The Momentum shown is derived from a price action pattern. Unlike my previous Support & Resistance indicator that used Super Trend, this indicator uses a unique pattern I created. On the first bar bearish momentum is detected a resistance Level is made at the highest point of the previous bullish condition. On the first bar bullish momentum is detected a support Level is made at the lowest point of the previous bearish condition. This happens on 5 different Momentum Levels, (short-term to long-term). I currently use this pattern to trade so the source code is protected.
What is Severity?
Severity is How we differentiate the importance of different Highs and Lows. If Momentum is detected on a higher level the Supply or Demand Level is updated. The Color and Size representing that Level will be shown. Demand and Supply Levels made by higher levels are more SEVERE than a demand level made by a lower level.
Technical Inputs
- to ensure the correct calculation of Support and Resistance levels change BAR_INDEX. BAR_INDEX creates a buffer at the start of the chart. For example: If you set BAR_INDEX to 300. The script will wait for 300 bars to elapse on the current chart before running. This allows the script more time to gather data. Which is needed in order for our dynamic lookback length to never return an error (Dynamic lookback length can't be negative or zero). The lower the timeframe the greater the number of bars need. For Example, if I open up a 1min chart I would enter 5000 as my BAR_INDEX since that will provide enough data to ensure the correct calculation of Support and Resistance levels. If I was on a daily chart, I would enter a lower number such as 800. Don't be afraid to play around with this.
- Toggle options (Close) or (High & Low) creates Support and Resistance Levels using the Lowest close and Highest close or using the Lowest low and Highest high.
Level Inputs
- The indicator has 5 Different Levels indicating SEVEREITY of a Supply and Demand Levels. The higher the Level the more SEVERE the Level.
Display Inputs
- You have the option to customize the Length, Width, Line Style, and Colors of all 5 different
- This indicator includes a Trend Chart. To Easily verify the current trend of any displayed by this indicator toggle on Chart On/Off. You also get the option to change the Chart Position and the size of the Trend Chart
How Trend Is being Determined?
(Close > Current Supply Level) if this statement is true technically price made a HH, so the trend is bullish.
(Close < Current Demand Level) if this statement is true technically price made a LL, so the trend is bearish.
- Fully customize how you display Market Structure on different levels. Line Length, Line Width, Line Style, and Line color can all be customized.
How it can be used?
(Examples of Different ways you can use this indicator): Easily categorize the severity of each and every Supply or Demand Level in the market (The higher Level the stronger the level)
: Quickly Determine the trend of any Level.
: Get a consistent view of a market and how different Levels are behaving but just use one chart.
: Take the discretion from hand drawing support and resistance lines out of your trading.
: Find and categorize strong levels for potential breakouts.
: Trend Analysis, use Levels to create a narrative based on observable facts from these Levels.
: Different Targets to take money off the table.
: Use Severity to differentiate between different trend line setups.
: Find Great places to move your stop loss too.






















