Climax Detector (Buy & Sell)This indicator identifies potential Buying Climax (BC) and Selling Climax (SC) events based on volume spikes relative to historical averages.
• Buying Climax (BC):
• Detected when a green candle forms with volume significantly higher than the average (default: 2×).
• Often signals the end of an uptrend or distribution phase.
• Selling Climax (SC):
• Detected when a red candle forms with very high volume (default: 2× average).
• Often occurs at the end of a downtrend, suggesting panic selling and potential accumulation.
How it works:
• Calculates a moving average of volume over a user-defined period (default: 20 candles)
• Flags a climax when current volume exceeds the defined multiplier (default: 2.0×)
• Marks:
• BC with an orange triangle above the bar
• SC with a fuchsia triangle below the bar
Customizable Settings:
• Volume spike sensitivity
• Lookback period for average volume
Use Cases:
• Spot possible trend exhaustion
• Confirm Wyckoff phases
• Combine with support/resistance for reversal entries
Disclaimer: This tool is designed to assist in identifying high-probability exhaustion zones but should be used alongside other confirmations or strategies.
ค้นหาในสคริปต์สำหรับ "accumulation"
Fibonacci Volume Profiles [AlgoAlpha]Unlock a deeper understanding of price action with the Fibonacci Volume Profiles indicator by AlgoAlpha! This powerful tool blends Fibonacci retracement levels with customizable volume profiles, helping traders identify high-probability areas of support, resistance, and accumulation. Designed for both continuous dynamic levels and custom time periods, this indicator is a must-have for traders seeking confluence in market structure analysis.
🔑 Key Features
📈 Dual Mode Selection : Choose between Continuous Fibonacci levels, which adapt dynamically to pivots, or a Custom Period mode, where you set your own start and end points.
📊 Integrated Volume Profile : Visualize volume distributions at key Fibonacci retracement levels, revealing areas of strong buying/selling interest.
🎨 Customizable Colors & Transparency : Adjust Fibonacci level colors, fill zones, and profile transparency for a visually clear experience.
🔍 Profile Resolution & Scaling : Control the number of price levels and width of the volume profile for detailed market insights.
🛠 Extendable Levels : Optionally extend Fibonacci levels to the right of the chart for better visualization of future price interaction.
📌 How to Use
Add the Indicator: Click on the star icon to add it to your favorites and apply it to your TradingView chart.
Analyze The Market: Observe how price interacts with Fibonacci levels alongside the volume profile to confirm support/resistance zones. Switch between custom range or continuous mode to align the tool with your trading style.
⚙️ How It Works
The indicator calculates pivot highs/lows dynamically (or uses user-defined time periods) to plot Fibonacci retracement levels. It then builds a volume profile by analyzing historical volume data, grouping it into price bins to highlight volume-heavy zones. The Point of Control (PoC) is identified as the level with the highest traded volume, acting as a key price magnet. The color-coded Fibonacci levels help traders spot retracement zones, while the volume profile confirms strength or weakness in those areas.
Liquidity Heatmap & Volume-Weighted RSILiquidity Heatmap Indicator with Volume-Weighted RSI
Description:
The Liquidity Heatmap Indicator with Volume-Weighted RSI (VW-RSI) is a powerful tool designed for traders to visualize market liquidity zones while integrating a volume-adjusted momentum oscillator. This indicator provides a dynamic heatmap of liquidity levels across various price points and enhances traditional RSI by incorporating volume weight, making it more responsive to market activity.
Key Features:
Liquidity Heatmap Visualization: Identifies high-liquidity price zones, allowing traders to spot potential areas of support, resistance, and accumulation.
Volume-Weighted RSI (VW-RSI): Enhances the RSI by factoring in trading volume, reducing false signals and improving trend confirmation.
Customizable Sensitivity: Users can adjust parameters to fine-tune heatmap intensity and RSI smoothing.
Dynamic Market Insights: Helps identify potential price reversals and trend strength by combining liquidity depth with momentum analysis.
How to Use:
1. Identify Liquidity Zones: The heatmap colors indicate areas of high and low liquidity, helping traders pinpoint key price action areas.
2. Use VW-RSI for Confirmation: When VW-RSI diverges from price near a liquidity cluster, it signals a potential reversal or continuation.
3. Adjust Parameters: Fine-tune the RSI period, volume weighting, and heatmap sensitivity to align with different trading strategies.
This indicator is ideal for traders who rely on order flow analysis, volume-based momentum strategies, and liquidity-driven trading techniques.
Volume Distribution Before/After Top
Description
This script visualizes the distribution of volume before and after a price peak within a specified time interval. The green area represents the volume accumulated before the peak, and the red area represents the volume accumulated after the peak. The script also calculates and displays the volume-weighted average price (VWAP) on each side of the peak with a dotted line and a label.
The key features include:
Volume Visualization: Transparent green and red bars indicate volume fractions before and after the peak.
VWAP Markers: Centered labels with VWAP values are plotted above the corresponding levels.
Interactive Inputs: Define the start and end points of the analysis interval using customizable anchor times.
This tool is ideal for traders who want to analyze how volume dynamics are distributed around key price levels. It can help identify potential zones of support and resistance and improve the understanding of market behavior in response to volume accumulation.
Instructions
Select the start and end anchor times using the input fields.
Observe the volume distribution and VWAP levels on the chart.
Use the visual data to make more informed trading decisions.
Crypto SeasonDefinition
This indicator is an informative indicator aiming to predict when the Altcoin season will start and when Bitcoin will enter the month season.
The average of the graph shows the dominance of altcoins other than BTC, ETH and USDT. If this value is over 30, the BTC says that the bull season is over. This value indicates that 20 to 30 BTC is in the bull season or accumulation. If this value is less than 20, it means that the subcoin season has begun.
Disclaimer
This indicator is for informational purposes only and should be used for educational purposes only. You may lose money if you rely on this to trade without additional information. Use at your own risk.
Version
v1.0
Liquidity Swings [UAlgo]The "Liquidity Swings " indicator is designed to help traders identify liquidity swings within the market. This tool is particularly useful for visualizing areas where liquidity is accumulating and where it is being swept, providing valuable insights for making informed trading decisions. By tracking the pivots in price and associating them with volume, the indicator highlights zones of potential support and resistance, helping traders understand market dynamics more clearly.
🔶 Key Features
Liquidity Swing Sensitivity: Adjustable sensitivity settings to fine-tune the detection of liquidity swings according to market conditions and trader preferences.
Two modes of liquidity calculation:
Cumulative Liquidity: Aggregates unswept liquidity over multiple swings until it is swept, providing a broader view of liquidity accumulation.
Individual Liquidity: Displays the accumulated liquidity for each swing independently, offering a more granular perspective.
Visual Customization: Options to customize the colors and sizes of liquidity lines, areas, and informational text for better visual clarity.
Dynamic Updates: The indicator dynamically updates liquidity zones and labels, adjusting to new market data to keep traders informed in real-time.
🔶 Disclaimer
The "Liquidity Swings " indicator is provided for educational and informational purposes only.
It should not be considered as financial advice or a recommendation to buy or sell any financial instrument.
The use of this indicator involves inherent risks, and users should employ their own judgment and conduct their own research before making any trading decisions. Past performance is not indicative of future results.
🔷 Related Scripts
Liquidity Sweeps
Williams %R Liquidity Sweeps
Bitcoin Wave RainbowThis Bitcoin Wave Rainbow model is a powerful tool designed to help traders of all levels understand and navigate the Bitcoin market. It works only with BTC in any timeframe, but better looks in dayly or weekly timeframes. It provides valuable insights into historical price behavior and offers forecasts for the next decade, making it an essential asset for both short-term and long-term strategies.
How the Model Works
The model is built on a logarithmic trend, also known as a power law, represented by the green line on the chart. This line illustrates the expected price trajectory of Bitcoin over time. The model also incorporates a range of price fluctuations around this trend, represented by colored bands.
The width of these bands narrows over time, indicating that the model becomes increasingly accurate as it progresses. This is due to the exponential decrease in the range of price fluctuations, making the model a reliable tool for predicting future price movements.
Understanding the Zones
Blue Zone: This zone signifies that the price is below its trend, making it a recommended area for buying Bitcoin. It represents a level where the price is unlikely to fall further, providing a potential opportunity for accumulation.
Green Zone: This zone represents a fair price range, where the price is relatively close to its trend. In this zone, the price may continue to go up or down, depending on the halving season. ransiting up around any halving and transiting down around 2 years after each halving.
Yellow Zone: This zone indicates that the price is somewhat overheated, often due to the hype following a halving event. While there may still be room for the price to rise, traders should exercise caution in this zone, as a price correction could occur.
Red Zone: This zone represents a strong overbought condition, where the price is significantly above its trend. Traders should be extremely cautious in this zone and consider reducing their positions, as the price is likely to revert back towards the trend or even lower.
Using the Model in Your Trading Strategy
This indicator can be used in conjunction with the Bitcoin Wave Model, which complements it by showing harmonic price fluctuations associated with halving events. Together, these indicators provide a comprehensive view of the Bitcoin market, allowing traders to make informed decisions based on both historical data and future projections.
Benefits for Traders
This Bitcoin price model offers numerous benefits for traders, including:
Clear Visualization: The model provides a clear and concise visual representation of Bitcoin's price behavior, making it easy to understand and interpret.
Accurate Forecasting: The model's accuracy increases over time, providing reliable forecasts for future price movements.
Risk Management: The model helps traders identify overbought and oversold conditions, allowing them to manage their risk more effectively.
Strategic Decision-Making: By understanding the different zones and their implications, traders can make more informed decisions about when to buy, sell, or hold Bitcoin.
By incorporating this Bitcoin price model into your trading strategy, you can gain a deeper understanding of the market dynamics and improve your chances of success.
VWAP DivergenceThe "VWAP Divergence" indicator leverages the VWAP Rolling indicator available in TradingView's library to analyze price and volume dynamics. This custom indicator calculates a rolling VWAP (Volume Weighted Average Price) and compares it with a Simple Moving Average (SMA) over a specified historical period.
Advantages:
1. Accurate VWAP Calculation: The VWAP Rolling indicator computes a VWAP that dynamically adjusts based on recent price and volume data. VWAP is a vital metric used by traders to understand the average price at which a security has traded, factoring in volume.
2. SMA Comparison: By contrasting the rolling VWAP from the VWAP Rolling indicator with an SMA of the same length, the indicator highlights potential divergences. This comparison can reveal shifts in market sentiment.
3. Divergence Identification: The primary purpose of this indicator is to detect divergences between the rolling VWAP from VWAP Rolling and the SMA. Divergence occurs when the rolling VWAP significantly differs from the SMA, indicating potential changes in market dynamics.
Interpretation:
1. Positive Oscillator Values: A positive oscillator (difference between rolling VWAP and SMA) suggests that the rolling VWAP, derived from the VWAP Rolling indicator, is above the SMA. This could indicate strong buying interest or accumulation.
2. Negative Oscillator Values: Conversely, a negative oscillator value indicates that the rolling VWAP is below the SMA. This might signal selling pressure or distribution.
3. Divergence Signals: Significant divergences between the rolling VWAP (from VWAP Rolling) and SMA can indicate shifts in market sentiment. For instance, a rising rolling VWAP diverging upwards from the SMA might suggest increasing bullish sentiment.
4. Confirmation with Price Movements: Traders often use these divergences alongside price action to confirm potential trend reversals or continuations.
Implementation:
1. Length Parameter: Adjust the Length input to modify the lookback period for computing both the rolling VWAP from VWAP Rolling and the SMA. A longer period provides a broader view of market sentiment, while a shorter period is more sensitive to recent price movements.
2. Visualization: The indicator plots the VWAP SMA Oscillator, which visually represents the difference (oscillator) between the rolling VWAP (from VWAP Rolling) and SMA over time.
3. Zero Line: The zero line (gray line) serves as a reference point. Oscillator values crossing above or below this line can be interpreted as bullish or bearish signals, respectively.
4. Contextual Analysis: Interpret signals from this indicator in conjunction with broader market conditions and other technical indicators to make informed trading decisions.
This indicator, utilizing the VWAP Rolling component, is valuable for traders seeking insights into the relationship between volume-weighted price levels and traditional moving averages, aiding in the identification of potential trading opportunities based on market dynamics.
Volume-Blended Candlesticks [QuantVue]Introducing the Volume-Blended Candlestick Indicator, a powerful tool that seamlessly integrates volume information with candlesticks, providing you with a comprehensive view of market dynamics in a single glance.
The Volume-Blended Candlestick Indicator employs a unique approach of projecting volume totals by calculating the total volume traded per second and comparing it to the time left in the session as well as the historical average length selected by the user.
The indicator then dynamically adjusts the opacity of the candlestick colors based on the intensity of the projected volume. As volume intensifies, the candlestick colors become more pronounced, while low volume will cause colors to fade allowing you to visually perceive the level of buying or selling.
One of the standout features of the Volume-Blended Candlestick Indicator is its ability to identify pocket pivots. A pocket pivot is an up day with volume greater than any of the down days volume in the past 10 days. By highlighting these pocket pivots on your chart, the indicator helps you identify potential stealth accumulation.
In addition to blending volume with candlesticks and spotting pocket pivots, this versatile indicator provides you with an insightful table displaying key volume metrics. The table includes the average volume, average dollar volume, and the up-down volume ratio, allowing you to get a clear picture of buying and selling pressure.
Settings Include:
🔹Sensitivty Level: Normal, More, Less
🔹Volume MA Length
🔹Toggle Color based on previous close
🔹Show or hide volume info
🔹Chose candlestick colors
🔹Show or hide pocket pivots
🔹Show or hide volume info table
Don't hesitate to reach out with any questions or concerns.
We hope you enjoy!
Cheers.
RelativeValue█ OVERVIEW
This library is a Pine Script™ programmer's tool offering the ability to compute relative values, which represent comparisons of current data points, such as volume, price, or custom indicators, with their analogous historical data points from corresponding time offsets. This approach can provide insightful perspectives into the intricate dynamics of relative market behavior over time.
█ CONCEPTS
Relative values
In this library, a relative value is a metric that compares a current data point in a time interval to an average of data points with corresponding time offsets across historical periods. Its purpose is to assess the significance of a value by considering the historical context within past time intervals.
For instance, suppose we wanted to calculate relative volume on an hourly chart over five daily periods, and the last chart bar is two hours into the current trading day. In this case, we would compare the current volume to the average of volume in the second hour of trading across five days. We obtain the relative volume value by dividing the current volume by this average.
This form of analysis rests on the hypothesis that substantial discrepancies or aberrations in present market activity relative to historical time intervals might help indicate upcoming changes in market trends.
Cumulative and non-cumulative values
In the context of this library, a cumulative value refers to the cumulative sum of a series since the last occurrence of a specific condition (referred to as `anchor` in the function definitions). Given that relative values depend on time, we use time-based conditions such as the onset of a new hour, day, etc. On the other hand, a non-cumulative value is simply the series value at a specific time without accumulation.
Calculating relative values
Four main functions coordinate together to compute the relative values: `maintainArray()`, `calcAverageByTime()`, `calcCumulativeSeries()`, and `averageAtTime()`. These functions are underpinned by a `collectedData` user-defined type (UDT), which stores data collected since the last reset of the timeframe along with their corresponding timestamps. The relative values are calculated using the following procedure:
1. The `averageAtTime()` function invokes the process leveraging all four of the methods and acts as the main driver of the calculations. For each bar, this function adds the current bar's source and corresponding time value to a `collectedData` object.
2. Within the `averageAtTime()` function, the `maintainArray()` function is called at the start of each anchor period. It adds a new `collectedData` object to the array and ensures the array size does not exceed the predefined `maxSize` by removing the oldest element when necessary. This method plays an essential role in limiting memory usage and ensuring only relevant data over the desired number of periods is in the calculation window.
3. Next, the `calcAverageByTime()` function calculates the average value of elements within the `data` field for each `collectedData` object that corresponds to the same time offset from each anchor condition. This method accounts for cases where the current index of a `collectedData` object exceeds the last index of any past objects by using the last available values instead.
4. For cumulative calculations, the `averageAtTime()` function utilizes the `isCumulative` boolean parameter. If true, the `calcCumulativeSeries()` function will track the running total of the source data from the last bar where the anchor condition was met, providing a cumulative sum of the source values from one anchor point to the next.
To summarize, the `averageAtTime()` function continually stores values with their corresponding times in a `collectedData` object for each bar in the anchor period. When the anchor resets, this object is added to a larger array. The array's size is limited by the specified number of periods to be averaged. To correlate data across these periods, time indexing is employed, enabling the function to compare corresponding points across multiple periods.
█ USING THIS LIBRARY
The library simplifies the complex process of calculating relative values through its intuitive functions. Follow the steps below to use this library in your scripts.
Step 1: Import the library and declare inputs
Import the library and declare variables based on the user's input. These can include the timeframe for each period, the number of time intervals to include in the average, and whether the calculation uses cumulative values. For example:
//@version=5
import TradingView/RelativeValue/1 as TVrv
indicator("Relative Range Demo")
string resetTimeInput = input.timeframe("D")
int lengthInput = input.int(5, "No. of periods")
Step 2: Define the anchor condition
With these inputs declared, create a condition to define the start of a new period (anchor). For this, we use the change in the time value from the input timeframe:
bool anchor = timeframe.change(resetTimeInput)
Step 3: Calculate the average
At this point, one can calculate the average of a value's history at the time offset from the anchor over a number of periods using the `averageAtTime()` function. In this example, we use True Range (TR) as the `source` and set `isCumulative` to false:
float pastRange = TVrv.averageAtTime(ta.tr, lengthInput, anchor, false)
Step 4: Display the data
You can visualize the results by plotting the returned series. These lines display the non-cumulative TR alongside the average value over `lengthInput` periods for relative comparison:
plot(pastRange, "Past True Range Avg", color.new(chart.bg_color, 70), 1, plot.style_columns)
plot(ta.tr, "True Range", close >= open ? color.new(color.teal, 50) : color.new(color.red, 50), 1, plot.style_columns)
This example will display two overlapping series of columns. The green and red columns depict the current TR on each bar, and the light gray columns show the average over a defined number of periods, e.g., the default inputs on an hourly chart will show the average value at the hour over the past five days. This comparative analysis aids in determining whether the range of a bar aligns with its typical historical values or if it's an outlier.
█ NOTES
• The foundational concept of this library was derived from our initial Relative Volume at Time script. This library's logic significantly boosts its performance. Keep an eye out for a forthcoming updated version of the indicator. The demonstration code included in the library emulates a streamlined version of the indicator utilizing the library functions.
• Key efficiencies in the data management are realized through array.binary_search_leftmost() , which offers a performance improvement in comparison to its loop-dependent counterpart.
• This library's architecture utilizes user-defined types (UDTs) to create custom objects which are the equivalent of variables containing multiple parts, each able to hold independent values of different types . The recently added feature was announced in this blog post.
• To enhance readability, the code substitutes array functions with equivalent methods .
Look first. Then leap.
█ FUNCTIONS
This library contains the following functions:
calcCumulativeSeries(source, anchor)
Calculates the cumulative sum of `source` since the last bar where `anchor` was `true`.
Parameters:
source (series float) : Source used for the calculation.
anchor (series bool) : The condition that triggers the reset of the calculation. The calculation is reset when `anchor` evaluates to `true`, and continues using the values accumulated since the previous reset when `anchor` is `false`.
Returns: (float) The cumulative sum of `source`.
averageAtTime(source, length, anchor, isCumulative)
Calculates the average of all `source` values that share the same time difference from the `anchor` as the current bar for the most recent `length` bars.
Parameters:
source (series float) : Source used for the calculation.
length (simple int) : The number of reset periods to consider for the average calculation of historical data.
anchor (series bool) : The condition that triggers the reset of the average calculation. The calculation is reset when `anchor` evaluates to `true`, and continues using the values accumulated since the previous reset when `anchor` is `false`.
isCumulative (simple bool) : If `true`, `source` values are accumulated until the next time `anchor` is `true`. Optional. The default is `true`.
Returns: (float) The average of the source series at the specified time difference.
The Rush
█ OVERVIEW
This script shows when buyers are in a rush to buy and when sellers are in a rush to sell
═════════════════════════════════════════════════════════════════════════
█ CONCEPTS
Prophet Mohamed Peace be upon Him once said something similar to this "It is not advisable to trade if you do not know the
Volume".
In his book "The Day Trader's Bible - Or My Secret In Day trading Of Stocks", Richard D. Kickoff wrote in page 55
"This shows that there was only 100 shares for sale at 180 1/8, none at all at 180f^, and only 500 at 3/8. The jump from 1 to 8 to 3/8
Emphasizes both the absence of pressure and persistency on the part of the buyers. They are not content to wait patiently until they can
Secure the stock at 180^/4; they "reach" for it."
This script was inspired by these two great men.
Prophet Mohamed Peace be upon Him showed the importance of the volume and Richard D. Kickoff explained what Prophet
Mohamed Peace be upon Him meant.
So I created this script that gauge the movement of the stock and the sentiments of the traders.
═════════════════════════════════════════════════════════════════════════
• FEATURES: The script calculates The Percentage Difference of the price and The Percentage Difference of the volume between
two success bullish candles (or two success bearish candles) and then it creates a ratio between these two Percentage
Differences and in the end the ratio is compared to the previous one to see if there is an increase or a decrease.
═════════════════════════════════════════════════════════════════════════
• HOW TO USE: if you see 2 or more successive red bars that mean bears are in hurry to sell and you can expect a bearish trend soon
if the Market Maker allows it or later if the Market Maker wants to do some distribution.
if you see 2 or more successive green bars that mean bulls are in hurry to buy and you can expect a bullish trend soon if the Market
Maker allows it or later if the Market Maker wants to do some accumulation.
═════════════════════════════════════════════════════════════════════════
• LIMITATIONS:
1- Use only Heikin Ashi chart
2- Good only if volume data is correct , meaning good for a centralized Market. (You can use it for forex or
crypto but at your own risk because those markets are not centralized)
═════════════════════════════════════════════════════════════════════════
• THANKS: I pay homage to Prophet Mohamed Peace be upon Him and Richard D. Kickoff who inspired the creation of this
Script.
═════════════════════════════════════════════════════════════════════════
taLibrary "ta"
█ OVERVIEW
This library holds technical analysis functions calculating values for which no Pine built-in exists.
Look first. Then leap.
█ FUNCTIONS
cagr(entryTime, entryPrice, exitTime, exitPrice)
It calculates the "Compound Annual Growth Rate" between two points in time. The CAGR is a notional, annualized growth rate that assumes all profits are reinvested. It only takes into account the prices of the two end points — not drawdowns, so it does not calculate risk. It can be used as a yardstick to compare the performance of two instruments. Because it annualizes values, the function requires a minimum of one day between the two end points (annualizing returns over smaller periods of times doesn't produce very meaningful figures).
Parameters:
entryTime : The starting timestamp.
entryPrice : The starting point's price.
exitTime : The ending timestamp.
exitPrice : The ending point's price.
Returns: CAGR in % (50 is 50%). Returns `na` if there is not >=1D between `entryTime` and `exitTime`, or until the two time points have not been reached by the script.
█ v2, Mar. 8, 2022
Added functions `allTimeHigh()` and `allTimeLow()` to find the highest or lowest value of a source from the first historical bar to the current bar. These functions will not look ahead; they will only return new highs/lows on the bar where they occur.
allTimeHigh(src)
Tracks the highest value of `src` from the first historical bar to the current bar.
Parameters:
src : (series int/float) Series to track. Optional. The default is `high`.
Returns: (float) The highest value tracked.
allTimeLow(src)
Tracks the lowest value of `src` from the first historical bar to the current bar.
Parameters:
src : (series int/float) Series to track. Optional. The default is `low`.
Returns: (float) The lowest value tracked.
█ v3, Sept. 27, 2022
This version includes the following new functions:
aroon(length)
Calculates the values of the Aroon indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: ( [float, float ]) A tuple of the Aroon-Up and Aroon-Down values.
coppock(source, longLength, shortLength, smoothLength)
Calculates the value of the Coppock Curve indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
longLength (simple int) : (simple int) Number of bars for the fast ROC value (length).
shortLength (simple int) : (simple int) Number of bars for the slow ROC value (length).
smoothLength (simple int) : (simple int) Number of bars for the weigted moving average value (length).
Returns: (float) The oscillator value.
dema(source, length)
Calculates the value of the Double Exponential Moving Average (DEMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The double exponentially weighted moving average of the `source`.
dema2(src, length)
An alternate Double Exponential Moving Average (Dema) function to `dema()`, which allows a "series float" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The double exponentially weighted moving average of the `src`.
dm(length)
Calculates the value of the "Demarker" indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
donchian(length)
Calculates the values of a Donchian Channel using `high` and `low` over a given `length`.
Parameters:
length (int) : (series int) Number of bars (length).
Returns: ( [float, float, float ]) A tuple containing the channel high, low, and median, respectively.
ema2(src, length)
An alternate ema function to the `ta.ema()` built-in, which allows a "series float" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int/float) Number of bars (length).
Returns: (float) The exponentially weighted moving average of the `src`.
eom(length, div)
Calculates the value of the Ease of Movement indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
div (simple int) : (simple int) Divisor used for normalzing values. Optional. The default is 10000.
Returns: (float) The oscillator value.
frama(source, length)
The Fractal Adaptive Moving Average (FRAMA), developed by John Ehlers, is an adaptive moving average that dynamically adjusts its lookback period based on fractal geometry.
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The fractal adaptive moving average of the `source`.
ft(source, length)
Calculates the value of the Fisher Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
ht(source)
Calculates the value of the Hilbert Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
Returns: (float) The oscillator value.
ichimoku(conLength, baseLength, senkouLength)
Calculates values of the Ichimoku Cloud indicator, including tenkan, kijun, senkouSpan1, senkouSpan2, and chikou. NOTE: offsets forward or backward can be done using the `offset` argument in `plot()`.
Parameters:
conLength (int) : (series int) Length for the Conversion Line (Tenkan). The default is 9 periods, which returns the mid-point of the 9 period Donchian Channel.
baseLength (int) : (series int) Length for the Base Line (Kijun-sen). The default is 26 periods, which returns the mid-point of the 26 period Donchian Channel.
senkouLength (int) : (series int) Length for the Senkou Span 2 (Leading Span B). The default is 52 periods, which returns the mid-point of the 52 period Donchian Channel.
Returns: ( [float, float, float, float, float ]) A tuple of the Tenkan, Kijun, Senkou Span 1, Senkou Span 2, and Chikou Span values. NOTE: by default, the senkouSpan1 and senkouSpan2 should be plotted 26 periods in the future, and the Chikou Span plotted 26 days in the past.
ift(source)
Calculates the value of the Inverse Fisher Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
Returns: (float) The oscillator value.
kvo(fastLen, slowLen, trigLen)
Calculates the values of the Klinger Volume Oscillator.
Parameters:
fastLen (simple int) : (simple int) Length for the fast moving average smoothing parameter calculation.
slowLen (simple int) : (simple int) Length for the slow moving average smoothing parameter calculation.
trigLen (simple int) : (simple int) Length for the trigger moving average smoothing parameter calculation.
Returns: ( [float, float ]) A tuple of the KVO value, and the trigger value.
pzo(length)
Calculates the value of the Price Zone Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
rms(source, length)
Calculates the Root Mean Square of the `source` over the `length`.
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The RMS value.
rwi(length)
Calculates the values of the Random Walk Index.
Parameters:
length (simple int) : (simple int) Lookback and ATR smoothing parameter length.
Returns: ( [float, float ]) A tuple of the `rwiHigh` and `rwiLow` values.
stc(source, fast, slow, cycle, d1, d2)
Calculates the value of the Schaff Trend Cycle indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
fast (simple int) : (simple int) Length for the MACD fast smoothing parameter calculation.
slow (simple int) : (simple int) Length for the MACD slow smoothing parameter calculation.
cycle (simple int) : (simple int) Number of bars for the Stochastic values (length).
d1 (simple int) : (simple int) Length for the initial %D smoothing parameter calculation.
d2 (simple int) : (simple int) Length for the final %D smoothing parameter calculation.
Returns: (float) The oscillator value.
stochFull(periodK, smoothK, periodD)
Calculates the %K and %D values of the Full Stochastic indicator.
Parameters:
periodK (simple int) : (simple int) Number of bars for Stochastic calculation. (length).
smoothK (simple int) : (simple int) Number of bars for smoothing of the %K value (length).
periodD (simple int) : (simple int) Number of bars for smoothing of the %D value (length).
Returns: ( [float, float ]) A tuple of the slow %K and the %D moving average values.
stochRsi(lengthRsi, periodK, smoothK, periodD, source)
Calculates the %K and %D values of the Stochastic RSI indicator.
Parameters:
lengthRsi (simple int) : (simple int) Length for the RSI smoothing parameter calculation.
periodK (simple int) : (simple int) Number of bars for Stochastic calculation. (length).
smoothK (simple int) : (simple int) Number of bars for smoothing of the %K value (length).
periodD (simple int) : (simple int) Number of bars for smoothing of the %D value (length).
source (float) : (series int/float) Series of values to process. Optional. The default is `close`.
Returns: ( [float, float ]) A tuple of the slow %K and the %D moving average values.
supertrend(factor, atrLength, wicks)
Calculates the values of the SuperTrend indicator with the ability to take candle wicks into account, rather than only the closing price.
Parameters:
factor (float) : (series int/float) Multiplier for the ATR value.
atrLength (simple int) : (simple int) Length for the ATR smoothing parameter calculation.
wicks (simple bool) : (simple bool) Condition to determine whether to take candle wicks into account when reversing trend, or to use the close price. Optional. Default is false.
Returns: ( [float, int ]) A tuple of the superTrend value and trend direction.
szo(source, length)
Calculates the value of the Sentiment Zone Oscillator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
t3(source, length, vf)
Calculates the value of the Tilson Moving Average (T3).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
vf (simple float) : (simple float) Volume factor. Affects the responsiveness.
Returns: (float) The Tilson moving average of the `source`.
t3Alt(source, length, vf)
An alternate Tilson Moving Average (T3) function to `t3()`, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
vf (simple float) : (simple float) Volume factor. Affects the responsiveness.
Returns: (float) The Tilson moving average of the `source`.
tema(source, length)
Calculates the value of the Triple Exponential Moving Average (TEMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The triple exponentially weighted moving average of the `source`.
tema2(source, length)
An alternate Triple Exponential Moving Average (TEMA) function to `tema()`, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The triple exponentially weighted moving average of the `source`.
trima(source, length)
Calculates the value of the Triangular Moving Average (TRIMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The triangular moving average of the `source`.
trima2(src, length)
An alternate Triangular Moving Average (TRIMA) function to `trima()`, which allows a "series int" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int) Number of bars (length).
Returns: (float) The triangular moving average of the `src`.
trix(source, length, signalLength, exponential)
Calculates the values of the TRIX indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
signalLength (simple int) : (simple int) Length for smoothing the signal line.
exponential (simple bool) : (simple bool) Condition to determine whether exponential or simple smoothing is used. Optional. The default is `true` (exponential smoothing).
Returns: ( [float, float, float ]) A tuple of the TRIX value, the signal value, and the histogram.
uo(fastLen, midLen, slowLen)
Calculates the value of the Ultimate Oscillator.
Parameters:
fastLen (simple int) : (series int) Number of bars for the fast smoothing average (length).
midLen (simple int) : (series int) Number of bars for the middle smoothing average (length).
slowLen (simple int) : (series int) Number of bars for the slow smoothing average (length).
Returns: (float) The oscillator value.
vhf(source, length)
Calculates the value of the Vertical Horizontal Filter.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
vi(length)
Calculates the values of the Vortex Indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: ( [float, float ]) A tuple of the viPlus and viMinus values.
vzo(length)
Calculates the value of the Volume Zone Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
williamsFractal(period)
Detects Williams Fractals.
Parameters:
period (int) : (series int) Number of bars (length).
Returns: ( [bool, bool ]) A tuple of an up fractal and down fractal. Variables are true when detected.
wpo(length)
Calculates the value of the Wave Period Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
█ v7, Nov. 2, 2023
This version includes the following new and updated functions:
atr2(length)
An alternate ATR function to the `ta.atr()` built-in, which allows a "series float" `length` argument.
Parameters:
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The ATR value.
changePercent(newValue, oldValue)
Calculates the percentage difference between two distinct values.
Parameters:
newValue (float) : (series int/float) The current value.
oldValue (float) : (series int/float) The previous value.
Returns: (float) The percentage change from the `oldValue` to the `newValue`.
donchian(length)
Calculates the values of a Donchian Channel using `high` and `low` over a given `length`.
Parameters:
length (int) : (series int) Number of bars (length).
Returns: ( [float, float, float ]) A tuple containing the channel high, low, and median, respectively.
highestSince(cond, source)
Tracks the highest value of a series since the last occurrence of a condition.
Parameters:
cond (bool) : (series bool) A condition which, when `true`, resets the tracking of the highest `source`.
source (float) : (series int/float) Series of values to process. Optional. The default is `high`.
Returns: (float) The highest `source` value since the last time the `cond` was `true`.
lowestSince(cond, source)
Tracks the lowest value of a series since the last occurrence of a condition.
Parameters:
cond (bool) : (series bool) A condition which, when `true`, resets the tracking of the lowest `source`.
source (float) : (series int/float) Series of values to process. Optional. The default is `low`.
Returns: (float) The lowest `source` value since the last time the `cond` was `true`.
relativeVolume(length, anchorTimeframe, isCumulative, adjustRealtime)
Calculates the volume since the last change in the time value from the `anchorTimeframe`, the historical average volume using bars from past periods that have the same relative time offset as the current bar from the start of its period, and the ratio of these volumes. The volume values are cumulative by default, but can be adjusted to non-accumulated with the `isCumulative` parameter.
Parameters:
length (simple int) : (simple int) The number of periods to use for the historical average calculation.
anchorTimeframe (simple string) : (simple string) The anchor timeframe used in the calculation. Optional. Default is "D".
isCumulative (simple bool) : (simple bool) If `true`, the volume values will be accumulated since the start of the last `anchorTimeframe`. If `false`, values will be used without accumulation. Optional. The default is `true`.
adjustRealtime (simple bool) : (simple bool) If `true`, estimates the cumulative value on unclosed bars based on the data since the last `anchor` condition. Optional. The default is `false`.
Returns: ( [float, float, float ]) A tuple of three float values. The first element is the current volume. The second is the average of volumes at equivalent time offsets from past anchors over the specified number of periods. The third is the ratio of the current volume to the historical average volume.
rma2(source, length)
An alternate RMA function to the `ta.rma()` built-in, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The rolling moving average of the `source`.
supertrend2(factor, atrLength, wicks)
An alternate SuperTrend function to `supertrend()`, which allows a "series float" `atrLength` argument.
Parameters:
factor (float) : (series int/float) Multiplier for the ATR value.
atrLength (float) : (series int/float) Length for the ATR smoothing parameter calculation.
wicks (simple bool) : (simple bool) Condition to determine whether to take candle wicks into account when reversing trend, or to use the close price. Optional. Default is `false`.
Returns: ( [float, int ]) A tuple of the superTrend value and trend direction.
vStop(source, atrLength, atrFactor)
Calculates an ATR-based stop value that trails behind the `source`. Can serve as a possible stop-loss guide and trend identifier.
Parameters:
source (float) : (series int/float) Series of values that the stop trails behind.
atrLength (simple int) : (simple int) Length for the ATR smoothing parameter calculation.
atrFactor (float) : (series int/float) The multiplier of the ATR value. Affects the maximum distance between the stop and the `source` value. A value of 1 means the maximum distance is 100% of the ATR value. Optional. The default is 1.
Returns: ( [float, bool ]) A tuple of the volatility stop value and the trend direction as a "bool".
vStop2(source, atrLength, atrFactor)
An alternate Volatility Stop function to `vStop()`, which allows a "series float" `atrLength` argument.
Parameters:
source (float) : (series int/float) Series of values that the stop trails behind.
atrLength (float) : (series int/float) Length for the ATR smoothing parameter calculation.
atrFactor (float) : (series int/float) The multiplier of the ATR value. Affects the maximum distance between the stop and the `source` value. A value of 1 means the maximum distance is 100% of the ATR value. Optional. The default is 1.
Returns: ( [float, bool ]) A tuple of the volatility stop value and the trend direction as a "bool".
Removed Functions:
allTimeHigh(src)
Tracks the highest value of `src` from the first historical bar to the current bar.
allTimeLow(src)
Tracks the lowest value of `src` from the first historical bar to the current bar.
trima2(src, length)
An alternate Triangular Moving Average (TRIMA) function to `trima()`, which allows a
"series int" length argument.
Binance Z VolumeBTC perpetual volume on Binance is about 4x spot volume.
Comparing spot and perpetual volumes could provide useful insights into market sentiment.
Abnormal increases in the spot market could be associated with accumulation. Abnormal increases in the perpetual market, on the other hand, could predict volatility as well lows and highs.
This script represents a Z-score of the volume of perpetual and 4xspot on Binance.
High values above 0 mean that the volume is skewed towards perpetual contracts. Values below 0 mean that the volume is skewed towards spot contracts.
Feel free to suggest changes and improvements of this script.
Translated with www.DeepL.com (free version)
BIO
Cumulative Volume v3The script, for Pine Script version 3, shows how to accumulate volume values during a defined session/period.
The input is the period to use for accumulation. "D" is the default value, useful to view data for each session.
This is slower than version 4 because there is no "var" and you need to use a loop. Also, you can't use "sum( volume , cnt_new_day)" with a variable length argument instead of "for".
Relative Volume Strength IndexRVSI is an alternative volume-based indicator that measures the rate of change of average OBV.
How to read a chart using it?
First signal to buy is when you see RVSI is close to green oversold levels.
Once RVSI passes above it's orange EMA, that would be the second alert of accumulation.
Be always cautious when it reaches 50 level as a random statistical correction can be expected because of "market noises".
You know it's a serious uptrend when it reaches above 75 and fluctuates there, grading behind EMA.
The best signal to sell would be a situation where you see RVSI passing below it's EMA when the whole thing is close to Red overbought level
It looks simple, but it's powerful!
I'd use RVSI in combination with price-based indicators.
Cumulative VolumeThe script shows how to accumulate volume values during a defined session/period.
The input is the period to use for accumulation. "D" is the default value, useful to view data for each session.
X-volume assessment numberSee source code for more details. Src1 = distribution and Src2 = accumulation.
SN Smoothed Balance of Power v2Hi all,
here is an updated version of the indicator script I published yesterday.
The goal of this indicator is to try and find darkpool activity. The indicator itself is not enough to fully identify darkpool but it should be able to detect quiet accumulation. What makes this Balance of Power different from others on TV is that it is smoothed by using a moving average.
Notes:
- The values that are default are completely arbitrary except for the VWMA length (a 14-day period for the 1D chart is the norm). For instance the limit where it shows red/green I picked because it works best for the 1D chart I am using. Other TF's and charts will need tweaking of all the values you find in the options menu to get the best results.
- I modified the indicator such that it is usable on charts that do not show volume. HOWEVER, this chart is default to NYMEX: CL1!. To get different volume data this needs to be changed in the option menu.
- I am in no way an expert on darkpool/HFT trading and am merely going from the information I found on the internet. Consider this an experiment.
Credits:
- Lazybear for some of the plotting-code
- Igor Livshin for the formula
- TahaBintahir for the Symbol-code (although I'm not sure who the original author is...)
Indicators: Volume Zone Indicator & Price Zone IndicatorVolume Zone Indicator (VZO) and Price Zone Indicator (PZO) are by Waleed Aly Khalil.
Volume Zone Indicator (VZO)
------------------------------------------------------------
VZO is a leading volume oscillator that evaluates volume in relation to the direction of the net price change on each bar.
A value of 40 or above shows bullish accumulation. Low values (< 40) are bearish. Near zero or between +/- 20, the market is either in consolidation or near a break out. When VZO is near +/- 60, an end to the bull/bear run should be expected soon. If that run has been opposite to the long term price trend direction, then a reversal often will occur.
Traditional way of looking at this also works:
* +/- 40 levels are overbought / oversold
* +/- 60 levels are extreme overbought / oversold
More info:
drive.google.com
Price Zone Indicator (PZO)
------------------------------------------------------------
PZO is interpreted the same way as VZO (same formula with "close" substituted for "volume").
Chart Markings
------------------------------------------------------------
In the chart above,
* The red circles indicate a run-end (or reversal) zones (VZO +/- 60).
* Blue rectangle shows the consolidation zone (VZO betwen +/- 20)
I have been trying out VZO only for a week now, but I think this has lot of potential. Give it a try, let me know what you think.
MA - Multi-Indicator Dashboard📊 MULTI-INDICATOR DASHBOARD WITH ENTRY QUALITY SCORE
A comprehensive trading dashboard that combines multiple technical indicators into a single, easy-to-read display with a proprietary Entry Quality Scoring System (0-100).
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎯 ENTRY QUALITY SCORE (0-100)
Based on Mark Minervini's Trend Template and academic research on indicator correlations, this scoring system evaluates 5 key categories with 15 sub-criteria:
📈 TREND STRUCTURE (30%)
• SMA Hierarchy: 20>50>150>200 alignment (/15)
• 200 SMA Direction: Rising for at least 1 month (/10)
• SMA20-50 Momentum: Positive and increasing (/5)
⚡ MOMENTUM (25%)
• ADX Trend Strength: 25+ indicates strong trend (/10)
• RSI Goldilocks Zone: 50-65 ideal entry range (/8)
• MACD: Positive histogram and increasing (/7)
📊 VOLUME/MONEY FLOW (20%)
• Relative Volume: 1.5x+ shows strong participation (/7)
• OBV Trend: Institutional accumulation signal (/6)
• CMF: 0.10+ indicates strong accumulation (/5)
• Volume Oscillator: Volume expansion (/2)
🌊 VOLATILITY & SQUEEZE (15%)
• Squeeze Status: Fired + positive momentum (/8)
• VCR: <0.75 contraction signal (/4)
• ATR: Normal range volatility (/3)
📍 52-WEEK POSITION (10%)
• Range Position: 70-95% ideal zone (/6)
• Distance from Low: 30%+ Minervini criterion (/4)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎯 SCORE LEVELS
🟢 85-100: EXCELLENT → Aggressive entry
🟢 70-84: STRONG → Normal entry
🟡 55-69: MODERATE → Cautious entry
🟠 40-54: WEAK → Wait/Watch
🔴 0-39: AVOID → No entry
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 DASHBOARD INDICATORS
• Price & SMA Values (20, 50, 150, 200)
• SMA Differences & Ratios
• RSI (14), MACD (20,50,9), ADX (14/50)
• ATR (50), 52-Week High/Low
• OBV Trend, Volume Oscillator, Relative Volume
• CMF (21), Volatility Contraction Ratio
• BB/KC Squeeze Status & Momentum
• 3-Month Net Area calculations
• Sub-score breakdown by category
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚙️ SETTINGS
• Show/Hide Dashboard
• Table Position (6 options)
• Table Size (tiny/small/normal/large)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📚 REFERENCES
• Mark Minervini - "Trade Like a Stock Market Wizard"
• Mark Minervini - "Think & Trade Like a Champion"
• Wilder, J.W. - "New Concepts in Technical Trading Systems"
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ DISCLAIMER
This indicator is for educational purposes only. Always do your own research and use proper risk management. Past performance does not guarantee future results.
ICT Power of 3 identify the high-probability Power of 3 pattern by analyzing price behavior rather than just specific times of day. It focuses on how the market builds, traps, and then expands.
1. Accumulation (The Setup)
Logic: The script monitors volatility using the Average True Range (ATR). When volatility drops below its recent average, the script recognizes that orders are being "accumulated."
Visual: A Blue Dotted Box appears. This marks the equilibrium zone where buy and sell side liquidity is being engineered above and below the high/low of the range.
2. Manipulation (The Trap)
Logic: The script looks for a "Sweep." This is defined as price moving outside the blue accumulation box but failing to sustain that move. In the video, this is the "Judas Swing" or false breakout.
Visual: A Red Diamond appears above or below the bar. This signals that the script has detected a liquidity grab—essentially, the market has "tricked" breakout traders into the wrong side of the market.
3. Distribution (The Expansion)
Logic: This is identified through Displacement. The script calculates the average candle body size. When a candle appears that is significantly larger (based on your Displacement Multiplier), it confirms that "Smart Money" has entered the market.
Visual: A Green Triangle appears. This marks the start of the distribution phase, which is the "meat" of the move where you want to be positioned.
Micha Stocks Buyers Breakout RatingMicha Stocks Buyers Breakout Rating (ByBr)
========================================
This indicator is a custom rating system designed to identify high-probability "Buy" setups by analyzing Volume Conviction, Price Action, and Seller Exhaustion. It assigns a rating from 4 to 10 for every valid signal, helping traders filter out weak breakouts and focus on high-conviction moves.
How it Works The script uses a multi-tiered logic system to grade every green candle:
1. Volume Tiers (The Engine)
--Extreme Conviction (Rating 10): Volume is 2.5x higher than the short-term average.
--High Conviction (Rating 7-8): Volume is 1.5x higher than the short-term average.
2. Sustained Accumulation (Rating 5-6) Identifies persistent buying pressure where the last X -----bars (default 5) have all been green/up candles.
--Bonus Points The script awards extra points to the base rating for high-quality candle shapes:
--Strong Close: Price closes in the top 25% of the daily range.
--Hammer Candle: Long lower wick (rejection of lows) with a small body.
3. Seller Exhaustion (The Reversal - Rating 3-4) This logic identifies "dip buys" where sellers have lost control. It requires:
--Downtrend: Price is below the recent high.
--Confirmation: Either a "Volume Washout" (recent panic selling) or a "Supply Dry Up" (volume dropping below average).
How to Use
--------------
Look for Triangles: A triangle appears below the bar when a signal is detected.
Read the Number: The number (4-10) indicates the strength of the signal.
10: Extreme Volume Breakout (highest confidence).
7-8: Strong Volume Breakout.
4: Reversal/Dip Buy opportunity (Seller Exhaustion).
Tooltip: Hover over the label to see exactly which logic triggered the signal (e.g., "Extreme Conviction" vs "Sustained Accumulation").
Settings
----------
Short Lookback: Adjust the sensitivity of the trend detection (Default: 5).
Volume Multipliers: Adjust how strict the volume requirements are for high ratings.
BERNA (Boundary-Encoded Resonance Network Architecture)BERNA — Boundary-Encoded Resonance Network Architecture
BERNA is a research-grade indicator that estimates the remaining structural capacity of the current market regime.
Unlike trend, volatility, or momentum tools, BERNA does not measure price direction — it measures how much of the regime’s internal capacity has already been consumed.
This script implements the BERNA model published on Zenodo (Bülent Duman, 2026).
It is intentionally minimal and uses only OHLC data.
What BERNA measures
BERNA outputs a structural capacity state:
τ = Σ / Θ (normalized structural stress)
Λ = Θ − Σ (remaining structural capacity)
Interpretation:
High Λ / low τ → the regime has structural endurance
Rising τ → capacity is being consumed
τ → 1 (Λ → 0) → rupture proximity (capacity exhaustion)
This makes BERNA a forward-looking structural capacity variable, not a price oscillator.
What is inside this script
This implementation contains the following components:
Efficiency proxy (DERYA-like, but not the full public DERYA)
BERNA uses a simple microstructure efficiency proxy computed as:
E = |close − open| / (high − low)
This is conceptually “DERYA-like” but it is not the full DERYA framework.
No external/public DERYA source code is embedded here.
Standard technical primitives used
This script uses only basic primitives commonly found in technical analysis:
Absolute value and range normalization
Thresholding (regime binning)
Power transform on range (rng^p)
There is no EMA, RSI, MACD, ATR, ADX, Fisher, Kaufman, or other indicator embedded.
All computations are internal and deterministic.
3-state structural regime binning (K = 3)
The efficiency proxy E is discretized into three regimes using user thresholds:
Low efficiency
Mid efficiency
High efficiency
Each regime has its own capacity Θ and stress multiplier β.
Structural stress accumulation (Σ) and rupture proximity
Stress increment is defined as:
dΣ = β · (1 − E) · (range^p)
Σ accumulates inside a regime and is capped by Θ.
In this prototype, Σ resets on regime change by construction (regime-gated accumulation).
The rupture proximity is expressed through τ and Λ.
How to use BERNA
BERNA is designed as a regime-health and fragility overlay, not a buy/sell trigger.
Typical uses:
Detect when an ongoing move is structurally late-stage (τ high, Λ low)
Avoid initiating trades when capacity is nearly exhausted
Compare structural resilience across assets and regimes
Use alongside price/trend/volume systems for context
Do not use BERNA alone as a trading signal.
BERNA tells you “how much structure is left”, not “where price will go.”
Visuals
Efficiency (E) shows the bar-level microstructure efficiency proxy
τ shows normalized structural stress (capacity consumption)
Λ shows remaining structural capacity
Dotted lines mark warning and critical rupture proximity levels
Important notes
BERNA is not RSI, MACD, ATR, ADX, Fisher, Kaufman, or a volatility model
BERNA does not predict price direction
BERNA does not issue entry/exit signals
BERNA is a structural capacity diagnostic
This script does not embed any external/public indicator code; all logic is implemented directly in Pine.
Risk and disclaimer
This script is provided for research and analytical purposes only.
It is not financial advice and must not be used as a standalone trading system.
Markets are uncertain.
All trading decisions and risks remain entirely the responsibility of the user.
BERNA: Boundary-Encoded Resonance Network Architecture
A Structural Failure Theory of Financial Regimes Based on Endogenous Capacity Depletion
Author: Duman, Bülent
Affiliation: Independent Researcher
Reference: zenodo.org






















