RSI SMA Crossover StrategyOverview
RSI SMA Crossover Strategy works the same way as traditional MA crossover strategies, but using RSI instead of price. When RSI crosses over the SMA, a long position is opened (buy). When RSI crosses under the SMA, the long position is closed (sell).
This strategy can be very effective when the right inputs are used (see below). Be sure to use the backtesting tool to determine the optimal parameters for a given asset/timeframe.
Inputs/Parameters
RSI Length: length for RSI calculation (default = 50)
SMA Length: length for SMA calculation (default = 25)
Strategy Properties
Initial Capital = $1000
No default properties are defined for Slippage, Commission, etc, so be sure to set these values to get accurate backtesting results. This script is being published open-source for a reason - save yourself a copy and adjust the settings as you like!
Backtesting Results
Testing on Bitcoin (all time index) 1D chart, with all default parameters.
$1,000 initial investment on 10/07/2010 turns into almost $2.5 billion as of 08/30/2022 (compared to $334 million if the initial investment was held over the same period)
Remember, results can vary greatly based on the variables mentioned above, so always be sure to backtest.
Cerca negli script per "backtesting"
Short Selling EMA Cross (By Coinrule)BINANCE:AVAXUSDT
This short selling script works best in periods of downtrends and general bearish market conditions, with the ultimate goal to sell as the the price decreases further and buy back before a rebound.
This script can work well on coins you are planning to hodl for long-term and works especially well whilst using an automated bot that can execute your trades for you. It allows you to hedge your investment by allocating a % of your coins to trade with, whilst not risking your entire holding. This mitigates unrealised losses from hodling as it provides additional cash from the profits made. You can then choose to to hodl this cash, or use it to reinvest when the market reaches attractive buying levels.
Entry
The exponential moving average ( EMA ) 20 and EMA 50 have been used for the variables determining the entry to the short. EMAs can operate better than simple moving averages due to the additional weighting placed on the most recent data points, whereas simple moving averages weight all the data the same. This means that price is tracked more closely and the most recent volatile moves can be captured and exploited more efficiently using EMAs.
Our backtesting data revealed that the most profitable timeframe was the 30-minute timeframe, this also enabled a good frequency of trades and high profitability.
A fast (shorter term) exponential moving average , in this strategy the EMA 20, crossing under a slow (longer term) moving average, in this example the EMA 50, signals the price of an asset has started to trend to the downside, as the most recent data signals price is declining compared to earlier data. The entry acts on this principle and executes when the EMA 20 crosses under the EMA 50.
Enter Short: EMA 20 crosses under EMA 50.
Exit
This script utilises a take profit and stop loss for the exit. The take profit is set at -8% and the stop loss is set at +16% from the entry price. This would normally be a poor trade due to the risk:reward equalling 0.5. However, when looking at the backtesting data, the high profitability of the strategy (93.33%) leads to increased confidence and showcases the high probability of success according to historical data.
The take profit (-8%) and the stop loss (+16%) of the strategy are widely placed to ensure the move is captured without being stopped out due to relief rallies. The stop loss also plays a role of mitigating losses and minimising risk of being stuck in a short position once there has been a fundamental trend reversal and the market has become bullish .
Exit Short: -8% price decrease from entry price.
OR
Exit Short: +16% price increase from entry price.
Tip: Research what coins have consistent and large token unlocks / highly inflationary tokenomics, and target these during bear markets to short as they will most likely have substantial selling pressure that outweighs demand - leading to declining prices.
The strategy assumes each order is using 30% of the available coins to make the results more realistic and to simulate you only ran this strategy on 30% of your holdings. A trading fee of 0.1% is also taken into account and is aligned to the base fee applied on Binance.
The backtesting data was recorded from December 1st 2021, just as the market was beginning its downtrend. We therefore recommend analysing the market conditions prior to utilising this strategy as it operates best on weak coins during downtrends and bearish conditions.
Last Available Bar InfoLibrary "Last_Available_Bar_Info"
getLastBarTimeStamp()
getAvailableBars()
This simple library is built with an aim of getting the last available bar information for the chart. This returns a constant value that doesn't change on bar change.
For backtesting with accurate results on non standard charts, it will be helpful. (Especially if you are using non standard charts like Renko Chart).
Methods
getLastBarTimeStamp()
: Returns Timestamp of the last available bar (Constant)
getAvailableBars()
:Returns Number of Available Bars on the chart (Constant)
Example
import paragjyoti2012/Last_Available_Bar_Info/v1 as LastBarInfo
last_bar_timestamp=LastBarInfo.getLastBarTimeStamp()
no_of_bars=LastBarInfo.getAvailableBars()
If you are using Renko Charts, for backtesting, it's necesary to filter out the historical bars that are not of this timeframe.
In Renko charts, once the available bars of the current timeframe (based on your Tradingview active plan) are exhausted,
previous bars are filled in with historical bars of higher timeframe. Which is detrimental for backtesting, and it leads to unrealistic results.
To get the actual number of bars available of that timeframe, you should use this security function to get the timestamp for the last (real) bar available.
tf=timeframe.period
real_available_bars = request.security(syminfo.ticker, tf , LastBarInfo.getAvailableBars() , lookahead = barmerge.lookahead_off)
last_available_bar_timestamp = request.security(syminfo.ticker, tf , LastBarInfo.getLastBarTimeStamp() , lookahead = barmerge.lookahead_off)
Financial Astrology Crypto ML Daily TrendThis daily trend indicator is based on financial astrology cycles detected with advanced machine learning techniques for the crypto-currencies research portfolio: ADA, BAT, BNB, BTC, DASH, EOS, ETC, ETH, LINK, LTC, XLM, XMR, XRP, ZEC and ZRX. The daily price trend is forecasted through this planets cycles (angular aspects, speed, declination), fast ones are based on Moon, Mercury, Venus and Sun and Mid term cycles are based on Mars, Vesta and Ceres. The combination of all this cycles produce a daily price trend prediction that is encoded into a PineScript array using binary format "0 or 1" that represent sell and buy signals respectively. The indicator provides signals since 2021-01-01 to 2022-12-31, the past months signals purpose is to support backtesting of the indicator combined with other technical indicator entries like MAs, RSI or Stochastic. For future predictions besides 2022 a machine learning models re-train phase will be required.
The resolution of this indicator is 1D, you can tune a parameter where you can determine how many future bars of daily trend are plotted and adjust an hours shift to anticipate future signals into current bar in order to produce a leading indicator effect to anticipate the trend changes with some hours of anticipation. Combined with technical analysis indicators this daily trend is very powerful because can help to produce approximately 60% of profitable signals based on the backtesting results. You can look at our open source Github repositories to validate accuracy using the backtesting strategies we have implemented in Jesse Crypto Trading Framework as proof of concept of the predictive potential of this indicator. Alternatively, we have implemented a PineScript strategy that use this indicator, just consider that we are pending to do signals update to the period July 2021 to December 2022: This strategy have accumulated more than 110 likes and many traders have validated the predictive power of Financial Astrology.
DISCLAIMER: This indicator is experimental and don’t provide financial or investment advice, the main purpose is to demonstrate the predictive power of financial astrology. Any allocation of funds following the documented machine learning model prediction is a high-risk endeavour and it’s the users responsibility to practice healthy risk management according to your situation.
[laoowai]BNB_USDT_3m_3Commas_Bollinger_MACD_RSI_StrategyBNB_USDT _3m
Release Notes:
Time: 3min
Pair: BNB_USDT
Use: {{strategy.order.alert_message}}
What's the difference with 3Commas Bollinger Strategy by tedwardd:
1. Initial capital: 1210 USDT (10$ Base order / 400$*3 Safety order), if you will change, please change JUST safety order volume or number of safety orders 2-3
2. Using just 2(3) safety order (original script 4)
3. More high-performance strategy for BNB_USDT
4. Using MACD to sell order (original script take profit by scale), thanks Drun30 .
5. Using RSI to analyze the market conditions.
Need to change:
bot_id = input(title="3Commas Bot ID", defval=" YOUR DATA ")
email_token = input(title="Bot Email Token", defval=" YOUR DATA ")
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FAQ copy from tedwardd
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
This strategy is intended for use as a way of backtesting various parameters available on 3commas.
The primary inputs for the strategy are:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// USER INPUTS
Short MA Window - The length of the Short moving average
Long MA Window - The length of the Long moving average
Upper Band Offset - The offset to use for the upper bollinger offset
Lower Band Offset - The offset to use for the lower bollinger offset
Long Stop Loss % - The stop loss percentage to test
Long Take Profit % - The Take profit percentage to test
Initial SO Deviation % - The price deviation percentage required to place to first safety order
Safety Order Vol Step % - The volume scale to test
3Commas Bot ID - (self-explanatory)
Bot Email Token - Found in the deal start message for your bot (see link in the previous section for details)
3Commas Bot Trading Pair - The pair to include for composite bot start deals (should match the format of 3commas, not TradingView IE. USDT_BTC not BTCUSDT )
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Start Date, Month, Year and End Date, Month, and Year all apply to the backtesting window. By default, it will use as much data as it can give the current period select (there is less historical data available for periods below 1H) back as far as 2016 (there appears to be no historical data on Trading view much before this). If you would like to test a different period of time, just change these values accordingly.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Composite bot using a Bollinger band type trading strategy. While its primary intention is to provide users a way of backtesting bot parameters, it can also be used to trigger a deal start by either using the {{strategy.order.alert_message}} field in your alert and providing the bot details in the configuration screen for the strategy or by including the usual deal start message provided by 3commas.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Original script:
1. 3Commas Bollinger Strategy by tedwardd
2. Momentum Strategy ( BTC /USDT; 1h) - MACD (with source code) by Drun30
3Commas Bollinger StrategyThis strategy is intended for use as a way of backtesting various parameters available on 3commas.io composite bot using a bollinger band type trading strategy. While it's primary intention is to provide users a way of backtesting bot parameters, it can also be used to trigger a deal start by either using the {{strategy.open.alert_message}} field in your alert and providing the bot details in the configuration screen for the strategy or by including the usual deal start message provided by 3commas. You can find more information about how to do this from help.3commas.io
The primary inputs for the strategy are:
// USER INPUTS
Short MA Window - The length of the Short moving average
Long MA Window - The length of the Long moving average
Upper Band Offset - The offset to use for the upper bollinger offset
Lower Band Offset - The offset to use for the lower bollinger offset
Long Stop Loss % - The stop loss percentage to test
Long Take Profit % - The Take profit percentage to test
Initial SO Deviation % - The price deviation percentage required to place to first safety order
Safety Order Vol Step % - The volume scale to test
3Commas Bot ID - (self explanatory)
Bot Email Token - Found in the deal start message for your bot (see link in previous section for details)
3Commas Bot Trading Pair - The pair to include for composite bot start deals (should match format of 3commas, not TradingView IE. USDT_BTC not BTCUSDT)
Start Date, Month, Year and End Date, Month and Year all apply to the backtesting window. By default it will use as much data as it can given the current period select (there is less historical data available for periods below 1H) back as far as 2016 (there appears to be no historical data on Trading view much before this). If you would like to test a different period of time, just change these values accordingly.
Known Issues
Currently there are a couple of issues with this strategy that you should be aware of. I may fix them at some point in the future but they don't really bug me so this is more for informational purposes than a promise that they may one day be fixed.
Does not test trailing take profit
Number of safety orders and Safety Order Step Scale are currently not user configurable (must edit source code)
Using the user configuration to generate deal start message assumes you are triggering a composite bot, not a simple bot.
Efficient Work [LucF]█ OVERVIEW
Efficient Work measures the ratio of price movement from close to close ( resulting work ) over the distance traveled to the high and low before settling down at the close ( total work ). The closer the two values are, the more Efficient Work approaches its maximum value of +1 for an up move or -1 for a down move. When price does not change, Efficient Work is zero.
Higher values of Efficient Work indicate more efficient price travel between the close of two successive bars, which I interpret to be more significant, regardless of the move's amplitude. Because it measures the direction and strength of price changes rather than their amplitude, Efficient Work may be thought of as a sentiment indicator.
█ CONCEPTS
This oscillator's design stems from a few key concepts.
Relative Levels
Other than the centerline, relative rather than absolute levels are used to identify levels of interest. Accordingly, no fixed levels correspond to overbought/oversold conditions. Relative levels of interest are identified using:
• A Donchian channel (historical highs/lows).
• The oscillator's position relative to higher timeframe values.
• Oscillator levels following points in time where a divergence is identified.
Higher timeframes
Two progressively higher timeframes are used to calculate larger-context values for the oscillator. The rationale underlying the use of timeframes higher than the chart's is that, while they change less frequently than the values calculated at the chart's resolution, they are more meaningful because more work (trader activity) is required to calculate them. Combining the immediacy of values calculated at the chart's resolution to higher timeframe values achieves a compromise between responsiveness and reliability.
Divergences as points of interest rather than directional clues
A very simple interpretation of what constitutes a divergence is used. A divergence is defined as a discrepancy between any bar's direction and the direction of the signal line on that same bar. No attempt is made to attribute a directional bias to divergences when they occur. Instead, the oscillator's level is saved and subsequent movement of the oscillator relative to the saved level is what determines the bullish/bearish state of the oscillator.
Conservative coloring scheme
Several additive coloring conditions allow the bull/bear coloring of the oscillator's main line to be restricted to specific areas meeting all the selected conditions. The concept is built on the premise that most of the time, an oscillator's value should be viewed as mere noise, and that somewhat like price, it only occasionally conveys actionable information.
█ FEATURES
Plots
• Three lines can be plotted. They are named Main line , Line 2 and Line 3 . You decide which calculation to use for each line:
• The oscillator's value at the chart's resolution.
• The oscillator's value at a medium timeframe higher than the chart's resolution.
• The oscillator's value at the highest timeframe.
• An aggregate line calculated using a weighed average of the three previous lines (see the Aggregate Weights section of Inputs to configure the weights).
• The coloring conditions, divergence levels and the Hi/Lo channel always apply to the Main line, whichever calculation you decide to use for it.
• The color of lines 2 and 3 are fixed but can be set in the "Colors" section of Inputs.
• You can change the thickness of each line.
• When the aggregate line is displayed, higher timeframe values are only used in its calculation when they become available in the chart's history,
otherwise the aggregate line would appear much later on the chart. To indicate when each higher timeframe value becomes available,
a small label appears near the centerline.
• Divergences can be shown as small dots on the centerline.
• Divergence levels can be shown. The level and fill are determined by the oscillator's position relative to the last saved divergence level.
• Bull/bear markers can be displayed. They occur whenever a new bull/bear state is determined by the "Main Line Coloring Conditions".
• The Hi/Lo (Donchian) channel can be displayed, and its period defined.
• The background can display the state of any one of 11 different conditions.
• The resolutions used for the higher timeframes can be displayed to the right of the last bar's value.
• Four key values are always displayed in the Data Window (fourth icon down to the right of your chart):
oscillator values for the chart, medium and highest timeframes, and the oscillator's instant value before it is averaged.
Main Line Coloring Conditions
• Nine different conditions can be selected to determine the bull/bear coloring of the main line. All conditions set to "ON" must be met to determine the bull/bear state.
• A volatility state can also be used to filter the conditions.
• When the coloring conditions and the filter do not allow for a bull/bear state to be determined, the neutral color is used.
Signal
• Seven different averages can be used to calculate the average of the oscillator's value.
• The average's period can be set. A period of one will show the instant value of the oscillator,
provided you don't use linear regression or the Hull MA as they do not work with a period of one.
• An external signal can be used as the oscillator's instant value. If an already averaged external value is used, set the period to one in this indicator.
• For the cases where an external signal is used, a centerline value can be set.
Higher Timeframes
• The two higher timeframes are named Medium timeframe and Highest timeframe . They can be determined using one of three methods:
• Auto-steps: the higher timeframes are determined using the chart's resolution. If the chart uses a seconds resolution, for example,
the medium and highest resolutions will be 15 and 60 minutes.
• Multiples: the timeframes are calculated using a multiple of the chart's resolution, which you can set.
• Fixed: the set timeframes do not change with the chart's resolution.
Repainting
• Repainting can be controlled separately for the chart's value and the higher timeframe values.
• The default is a repainting chart value and non-repainting higher timeframe values. The Aggregate line will thus repaint by default,
as it uses the chart's value along with the higher timeframes values.
Aggregate Weights
• The weight of each component of the Aggregate line can be set.
• The default is equal weights for the three components, meaning that the chart's value accounts for one third of the weight in the Aggregate.
High Volatility
• This provides control over the volatility filter used in the Main line's coloring conditions and the background display.
• Volatility is determined to be high when the short-term ATR is greater than the long-term ATR.
Colors
• You can define your own colors for all of the oscillator's plots.
• The default colors will perform well on both white and black chart backgrounds.
Alerts
• An alert can be defined for the script. The alert will trigger whenever a bull/bear marker appears in the indicator's display.
The particular combination of coloring conditions and the display of bull/bear markers when you create the alert will thus determine when the alert triggers.
Once the alerts are created, subsequent changes to the conditions controlling the display of markers will not affect the existing alert(s).
• You can create multiple alerts from this script, each triggering on different conditions.
Backtesting & Trading Engine Signal Line
• An invisible plot named "BTE Signal" is provided. It can be used as an entry signal when connected to the PineCoders Backtesting & Trading Engine as an external input.
It will generate an entry whenever a marker is displayed.
█ NOTES
• I do not know for sure if the calculations in Efficient Work are original. I apologize if they are not.
• Because this version of Efficient Work only has access to OHLC information, it cannot measure the total distance traveled through all of a bar's ticks, but the indicator nonetheless behaves in a manner consistent with the intentions underlying its design.
For Pine coders
This code was written using the following standards:
• The PineCoders Coding Conventions for Pine .
• A modified version of the PineCoders MTF Oscillator Framework and MTF Selection Framework .
MTF Oscillator Framework [PineCoders]This framework allows Pine coders to quickly build a complete multi-timeframe oscillator from any calculation producing values around a centerline, whether the values are bounded or not. Insert your calculation in the script and you have a ready-to-publish MTF Oscillator offering a plethora of presentation options and features.
█ HOW TO USE THE FRAMEWORK
1 — Insert your calculation in the `f_signal()` function at the top of the "Helper Functions" section of the script.
2 — Change the script's name in the `study()` declaration statement and the `alertcondition()` text in the last part of the "Plots" section.
3 — Adapt the default value used to initialize the CENTERLINE constant in the script's "Constants" section.
4 — If you want to publish the script, copy/paste the following description in your new publication's description and replace the "OVERVIEW" section with a description of your calculations.
5 — Voilà!
═════════════════════════════════════════════════════════════════════════
█ OVERVIEW
This oscillator calculates a directional value of True Range. When a bar is up, the positive value of True Range is used. A negative value is used when the bar is down. When there is no movement during the bar, a zero value is generated, even if True Range is different than zero. Because the unit of measure of True Range is price, the oscillator is unbounded (it does not have fixed upper/lower bounds).
True Range can be used as a metric for volatility, but by using a signed value, this oscillator will show the directional bias of progressively increasing/decreasing volatility, which can make it more useful than an always positive value of True Range.
The True Range calculation appeared for the first time in J. Welles Wilder's New Concepts in Technical Trading Systems book published in 1978. Wilder's objective was to provide a reliable measure of the effective movement—or range—between two bars, to measure volatility. True Range is also the building block used to calculate ATR (Average True Range), which calculates the average of True Range values over a given period using the `rma` averaging method—the same used in the calculation of another of Wilder's remarkable creations: RSI.
█ CONCEPTS
This oscillator's design stems from a few key concepts.
Relative Levels
Other than the centerline, relative rather than absolute levels are used to identify levels of interest. Accordingly, no fixed levels correspond to overbought/oversold conditions. Relative levels of interest are identified using:
• A Donchian channel (historical highs/lows).
• The oscillator's position relative to higher timeframe values.
• Oscillator levels following points in time where a divergence is identified.
Higher timeframes
Two progressively higher timeframes are used to calculate larger-context values for the oscillator. The rationale underlying the use of timeframes higher than the chart's is that, while they change less frequently than the values calculated at the chart's resolution, they are more meaningful because more work (trader activity) is required to calculate them. Combining the immediacy of values calculated at the chart's resolution to higher timeframe values achieves a compromise between responsiveness and reliability.
Divergences as points of interest rather than directional clues
A very simple interpretation of what constitutes a divergence is used. A divergence is defined as a discrepancy between any bar's direction and the direction of the signal line on that same bar. No attempt is made to attribute a directional bias to divergences when they occur. Instead, the oscillator's level is saved and subsequent movement of the oscillator relative to the saved level is what determines the bullish/bearish state of the oscillator.
Conservative coloring scheme
Several additive coloring conditions allow the bull/bear coloring of the oscillator's main line to be restricted to specific areas meeting all the selected conditions. The concept is built on the premise that most of the time, an oscillator's value should be viewed as mere noise, and that somewhat like price, it only occasionally conveys actionable information.
█ FEATURES
Plots
• Three lines can be plotted. They are named Main line , Line 2 and Line 3 . You decide which calculation to use for each line:
• The oscillator's value at the chart's resolution.
• The oscillator's value at a medium timeframe higher than the chart's resolution.
• The oscillator's value at the highest timeframe.
• An aggregate line calculated using a weighed average of the three previous lines (see the Aggregate Weights section of Inputs to configure the weights).
• The coloring conditions, divergence levels and the Hi/Lo channel always apply to the Main line, whichever calculation you decide to use for it.
• The color of lines 2 and 3 are fixed but can be set in the "Colors" section of Inputs.
• You can change the thickness of each line.
• When the aggregate line is displayed, higher timeframe values are only used in its calculation when they become available in the chart's history,
otherwise the aggregate line would appear much later on the chart. To indicate when each higher timeframe value becomes available,
a small label appears near the centerline.
• Divergences can be shown as small dots on the centerline.
• Divergence levels can be shown. The level and fill are determined by the oscillator's position relative to the last saved divergence level.
• Bull/bear markers can be displayed. They occur whenever a new bull/bear state is determined by the "Main Line Coloring Conditions".
• The Hi/Lo (Donchian) channel can be displayed, and its period defined.
• The background can display the state of any one of 11 different conditions.
• The resolutions used for the higher timeframes can be displayed to the right of the last bar's value.
• Four key values are always displayed in the Data Window (fourth icon down to the right of your chart):
oscillator values for the chart, medium and highest timeframes, and the oscillator's instant value before it is averaged.
Main Line Coloring Conditions
• Nine different conditions can be selected to determine the bull/bear coloring of the main line. All conditions set to "ON" must be met to determine the bull/bear state.
• A volatility state can also be used to filter the conditions.
• When the coloring conditions and the filter do not allow for a bull/bear state to be determined, the neutral color is used.
Signal
• Seven different averages can be used to calculate the average of the oscillator's value.
• The average's period can be set. A period of one will show the instant value of the oscillator,
provided you don't use linear regression or the Hull MA as they do not work with a period of one.
• An external signal can be used as the oscillator's instant value. If an already averaged external value is used, set the period to one in this indicator.
• For the cases where an external signal is used, a centerline value can be set.
Higher Timeframes
• The two higher timeframes are named Medium timeframe and Highest timeframe . They can be determined using one of three methods:
• Auto-steps: the higher timeframes are determined using the chart's resolution. If the chart uses a seconds resolution, for example,
the medium and highest resolutions will be 15 and 60 minutes.
• Multiples: the timeframes are calculated using a multiple of the chart's resolution, which you can set.
• Fixed: the set timeframes do not change with the chart's resolution.
Repainting
• Repainting can be controlled separately for the chart's value and the higher timeframe values.
• The default is a repainting chart value and non-repainting higher timeframe values. The Aggregate line will thus repaint by default,
as it uses the chart's value along with the higher timeframes values.
Aggregate Weights
• The weight of each component of the Aggregate line can be set.
• The default is equal weights for the three components, meaning that the chart's value accounts for one third of the weight in the Aggregate.
High Volatility
• This provides control over the volatility filter used in the Main line's coloring conditions and the background display.
• Volatility is determined to be high when the short-term ATR is greater than the long-term ATR.
Colors
• You can define your own colors for all of the oscillator's plots.
• The default colors will perform well on both white and black chart backgrounds.
Alerts
• An alert can be defined for the script. The alert will trigger whenever a bull/bear marker appears in the indicator's display.
The particular combination of coloring conditions and the display of bull/bear markers when you create the alert will thus determine when the alert triggers.
Once the alerts are created, subsequent changes to the conditions controlling the display of markers will not affect the existing alert(s).
• You can create multiple alerts from this script, each triggering on different conditions.
Backtesting & Trading Engine Signal Line
• An invisible plot named "BTE Signal" is provided. It can be used as an entry signal when connected to the PineCoders Backtesting & Trading Engine as an external input.
It will generate an entry whenever a marker is displayed.
Look first. Then leap.
Ultimate RSI [captainua]Ultimate RSI
Overview
This indicator combines multiple RSI calculations with volume analysis, divergence detection, and trend filtering to provide a comprehensive RSI-based trading system. The script calculates RSI using three different periods (6, 14, 24) and applies various smoothing methods to reduce noise while maintaining responsiveness. The combination of these features creates a multi-layered confirmation system that reduces false signals by requiring alignment across multiple indicators and timeframes.
The script includes optimized configuration presets for instant setup: Scalping, Day Trading, Swing Trading, and Position Trading. Simply select a preset to instantly configure all settings for your trading style, or use Custom mode for full manual control. All settings include automatic input validation to prevent configuration errors and ensure optimal performance.
Configuration Presets
The script includes preset configurations optimized for different trading styles, allowing you to instantly configure the indicator for your preferred trading approach. Simply select a preset from the "Configuration Preset" dropdown menu:
- Scalping: Optimized for fast-paced trading with shorter RSI periods (4, 7, 9) and minimal smoothing. Noise reduction is automatically disabled, and momentum confirmation is disabled to allow faster signal generation. Designed for quick entries and exits in volatile markets.
- Day Trading: Balanced configuration for intraday trading with moderate RSI periods (6, 9, 14) and light smoothing. Momentum confirmation is enabled for better signal quality. Ideal for day trading strategies requiring timely but accurate signals.
- Swing Trading: Configured for medium-term positions with standard RSI periods (14, 14, 21) and moderate smoothing. Provides smoother signals suitable for swing trading timeframes. All noise reduction features remain active.
- Position Trading: Optimized for longer-term trades with extended RSI periods (24, 21, 28) and heavier smoothing. Filters are configured for highest-quality signals. Best for position traders holding trades over multiple days or weeks.
- Custom: Full manual control over all settings. All input parameters are available for complete customization. This is the default mode and maintains full backward compatibility with previous versions.
When a preset is selected, it automatically adjusts RSI periods, smoothing lengths, and filter settings to match the trading style. The preset configurations ensure optimal settings are applied instantly, eliminating the need for manual configuration. All settings can still be manually overridden if needed, providing flexibility while maintaining ease of use.
Input Validation and Error Prevention
The script includes comprehensive input validation to prevent configuration errors:
- Cross-Input Validation: Smoothing lengths are automatically validated to ensure they are always less than their corresponding RSI period length. If you set a smoothing length greater than or equal to the RSI length, the script automatically adjusts it to (RSI Length - 1). This prevents logical errors and ensures valid configurations.
- Input Range Validation: All numeric inputs have minimum and maximum value constraints enforced by TradingView's input system, preventing invalid parameter values.
- Smart Defaults: Preset configurations use validated default values that are tested and optimized for each trading style. When switching between presets, all related settings are automatically updated to maintain consistency.
Core Calculations
Multi-Period RSI:
The script calculates RSI using the standard Wilder's RSI formula: RSI = 100 - (100 / (1 + RS)), where RS = Average Gain / Average Loss over the specified period. Three separate RSI calculations run simultaneously:
- RSI(6): Uses 6-period lookback for high sensitivity to recent price changes, useful for scalping and early signal detection
- RSI(14): Standard 14-period RSI for balanced analysis, the most commonly used RSI period
- RSI(24): Longer 24-period RSI for trend confirmation, provides smoother signals with less noise
Each RSI can be smoothed using EMA, SMA, RMA (Wilder's smoothing), WMA, or Zero-Lag smoothing. Zero-Lag smoothing uses the formula: ZL-RSI = RSI + (RSI - RSI ) to reduce lag while maintaining signal quality. You can apply individual smoothing lengths to each RSI period, or use global smoothing where all three RSIs share the same smoothing length.
Dynamic Overbought/Oversold Thresholds:
Static thresholds (default 70/30) are adjusted based on market volatility using ATR. The formula: Dynamic OB = Base OB + (ATR × Volatility Multiplier × Base Percentage / 100), Dynamic OS = Base OS - (ATR × Volatility Multiplier × Base Percentage / 100). This adapts to volatile markets where traditional 70/30 levels may be too restrictive. During high volatility, the dynamic thresholds widen, and during low volatility, they narrow. The thresholds are clamped between 0-100 to remain within RSI bounds. The ATR is cached for performance optimization, updating on confirmed bars and real-time bars.
Adaptive RSI Calculation:
An adaptive RSI adjusts the standard RSI(14) based on current volatility relative to average volatility. The calculation: Adaptive Factor = (Current ATR / SMA of ATR over 20 periods) × Volatility Multiplier. If SMA of ATR is zero (edge case), the adaptive factor defaults to 0. The adaptive RSI = Base RSI × (1 + Adaptive Factor), clamped to 0-100. This makes the indicator more responsive during high volatility periods when traditional RSI may lag. The adaptive RSI is used for signal generation (buy/sell signals) but is not plotted on the chart.
Overbought/Oversold Fill Zones:
The script provides visual fill zones between the RSI line and the threshold lines when RSI is in overbought or oversold territory. The fill logic uses inclusive conditions: fills are shown when RSI is currently in the zone OR was in the zone on the previous bar. This ensures complete coverage of entry and exit boundaries. A minimum gap of 0.1 RSI points is maintained between the RSI plot and threshold line to ensure reliable polygon rendering in TradingView. The fill uses invisible plots at the threshold levels and the RSI value, with the fill color applied between them. You can select which RSI (6, 14, or 24) to use for the fill zones.
Divergence Detection
Regular Divergence:
Bullish divergence: Price makes a lower low (current low < lowest low from previous lookback period) while RSI makes a higher low (current RSI > lowest RSI from previous lookback period). Bearish divergence: Price makes a higher high (current high > highest high from previous lookback period) while RSI makes a lower high (current RSI < highest RSI from previous lookback period). The script compares current price/RSI values to the lowest/highest values from the previous lookback period using ta.lowest() and ta.highest() functions with index to reference the previous period's extreme.
Pivot-Based Divergence:
An enhanced divergence detection method that uses actual pivot points instead of simple lowest/highest comparisons. This provides more accurate divergence detection by identifying significant pivot lows/highs in both price and RSI. The pivot-based method uses a tolerance-based approach with configurable constants: 1% tolerance for price comparisons (priceTolerancePercent = 0.01) and 1.0 RSI point absolute tolerance for RSI comparisons (pivotTolerance = 1.0). Minimum divergence threshold is 1.0 RSI point (minDivergenceThreshold = 1.0). It looks for two recent pivot points and compares them: for bullish divergence, price makes a lower low (at least 1% lower) while RSI makes a higher low (at least 1.0 point higher). This method reduces false divergences by requiring actual pivot points rather than just any low/high within a period. When enabled, pivot-based divergence replaces the traditional method for more accurate signal generation.
Strong Divergence:
Regular divergence is confirmed by an engulfing candle pattern. Bullish engulfing requires: (1) Previous candle is bearish (close < open ), (2) Current candle is bullish (close > open), (3) Current close > previous open, (4) Current open < previous close. Bearish engulfing is the inverse: previous bullish, current bearish, current close < previous open, current open > previous close. Strong divergence signals are marked with visual indicators (🐂 for bullish, 🐻 for bearish) and have separate alert conditions.
Hidden Divergence:
Continuation patterns that signal trend continuation rather than reversal. Bullish hidden divergence: Price makes a higher low (current low > lowest low from previous period) but RSI makes a lower low (current RSI < lowest RSI from previous period). Bearish hidden divergence: Price makes a lower high (current high < highest high from previous period) but RSI makes a higher high (current RSI > highest RSI from previous period). These patterns indicate the trend is likely to continue in the current direction.
Volume Confirmation System
Volume threshold filtering requires current volume to exceed the volume SMA multiplied by the threshold factor. The formula: Volume Confirmed = Volume > (Volume SMA × Threshold). If the threshold is set to 0.1 or lower, volume confirmation is effectively disabled (always returns true). This allows you to use the indicator without volume filtering if desired.
Volume Climax is detected when volume exceeds: Volume SMA + (Volume StdDev × Multiplier). This indicates potential capitulation moments where extreme volume accompanies price movements. Volume Dry-Up is detected when volume falls below: Volume SMA - (Volume StdDev × Multiplier), indicating low participation periods that may produce unreliable signals. The volume SMA is cached for performance, updating on confirmed and real-time bars.
Multi-RSI Synergy
The script generates signals when multiple RSI periods align in overbought or oversold zones. This creates a confirmation system that reduces false signals. In "ALL" mode, all three RSIs (6, 14, 24) must be simultaneously above the overbought threshold OR all three must be below the oversold threshold. In "2-of-3" mode, any two of the three RSIs must align in the same direction. The script counts how many RSIs are in each zone: twoOfThreeOB = ((rsi6OB ? 1 : 0) + (rsi14OB ? 1 : 0) + (rsi24OB ? 1 : 0)) >= 2.
Synergy signals require: (1) Multi-RSI alignment (ALL or 2-of-3), (2) Volume confirmation, (3) Reset condition satisfied (enough bars since last synergy signal), (4) Additional filters passed (RSI50, Trend, ADX, Volume Dry-Up avoidance). Separate reset conditions track buy and sell signals independently. The reset condition uses ta.barssince() to count bars since the last trigger, returning true if the condition never occurred (allowing first signal) or if enough bars have passed.
Regression Forecasting
The script uses historical RSI values to forecast future RSI direction using four methods. The forecast horizon is configurable (1-50 bars ahead). Historical data is collected into an array, and regression coefficients are calculated based on the selected method.
Linear Regression: Calculates the least-squares fit line (y = mx + b) through the last N RSI values. The calculation: meanX = sumX / horizon, meanY = sumY / horizon, denominator = sumX² - horizon × meanX², m = (sumXY - horizon × meanX × meanY) / denominator, b = meanY - m × meanX. The forecast projects this line forward: forecast = b + m × i for i = 1 to horizon.
Polynomial Regression: Fits a quadratic curve (y = ax² + bx + c) to capture non-linear trends. The system of equations is solved using Cramer's rule with a 3×3 determinant. If the determinant is too small (< 0.0001), the system falls back to linear regression. Coefficients are calculated by solving: n×c + sumX×b + sumX²×a = sumY, sumX×c + sumX²×b + sumX³×a = sumXY, sumX²×c + sumX³×b + sumX⁴×a = sumX²Y. Note: Due to the O(n³) computational complexity of polynomial regression, the forecast horizon is automatically limited to a maximum of 20 bars when using polynomial regression to maintain optimal performance. If you set a horizon greater than 20 bars with polynomial regression, it will be automatically capped at 20 bars.
Exponential Smoothing: Applies exponential smoothing with adaptive alpha = 2/(horizon+1). The smoothing iterates from oldest to newest value: smoothed = alpha × series + (1 - alpha) × smoothed. Trend is calculated by comparing current smoothed value to an earlier smoothed value (at 60% of horizon): trend = (smoothed - earlierSmoothed) / (horizon - earlierIdx). Forecast: forecast = base + trend × i.
Moving Average: Uses the difference between short MA (horizon/2) and long MA (horizon) to estimate trend direction. Trend = (maShort - maLong) / (longLen - shortLen). Forecast: forecast = maShort + trend × i.
Confidence bands are calculated using RMSE (Root Mean Squared Error) of historical forecast accuracy. The error calculation compares historical values with forecast values: RMSE = sqrt(sumSquaredError / count). If insufficient data exists, it falls back to calculating standard deviation of recent RSI values. Confidence bands = forecast ± (RMSE × confidenceLevel). All forecast values and confidence bands are clamped to 0-100 to remain within RSI bounds. The regression functions include comprehensive safety checks: horizon validation (must not exceed array size), empty array handling, edge case handling for horizon=1 scenarios, division-by-zero protection, and bounds checking for all array access operations to prevent runtime errors.
Strong Top/Bottom Detection
Strong buy signals require three conditions: (1) RSI is at its lowest point within the bottom period: rsiVal <= ta.lowest(rsiVal, bottomPeriod), (2) RSI is below the oversold threshold minus a buffer: rsiVal < (oversoldThreshold - rsiTopBottomBuffer), where rsiTopBottomBuffer = 2.0 RSI points, (3) The absolute difference between current RSI and the lowest RSI exceeds the threshold value: abs(rsiVal - ta.lowest(rsiVal, bottomPeriod)) > threshold. This indicates a bounce from extreme levels with sufficient distance from the absolute low.
Strong sell signals use the inverse logic: RSI at highest point, above overbought threshold + rsiTopBottomBuffer (2.0 RSI points), and difference from highest exceeds threshold. Both signals also require: volume confirmation, reset condition satisfied (separate reset for buy vs sell), and all additional filters passed (RSI50, Trend, ADX, Volume Dry-Up avoidance).
The reset condition uses separate logic for buy and sell: resetCondBuy checks bars since isRSIAtBottom, resetCondSell checks bars since isRSIAtTop. This ensures buy signals reset based on bottom conditions and sell signals reset based on top conditions, preventing incorrect signal blocking.
Filtering System
RSI(50) Filter: Only allows buy signals when RSI(14) > 50 (bullish momentum) and sell signals when RSI(14) < 50 (bearish momentum). This filter ensures you're buying in uptrends and selling in downtrends from a momentum perspective. The filter is optional and can be disabled. Recommended to enable for noise reduction.
Trend Filter: Uses a long-term EMA (default 200) to determine trend direction. Buy signals require price above EMA, sell signals require price below EMA. The EMA slope is calculated as: emaSlope = ema - ema . Optional EMA slope filter additionally requires the EMA to be rising (slope > 0) for buy signals or falling (slope < 0) for sell signals. This provides stronger trend confirmation by requiring both price position and EMA direction.
ADX Filter: Uses the Directional Movement Index (calculated via ta.dmi()) to measure trend strength. Signals only fire when ADX exceeds the threshold (default 20), indicating a strong trend rather than choppy markets. The ADX calculation uses separate length and smoothing parameters. This filter helps avoid signals during sideways/consolidation periods.
Volume Dry-Up Avoidance: Prevents signals during periods of extremely low volume relative to average. If volume dry-up is detected and the filter is enabled, signals are blocked. This helps avoid unreliable signals that occur during low participation periods.
RSI Momentum Confirmation: Requires RSI to be accelerating in the signal direction before confirming signals. For buy signals, RSI must be consistently rising (recovering from oversold) over the lookback period. For sell signals, RSI must be consistently falling (declining from overbought) over the lookback period. The momentum check verifies that all consecutive changes are in the correct direction AND the cumulative change is significant. This filter ensures signals only fire when RSI momentum aligns with the signal direction, reducing false signals from weak momentum.
Multi-Timeframe Confirmation: Requires higher timeframe RSI to align with the signal direction. For buy signals, current RSI must be below the higher timeframe RSI by at least the confirmation threshold. For sell signals, current RSI must be above the higher timeframe RSI by at least the confirmation threshold. This ensures signals align with the larger trend context, reducing counter-trend trades. The higher timeframe RSI is fetched using request.security() from the selected timeframe.
All filters use the pattern: filterResult = not filterEnabled OR conditionMet. This means if a filter is disabled, it always passes (returns true). Filters can be combined, and all must pass for a signal to fire.
RSI Centerline and Period Crossovers
RSI(50) Centerline Crossovers: Detects when the selected RSI source crosses above or below the 50 centerline. Bullish crossover: ta.crossover(rsiSource, 50), bearish crossover: ta.crossunder(rsiSource, 50). You can select which RSI (6, 14, or 24) to use for these crossovers. These signals indicate momentum shifts from bearish to bullish (above 50) or bullish to bearish (below 50).
RSI Period Crossovers: Detects when different RSI periods cross each other. Available pairs: RSI(6) × RSI(14), RSI(14) × RSI(24), or RSI(6) × RSI(24). Bullish crossover: fast RSI crosses above slow RSI (ta.crossover(rsiFast, rsiSlow)), indicating momentum acceleration. Bearish crossover: fast RSI crosses below slow RSI (ta.crossunder(rsiFast, rsiSlow)), indicating momentum deceleration. These crossovers can signal shifts in momentum before price moves.
StochRSI Calculation
Stochastic RSI applies the Stochastic oscillator formula to RSI values instead of price. The calculation: %K = ((RSI - Lowest RSI) / (Highest RSI - Lowest RSI)) × 100, where the lookback is the StochRSI length. If the range is zero, %K defaults to 50.0. %K is then smoothed using SMA with the %K smoothing length. %D is calculated as SMA of smoothed %K with the %D smoothing length. All values are clamped to 0-100. You can select which RSI (6, 14, or 24) to use as the source for StochRSI calculation.
RSI Bollinger Bands
Bollinger Bands are applied to RSI(14) instead of price. The calculation: Basis = SMA(RSI(14), BB Period), StdDev = stdev(RSI(14), BB Period), Upper = Basis + (StdDev × Deviation Multiplier), Lower = Basis - (StdDev × Deviation Multiplier). This creates dynamic zones around RSI that adapt to RSI volatility. When RSI touches or exceeds the bands, it indicates extreme conditions relative to recent RSI behavior.
Noise Reduction System
The script includes a comprehensive noise reduction system to filter false signals and improve accuracy. When enabled, signals must pass multiple quality checks:
Signal Strength Requirement: RSI must be at least X points away from the centerline (50). For buy signals, RSI must be at least X points below 50. For sell signals, RSI must be at least X points above 50. This ensures signals only trigger when RSI is significantly in oversold/overbought territory, not just near neutral.
Extreme Zone Requirement: RSI must be deep in the OB/OS zone. For buy signals, RSI must be at least X points below the oversold threshold. For sell signals, RSI must be at least X points above the overbought threshold. This ensures signals only fire in extreme conditions where reversals are more likely.
Consecutive Bar Confirmation: The signal condition must persist for N consecutive bars before triggering. This reduces false signals from single-bar spikes or noise. The confirmation checks that the signal condition was true for all bars in the lookback period.
Zone Persistence (Optional): Requires RSI to remain in the OB/OS zone for N consecutive bars, not just touch it. This ensures RSI is truly in an extreme state rather than just briefly touching the threshold. When enabled, this provides stricter filtering for higher-quality signals.
RSI Slope Confirmation (Optional): Requires RSI to be moving in the expected signal direction. For buy signals, RSI should be rising (recovering from oversold). For sell signals, RSI should be falling (declining from overbought). This ensures momentum is aligned with the signal direction. The slope is calculated by comparing current RSI to RSI N bars ago.
All noise reduction filters can be enabled/disabled independently, allowing you to customize the balance between signal frequency and accuracy. The default settings provide a good balance, but you can adjust them based on your trading style and market conditions.
Alert System
The script includes separate alert conditions for each signal type: buy/sell (adaptive RSI crossovers), divergence (regular, strong, hidden), crossovers (RSI50 centerline, RSI period crossovers), synergy signals, and trend breaks. Each alert type has its own alertcondition() declaration with a unique title and message.
An optional cooldown system prevents alert spam by requiring a minimum number of bars between alerts of the same type. The cooldown check: canAlert = na(lastAlertBar) OR (bar_index - lastAlertBar >= cooldownBars). If the last alert bar is na (first alert), it always allows the alert. Each alert type maintains its own lastAlertBar variable, so cooldowns are independent per signal type. The default cooldown is 10 bars, which is recommended for noise reduction.
Higher Timeframe RSI
The script can display RSI from a higher timeframe using request.security(). This allows you to see the RSI context from a larger timeframe (e.g., daily RSI on an hourly chart). The higher timeframe RSI uses RSI(14) calculation from the selected timeframe. This provides context for the current timeframe's RSI position relative to the larger trend.
RSI Pivot Trendlines
The script can draw trendlines connecting pivot highs and lows on RSI(6). This feature helps visualize RSI trends and identify potential trend breaks.
Pivot Detection: Pivots are detected using a configurable period. The script can require pivots to have minimum strength (RSI points difference from surrounding bars) to filter out weak pivots. Lower minPivotStrength values detect more pivots (more trendlines), while higher values detect only stronger pivots (fewer but more significant trendlines). Pivot confirmation is optional: when enabled, the script waits N bars to confirm the pivot remains the extreme, reducing repainting. Pivot confirmation functions (f_confirmPivotLow and f_confirmPivotHigh) are always called on every bar for consistency, as recommended by TradingView. When pivot bars are not available (na), safe default values are used, and the results are then used conditionally based on confirmation settings. This ensures consistent calculations and prevents calculation inconsistencies.
Trendline Drawing: Uptrend lines connect confirmed pivot lows (green), and downtrend lines connect confirmed pivot highs (red). By default, only the most recent trendline is shown (old trendlines are deleted when new pivots are confirmed). This keeps the chart clean and uncluttered. If "Keep Historical Trendlines" is enabled, the script preserves up to N historical trendlines (configurable via "Max Trendlines to Keep", default 5). When historical trendlines are enabled, old trendlines are saved to arrays instead of being deleted, allowing you to see multiple trendlines simultaneously for better trend analysis. The arrays are automatically limited to prevent memory accumulation.
Trend Break Detection: Signals are generated when RSI breaks above or below trendlines. Uptrend breaks (RSI crosses below uptrend line) generate buy signals. Downtrend breaks (RSI crosses above downtrend line) generate sell signals. Optional trend break confirmation requires the break to persist for N bars and optionally include volume confirmation. Trendline angle filtering can exclude flat/weak trendlines from generating signals (minTrendlineAngle > 0 filters out weak/flat trendlines).
How Components Work Together
The combination of multiple RSI periods provides confirmation across different timeframes, reducing false signals. RSI(6) catches early moves, RSI(14) provides balanced signals, and RSI(24) confirms longer-term trends. When all three align (synergy), it indicates strong consensus across timeframes.
Volume confirmation ensures signals occur with sufficient market participation, filtering out low-volume false breakouts. Volume climax detection identifies potential reversal points, while volume dry-up avoidance prevents signals during unreliable low-volume periods.
Trend filters align signals with the overall market direction. The EMA filter ensures you're trading with the trend, and the EMA slope filter adds an additional layer by requiring the trend to be strengthening (rising EMA for buys, falling EMA for sells).
ADX filter ensures signals only fire during strong trends, avoiding choppy/consolidation periods. RSI(50) filter ensures momentum alignment with the trade direction.
Momentum confirmation requires RSI to be accelerating in the signal direction, ensuring signals only fire when momentum is aligned. Multi-timeframe confirmation ensures signals align with higher timeframe trends, reducing counter-trend trades.
Divergence detection identifies potential reversals before they occur, providing early warning signals. Pivot-based divergence provides more accurate detection by using actual pivot points. Hidden divergence identifies continuation patterns, useful for trend-following strategies.
The noise reduction system combines multiple filters (signal strength, extreme zone, consecutive bars, zone persistence, RSI slope) to significantly reduce false signals. These filters work together to ensure only high-quality signals are generated.
The synergy system requires alignment across all RSI periods for highest-quality signals, significantly reducing false positives. Regression forecasting provides forward-looking context, helping anticipate potential RSI direction changes.
Pivot trendlines provide visual trend analysis and can generate signals when RSI breaks trendlines, indicating potential reversals or continuations.
Reset conditions prevent signal spam by requiring a minimum number of bars between signals. Separate reset conditions for buy and sell signals ensure proper signal management.
Usage Instructions
Configuration Presets (Recommended): The script includes optimized preset configurations for instant setup. Simply select your trading style from the "Configuration Preset" dropdown:
- Scalping Preset: RSI(4, 7, 9) with minimal smoothing. Noise reduction disabled, momentum confirmation disabled for fastest signals.
- Day Trading Preset: RSI(6, 9, 14) with light smoothing. Momentum confirmation enabled for better signal quality.
- Swing Trading Preset: RSI(14, 14, 21) with moderate smoothing. Balanced configuration for medium-term trades.
- Position Trading Preset: RSI(24, 21, 28) with heavier smoothing. Optimized for longer-term positions with all filters active.
- Custom Mode: Full manual control over all settings. Default behavior matches previous script versions.
Presets automatically configure RSI periods, smoothing lengths, and filter settings. You can still manually adjust any setting after selecting a preset if needed.
Getting Started: The easiest way to get started is to select a configuration preset matching your trading style (Scalping, Day Trading, Swing Trading, or Position Trading) from the "Configuration Preset" dropdown. This instantly configures all settings for optimal performance. Alternatively, use "Custom" mode for full manual control. The default configuration (Custom mode) shows RSI(6), RSI(14), and RSI(24) with their default smoothing. Overbought/oversold fill zones are enabled by default.
Customizing RSI Periods: Adjust the RSI lengths (6, 14, 24) based on your trading timeframe. Shorter periods (6) for scalping, standard (14) for day trading, longer (24) for swing trading. You can disable any RSI period you don't need.
Smoothing Selection: Choose smoothing method based on your needs. EMA provides balanced smoothing, RMA (Wilder's) is traditional, Zero-Lag reduces lag but may increase noise. Adjust smoothing lengths individually or use global smoothing for consistency. Note: Smoothing lengths are automatically validated to ensure they are always less than the corresponding RSI period length. If you set smoothing >= RSI length, it will be auto-adjusted to prevent invalid configurations.
Dynamic OB/OS: The dynamic thresholds automatically adapt to volatility. Adjust the volatility multiplier and base percentage to fine-tune sensitivity. Higher values create wider thresholds in volatile markets.
Volume Confirmation: Set volume threshold to 1.2 (default) for standard confirmation, higher for stricter filtering, or 0.1 to disable volume filtering entirely.
Multi-RSI Synergy: Use "ALL" mode for highest-quality signals (all 3 RSIs must align), or "2-of-3" mode for more frequent signals. Adjust the reset period to control signal frequency.
Filters: Enable filters gradually to find your preferred balance. Start with volume confirmation, then add trend filter, then ADX for strongest confirmation. RSI(50) filter is useful for momentum-based strategies and is recommended for noise reduction. Momentum confirmation and multi-timeframe confirmation add additional layers of accuracy but may reduce signal frequency.
Noise Reduction: The noise reduction system is enabled by default with balanced settings. Adjust minSignalStrength (default 3.0) to control how far RSI must be from centerline. Increase requireConsecutiveBars (default 1) to require signals to persist longer. Enable requireZonePersistence and requireRsiSlope for stricter filtering (higher quality but fewer signals). Start with defaults and adjust based on your needs.
Divergence: Enable divergence detection and adjust lookback periods. Strong divergence (with engulfing confirmation) provides higher-quality signals. Hidden divergence is useful for trend-following strategies. Enable pivot-based divergence for more accurate detection using actual pivot points instead of simple lowest/highest comparisons. Pivot-based divergence uses tolerance-based matching (1% for price, 1.0 RSI point for RSI) for better accuracy.
Forecasting: Enable regression forecasting to see potential RSI direction. Linear regression is simplest, polynomial captures curves, exponential smoothing adapts to trends. Adjust horizon based on your trading timeframe. Confidence bands show forecast uncertainty - wider bands indicate less reliable forecasts.
Pivot Trendlines: Enable pivot trendlines to visualize RSI trends and identify trend breaks. Adjust pivot detection period (default 5) - higher values detect fewer but stronger pivots. Enable pivot confirmation (default ON) to reduce repainting. Set minPivotStrength (default 1.0) to filter weak pivots - lower values detect more pivots (more trendlines), higher values detect only stronger pivots (fewer trendlines). Enable "Keep Historical Trendlines" to preserve multiple trendlines instead of just the most recent one. Set "Max Trendlines to Keep" (default 5) to control how many historical trendlines are preserved. Enable trend break confirmation for more reliable break signals. Adjust minTrendlineAngle (default 0.0) to filter flat trendlines - set to 0.1-0.5 to exclude weak trendlines.
Alerts: Set up alerts for your preferred signal types. Enable cooldown to prevent alert spam. Each signal type has its own alert condition, so you can be selective about which signals trigger alerts.
Visual Elements and Signal Markers
The script uses various visual markers to indicate signals and conditions:
- "sBottom" label (green): Strong bottom signal - RSI at extreme low with strong buy conditions
- "sTop" label (red): Strong top signal - RSI at extreme high with strong sell conditions
- "SyBuy" label (lime): Multi-RSI synergy buy signal - all RSIs aligned oversold
- "SySell" label (red): Multi-RSI synergy sell signal - all RSIs aligned overbought
- 🐂 emoji (green): Strong bullish divergence detected
- 🐻 emoji (red): Strong bearish divergence detected
- 🔆 emoji: Weak divergence signals (if enabled)
- "H-Bull" label: Hidden bullish divergence
- "H-Bear" label: Hidden bearish divergence
- ⚡ marker (top of pane): Volume climax detected (extreme volume) - positioned at top for visibility
- 💧 marker (top of pane): Volume dry-up detected (very low volume) - positioned at top for visibility
- ↑ triangle (lime): Uptrend break signal - RSI breaks below uptrend line
- ↓ triangle (red): Downtrend break signal - RSI breaks above downtrend line
- Triangle up (lime): RSI(50) bullish crossover
- Triangle down (red): RSI(50) bearish crossover
- Circle markers: RSI period crossovers
All markers are positioned at the RSI value where the signal occurs, using location.absolute for precise placement.
Signal Priority and Interpretation
Signals are generated independently and can occur simultaneously. Higher-priority signals generally indicate stronger setups:
1. Multi-RSI Synergy signals (SyBuy/SySell) - Highest priority: Requires alignment across all RSI periods plus volume and filter confirmation. These are the most reliable signals.
2. Strong Top/Bottom signals (sTop/sBottom) - High priority: Indicates extreme RSI levels with strong bounce conditions. Requires volume confirmation and all filters.
3. Divergence signals - Medium-High priority: Strong divergence (with engulfing) is more reliable than regular divergence. Hidden divergence indicates continuation rather than reversal.
4. Adaptive RSI crossovers - Medium priority: Buy when adaptive RSI crosses below dynamic oversold, sell when it crosses above dynamic overbought. These use volatility-adjusted RSI for more accurate signals.
5. RSI(50) centerline crossovers - Medium priority: Momentum shift signals. Less reliable alone but useful when combined with other confirmations.
6. RSI period crossovers - Lower priority: Early momentum shift indicators. Can provide early warning but may produce false signals in choppy markets.
Best practice: Wait for multiple confirmations. For example, a synergy signal combined with divergence and volume climax provides the strongest setup.
Chart Requirements
For proper script functionality and compliance with TradingView requirements, ensure your chart displays:
- Symbol name: The trading pair or instrument name should be visible
- Timeframe: The chart timeframe should be clearly displayed
- Script name: "Ultimate RSI " should be visible in the indicator title
These elements help traders understand what they're viewing and ensure proper script identification. The script automatically includes this information in the indicator title and chart labels.
Performance Considerations
The script is optimized for performance:
- ATR and Volume SMA are cached using var variables, updating only on confirmed and real-time bars to reduce redundant calculations
- Forecast line arrays are dynamically managed: lines are reused when possible, and unused lines are deleted to prevent memory accumulation
- Calculations use efficient Pine Script functions (ta.rsi, ta.ema, etc.) which are optimized by TradingView
- Array operations are minimized where possible, with direct calculations preferred
- Polynomial regression automatically caps the forecast horizon at 20 bars (POLYNOMIAL_MAX_HORIZON constant) to prevent performance degradation, as polynomial regression has O(n³) complexity. This safeguard ensures optimal performance even with large horizon settings
- Pivot detection includes edge case handling to ensure reliable calculations even on early bars with limited historical data. Regression forecasting functions include comprehensive safety checks: horizon validation (must not exceed array size), empty array handling, edge case handling for horizon=1 scenarios, and division-by-zero protection in all mathematical operations
The script should perform well on all timeframes. On very long historical data, forecast lines may accumulate if the horizon is large; consider reducing the forecast horizon if you experience performance issues. The polynomial regression performance safeguard automatically prevents performance issues for that specific regression type.
Known Limitations and Considerations
- Forecast lines are forward-looking projections and should not be used as definitive predictions. They provide context but are not guaranteed to be accurate.
- Dynamic OB/OS thresholds can exceed 100 or go below 0 in extreme volatility scenarios, but are clamped to 0-100 range. This means in very volatile markets, the dynamic thresholds may not widen as much as the raw calculation suggests.
- Volume confirmation requires sufficient historical volume data. On new instruments or very short timeframes, volume calculations may be less reliable.
- Higher timeframe RSI uses request.security() which may have slight delays on some data feeds.
- Regression forecasting requires at least N bars of history (where N = forecast horizon) before it can generate forecasts. Early bars will not show forecast lines.
- StochRSI calculation requires the selected RSI source to have sufficient history. Very short RSI periods on new charts may produce less reliable StochRSI values initially.
Practical Use Cases
The indicator can be configured for different trading styles and timeframes:
Swing Trading: Select the "Swing Trading" preset for instant optimal configuration. This preset uses RSI periods (14, 14, 21) with moderate smoothing. Alternatively, manually configure: Use RSI(24) with Multi-RSI Synergy in "ALL" mode, combined with trend filter (EMA 200) and ADX filter. This configuration provides high-probability setups with strong confirmation across multiple RSI periods.
Day Trading: Select the "Day Trading" preset for instant optimal configuration. This preset uses RSI periods (6, 9, 14) with light smoothing and momentum confirmation enabled. Alternatively, manually configure: Use RSI(6) with Zero-Lag smoothing for fast signal detection. Enable volume confirmation with threshold 1.2-1.5 for reliable entries. Combine with RSI(50) filter to ensure momentum alignment. Strong top/bottom signals work well for day trading reversals.
Trend Following: Enable trend filter (EMA) and EMA slope filter for strong trend confirmation. Use RSI(14) or RSI(24) with ADX filter to avoid choppy markets. Hidden divergence signals are useful for trend continuation entries.
Reversal Trading: Focus on divergence detection (regular and strong) combined with strong top/bottom signals. Enable volume climax detection to identify capitulation moments. Use RSI(6) for early reversal signals, confirmed by RSI(14) and RSI(24).
Forecasting and Planning: Enable regression forecasting with polynomial or exponential smoothing methods. Use forecast horizon of 10-20 bars for swing trading, 5-10 bars for day trading. Confidence bands help assess forecast reliability.
Multi-Timeframe Analysis: Enable higher timeframe RSI to see context from larger timeframes. For example, use daily RSI on hourly charts to understand the larger trend context. This helps avoid counter-trend trades.
Scalping: Select the "Scalping" preset for instant optimal configuration. This preset uses RSI periods (4, 7, 9) with minimal smoothing, disables noise reduction, and disables momentum confirmation for faster signals. Alternatively, manually configure: Use RSI(6) with minimal smoothing (or Zero-Lag) for ultra-fast signals. Disable most filters except volume confirmation. Use RSI period crossovers (RSI(6) × RSI(14)) for early momentum shifts. Set volume threshold to 1.0-1.2 for less restrictive filtering.
Position Trading: Select the "Position Trading" preset for instant optimal configuration. This preset uses extended RSI periods (24, 21, 28) with heavier smoothing, optimized for longer-term trades. Alternatively, manually configure: Use RSI(24) with all filters enabled (Trend, ADX, RSI(50), Volume Dry-Up avoidance). Multi-RSI Synergy in "ALL" mode provides highest-quality signals.
Practical Tips and Best Practices
Getting Started: The fastest way to get started is to select a configuration preset that matches your trading style. Simply choose "Scalping", "Day Trading", "Swing Trading", or "Position Trading" from the "Configuration Preset" dropdown to instantly configure all settings optimally. For advanced users, use "Custom" mode for full manual control. The default configuration (Custom mode) is balanced and works well across different markets. After observing behavior, customize settings to match your trading style.
Reducing Repainting: All signals are based on confirmed bars, minimizing repainting. The script uses confirmed bar data for all calculations to ensure backtesting accuracy.
Signal Quality: Multi-RSI Synergy signals in "ALL" mode provide the highest-quality signals because they require alignment across all three RSI periods. These signals have lower frequency but higher reliability. For more frequent signals, use "2-of-3" mode. The noise reduction system further improves signal quality by requiring multiple confirmations (signal strength, extreme zone, consecutive bars, optional zone persistence and RSI slope). Adjust noise reduction settings to balance signal frequency vs. accuracy.
Filter Combinations: Start with volume confirmation, then add trend filter for trend alignment, then ADX filter for trend strength. Combining all three filters significantly reduces false signals but also reduces signal frequency. Find your balance based on your risk tolerance.
Volume Filtering: Set volume threshold to 0.1 or lower to effectively disable volume filtering if you trade instruments with unreliable volume data or want to test without volume confirmation. Standard confirmation uses 1.2-1.5 threshold.
RSI Period Selection: RSI(6) is most sensitive and best for scalping or early signal detection. RSI(14) provides balanced signals suitable for day trading. RSI(24) is smoother and better for swing trading and trend confirmation. You can disable any RSI period you don't need to reduce visual clutter.
Smoothing Methods: EMA provides balanced smoothing with moderate lag. RMA (Wilder's smoothing) is traditional and works well for RSI. Zero-Lag reduces lag but may increase noise. WMA gives more weight to recent values. Choose based on your preference for responsiveness vs. smoothness.
Forecasting: Linear regression is simplest and works well for trending markets. Polynomial regression captures curves and works better in ranging markets. Exponential smoothing adapts to trends. Moving average method is most conservative. Use confidence bands to assess forecast reliability.
Divergence: Strong divergence (with engulfing confirmation) is more reliable than regular divergence. Hidden divergence indicates continuation rather than reversal, useful for trend-following strategies. Pivot-based divergence provides more accurate detection by using actual pivot points instead of simple lowest/highest comparisons. Adjust lookback periods based on your timeframe: shorter for day trading, longer for swing trading. Pivot divergence period (default 5) controls the sensitivity of pivot detection.
Dynamic Thresholds: Dynamic OB/OS thresholds automatically adapt to volatility. In volatile markets, thresholds widen; in calm markets, they narrow. Adjust the volatility multiplier and base percentage to fine-tune sensitivity. Higher values create wider thresholds in volatile markets.
Alert Management: Enable alert cooldown (default 10 bars, recommended) to prevent alert spam. Each alert type has its own cooldown, so you can set different cooldowns for different signal types. For example, use shorter cooldown for synergy signals (high quality) and longer cooldown for crossovers (more frequent). The cooldown system works independently for each signal type, preventing spam while allowing different signal types to fire when appropriate.
Technical Specifications
- Pine Script Version: v6
- Indicator Type: Non-overlay (displays in separate panel below price chart)
- Repainting Behavior: Minimal - all signals are based on confirmed bars, ensuring accurate backtesting results
- Performance: Optimized with caching for ATR and volume calculations. Forecast arrays are dynamically managed to prevent memory accumulation.
- Compatibility: Works on all timeframes (1 minute to 1 month) and all instruments (stocks, forex, crypto, futures, etc.)
- Edge Case Handling: All calculations include safety checks for division by zero, NA values, and boundary conditions. Reset conditions and alert cooldowns handle edge cases where conditions never occurred or values are NA.
- Reset Logic: Separate reset conditions for buy signals (based on bottom conditions) and sell signals (based on top conditions) ensure logical correctness.
- Input Parameters: 60+ customizable parameters organized into logical groups for easy configuration. Configuration presets available for instant setup (Scalping, Day Trading, Swing Trading, Position Trading, Custom).
- Noise Reduction: Comprehensive noise reduction system with multiple filters (signal strength, extreme zone, consecutive bars, zone persistence, RSI slope) to reduce false signals.
- Pivot-Based Divergence: Enhanced divergence detection using actual pivot points for improved accuracy.
- Momentum Confirmation: RSI momentum filter ensures signals only fire when RSI is accelerating in the signal direction.
- Multi-Timeframe Confirmation: Optional higher timeframe RSI alignment for trend confirmation.
- Enhanced Pivot Trendlines: Trendline drawing with strength requirements, confirmation, and trend break detection.
Technical Notes
- All RSI values are clamped to 0-100 range to ensure valid oscillator values
- ATR and Volume SMA are cached for performance, updating on confirmed and real-time bars
- Reset conditions handle edge cases: if a condition never occurred, reset returns true (allows first signal)
- Alert cooldown handles na values: if no previous alert, cooldown allows the alert
- Forecast arrays are dynamically sized based on horizon, with unused lines cleaned up
- Fill logic uses a minimum gap (0.1) to ensure reliable polygon rendering in TradingView
- All calculations include safety checks for division by zero and boundary conditions. Regression functions validate that horizon doesn't exceed array size, and all array access operations include bounds checking to prevent out-of-bounds errors
- The script uses separate reset conditions for buy signals (based on bottom conditions) and sell signals (based on top conditions) for logical correctness
- Background coloring uses a fallback system: dynamic color takes priority, then RSI(6) heatmap, then monotone if both are disabled
- Noise reduction filters are applied after accuracy filters, providing multiple layers of signal quality control
- Pivot trendlines use strength requirements to filter weak pivots, reducing noise in trendline drawing. Historical trendlines are stored in arrays and automatically limited to prevent memory accumulation when "Keep Historical Trendlines" is enabled
- Volume climax and dry-up markers are positioned at the top of the pane for better visibility
- All calculations are optimized with conditional execution - features only calculate when enabled (performance optimization)
- Input Validation: Automatic cross-input validation ensures smoothing lengths are always less than RSI period lengths, preventing configuration errors
- Configuration Presets: Four optimized preset configurations (Scalping, Day Trading, Swing Trading, Position Trading) for instant setup, plus Custom mode for full manual control
- Constants Management: Magic numbers extracted to documented constants for improved maintainability and easier tuning (pivot tolerance, divergence thresholds, fill gap, etc.)
- TradingView Function Consistency: All TradingView functions (ta.crossover, ta.crossunder, ta.atr, ta.lowest, ta.highest, ta.lowestbars, ta.highestbars, etc.) and custom functions that depend on historical results (f_consecutiveBarConfirmation, f_rsiSlopeConfirmation, f_rsiZonePersistence, f_applyAllFilters, f_rsiMomentum, f_forecast, f_confirmPivotLow, f_confirmPivotHigh) are called on every bar for consistency, as recommended by TradingView. Results are then used conditionally when needed. This ensures consistent calculations and prevents calculation inconsistencies.
VMDM - Volume, Momentum & Divergence Master [BullByte]VMDM - Volume, Momentum and Divergence Master
Educational Multi-Layer Market Structure Analysis System
Multi-factor divergence engine that scores RSI momentum, volume pressure, and institutional footprints into one non-repainting confluence rating (0-100).
WHAT THIS INDICATOR IS
VMDM is an educational indicator designed to teach traders how to recognize high-probability reversal and continuation patterns by analyzing four independent market dimensions simultaneously. Instead of relying on a single indicator that may produce frequent false signals, VMDM creates a confluence-based scoring system that weights multiple confirmation factors, helping you understand which setups have stronger technical backing and which are lower quality.
This is NOT a trading system or signal generator. It is a learning tool that visualizes complex market structure concepts in an accessible format for both coders and non-coders.
THE PROBLEM IT SOLVES
Most traders face these common challenges:
Challenge 1 - Indicator Overload: Running RSI, volume analysis, and divergence detection separately creates chart clutter and conflicting signals. You waste time cross-referencing multiple windows trying to determine if all factors align.
Challenge 2 - False Divergences: Standard divergence indicators trigger on every minor pivot, creating noise. Many divergences fail because they lack supporting evidence from volume or market structure.
Challenge 3 - Missed Context: A bullish RSI divergence means nothing if it occurs during weak volume or in the middle of strong distribution. Context determines quality.
Challenge 4 - Repainting Confusion: Many divergence scripts repaint, showing perfect historical signals that never actually triggered in real-time, leading to false confidence.
Challenge 5 - Institutional Pattern Recognition: Absorption zones, stop hunts, and exhaustion patterns are taught in trading education but difficult to identify systematically without manual analysis.
VMDM addresses all five challenges by combining complementary analytical layers into one transparent, non-repainting, confluence-weighted system with visual clarity.
WHY THIS SPECIFIC COMBINATION - MASHUP JUSTIFICATION
This indicator is NOT a random mashup of popular indicators. Each of the four layers serves a specific analytical purpose and together they create a complete market structure assessment framework.
THE FOUR ANALYTICAL LAYERS
LAYER 1 - RSI MOMENTUM DIVERGENCE (Trend Exhaustion Detection)
Purpose: Identifies when price momentum is weakening before price itself reverses.
Why RSI: The Relative Strength Index measures momentum on a bounded 0-100 scale, making divergence detection mathematically consistent across all assets and timeframes. Unlike raw price oscillators, RSI normalizes momentum regardless of volatility regime.
How It Contributes: Divergence between price pivots and RSI pivots reveals early momentum exhaustion. A lower price low with a higher RSI low (bullish regular divergence) signals sellers are losing strength even as price makes new lows. This is the PRIMARY signal generator in VMDM.
Limitation If Used Alone: RSI divergence by itself produces many false signals because momentum can remain weak during continued trends. It needs confirmation from volume and structural evidence.
LAYER 2 - VOLUME PRESSURE ANALYSIS (Buying vs Selling Intensity)
Purpose: Quantifies whether the current bar's volume reflects buying pressure or selling pressure based on where price closed within the bar's range.
Methodology: Instead of just measuring volume size, VMDM calculates WHERE in the bar range the close occurred. A close near the high on high volume indicates strong buying absorption. A close near the low indicates selling pressure. The calculation accounts for wick size (wicks reduce pressure quality) and uses percentile ranking over a lookback period to normalize pressure strength on a 0-100 scale.
Formula Concept:
Buy Pressure = Volume × (Close - Low) / (High - Low) × Wick Quality Factor
Sell Pressure = Volume × (High - Close) / (High - Low) × Wick Quality Factor
Net Pressure = Buy Pressure - Sell Pressure
Pressure Strength = Percentile Rank of Net Pressure over lookback period
Why Percentile Ranking: Absolute volume varies by asset and session. Percentile ranking makes 85th percentile pressure on low-volume crypto comparable to 85th percentile pressure on high-volume forex.
How It Contributes: When a bullish divergence occurs at a pivot low AND pressure strength is above 60 (strong buying), this adds 25 confluence points. It confirms that the divergence is occurring during actual accumulation, not just weak selling.
Limitation If Used Alone: Pressure analysis shows current bar intensity but cannot identify trend exhaustion or reversal timing. High buying pressure can exist during a strong uptrend with no reversal imminent.
LAYER 3 - BEHAVIORAL FOOTPRINT PATTERNS (Volume Anomaly Detection)
CRITICAL DISCLAIMER: The terms "institutional footprint," "absorption," "stop hunt," and "exhaustion" used in this indicator are EDUCATIONAL LABELS for specific price and volume behavioral patterns. These patterns are detected through technical analysis of publicly available price, volume, and bar structure data. This indicator does NOT have access to actual institutional order flow, market maker data, broker stop-loss locations, or any non-public data source. These pattern names are used because they are common terminology in trading education to describe these technical behaviors. The analysis is interpretive and based on observable price action, not privileged information.
Purpose: Detect volume anomalies and price patterns that historically correlate with potential reversal zones or trend continuation failure.
Pattern Type 1 - Absorption (Labeled as "ACCUMULATION" or "DISTRIBUTION")
Detection Criteria: Volume is more than 2x the moving average AND bar range is less than 50 percent of the average bar range.
Interpretation: High volume compressed into a tight range suggests large participants are absorbing supply (accumulation) or distribution (distribution) without allowing price to move significantly. This often precedes directional moves once absorption completes.
Visual: Colored box zone highlighting the absorption area.
Pattern Type 2 - Stop Hunt (Labeled as "BULL HUNT" or "BEAR HUNT")
Detection Criteria: Price penetrates a recent 10-bar high or low by a small margin (0.2 percent), then closes back inside the range on above-average volume (1.5x+).
Interpretation: Price briefly spikes beyond recent structure (likely triggering stop losses placed just beyond obvious levels) then reverses. This is a classic false breakout pattern often seen before reversals.
Visual: Label at the wick extreme showing hunt direction.
Pattern Type 3 - Exhaustion (Labeled as "SELL EXHAUST" or "BUY EXHAUST")
Detection Criteria: Lower wick is more than 2.5x the body size with volume above 1.8x average and RSI below 35 (sell exhaustion), OR upper wick more than 2.5x body size with volume above 1.8x average and RSI above 65 (buy exhaustion).
Interpretation: Large wicks with high volume and extreme RSI suggest aggressive buying or selling was met with equally aggressive rejection. This exhaustion often marks short-term extremes.
Visual: Label showing exhaustion type.
How These Contribute: When a divergence forms at a pivot AND one of these behavioral patterns is active, the confluence score increases by 20 points. This confirms the divergence is occurring during structural anomaly activity, not just normal price flow.
Limitation If Used Alone: These patterns can occur mid-trend and do not indicate direction without momentum context. Absorption in a strong uptrend may just be continuation accumulation.
LAYER 4 - CONFLUENCE SCORING MATRIX (Quality Weighting System)
Purpose: Translate all detected conditions into a single 0-100 quality score so you can objectively compare setups.
Scoring Breakdown:
Divergence Present: +30 points (primary signal)
Pressure Confirmation: +25 points (volume supports direction)
Behavioral Footprint Active: +20 points (structural anomaly present)
RSI Extreme: +15 points (RSI below 30 or above 70 at pivot)
Volume Spike: +10 points (current volume above 1.5x average)
Maximum Possible Score: 100 points
Why These Weights: The weights reflect reliability hierarchy based on backtesting observation. Divergence is the core signal (30 points), but without volume confirmation (25 points) many fail. Behavioral patterns add meaningful context (20 points). RSI extremes and volume spikes are secondary confirmations (15 and 10 points).
Quality Tiers:
90-100: TEXTBOOK (all factors aligned)
75-89: HIGH QUALITY (strong confluence)
60-74: VALID (meets minimum threshold)
Below 60: DEVELOPING (not displayed unless threshold lowered)
How It Contributes: The confluence score allows you to filter noise. You can set your minimum quality threshold in settings. Higher thresholds (75+) show fewer but higher-quality patterns. Lower thresholds (50-60) show more patterns but include lower-confidence setups. This teaches you to distinguish strong setups from weak ones.
Limitation: Confluence scoring is historical observation-based, not predictive guarantee. A 95-point setup can still fail. The score represents technical alignment, not future certainty.
WHY THIS COMBINATION WORKS TOGETHER
Each layer addresses a limitation in the others:
RSI Divergence identifies WHEN momentum is exhausting (timing)
Volume Pressure confirms WHETHER the exhaustion is accompanied by opposite-side accumulation (confirmation)
Behavioral Footprint shows IF structural anomalies support the reversal hypothesis (context)
Confluence Scoring weights ALL factors into an objective quality metric (filtering)
Using only RSI divergence gives you timing without confirmation. Using only volume pressure gives you intensity without directional context. Using only pattern detection gives you anomalies without trend exhaustion context. Using all four together creates a complete analytical framework where each layer compensates for the others' weaknesses.
This is not a mashup for the sake of combining indicators. It is a structured analytical system where each component has a defined role in a multi-dimensional market assessment process.
HOW TO READ THE INDICATOR - VISUAL ELEMENTS GUIDE
VMDM displays up to five visual layer types. You can enable or disable each layer independently in settings under "Visual Layers."
VISUAL LAYER 1 - MARKET STRUCTURE (Pivot Points and Lines)
What You See:
Small labels at swing highs and lows marked "PH" (Pivot High) and "PL" (Pivot Low) with horizontal dashed lines extending right from each pivot.
What It Means:
These are CONFIRMED pivots, not real-time. A pivot low appears AFTER the required right-side confirmation bars pass (default 3 bars). This creates a delay but prevents repainting. The pivot only appears once it is mathematically confirmed.
The horizontal lines represent support (from pivot lows) and resistance (from pivot highs) levels where price previously found significant rejection.
Color Coding:
Green label and line: Pivot Low (potential support)
Red label and line: Pivot High (potential resistance)
How To Use:
These pivots are the foundation for divergence detection. Divergence is only calculated between confirmed pivots, ensuring all signals are non-repainting. The lines help you see historical structure levels.
VISUAL LAYER 2 - PRESSURE ZONES (Background Color)
What You See:
Subtle background color shading on bars - light green or light red tint.
What It Means:
This visualizes volume pressure strength in real-time.
Color Coding:
Light Green Background: Pressure Strength above 70 (strong buying pressure - price closing near highs on volume)
Light Red Background: Pressure Strength below 30 (strong selling pressure - price closing near lows on volume)
No Color: Neutral pressure (pressure between 30-70)
How To Use:
When a bullish divergence pattern appears during green pressure zones, it suggests the divergence is forming during accumulation. When a bearish divergence appears during red zones, distribution is occurring. Pressure zones help you filter divergences - those forming in supportive pressure environments have higher probability.
VISUAL LAYER 3 - DIVERGENCE LINES (Dotted Connectors)
What You See:
Dotted lines connecting two pivot points (either two pivot lows or two pivot highs).
What It Means:
A divergence has been detected between those two pivots. The line connects the price pivots where RSI showed opposite behavior.
Color Coding:
Bright Green Line: Bullish divergence (regular or hidden)
Bright Red Line: Bearish divergence (regular or hidden)
How To Use:
The divergence line appears ONLY after the second pivot is confirmed (delayed by right-side confirmation bars). This is intentional to prevent repainting. When you see the line appear, it means:
For Bullish Regular Divergence:
Price made a lower low (second pivot lower than first)
RSI made a higher low (RSI at second pivot higher than first)
Interpretation: Downtrend losing momentum
For Bullish Hidden Divergence:
Price made a higher low (second pivot higher than first)
RSI made a lower low (RSI at second pivot lower than first)
Interpretation: Uptrend continuation likely (pullback within uptrend)
For Bearish Regular Divergence:
Price made a higher high (second pivot higher than first)
RSI made a lower high (RSI at second pivot lower than first)
Interpretation: Uptrend losing momentum
For Bearish Hidden Divergence:
Price made a lower high (second pivot lower than first)
RSI made a higher high (RSI at second pivot higher than first)
Interpretation: Downtrend continuation likely (bounce within downtrend)
If "Show Consolidated Analysis Label" is disabled, a small label will appear on the divergence line showing the divergence type abbreviation.
VISUAL LAYER 4 - BEHAVIORAL FOOTPRINT MARKERS
What You See:
Boxes, labels, and markers at specific bars showing pattern detection.
ABSORPTION ZONES (Boxes):
Colored rectangular boxes spanning one or more bars.
Purple Box: Accumulation absorption zone (high volume, tight range, bullish close)
Red Box: Distribution absorption zone (high volume, tight range, bearish close)
If absorption continues for multiple consecutive bars, the box extends and a counter appears in the label showing how many bars the absorption lasted.
What It Means: Large volume is being absorbed without significant price movement. This often precedes directional breakouts once the absorption phase completes.
STOP HUNT MARKERS (Labels):
Small labels below or above wicks labeled "BULL HUNT" or "BEAR HUNT" (may show bar count if consecutive).
What It Means:
BULL HUNT : Price spiked below recent lows then reversed back up on volume - likely triggered sell stops before reversing
BEAR HUNT : Price spiked above recent highs then reversed back down on volume - likely triggered buy stops before reversing
EXHAUSTION MARKERS (Labels):
Labels showing "SELL EXHAUST" or "BUY EXHAUST."
What It Means:
SELL EXHAUST : Large lower wick with high volume and low RSI - aggressive selling met with strong rejection
BUY EXHAUST : Large upper wick with high volume and high RSI - aggressive buying met with strong rejection
How To Use:
These markers help you identify WHERE structural anomalies occurred. When a divergence signal appears AT THE SAME TIME as one of these patterns, the confluence score increases. You are looking for alignment - divergence + behavioral pattern + pressure confirmation = high-quality setup.
VISUAL LAYER 5 - CONSOLIDATED ANALYSIS LABEL (Main Pattern Signal)
What You See:
A large label appearing at pivot points (or in real-time mode, at current bar) containing full pattern analysis.
Label Appearance:
Depending on your "Use Compact Label Format" setting:
COMPACT MODE (Single Line):
Example: "BULLISH REGULAR | Q:HIGH QUALITY C:82"
Breakdown:
BULLISH REGULAR: Divergence type detected
Q:HIGH QUALITY: Pattern quality tier
C:82: Confluence score (82 out of 100)
FULL MODE (Multi-Line Detailed):
Example:
PATTERN DETECTED
-------------------
BULLISH REGULAR
Quality: HIGH QUALITY
Price: Lower Low
Momentum: Higher Low
Signal: Weakening Downtrend
CONFLUENCE: 82/100
-------------------
Divergence: 30
Pressure: 25
Institutional: 20
RSI Extreme: 0
Volume: 10
Breakdown:
Top section: Pattern type and quality
Middle section: Divergence explanation (what price did vs what RSI did)
Bottom section: Confluence score with itemized breakdown showing which factors contributed
Label Position:
In Confirmed modes: Label appears AT the pivot point (delayed by confirmation bars)
In Real-time mode: Label appears at current bar as conditions develop
Label Color:
Gold: Textbook quality (90+ confluence)
Green: High quality (75-89 confluence)
Blue: Valid quality (60-74 confluence)
How To Use:
This is your primary decision-making label. When it appears:
Check the divergence type (regular divergences are reversal signals, hidden divergences are continuation signals)
Review the quality tier (textbook and high quality have better historical win rates)
Examine the confluence breakdown to see which factors are present and which are missing
Look at the chart context (trend, support/resistance, timeframe)
Use this information to assess whether the setup aligns with your strategy
The label does NOT tell you to buy or sell. It tells you a technical pattern has formed and provides the quality assessment. Your trading decision must incorporate risk management, market context, and your strategy rules.
UNDERSTANDING THE THREE DETECTION MODES
VMDM offers three signal detection modes in settings to accommodate different trading styles and learning objectives.
MODE 1: "Confluence Only (Real-Time)"
How It Works: Displays signals AS THEY DEVELOP on the current bar without waiting for pivot confirmation. The system calculates confluence score from pressure, volume, RSI extremes, and behavioral patterns. Divergence signals are NOT required in this mode.
Delay: ZERO - signals appear immediately.
Use Case: Real-time scanning for high-confluence zones without divergence requirement. Useful for intraday traders who want immediate alerts when multiple factors align.
Tradeoff: More frequent signals but includes setups without confirmed divergence. Higher false signal rate. Signals can change as the bar develops (not repainting in historical bars, but current bar updates).
Visual Behavior: Labels appear at the current bar. No divergence lines unless divergence happens to be present.
MODE 2: "Divergence + Confluence (Confirmed)" - DEFAULT RECOMMENDED
How It Works: Full system engagement. Signals appear ONLY when:
A pivot is confirmed (requires right-side confirmation bars to pass)
Divergence is detected between current pivot and previous pivot
Total confluence score meets or exceeds your minimum threshold
Delay: Equal to your "Pivot Right Bars" setting (default 3 bars). This means signals appear 3 bars AFTER the actual pivot formed.
Use Case: Highest-quality, non-repainting signals for swing traders and learners who want to study confirmed pattern completion.
Tradeoff: Delayed signals. You will not receive the signal until confirmation occurs. In fast-moving markets, price may have already moved significantly by the time the signal appears.
Visual Behavior: Labels appear at the historical pivot location (in the past). Divergence lines connect the two pivots. This is the most educational mode because it shows completed, confirmed patterns.
Non-Repainting Guarantee: Yes. Once a signal appears, it never disappears or changes.
MODE 3: "Divergence + Confluence (Relaxed)"
How It Works: Same as Confirmed mode but with adaptive thresholds. If confluence is very high (10 points above threshold), the signal may appear even if some factors are weak. If divergence is present but confluence is slightly below threshold (within 10 points), it may still appear.
Delay: Same as Confirmed mode (right-side confirmation bars).
Use Case: Slightly more signals than Confirmed mode for traders willing to accept near-threshold setups.
Tradeoff: More signals but lower average quality than Confirmed mode.
Visual Behavior: Same as Confirmed mode.
DASHBOARD GUIDE - READING THE METRICS
The dashboard appears in the corner of your chart (position selectable in settings) and provides real-time market state analysis.
You can choose between four dashboard detail levels in settings: Off, Compact, Optimized (default), Full.
DASHBOARD ROW EXPLANATIONS
ROW 1 - Header Information
Left: Current symbol and timeframe
Center: "VMDM "
Right: Version number
ROW 2 - Mode and Delay
Shows which detection mode you are using and the signal delay.
Example: "CONFIRMED | Delay: 3 bars"
This reminds you that signals in confirmed mode appear 3 bars after the pivot forms.
ROW 3 - Market Regime
Format: "TREND UP HV" or "RANGING NV"
First Part - Trend State:
TREND UP: 20 EMA above 50 EMA with strong separation
TREND DOWN: 20 EMA below 50 EMA with strong separation
RANGING: EMAs close together, low trend strength
TRANSITION: Between trending and ranging states
Second Part - Volatility State:
HV: High Volatility (current ATR more than 1.3x the 50-bar average ATR)
NV: Normal Volatility (current ATR between 0.7x and 1.3x average)
LV: Low Volatility (current ATR less than 0.7x average)
Third Column: Volatility ratio (example: "1.45x" means current ATR is 1.45 times normal)
How To Use: Regime context helps you interpret signals. Reversal divergences are more reliable in ranging or transitional regimes. Continuation divergences (hidden) are more reliable in trending regimes. High volatility means wider stops may be needed.
ROW 4 - Pressure
Shows current volume pressure state.
Format: "BUYING | ██████████░░░░░░░░░"
States:
BUYING : Pressure strength above 60 (closes near highs)
SELLING : Pressure strength below 40 (closes near lows)
NEUTRAL : Pressure strength between 40-60
Bar Visualization: Each block represents 10 percentile points. A full bar (10 filled blocks) = 100th percentile pressure.
Color: Green for buying, red for selling, gray for neutral.
How To Use: When pressure aligns with divergence direction (bullish divergence during buying pressure), confluence is stronger.
ROW 5 - Volume and RSI
Format: "1.8x | RSI 68 | OB"
First Value: Current volume ratio (1.8x = volume is 1.8 times the moving average)
Second Value: Current RSI reading
Third Value: RSI state
OB: Overbought (RSI above 70)
OS: Oversold (RSI below 30)
Blank: Neutral RSI
How To Use: Volume spikes (above 1.5x) during divergence formation add confluence. RSI extremes at pivots add confluence.
ROW 6 - Behavioral Footprint
Format: "BULL HUNT | 2 bars"
Shows the most recent behavioral pattern detected and how long ago.
States:
ACCUMULATION / DISTRIBUTION: Absorption detected
BULL HUNT / BEAR HUNT: Stop hunt detected
SELL EXHAUST / BUY EXHAUST: Exhaustion detected
SCANNING: No recent pattern
NOW: Pattern is active on current bar
How To Use: When footprint activity is recent (within 50 bars) or active now, it adds context to divergence signals forming in that area.
ROW 7 - Current Pattern
Shows the divergence type currently detected (if any).
Examples: "BULLISH REGULAR", "BEARISH HIDDEN", "Scanning..."
Quality: Shows pattern quality (TEXTBOOK, HIGH QUALITY, VALID)
How To Use: This tells you what type of signal is active. Regular divergences are reversal setups. Hidden divergences are continuation setups.
ROW 8 - Session Summary
Format: "14 events | A3 H8 E3"
First Value: Total institutional events this session
Breakdown:
A: Absorption events
H: Stop hunt events
E: Exhaustion events
How To Use: High event counts suggest an active, volatile session with frequent structural anomalies. Low counts suggest quiet, orderly price action.
ROW 9 - Confluence Score (Optimized/Full mode only)
Format: "78/100 | ████████░░"
Shows current real-time confluence score even if no pattern is confirmed yet.
How To Use: Watch this in real-time to see how close you are to pattern formation. When it exceeds your threshold and divergence forms, a signal will appear (after confirmation delay).
ROW 10 - Patterns Studied (Optimized/Full mode only)
Format: "47 patterns | 12 bars ago"
First Value: Total confirmed patterns detected since chart loaded
Second Value: How many bars since the last confirmed pattern appeared
How To Use: Helps you understand pattern frequency on your selected symbol and timeframe. If many bars have passed since last pattern, market may be trending without reversal opportunities.
ROW 11 - Bull/Bear Ratio (Optimized/Full mode only)
Format: "28:19 | BULL"
Shows count of bullish vs bearish patterns detected.
Balance:
BULL: More bullish patterns detected (suggests market has had more bullish reversals/continuations)
BEAR: More bearish patterns detected
BAL: Equal counts
How To Use: Extreme imbalances can indicate directional bias in the studied period. A heavily bullish ratio in a downtrend might suggest frequent failed rallies (bearish continuation). Context matters.
ROW 12 - Volume Ratio Detail (Optimized/Full mode only)
Shows current volume vs average volume in absolute terms.
Example: "1.4x | 45230 / 32300"
How To Use: Confirms whether current activity is above or below normal.
ROW 13 - Last Institutional Event (Full mode only)
Shows the most recent institutional pattern type and how many bars ago it occurred.
Example: "DISTRIBUTION | 23 bars"
How To Use: Tracks recency of last anomaly for context.
SETTINGS GUIDE - EVERY PARAMETER EXPLAINED
PERFORMANCE SECTION
Enable All Visuals (Master Toggle)
Default: ON
What It Does: Master kill switch for ALL visual elements (labels, lines, boxes, background colors, dashboard). When OFF, only plot outputs remain (invisible unless you open data window).
When To Change: Turn OFF on mobile devices, 1-second charts, or slow computers to improve performance. You can still receive alerts even with visuals disabled.
Impact: Dramatic performance improvement when OFF, but you lose all visual feedback.
Maximum Object History
Default: 50 | Range: 10-100
What It Does: Limits how many of each object type (labels, lines, boxes) are kept in memory. Older objects beyond this limit are deleted.
When To Change: Lower to 20-30 on fast timeframes (1-minute charts) to prevent slowdown. Increase to 100 on daily charts if you want more historical pattern visibility.
Impact: Lower values = better performance but less historical visibility. Higher values = more history visible but potential slowdown on fast timeframes.
Alert Cooldown (Bars)
Default: 5 | Range: 1-50
What It Does: Minimum number of bars that must pass before another alert of the same type can fire. Prevents alert spam when multiple patterns form in quick succession.
When To Change: Increase to 20+ on 1-minute charts to reduce noise. Decrease to 1-2 on daily charts if you want every pattern alerted.
Impact: Higher cooldown = fewer alerts. Lower cooldown = more alerts.
USER EXPERIENCE SECTION
Show Enhanced Tooltips
Default: ON
What It Does: Enables detailed hover-over tooltips on labels and visual elements.
When To Change: Turn OFF if you encounter Pine Script compilation errors related to tooltip arguments (rare, platform-specific issue).
Impact: Minimal. Just adds helpful hover text.
MARKET STRUCTURE DETECTION SECTION
Pivot Left Bars
Default: 3 | Range: 2-10
What It Does: Number of bars to the LEFT of the center bar that must be higher (for pivot low) or lower (for pivot high) than the center bar for a pivot to be valid.
Example: With value 3, a pivot low requires the center bar's low to be lower than the 3 bars to its left.
When To Change:
Increase to 5-7 on noisy timeframes (1-minute charts) to filter insignificant pivots
Decrease to 2 on slow timeframes (daily charts) to catch more pivots
Impact: Higher values = fewer, more significant pivots = fewer signals. Lower values = more frequent pivots = more signals but more noise.
Pivot Right Bars
Default: 3 | Range: 2-10
What It Does: Number of bars to the RIGHT of the center bar that must pass for confirmation. This creates the non-repainting delay.
Example: With value 3, a pivot is confirmed 3 bars AFTER it forms.
When To Change:
Increase to 5-7 for slower, more confirmed signals (better for swing trading)
Decrease to 2 for faster signals (better for intraday, but still non-repainting)
Impact: Higher values = longer delay but more reliable confirmation. Lower values = faster signals but less confirmation. This setting directly controls your signal delay in Confirmed and Relaxed modes.
Minimum Confluence Score
Default: 60 | Range: 40-95
What It Does: The threshold score required for a pattern to be displayed. Patterns with confluence scores below this threshold are not shown.
When To Change:
Increase to 75+ if you only want high-quality textbook setups (fewer signals)
Decrease to 50-55 if you want to see more developing patterns (more signals, lower average quality)
Impact: This is your primary signal filter. Higher threshold = fewer, higher-quality signals. Lower threshold = more signals but includes weaker setups. Recommended starting point is 60-65.
TECHNICAL PERIODS SECTION
RSI Period
Default: 14 | Range: 5-50
What It Does: Lookback period for RSI calculation.
When To Change:
Decrease to 9-10 for faster, more sensitive RSI that detects shorter-term momentum changes
Increase to 21-28 for slower, smoother RSI that filters noise
Impact: Lower values make RSI more volatile (more frequent extremes and divergences). Higher values make RSI smoother (fewer but more significant divergences). 14 is industry standard.
Volume Moving Average Period
Default: 20 | Range: 10-200
What It Does: Lookback period for calculating average volume. Current volume is compared to this average to determine volume ratio.
When To Change:
Decrease to 10-14 for shorter-term volume comparison (more sensitive to recent volume changes)
Increase to 50-100 for longer-term volume comparison (smoother, less sensitive)
Impact: Lower values make volume ratio more volatile. Higher values make it more stable. 20 is standard.
ATR Period
Default: 14 | Range: 5-100
What It Does: Lookback period for Average True Range calculation used for volatility measurement and label positioning.
When To Change: Rarely needs adjustment. Use 7-10 for faster volatility response, 21-28 for slower.
Impact: Affects volatility ratio calculation and visual label spacing. Minimal impact on signals.
Pressure Percentile Lookback
Default: 50 | Range: 10-300
What It Does: Lookback period for calculating volume pressure percentile ranking. Your current pressure is ranked against the pressure of the last X bars.
When To Change:
Decrease to 20-30 for shorter-term pressure context (more responsive to recent changes)
Increase to 100-200 for longer-term pressure context (smoother rankings)
Impact: Lower values make pressure strength more sensitive to recent bars. Higher values provide more stable, long-term pressure assessment. Capped at 300 for performance reasons.
SIGNAL DETECTION SECTION
Signal Detection Mode
Default: "Divergence + Confluence (Confirmed)"
Options:
Confluence Only (Real-time)
Divergence + Confluence (Confirmed)
Divergence + Confluence (Relaxed)
What It Does: Selects which detection logic mode to use (see "Understanding The Three Detection Modes" section above).
When To Change: Use Confirmed for learning and non-repainting signals. Use Real-time for live scanning without divergence requirement. Use Relaxed for slightly more signals than Confirmed.
Impact: Fundamentally changes when and how signals appear.
VISUAL LAYERS SECTION
All toggles default to ON. Each controls visibility of one visual layer:
Show Market Structure: Pivot markers and support/resistance lines
Show Pressure Zones: Background color shading
Show Divergence Lines: Dotted lines connecting pivots
Show Institutional Footprint Markers: Absorption boxes, hunt labels, exhaustion labels
Show Consolidated Analysis Label: Main pattern detection label
Use Compact Label Format
Default: OFF
What It Does: Switches consolidated label between single-line compact format and multi-line detailed format.
When To Change: Turn ON if you find full labels too large or distracting.
Impact: Visual clarity vs. information density tradeoff.
DASHBOARD SECTION
Dashboard Mode
Default: "Optimized"
Options: Off, Compact, Optimized, Full
What It Does: Controls how much information the dashboard displays.
Off: No dashboard
Compact: 8 rows (essential metrics only)
Optimized: 12 rows (recommended balance)
Full: 13 rows (every available metric)
Dashboard Position
Default: "Top Right"
Options: Top Right, Top Left, Bottom Right, Bottom Left
What It Does: Screen corner where dashboard appears.
HOW TO USE VMDM - PRACTICAL WORKFLOW
STEP 1 - INITIAL SETUP
Add VMDM to your chart
Select your detection mode (Confirmed recommended for learning)
Set your minimum confluence score (start with 60-65)
Adjust pivot parameters if needed (default 3/3 is good for most timeframes)
Enable the visual layers you want to see
STEP 2 - CHART ANALYSIS
Let the indicator load and analyze historical data
Review the patterns that appear historically
Examine the confluence scores - notice which patterns had higher scores
Observe which patterns occurred during supportive pressure zones
Notice the divergence line connections - understand what price vs RSI did
STEP 3 - PATTERN RECOGNITION LEARNING
When a consolidated analysis label appears:
Read the divergence type (regular or hidden, bullish or bearish)
Check the quality tier (textbook, high quality, or valid)
Review the confluence breakdown - which factors contributed
Look at the chart context - where is price relative to structure, trend, etc.
Observe the behavioral footprint markers nearby - do they support the pattern
STEP 4 - REAL-TIME MONITORING
Watch the dashboard for real-time regime and pressure state
Monitor the current confluence score in the dashboard
When it approaches your threshold, be alert for potential pattern formation
When a new pattern appears (after confirmation delay), evaluate it using the workflow above
Use your trading strategy rules to decide if the setup aligns with your criteria
STEP 5 - POST-PATTERN OBSERVATION
After a pattern appears:
Mark the level on your chart
Observe what price does after the pattern completes
Did price respect the reversal/continuation signal
What was the confluence score of patterns that worked vs. those that failed
Learn which quality tiers and confluence levels produce better results on your specific symbol and timeframe
RECOMMENDED TIMEFRAMES AND ASSET CLASSES
VMDM is timeframe-agnostic and works on any asset with volume data. However, optimal performance varies:
BEST TIMEFRAMES
15-Minute to 1-Hour: Ideal balance of signal frequency and reliability. Pivot confirmation delay is acceptable. Sufficient volume data for pressure analysis.
4-Hour to Daily: Excellent for swing trading. Very high-quality signals. Lower frequency but higher significance. Recommended for learning because patterns are clearer.
1-Minute to 5-Minute: Works but requires adjustment. Increase pivot bars to 5-7 for filtering. Decrease max object history to 30 for performance. Expect more noise.
Weekly/Monthly: Works but very infrequent signals. Increase confluence threshold to 70+ to ensure only major patterns appear.
BEST ASSET CLASSES
Forex Majors: Excellent volume data and clear trends. Pressure analysis works well.
Crypto (Major Pairs): Good volume data. High volatility makes divergences more pronounced. Works very well.
Stock Indices (SPY, QQQ, etc.): Excellent. Clean price action and reliable volume.
Individual Stocks: Works well on high-volume stocks. Low-volume stocks may produce unreliable pressure readings.
Commodities (Gold, Oil, etc.): Works well. Clear trends and reactions.
WHAT THIS INDICATOR CANNOT DO - LIMITATIONS
LIMITATION 1 - It Does Not Predict The Future
VMDM identifies when technical conditions align historically associated with potential reversals or continuations. It does not predict what will happen next. A textbook 95-confluence pattern can still fail if fundamental events, news, or larger timeframe structure override the setup.
LIMITATION 2 - Confirmation Delay Means You Miss Early Entry
In Confirmed and Relaxed modes, the non-repainting design means you receive signals AFTER the pivot is confirmed. Price may have already moved significantly by the time you receive the signal. This is the tradeoff for non-repainting reliability. You can use Real-time mode for faster signals but sacrifice divergence confirmation.
LIMITATION 3 - It Does Not Tell You Position Sizing or Risk Management
VMDM provides technical pattern analysis. It does not calculate stop loss levels, take profit targets, or position sizing. You must apply your own risk management rules. Never risk more than you can afford to lose based on a technical signal.
LIMITATION 4 - Volume Pressure Analysis Requires Reliable Volume Data
On assets with thin volume or unreliable volume reporting, pressure analysis may be inaccurate. Stick to major liquid assets with consistent volume data.
LIMITATION 5 - It Cannot Detect Fundamental Events
VMDM is purely technical. It cannot predict earnings reports, central bank decisions, geopolitical events, or other fundamental catalysts that can override technical patterns.
LIMITATION 6 - Divergence Requires Two Pivots
The indicator cannot detect divergence until at least two pivots of the same type have formed. In strong trends without pullbacks, you may go long periods without signals.
LIMITATION 7 - Institutional Pattern Names Are Interpretive
The behavioral footprint patterns are named using common trading education terminology, but they are detected through technical analysis, not actual institutional data access. The patterns are interpretations based on price and volume behavior.
CONCEPT FOUNDATION - WHY THIS APPROACH WORKS
MARKET PRINCIPLE 1 - Momentum Divergence Precedes Price Reversal
Price is the final output of market forces, but momentum (the rate of change in those forces) shifts first. When price makes a new low but the momentum behind that move is weaker (higher RSI low), it signals that sellers are losing strength even though they temporarily pushed price lower. This precedes reversal. This is a fundamental principle in technical analysis taught by Charles Dow, widely observed in market behavior.
MARKET PRINCIPLE 2 - Volume Reveals Conviction
Price can move on low volume (low conviction) or high volume (high conviction). When price makes a new low on declining volume while RSI shows improving momentum, it suggests the new low is not confirmed by participant conviction. Adding volume pressure analysis to momentum divergence adds a confirmation layer that filters false divergences.
MARKET PRINCIPLE 3 - Anomalies Mark Structural Extremes
When volume spikes significantly but range contracts (absorption), or when price spikes beyond structure then reverses (stop hunt), or when aggressive moves are met with large-wick rejection (exhaustion), these anomalies often mark short-term extremes. Combining these structural observations with momentum analysis creates context.
MARKET PRINCIPLE 4 - Confluence Improves Probability
No single technical factor is reliable in isolation. RSI divergence alone fails frequently. Volume analysis alone cannot time entries. Combining multiple independent factors into a weighted system increases the probability that observed patterns have structural significance rather than random noise.
THE EDUCATIONAL VALUE
By visualizing all four layers simultaneously and breaking down the confluence scoring transparently, VMDM teaches you to think in terms of multi-dimensional analysis rather than single-indicator reliance. Over time, you will learn to recognize these patterns manually and understand which combinations produce better results on your traded assets.
INSTITUTIONAL TERMINOLOGY - IMPORTANT CLARIFICATION
This indicator uses the following terms that are common in trading education:
Institutional Footprint
Absorption (Accumulation / Distribution)
Stop Hunt
Exhaustion
CRITICAL DISCLAIMER:
These terms are EDUCATIONAL LABELS for specific price action and volume behavior patterns detected through technical analysis of publicly available chart data (open, high, low, close, volume). This indicator does NOT have access to:
Actual institutional order flow or order book data
Market maker positions or intentions
Broker stop-loss databases
Non-public trading data
Proprietary institutional information
The patterns labeled as "institutional footprint" are interpretations based on observable price and volume behavior that educational trading literature often associates with potential large-participant activity. The detection is algorithmic pattern recognition, not privileged data access.
When this indicator identifies "absorption," it means it detected high volume within a small range - a condition that MAY indicate large orders being filled but is not confirmation of actual institutional participation.
When it identifies a "stop hunt," it means price briefly penetrated a structural level then reversed - a pattern that MAY have triggered stop losses but is not confirmation that stops were specifically targeted.
When it identifies "exhaustion," it means high volume with large rejection wicks - a pattern that MAY indicate aggressive participation meeting strong opposition but is not confirmation of institutional involvement.
These are technical analysis interpretations, not factual statements about market participant identity or intent.
DISCLAIMER AND RISK WARNING
EDUCATIONAL PURPOSE ONLY
This indicator is designed as an educational tool to help traders learn to recognize technical patterns, understand multi-factor analysis, and practice systematic market observation. It is NOT a trading system, signal service, or financial advice.
NO PERFORMANCE GUARANTEE
Past pattern behavior does not guarantee future results. A pattern that historically preceded price movement in one direction may fail in the future due to changing market conditions, fundamental events, or random variance. Confluence scores reflect historical technical alignment, not future certainty.
TRADING INVOLVES SUBSTANTIAL RISK
Trading financial instruments involves substantial risk of loss. You can lose more than your initial investment. Never trade with money you cannot afford to lose. Always use proper risk management including stop losses, position sizing, and portfolio diversification.
NO PREDICTIVE CLAIMS
This indicator does NOT predict future price movement. It identifies when technical conditions align in patterns that historically have been associated with potential reversals or continuations. Market behavior is probabilistic, not deterministic.
BACKTESTING LIMITATIONS
If you backtest trading strategies using this indicator, ensure you account for:
Realistic commission costs
Realistic slippage (difference between signal price and actual fill price)
Sufficient sample size (minimum 100 trades for statistical relevance)
Reasonable position sizing (risking no more than 1-2 percent of account per trade)
The confirmation delay inherent in the indicator (you cannot enter at the exact pivot in Confirmed mode)
Backtests that do not account for these factors will produce unrealistic results.
AUTHOR LIABILITY
The author (BullByte) is not responsible for any trading losses incurred using this indicator. By using this indicator, you acknowledge that all trading decisions are your sole responsibility and that you understand the risks involved.
NOT FINANCIAL ADVICE
Nothing in this indicator, its code, its description, or its visual outputs constitutes financial, investment, or trading advice. Consult a licensed financial advisor before making investment decisions.
FREQUENTLY ASKED QUESTIONS
Q: Why do signals appear in the past, not at the current bar
A: In Confirmed and Relaxed modes, signals appear at confirmed pivots, which requires waiting for right-side confirmation bars (default 3). This creates a delay but prevents repainting. Use Real-time mode if you want current-bar signals without pivot confirmation.
Q: Can I use this for automated trading
A: You can create alert-based automation, but understand that Confirmed mode signals appear AFTER the pivot with delay, so your entry will not be at the pivot price. Real-time mode signals can change as the current bar develops. Automation requires careful consideration of these factors.
Q: How do I know which confluence score to use
A: Start with 60. Observe which patterns work on your symbol/timeframe. If too many false signals, increase to 70-75. If too few signals, decrease to 55. Quality vs. quantity tradeoff.
Q: Do regular divergences mean I should enter a reversal trade immediately
A: No. Regular divergences indicate momentum exhaustion, which is a WARNING sign that trend may reverse, not a confirmation that it will. Use confluence score, market context, support/resistance, and your strategy rules to make entry decisions. Many divergences fail.
Q: What's the difference between regular and hidden divergence
A: Regular divergence = price and momentum move in opposite directions at extremes = potential reversal signal. Hidden divergence = price and momentum move in opposite directions during pullbacks = potential continuation signal. Hidden divergence suggests the pullback is just a correction within the larger trend.
Q: Why does the pressure zone color sometimes conflict with the divergence direction
A: Pressure is real-time current bar analysis. Divergence is confirmed pivot analysis from the past. They measure different things at different times. A bullish divergence confirmed 3 bars ago might appear during current selling pressure. This is normal.
Q: Can I use this on stocks without volume data
A: No. Volume is required for pressure analysis and behavioral pattern detection. Use only on assets with reliable volume reporting.
Q: How often should I expect signals
A: Depends on timeframe and settings. Daily charts might produce 5-10 signals per month. 1-hour charts might produce 20-30. 15-minute charts might produce 50-100. Adjust confluence threshold to control frequency.
Q: Can I modify the code
A: Yes, this is open source. You can modify for personal use. If you publish a modified version, please credit the original and ensure your publication meets TradingView guidelines.
Q: What if I disagree with a pattern's confluence score
A: The scoring weights are based on general observations and may not suit your specific strategy or asset. You can modify the code to adjust weights if you have data-driven reasons to do so.
Final Notes
VMDM - Volume, Momentum and Divergence Master is an educational multi-layer market analysis system designed to teach systematic pattern recognition through transparent, confluence-weighted signal detection. By combining RSI momentum divergence, volume pressure quantification, behavioral footprint pattern recognition, and quality scoring into a unified framework, it provides a comprehensive learning environment for understanding market structure.
Use this tool to develop your analytical skills, understand how multiple technical factors interact, and learn to distinguish high-quality setups from noise. Remember that technical analysis is probabilistic, not predictive. No indicator replaces proper education, risk management, and trading discipline.
Trade responsibly. Learn continuously. Risk only what you can afford to lose.
-BullByte
Super-AO with Risk Management Alerts Template - 11-29-25Super-AO with Risk Management: ALERTS & AUTOMATION Edition
Signal Lynx | Free Scripts supporting Automation for the Night-Shift Nation 🌙
1. Overview
This is the Indicator / Alerts companion to the Super-AO Strategy.
While the Strategy version is built for backtesting (verifying profitability and checking historical performance), this Indicator version is built for Live Execution.
We understand the frustration of finding a great strategy, only to realize you can't easily hook it up to your trading bot. This script solves that. It contains the exact same "Super-AO" logic and "Risk Management Engine" as the strategy version, but it is optimized to send signals to automation platforms like Signal Lynx, 3Commas, or any Webhook listener.
2. Quick Action Guide (TL;DR)
Purpose: Live Signal Generation & Automation.
Workflow:
Use the Strategy Version to find profitable settings.
Copy those settings into this Indicator Version.
Set a TradingView Alert using the "Any Alert() function call" condition.
Best Timeframe: 4 Hours (H4) and above.
Compatibility: Works with any webhook-based automation service.
3. Why Two Scripts?
Pine Script operates in two distinct modes:
Strategy Mode: Calculates equity, drawdowns, and simulates orders. Great for research, but sometimes complex to automate.
Indicator Mode: Plots visual data on the chart. This is the preferred method for setting up robust alerts because it is lighter weight and plots specific values that automation services can read easily.
The Golden Rule: Always backtest on the Strategy, but trade on the Indicator. This ensures that what you see in your history matches what you execute in real-time.
4. How to Automate This Script
This script uses a "Visual Spike" method to trigger alerts. Instead of drawing equity curves, it plots numerical values at the bottom of your chart when a trade event occurs.
The Signal Map:
Blue Spike (2 / -2): Entry Signal (Long / Short).
Yellow Spike (1 / -1): Risk Management Close (Stop Loss / Trend Reversal).
Green Spikes (1, 2, 3): Take Profit Levels 1, 2, and 3.
Setup Instructions:
Add this indicator to your chart.
Open your TradingView "Alerts" tab.
Create a new Alert.
Condition: Select SAO - RM Alerts Template.
Trigger: Select Any Alert() function call.
Message: Paste your JSON webhook message (provided by your bot service).
5. The Logic Under the Hood
Just like the Strategy version, this indicator utilizes:
SuperTrend + Awesome Oscillator: High-probability swing trading logic.
Non-Repainting Engine: Calculates signals based on confirmed candle closes to ensure the alert you get matches the chart reality.
Advanced Adaptive Trailing Stop (AATS): Internally calculates volatility to determine when to send a "Close" signal.
6. About Signal Lynx
Automation for the Night-Shift Nation 🌙
We are providing this code open source to help traders bridge the gap between manual backtesting and live automation. This code has been in action since 2022.
If you are looking to automate your strategies, please take a look at Signal Lynx in your search.
License: Mozilla Public License 2.0 (Open Source). If you make beneficial modifications, please release them back to the community!
Daily % Change TableDaily % Change Table — Indicator Summary
This indicator provides a compact performance summary for daily candles, designed for backtesting and daily-session analysis. It displays a table in the top-right corner of the chart showing three key percentage-change statistics based on the current candle:
1. Prior Change
Percentage move from the close two days ago to the prior day’s close.
Useful for understanding momentum and context heading into the current session.
2. Change
Percentage move from the prior day's close to the current candle’s close.
Shows today’s full-session change.
3. Premarket
Percentage move from the prior day's close to the current day’s open.
Helps quantify overnight sentiment and gap activity.
Features
Clean, unobtrusive table display
Automatically updates on the most recent bar
Designed for use on Daily timeframe
Useful for gap analysis, backtesting, and volatility/momentum studies
LETHINH-Swing pa,smc🟦 📌 Title (English)
Swing High / Swing Low – 3-Candle Fractal (5-Bar Pivot) | Auto Alerts
⸻
🟩 📌 Short Description
A clean and reliable swing high / swing low detector based on the classic 3-candle (5-bar) fractal pivot. Automatically marks SH/SL and triggers alerts when a swing is confirmed. No repainting after confirmation.
⸻
🟧 📌 Full Description (for TradingView Publishing)
🔶 Swing High / Swing Low – 3-Candle Fractal (5-Bar Pivot)
This indicator identifies Swing Highs (SH) and Swing Lows (SL) using the classic 3-candle fractal pattern, also known as the 5-bar pivot.
It marks swing points only after full confirmation, making it highly reliable and suitable for structure-based trading.
⸻
🔶 📍 How It Works
A swing is confirmed when the center candle is higher (or lower) than the two candles on each side:
Swing High (SH)
high > high , high , high
Swing Low (SL)
low < low , low , low
The confirmation occurs after 2 right candles close, so the indicator does not repaint once a swing is identified.
⸻
🔶 📍 Key Features
• Detects clean and accurate swings
• Uses pure price action — no indicators, no lag
• Marks swing high (SH) and swing low (SL) directly on the chart
• Non-repainting after confirmation
• Works on all timeframes and all markets
• Extremely lightweight and fast
• Includes alert conditions for both SH and SL
Perfect for traders using:
• Market Structure (BOS / CHoCH)
• Order Blocks (OB)
• Smart Money Concepts (SMC)
• Liquidity hunts
• Wyckoff
• Support/Resistance
• Price Action entries
⸻
🔶 📍 Why This Indicator Is Useful
Swing points are the foundation of market structure.
Accurately detecting them helps traders:
• Identify trend shifts
• Spot BOS / CHoCH correctly
• Find key zones (OB, liquidity levels, supply/demand)
• Time entries more precisely
• Avoid fake structure breaks
This indicator ensures swings are plotted only when fully confirmed, reducing noise and confusion.
⸻
🔶 📍 Alerts
You can create alerts for both conditions:
• Swing High Confirmed
• Swing Low Confirmed
Recommended settings:
• Once per bar close
• Open-ended alert
With alerts enabled, TradingView will automatically notify you every time a new swing forms.
⸻
🔶 📍 No Repainting
Once a swing is confirmed and plotted, it will not change or disappear.
This makes the indicator reliable for real-time alerts and backtesting.
⸻
🔶 📍 Pine Script (v5)
Paste your indicator code here if you want it visible.
Or leave the code hidden if you are publishing as protected.
⸻
🔶 📍 Final Notes
• This indicator focuses on confirmation, not prediction
• It is designed for clean structure reading
• All markets supported: Forex, Crypto, Stocks, Indexes, Commodities
• Suitable for scalping, intraday, swing, and even higher-timeframe trading
If you find this tool helpful, feel free to give it a like and add it to your favorites ❤️
Your support helps me share more tools with the community!
able MACD Overview
Purpose: The indicator combines the traditional MACD (Moving Average Convergence Divergence) with a short-term “forecast” (projection) of MACD/histogram values to give early warning of momentum changes.
Typical outputs:
MACD line (fastEMA − slowEMA)
Signal line (EMA of MACD)
Histogram (MACD − signal)
Forecasted MACD or histogram projected N bars ahead
Optional buy/sell markers and alert conditions
Add the indicator to TradingView (Installation)
Open TradingView and the chart you want to apply the indicator to.
Click “Pine Editor” at the bottom of the chart.
Copy the contents of able_macd_forecast.pine into the Pine Editor window.
Click “Add to chart” (or Save then Add to chart). If it’s a study, it will appear on the chart below price.
If you plan to re-use the script, click Save and give it a meaningful name.
Inputs / Parameters (typical) Note: exact input names may differ in your script. Replace the names below with the script’s input labels when you inspect it.
Source: price source for calculations (close, hl2, etc.).
Fast Length: length for the fast EMA (commonly 12).
Slow Length: length for the slow EMA (commonly 26).
Signal Length: length for the MACD signal EMA (commonly 9).
Forecast Length / Horizon: how many bars ahead the script projects the MACD/histogram (e.g., 1–5).
Forecast Method / Smoothing: choice of projection method (linear regression, EMA extrapolation, simple slope * N, etc.) if available.
Histogram Thresholds: numeric thresholds to emphasize significant momentum (optional).
Show Forecast: toggle on/off the forecast plot.
Alerts On/Off toggles: enable or disable alert conditions baked into the indicator.
Visual / Style settings: colors, plot thickness, histogram style (columns/areas), show labels, show buy/sell arrows.
How the indicator is typically calculated (summary)
MACD line = EMA(source, fast) − EMA(source, slow)
Signal line = EMA(MACD line, signal length)
Histogram = MACD − Signal
Forecast = method-specific short-term projection of MACD or histogram (for example: extend the last slope forward, apply linear regression to MACD values and extrapolate N bars, or apply an additional smoothing and extend that value) Note: For exact math, I need to inspect the script; this is the typical approach.
How to read the indicator (signals & interpretation)
Bullish signal:
MACD line crossing above the signal line (MACD cross up).
Histogram turns positive (cross above zero).
Forecast shows MACD/histogram moving higher in the next N bars (if forecast is positive or trending up).
Bearish signal:
MACD line crossing below the signal line (MACD cross down).
Histogram turns negative (cross below zero).
Forecast shows MACD/histogram moving lower ahead.
Confirmations:
Use price action (higher highs/lows for bullish, lower highs/lows for bearish).
Volume or other momentum/confluence indicators (RSI, ADX).
Divergences:
Bullish divergence: price makes lower low while MACD histogram makes higher low.
Bearish divergence: price makes higher high while MACD histogram makes lower high.
Forecast behavior:
If the forecast leads the MACD cross (forecast crosses before the current MACD does), it’s an early warning.
Use caution: forecasts are prone to false signals; always confirm.
Common trading setups using this indicator
Conservative:
Wait for MACD to cross signal + histogram above zero + forecast already trending same direction.
Use stop below recent swing low (for long) or above recent swing high (for short).
Aggressive (early entry):
Enter when forecast turns positive while MACD still below signal (anticipating cross).
Use tighter stops and smaller position sizes.
Exit rules:
Opposite MACD cross, histogram flipping sign, or a target based on risk-reward.
Use trailing stop based on ATR or structure.
Example settings for different timeframes (starting points)
Scalping / 5–15 min:
Fast 8, Slow 21, Signal 5, Forecast 1–2
Intraday / 1H:
Fast 12, Slow 26, Signal 9, Forecast 2–3
Swing / 4H–Daily:
Fast 12, Slow 26, Signal 9, Forecast 3–5 Adjust based on the asset volatility and backtests.
Adding alerts (TradingView)
Click the “Alerts” button (clock icon) or press Alt + A.
In the Condition dropdown, select the indicator name (able_macd_forecast) and choose a plotted series or built-in alert condition (if the script uses alertcondition).
Common alert types:
MACD crosses Signal (Crossing)
Histogram crosses 0 (Crossing)
Forecast crosses 0 or Forecast trend change (if provided)
Message templates:
“{{ticker}}: MACD crossed above signal on {{interval}}”
“{{ticker}} Forecast positive: MACD forecast shows upward momentum”
Customize the message for your trade automation or notifications.
Configure frequency (Only once, Once per bar, or Once per bar close) — for signals like crossovers, “Once per bar close” is usually safer to avoid repainting issues. Note: If the script includes alertcondition() calls with explicit IDs/messages, use those directly — they are the most reliable for automation.
Backtesting / Strategy conversion
If this script is a study (indicator), you can:
Convert it to a strategy by adding strategy.* order calls (strategy.entry, strategy.close) using the entry/exit logic you prefer, or
Use TradingView’s “Bar Replay” to manually test signals across different markets/timeframes.
If you want, I can help convert or write a strategy wrapper that uses the indicator’s signals to place backtest trades (I’ll need the code).
Practical tips & best practices
Use higher timeframe confirmation for lower-timeframe entries (e.g., check daily MACD momentum before trading 15m signals).
Beware of choppy markets; MACD / forecast may produce whipsaws. Combine with trend filters (moving average direction, ADX).
If you rely on forecasted values, prefer alerts “on bar close” when possible to reduce false alerts from intra-bar noise.
Tune parameters for the specific asset (FX, crypto, stocks have different behavior).
Record each signal and outcome for a sample period (20–100 trades) to evaluate performance.
Troubleshooting
Indicator won’t add: verify Pine version in script header (//@version=4 or //@version=5). TradingView may reject scripts with unsupported version syntax.
Plots missing: check script inputs (Some scripts hide plots if toggles are off).
Alerts firing too often: change alert frequency to “Once per bar close” or adjust threshold values.
Forecast seems to repaint: some forecast methods can repaint (use “bar_index” or store values only on closed bars, or use non-repainting forecast methods). Ask me to inspect the script for repainting logic.
What I can do next (recommended)
If you paste the content of able_macd_forecast.pine here, I will:
Produce a precise, line-by-line usage guide mapping to the exact input names and default values.
Show the exact plotted series names and how to reference them for alerts.
Point out any repainting risks and suggest fixes.
Provide example alert messages that match the script’s alertcondition IDs (if any).
Optionally convert it into a strategy for backtesting, or add non-repainting forecast logic if needed.
Complete Harmonic PatternOverview:
The ultimate harmonic XABCD pattern identification, prediction, and backtesting system.
Harmonic patterns are among the most accurate of trading signals, yet they're widely underutilized because they can be difficult to spot and tedious to validate. If you've ever come across a pattern and struggled with questions like "are these retracement ratios close enough to the harmonic ratios?" or "what are the Potential Reversal levels and are they confluent with point D?", then this tool is your new best friend. Or, if you've never traded harmonic patterns before, maybe it's time to start. Put away your drawing tools and calculators, relax, and let this indicator do the heavy lifting for you.
- Identification -
An exhaustive search across multiple pivot lengths ensures that even the sneakiest harmonic patterns are identified. Each pattern is evaluated and assigned a score, making it easy to differentiate weak patterns from strong ones. Tooltips under the pattern labels show a detailed breakdown of the pattern's score and retracement ratios (see the Scoring section below for details).
- Prediction -
After a pattern is identified, paths to potential targets are drawn, and Potential Reversal Zone (PRZ) levels are plotted based on the retracement ratios of the harmonic pattern. Targets are customizable by pattern type (e.g. you can specify one set of targets for a Gartley and another for a Bat, etc).
- Backtesting -
A table shows the results of all the patterns found in the chart. Change your target, stop-loss, and % error inputs and observe how it affects your success rate.
//------------------------------------------------------
// Scoring
//------------------------------------------------------
A percentage-based score is calculated from four components:
(1) Retracement % Accuracy - this measures how closely the pattern's retracement ratios match the theoretical values (fibs) defined for a given harmonic pattern. You can change the "Allowed fib ratio error %" in Settings to be more or less inclusive.
(2) PRZ Level Confluence - Potential Reversal Zone levels are projected from retracements of the XA and BC legs. The PRZ Level Confluence component measures the closeness of the closest XA and BC retracement levels, relative to the total height of the PRZ.
(3) Point D / PRZ Confluence - this measures the closeness of point D to either of the closest two PRZ levels (identified in the PRZ Level Confluence component above), relative to the total height of the PRZ. In theory, the closer together these levels are, the higher the probability of a reversal.
(4) Leg Length Symmetry - this measures the ΔX symmetry of each leg. You can change the "Allowed leg length asymmetry %" in settings to be more or less inclusive.
So, a score of 100% would mean that (1) all leg retracements match the theoretical fib ratios exactly (to 16 decimal places), (2) the closest XA and BC PRZ levels are exactly the same, (3) point D is exactly at the confluent PRZ level, and (4) all legs are exactly the same number of bars. While this is theoretically possible, you have better odds of getting struck by lightning twice on a sunny day.
Calculation weights of all four components can be changed in Settings.
//------------------------------------------------------
// Targets
//------------------------------------------------------
A hard-coded set of targets are available to choose from, and can be applied to each pattern type individually:
(1) .618 XA = .618 retracement of leg XA, measured from point D
(2) 1.272 XA = 1.272 retracement of leg XA, measured from point D
(3) 1.618 XA = 1.618 retracement of leg XA, measured from point D
(4) .618 CD = .618 retracement of leg CD, measured from point D
(5) 1.272 CD = 1.272 retracement of leg CD, measured from point D
(6) 1.618 CD = 1.618 retracement of leg CD, measured from point D
(7) A = point A
(8) B = point B
(9) C = point C
Static K-means Clustering | InvestorUnknownStatic K-Means Clustering is a machine-learning-driven market regime classifier designed for traders who want a data-driven structure instead of subjective indicators or manually drawn zones.
This script performs offline (static) K-means training on your chosen historical window. Using four engineered features:
RSI (Momentum)
CCI (Price deviation / Mean reversion)
CMF (Money flow / Strength)
MACD Histogram (Trend acceleration)
It groups past market conditions into K distinct clusters (regimes). After training, every new bar is assigned to the nearest cluster via Euclidean distance in 4-dimensional standardized feature space.
This allows you to create models like:
Regime-based long/short filters
Volatility phase detectors
Trend vs. chop separation
Mean-reversion vs. breakout classification
Volume-enhanced money-flow regime shifts
Full machine-learning trading systems based solely on regimes
Note:
This script is not a universal ML strategy out of the box.
The user must engineer the feature set to match their trading style and target market.
K-means is a tool, not a ready made system, this script provides the framework.
Core Idea
K-means clustering takes raw, unlabeled market observations and attempts to discover structure by grouping similar bars together.
// STEP 1 — DATA POINTS ON A COORDINATE PLANE
// We start with raw, unlabeled data scattered in 2D space (x/y).
// At this point, nothing is grouped—these are just observations.
// K-means will try to discover structure by grouping nearby points.
//
// y ↑
// |
// 12 | •
// | •
// 10 | •
// | •
// 8 | • •
// |
// 6 | •
// |
// 4 | •
// |
// 2 |______________________________________________→ x
// 2 4 6 8 10 12 14
//
//
//
// STEP 2 — RANDOMLY PLACE INITIAL CENTROIDS
// The algorithm begins by placing K centroids at random positions.
// These centroids act as the temporary “representatives” of clusters.
// Their starting positions heavily influence the first assignment step.
//
// y ↑
// |
// 12 | •
// | •
// 10 | • C2 ×
// | •
// 8 | • •
// |
// 6 | C1 × •
// |
// 4 | •
// |
// 2 |______________________________________________→ x
// 2 4 6 8 10 12 14
//
//
//
// STEP 3 — ASSIGN POINTS TO NEAREST CENTROID
// Each point is compared to all centroids.
// Using simple Euclidean distance, each point joins the cluster
// of the centroid it is closest to.
// This creates a temporary grouping of the data.
//
// (Coloring concept shown using labels)
//
// - Points closer to C1 → Cluster 1
// - Points closer to C2 → Cluster 2
//
// y ↑
// |
// 12 | 2
// | 1
// 10 | 1 C2 ×
// | 2
// 8 | 1 2
// |
// 6 | C1 × 2
// |
// 4 | 1
// |
// 2 |______________________________________________→ x
// 2 4 6 8 10 12 14
//
// (1 = assigned to Cluster 1, 2 = assigned to Cluster 2)
// At this stage, clusters are formed purely by distance.
Your chosen historical window becomes the static training dataset , and after fitting, the centroids never change again.
This makes the model:
Predictable
Repeatable
Consistent across backtests
Fast for live use (no recalculation of centroids every bar)
Static Training Window
You select a period with:
Training Start
Training End
Only bars inside this range are used to fit the K-means model. This window defines:
the market regime examples
the statistical distributions (means/std) for each feature
how the centroids will be positioned post-trainin
Bars before training = fully transparent
Training bars = gray
Post-training bars = full colored regimes
Feature Engineering (4D Input Vector)
Every bar during training becomes a 4-dimensional point:
This combination balances: momentum, volatility, mean-reversion, trend acceleration giving the algorithm a richer "market fingerprint" per bar.
Standardization
To prevent any feature from dominating due to scale differences (e.g., CMF near zero vs CCI ±200), all features are standardized:
standardize(value, mean, std) =>
(value - mean) / std
Centroid Initialization
Centroids start at diverse coordinates using various curves:
linear
sinusoidal
sign-preserving quadratic
tanh compression
init_centroids() =>
// Spread centroids across using different shapes per feature
for c = 0 to k_clusters - 1
frac = k_clusters == 1 ? 0.0 : c / (k_clusters - 1.0) // 0 → 1
v = frac * 2 - 1 // -1 → +1
array.set(cent_rsi, c, v) // linear
array.set(cent_cci, c, math.sin(v)) // sinusoidal
array.set(cent_cmf, c, v * v * (v < 0 ? -1 : 1)) // quadratic sign-preserving
array.set(cent_mac, c, tanh(v)) // compressed
This makes initial cluster spread “random” even though true randomness is hardly achieved in pinescript.
K-Means Iterative Refinement
The algorithm repeats these steps:
(A) Assignment Step, Each bar is assigned to the nearest centroid via Euclidean distance in 4D:
distance = sqrt(dx² + dy² + dz² + dw²)
(B) Update Step, Centroids update to the mean of points assigned to them. This repeats iterations times (configurable).
LIVE REGIME CLASSIFICATION
After training, each new bar is:
Standardized using the training mean/std
Compared to all centroids
Assigned to the nearest cluster
Bar color updates based on cluster
No re-training occurs. This ensures:
No lookahead bias
Clean historical testing
Stable regimes over time
CLUSTER BEHAVIOR & TRADING LOGIC
Clusters (0, 1, 2, 3…) hold no inherent meaning. The user defines what each cluster does.
Example of custom actions:
Cluster 0 → Cash
Cluster 1 → Long
Cluster 2 → Short
Cluster 3+ → Cash (noise regime)
This flexibility means:
One trader might have cluster 0 as consolidation.
Another might repurpose it as a breakout-loading zone.
A third might ignore 3 clusters entirely.
Example on ETHUSD
Important Note:
Any change of parameters or chart timeframe or ticker can cause the “order” of clusters to change
The script does NOT assume any cluster equals any actionable bias, user decides.
PERFORMANCE METRICS & ROC TABLE
The indicator computes average 1-bar ROC for each cluster in:
Training set
Test (live) set
This helps measure:
Cluster profitability consistency
Regime forward predictability
Whether a regime is noise, trend, or reversion-biased
EQUITY SIMULATION & FEES
Designed for close-to-close realistic backtesting.
Position = cluster of previous bar
Fees applied only on regime switches. Meaning:
Staying long → no fee
Switching long→short → fee applied
Switching any→cash → fee applied
Fee input is percentage, but script already converts internally.
Disclaimers
⚠️ This indicator uses machine-learning but does not predict the future. It classifies similarity to past regimes, nothing more.
⚠️ Backtest results are not indicative of future performance.
⚠️ Clusters have no inherent “bullish” or “bearish” meaning. You must interpret them based on your testing and your own feature engineering.
ParabolicSAR+EMA[TS_Indie]🚀 EMA + Parabolic SAR Reversal Trading Strategy
This trading system effectively combines the use of Exponential Moving Averages (EMA) with the Parabolic SAR to identify both price trends and key reversal points. The EMA Fast is used to signal the primary short-term trend, while the EMA Slow acts as a filter for the long-term trend direction. The Parabolic SAR then helps to confirm the reversal signals.
🛠️ Tools Used
1. EMA Fast – Primary Short-Term Trend
2. EMA Slow – Long-Term Trend Filter
3. Parabolic SAR – Reversal Confirmation
🎯 Entry Rules
📈 Buy Setup
1. Trend Filter: EMA Fast > EMA Slow → Uptrend
2. Pullback: Price pulls back and closes below the EMA Fast line.
3. Reversal: Price reverses/pulls back up and closes above the EMA Fast line.
4. SAR Confirmation: The previous Parabolic SAR dot is above the high, and the dot in the current candle is below the low → Reversal signal confirmed.
5. Entry: Enter Buy immediately.
📉 Sell Setup
1. Trend Filter: EMA Fast < EMA Slow → Downtrend
2. Pullback: Price pulls back and closes above the EMA Fast line.
3. Reversal: Price reverses/pulls back down and closes below the EMA Fast line.
4. SAR Confirmation: The previous Parabolic SAR dot is below the low, and the dot in the current candle is above the high → Reversal signal confirmed.
5. Entry: Enter Sell immediately.
💰 Exit Management (Entry, Stop Loss, Take Profit)
1. Entry: Enter the order at the closing price of the signal candle.
2. Stop Loss (SL): Set the Stop Loss at the Parabolic SAR dot.
3. Take Profit (TP): Calculated from the Entry and Stop Loss points, multiplied by the Risk Reward Ratio.
⚙️ Optional Parameters
➭ Custom Risk/Reward Ratio for Take Profit.
➭ Option to add an ATR buffer to the Stop Loss.
➭ Adjustable EMA Fast period.
➭ Adjustable EMA Slow period.
➭ Adjustable Parabolic SAR parameters.
➭ Option to enable Long-only / Short-only positions.
➭ Customizable Backtest start and end date.
➭ Customizable trading session time.
🔔 Alert Function
Alerts display:
➭ Entry Price
➭ Stop Loss Price
➭ Take Profit Price
💡 This strategy allows for many parameter adjustments, such as the MA type, adding/subtracting from the Stop Loss using ATR, and selecting specific sessions for backtesting. If you find interesting or profitable results after adjusting the parameters, please share your comments with other traders!
⚠️ Disclaimer
This indicator is designed for educational and research purposes only. It does not guarantee profits and should not be considered financial advice. Trading in financial markets involves significant risk , including the potential loss of capital.
Mirror Blocks: StrategyMirror Blocks is an educational structural-wave model built around a unique concept:
the interaction of mirrored weighted moving averages (“blocks”) that reflect shifts in market structure as price transitions between layered symmetry zones.
Rather than attempting to “predict” markets, the Mirror Blocks framework visualizes how price behaves when it expands away from, contracts toward, or flips across stacked WMA structures. These mirrored layers form a wave-like block system that highlights transitional zones in a clean, mechanical way.
This strategy version allows you to study how these structural transitions behave in different environments and on different timeframes.
The goal is understanding wave structure, not generating signals.
How It Works
Mirror Blocks builds three mirrored layers:
Top Block (Structural High Symmetry)
Base Block (Neutral Wave)
Bottom Block (Structural Low Symmetry)
The relative position of these blocks — and how price interacts with them — helps visualize:
Compression and expansion
Reversal zones
Wave stability
Momentum transitions
Structure flips
A structure is considered bullish-stack aligned when:
Top > Base > Bottom
and bearish-stack aligned when:
Bottom > Base > Top
These formations create the core of the Mirror Blocks wave engine.
What the Strategy Version Adds
This version includes:
Long Only, Short Only, or Long & Short modes
Adjustable symmetry distance (Mirror Distance)
Configurable WMA smoothing length
Optional trend filter using fast/slow MA comparison
ENTER / EXIT / LONG / SHORT labels for structural transitions
Fixed stop-loss controls for research
A clean, transparent structure with no hidden components
It is optimized for educational chart study, not automated signals.
Intended Purpose
Mirror Blocks is meant to help traders:
Study structural transitions
Understand symmetry-based wave models
Explore how price interacts with mirrored layers
Examine reversals and expansions from a mechanical perspective
Conduct long and short backtesting for research
Develop a deeper sense of market rhythm
This is not a prediction model.
It is a visual and structural framework for understanding movement.
Backtesting Disclaimer
Backtest results can vary depending on:
Slippage settings
Commission settings
Timeframe
Asset volatility
Structural sensitivity parameters
Past performance does not guarantee future results.
Use this as a research tool only.
Warnings & Compliance
This script is educational.
It is not financial advice.
It does not provide signals.
It does not promise profitability.
The purpose is to help visualize structure, not predict price.
The strategy features are simply here to help users study how structural transitions behave under various conditions.
License
Released under the Michael Culpepper Gratitude License (2025).
Use and modify freely for education and research with attribution.
No resale.
No promises of profitability.
Purpose is understanding, not signals.
Forever ModelForever Model is a comprehensive trading framework that visualizes market structure through Fair Value Gaps (FVGs), Smart Money Technique (SMT) divergences, and order block confirmations. The indicator identifies potential price rotations by tracking internal liquidity zones, correlation breaks between assets, and confirmation signals across multiple timeframes.
Designed for clarity and repeatability, the model presents a structured visual logic that supports manual analysis while maintaining flexibility across different assets and timeframes. All components are non-repainting, ensuring historical accuracy and reliable backtesting.
Description
The model operates through a three-part sequence that forms the visual foundation for identifying potential market rotations:
Fair Value Gaps (FVGs)
FVGs are price imbalances detected on higher timeframes—areas where price moved rapidly between candles, leaving an inefficiency that may be revisited. The indicator identifies both bullish and bearish FVGs, displaying them with color-coded levels that extend until mitigated.
: Chart showing FVG detection with colored lines indicating bullish (green) and bearish (red) gaps
Smart Money Technique (SMT)
SMT detects divergence between the current chart asset and a correlated pair. When one asset makes a higher high while the other forms a lower high (or vice versa), it indicates a potential shift in delivery. The indicator draws visual lines connecting these divergence points and can filter SMTs to only display those occurring within FVG ranges.
: Chart showing SMT divergence lines between two correlated assets with labels indicating the pair name]
Order Block Confirmations (OB)
When price confirms a signal by crossing a pivot level, an Order Block is created. The confirmation line extends from the pivot point, labeled as "OB+" for bullish signals or "OB-" for bearish signals. The latest OB extends to the current bar, while previous OBs remain fixed at their confirmation points.
: Chart showing OB confirmation lines with OB+ and OB- labels at confirmation points]
Key Features
Higher Timeframe (HTF) Detection
FVGs are detected on a higher timeframe than the current chart, with automatic HTF selection based on the current timeframe or manual override options. This ensures that internal liquidity zones are identified from the appropriate structural context.
External Range Liquidity (ERL)
Tracks the latest higher timeframe pivot highs and lows, marking external liquidity levels that may be revisited. ERL levels are displayed as horizontal lines with optional labels, providing context for potential continuation targets.
: Chart showing ERL lines at recent HTF pivot points
Signal Creation and Confirmation System
The model creates pending signals when FVG levels are mitigated. Signals confirm when price closes beyond a pivot level, creating the OB confirmation line. Stop levels are automatically calculated from the maximum (bearish) or minimum (bullish) price between signal creation and confirmation.
SMT Filtering Options
Display all SMTs or only those within FVG ranges
Require SMT for signal confirmation (optional filter)
Automatic or manual SMT pair selection
Support for both correlated and inverse correlated pairs
Directional Bias Filter
Filter FVG detection to show only bullish bias, bearish bias, or both. This allows analysts to align with higher timeframe structure or focus on unidirectional setups.
Confirmation Line Management
Toggle to extend only the latest confirmation line or all confirmation lines
Transparent label backgrounds with colored text (red for bearish, green for bullish)
Automatic cleanup of old confirmation lines (keeps last 50)
Labels positioned at line end (latest) or middle (older lines)
Position Sizing Calculator
Optional position sizing based on account balance, risk percentage or fixed amount, and instrument-specific contract sizes. Supports prop firm calculations and can display position size, entry, and stop levels in the dashboard.
Information Dashboard
A customizable floating table displays:
Current timeframe and HTF
Remaining time in current bar
Current bias direction
Latest confirmed signal details (type, size, entry, stop)
Pending signal status
The dashboard can be repositioned, resized, and styled to match your preferences.
Special Range Creation
When signals confirm, the model can automatically create special range levels from stop prices. These levels persist on the chart as important reference points, even after mitigation, serving as potential reversal zones for future signals.
Label and Visualization Controls
Toggle FVG labels on/off
Toggle confirmation lines on/off
Customizable colors for bullish and bearish FVGs
ERL color customization
SMT line width adjustment
Order Flow Integration (Optional)
The indicator includes optional Open Interest (OI) based special range detection, allowing integration with order flow analysis for enhanced context.
Technical Notes
All components are non-repainting—once formed, they remain on the chart
FVGs cannot be mitigated on their creation bar
Signal-based special ranges persist even after mitigation (important stop levels)
SMT detection supports both HTF and chart timeframe modes
Maximum 50 confirmation lines are maintained for performance
The model is designed to work across all asset classes and timeframes, providing a consistent framework for identifying potential market rotations through the interaction of internal liquidity, correlation breaks, and confirmation signals, this does not constitute as trading advice, past performance is no indication of future performance , this is entirely done for entertainment and educational purposes
Time ColorsTime Colors – Custom Trading Sessions Visualizer
Time Colors is a simple visual helper for backtesting and intraday trading.
It lets you define up to 10 custom time blocks and highlights the chart background during those periods.
Use it to:
Mark the exact times when you are realistically able to trade
Visually separate different sessions (e.g. London, New York, Asia)
Filter out “dream trades” that happened while you were sleeping or at work
Features
Up to 10 fully customizable time blocks
Individual on/off toggle for each block
Custom color for every block
Works on any intraday timeframe
Session resolution input for flexible time handling
How to use
Add the Time Colors indicator to your chart.
Set each Time Block to your personal trading hours (based on your TradingView timezone).
Disable blocks you don’t need with “Enable Block X”.
When backtesting, only count trades that occur inside the colored areas – those are the times you could have actually taken trades.
LapseBacktestingTableLibrary "LapseBacktestingMetrics"
This library provides a robust set of quantitative backtesting and performance evaluation functions for Pine Script strategies. It’s designed to help traders, quants, and developers assess risk, return, and robustness through detailed statistical metrics — including Sharpe, Sortino, Omega, drawdowns, and trade efficiency.
Built to enhance any trading strategy’s evaluation framework, this library allows you to visualize performance with the quantlapseTable() function, producing an interactive on-chart performance table.
Credit to EliCobra and BikeLife76 for original concept inspiration.
curve(disp_ind)
Retrieves a selected performance curve of your strategy.
Parameters:
disp_ind (simple string): Type of curve to plot. Options include "Equity", "Open Profit", "Net Profit", "Gross Profit".
Returns: (float) Corresponding performance curve value.
cleaner(disp_ind, plot)
Filters and displays selected strategy plots for clean visualization.
Parameters:
disp_ind (simple string): Type of display.
plot (simple float): Strategy plot variable.
Returns: (float) Filtered plot value.
maxEquityDrawDown()
Calculates the maximum equity drawdown during the strategy’s lifecycle.
Returns: (float) Maximum equity drawdown percentage.
maxTradeDrawDown()
Computes the worst intra-trade drawdown among all closed trades.
Returns: (float) Maximum intra-trade drawdown percentage.
consecutive_wins()
Finds the highest number of consecutive winning trades.
Returns: (int) Maximum consecutive wins.
consecutive_losses()
Finds the highest number of consecutive losing trades.
Returns: (int) Maximum consecutive losses.
no_position()
Counts the maximum consecutive bars where no position was held.
Returns: (int) Maximum flat days count.
long_profit()
Calculates total profit generated by long positions as a percentage of initial capital.
Returns: (float) Total long profit %.
short_profit()
Calculates total profit generated by short positions as a percentage of initial capital.
Returns: (float) Total short profit %.
prev_month()
Measures the previous month’s profit or loss based on equity change.
Returns: (float) Monthly equity delta.
w_months()
Counts the number of profitable months in the backtest.
Returns: (int) Total winning months.
l_months()
Counts the number of losing months in the backtest.
Returns: (int) Total losing months.
checktf()
Returns the time-adjusted scaling factor used in Sharpe and Sortino ratio calculations based on chart timeframe.
Returns: (float) Annualization multiplier.
stat_calc()
Performs complete statistical computation including drawdowns, Sharpe, Sortino, Omega, trade stats, and profit ratios.
Returns: (array)
.
f_colors(x, nv)
Generates a color gradient for performance values, supporting dynamic table visualization.
Parameters:
x (simple string): Metric label name.
nv (simple float): Metric numerical value.
Returns: (color) Gradient color value for table background.
quantlapseTable(option, position)
Displays an interactive Performance Table summarizing all major backtesting metrics.
Includes Sharpe, Sortino, Omega, Profit Factor, drawdowns, profitability %, and trade statistics.
Parameters:
option (simple string): Table type — "Full", "Simple", or "None".
position (simple string): Table position — "Top Left", "Middle Right", "Bottom Left", etc.
Returns: (table) On-chart performance visualization table.
This library empowers advanced quantitative evaluation directly within Pine Script®, ideal for strategy developers seeking deeper performance diagnostics and intuitive on-chart metrics.
Complete DashboardPA+AI PRE/GO Trading Dashboard v0.1.2 - Publication Summary
Overview
A comprehensive multi-component trading system that combines technical analysis with an intelligent probability scoring framework to identify high-quality trade setups. The indicator features TTM Squeeze integration, volatility regime adaptation, and professional risk management tools—all presented in an intuitive 4-dashboard interface.
Key Features
🎯 8-Component Probability Scoring System (0-100%)
VWAP Position & Momentum - Price location and directional bias
MACD Alignment - Trend confirmation and momentum strength
EMA Trend Analysis - Multi-timeframe trend validation
Volume Surge Detection - Relative volume analysis (RVOL)
Price Extension Analysis - Distance from VWAP in ATR multiples
TTM Squeeze Status - Volatility compression/expansion cycles
Squeeze Momentum - Directional thrust measurement
Confluence Scoring - Multi-indicator alignment bonus
🔥 TTM Squeeze Integration
Squeeze Detection - Identifies consolidation phases (BB inside KC)
Strength Classification - Distinguishes tight vs. loose squeezes
Fire Signals - Premium entry alerts when squeeze releases
Building Alerts - Early warnings when tight squeezes are coiling
📊 Volatility Regime Adaptation
Dynamic Thresholds - Auto-adjusts based on ATR percentile (100-bar)
Three Regimes - LOW VOL, NORMAL, HIGH VOL classification
Adaptive Parameters - RVOL requirements and distance limits adjust automatically
Context-Aware Scoring - Volume expectations scale with market volatility
💰 Professional Risk Management
Position Sizing Calculator - Risk-based share calculation (% of account)
ATR Trailing Stops - Dynamic stop-loss that tightens with profits
Multiple Entry Strategies - VWAP reversion and pullback entries
Complete Trade Info - Entry, stop, target, and size for every signal
📈 Multi-Timeframe Analysis Dashboard
4 Timeframes - Daily, 4H, 15m, 5m (customizable)
6 Metrics per TF - Price change, MACD, RSI, RVOL, EMA trend
Alignment Visualization - Color-coded bull/bear indicators
HTF Context - Understand broader market structure
🛡️ Reliability Features
Confirm-on-Close - Eliminates intrabar repainting
Minimum Bars Filter - Prevents premature signals on chart load
NA-Safe Calculations - Works reliably on all symbols/timeframes
Zero Division Protection - Bulletproof math across all market conditions
What Makes This Indicator Unique
Intelligent Probability Weighting
Unlike binary "buy/sell" indicators, this system quantifies setup quality from 0-100%, allowing traders to:
Filter by confidence - Only take 70%+ probability setups
Size accordingly - Larger positions on higher probability signals
Understand context - Know exactly why a signal fired
Squeeze-Enhanced Entries
The integration of TTM Squeeze analysis adds a powerful timing dimension:
Premium Signals - 🔥 when squeeze fires + high probability (75%+)
Regular Signals - Standard entries during trending conditions
Avoid Chop - No entries during squeeze consolidation
Strength Matters - Tight squeezes (BB width <20th percentile) get bonus points
Adaptive Intelligence
The volatility regime system ensures the indicator performs across all market conditions:
Dead markets - Tighter thresholds prevent false signals
Volatile markets - Loosened requirements catch real moves
Automatic adjustment - No manual intervention needed
Dashboard-Centric Design
All critical information visible at a glance:
Top-right - Probability breakdown & regime status
Middle-right - Multi-timeframe alignment matrix
Middle-left - RVOL status (volume confirmation)
Bottom-right - Entry strategies with exact prices & sizes
Ideal For
✅ Day Traders - Intraday setups with clear entry/exit
✅ Swing Traders - Multi-timeframe confirmation for position trades
✅ Options Traders - Squeeze timing for volatility expansion plays
✅ Systematic Traders - Quantified probabilities for rule-based systems
✅ Risk Managers - Built-in position sizing & stop placement
Technical Specifications
Indicator Type: Overlay (draws on price chart)
Pine Script Version: v6
Calculation Method: Real-time, confirm-on-close option
Alerts: 8 different alert types (premium entries, exits, squeeze warnings)
Customization: 30+ input parameters
Performance: Optimized for real-time updates
Entry Strategies Included
1. VWAP Reversion
Enter when price bounces off VWAP ± 0.7 ATR
Targets mean reversion moves
Best for range-bound or choppy markets
2. Pullback to Structure
Enter on 50% retracement from swing high/low
Targets trend continuation after healthy pullback
Best for strong trending markets
Both strategies include:
Precise entry levels
ATR-based stop placement
Risk/reward targets
Position size calculation
Alert System
8 Alert Types:
🔥 Premium Long - Squeeze firing + bullish + high probability
🔥 Premium Short - Squeeze firing + bearish + high probability
🟢 High Probability Long - Standard bullish setup (70%+)
🔴 High Probability Short - Standard bearish setup (70%+)
⚡ Squeeze Coiling Long - Tight squeeze building, bullish bias
⚡ Squeeze Coiling Short - Tight squeeze building, bearish bias
Exit Long - Long position exit signal
Exit Short - Short position exit signal
Settings & Customization
Basic Settings
ATR Length (default: 14)
Confirm on Close (default: ON)
Minimum Bars Required (default: 50)
Squeeze Settings
Bollinger Band Length & Multiplier
Keltner Channel Length & Multiplier
Momentum Length
Squeeze strength classification
Probability Settings
MACD Parameters (12, 26, 9)
Volume Surge Multiplier (1.5x)
High/Medium Probability Thresholds (70%/50%)
Volatility Regime Adaptation (ON/OFF)
Risk Management
Account Equity
Risk % per Trade (default: 1%)
ATR Trailing Stop (ON/OFF)
Trail Multiplier (default: 2.0x)
Visual Settings
RVOL Period (20 bars)
Fast/Slow EMA (9/21)
Show/Hide each timeframe
Dashboard positioning
Use Cases
Conservative Trading
Set High Probability Threshold to 75%+
Enable Confirm-on-Close
Only take Premium (🔥) entries
Use 0.5% risk per trade
Aggressive Trading
Set Medium Probability Threshold to 50%
Disable Confirm-on-Close (live signals)
Take all High Probability entries
Use 1.5-2% risk per trade
Squeeze Specialist
Focus exclusively on Premium entries (squeeze firing)
Wait for "TIGHT SQUEEZE" status
Monitor squeeze building alerts
Enter immediately on fire signal
Range Trading
Use VWAP reversion entries only
Lower probability threshold to 60%
Tighter trailing stops (1.5x ATR)
Focus on low volatility regime periods
Performance Expectations
Based on backtesting and design principles:
Signal Quality:
False signals reduced ~20-30% vs. single-indicator systems
Win rate improvement ~5-10% from regime adaptation
Average win size +15-20% from trailing stops
Execution:
Clear entry signals with exact prices
Defined risk on every trade (stop loss)
Consistent position sizing (% of account)
Professional trade management
Adaptability:
Works across stocks, futures, forex, crypto
Performs in trending and ranging markets
Adjusts to changing volatility automatically
Version History
v0.1.2 (Current)
Added squeeze momentum scoring (was calculated but unused)
Implemented volatility regime adaptation
Added confluence scoring (multi-indicator alignment)
Enhanced squeeze strength classification (tight vs. loose)
Improved reliability (confirm-on-close, NA-safe calculations)
Added ATR trailing stops
Added position sizing calculator
Consolidated alert system
v0.1.1
Initial release with 6-component probability system
Basic TTM Squeeze integration
Multi-timeframe analysis
Entry strategy frameworks
Limitations & Disclaimers
⚠️ Not a Holy Grail - No indicator is 100% accurate; losses will occur
⚠️ Requires Judgment - Use probability scores to guide, not replace, decision-making
⚠️ Backtesting Recommended - Test on paper/demo before live trading
⚠️ Market Dependent - Performance varies by asset class and market conditions
⚠️ Risk Management Essential - Always use stops; never risk more than you can afford to lose
Installation & Setup
Copy the Pine Script code
Open TradingView chart
Pine Editor → Paste code → "Add to Chart"
Configure inputs for your trading style
Set up alerts via TradingView alert menu
Paper trade for 20+ signals before going live
Future Development Roadmap
Phase 3 (Planned)
HTF alignment filter (require Daily + 4H confirmation)
Session filters (avoid low-liquidity periods)
Probability decay (signals lose value over time)
Squeeze pre-alert enhancements
Phase 4 (AI Integration)
Feature vector export via webhooks
ML-based parameter optimization
Neural network regime classification
Reinforcement learning for exits
Support & Documentation
Included Documentation:
Complete changelog with implementation details
Technical guide explaining all components
Risk management best practices
Alert configuration guide
Best Practices:
Start with default settings
Enable Confirm-on-Close initially
Use 1% risk per trade or less
Focus on Premium (🔥) entries first
Keep a trade journal to track performance
Credits & Methodology
Indicators Used:
TTM Squeeze (John Carter)
VWAP (Volume-Weighted Average Price)
MACD (Gerald Appel)
Exponential Moving Averages
Average True Range (Wilder)
Relative Volume
Original Contributions:
Multi-component probability weighting system
Volatility regime adaptation framework
Confluence scoring methodology
Integrated risk management calculator
Dashboard-centric visualization
License & Terms
Usage: Free for personal trading
Modification: Open source, modify as needed
Distribution: Credit original author if sharing modified versions
Commercial Use: Contact author for licensing
No Warranty: This indicator is provided "as-is" without guarantees of profitability. Trading involves substantial risk. Past performance does not guarantee future results.
Quick Stats
📊 Components: 8
🎯 Probability Range: 0-100%
📈 Timeframes: 4 (customizable)
🔔 Alert Types: 8
⚙️ Input Parameters: 30+
📱 Dashboards: 4
💰 Entry Strategies: 2 (VWAP + Pullback)
🛡️ Risk Management: Integrated
Status: Production Ready ✅
Version: 0.1.2
Last Updated: November 2025
Pine Script: v6
File Name: PA_AI_PRE_GO_v0.1.2_FIXED.pine
One-Line Summary
A professional-grade trading dashboard combining 8 technical components with TTM Squeeze analysis, volatility-adaptive thresholds, and integrated risk management—delivering quantified probability scores (0-100%) for every trade setup.
Dual Harmonic-based AHR DCA (Default :BTC-ETH)A panel indicator designed for dual-asset BTC/ETH DCA (Dollar Cost Averaging) decisions.
It is inspired by the Chinese community indicator "AHR999" proposed by “Jiushen”.
How to use:
Lower HM-based AHR → cheaper (potential buy zone).
Higher HM-based AHR → more expensive (potential risk zone).
Higher than Risk Threshold → consider to sell, but not suitable for DCA.
When both AHR lines are below the Risk threshold → buy the cheaper one (or split if similar).
If one AHR is above Risk → buy the other asset.
If both are above Risk → simulation shows “STOP (both risk)”.
Not limited to BTC/ETH — you can freely change symbols in the input panel
to build any dual-asset DCA pair you want (e.g., BTC/BNB, ETH/SOL, etc.).
What you’ll see:
Two lines: AHR BTC (HM) and AHR ETH (HM)
Two dashed lines: OppThreshold (green) and RiskThreshold (red)
Colored fill showing which asset is cheaper (BTC or ETH)
Buy markers:
- B = Buy BTC
- E = Buy ETH
- D = Dual (split budget)
Top-right table: prices, AHRs, thresholds, qOpp/qRisk%, simulation, P&L
Labels showing last-bar AHR values
Core idea:
Use an AHR based on Harmonic Moving Average (HM) — a ratio that measures how “cheap or expensive” price is relative to both its short-term mean and long-term trend.
The original AHR999 used SMA and was designed for BTC only.
This indicator extends it with cross-exchange percentile mapping, allowing the empirical “opportunity/risk” zones of the AHR999 (on Bitstamp) to adapt automatically to the current market pair.
The indicator derives two adaptive thresholds:
OppThreshold – opportunity zone
RiskThreshold – risk zone
These thresholds are compared with the current HM-based AHR of BTC and ETH to decide which asset is cheaper, and whether it is good to DCA or not, or considering to sell(When it in risk area).
This version uses
Display base: Binance (default: perpetual) with HM-based AHR
Percentile base: Bitstamp spot SMA-AHR (complete, stable history)
Rolling window: 2920 daily bars (~8 years) for percentile tracking
Concept summary
AHR measures the ratio of price to its long-term regression and short-term mean.
HM replaces SMA to better reflect equal-fiat-cost DCA behavior.
Cross-exchange percentile mapping (Bitstamp → Binance) keeps thresholds consistent with the original AHR999 interpretation.
Recommended settings (1D):
DCA length (harmonic): 200
Log-regression lookback: 1825 (≈5 years)
Rolling window: 2920 (≈8 years)
Reference thresholds: 0.45 / 1.20 (AHR999 empirical priors)
Tie split tolerance (ΔAHR): 0.05
Daily budget: 15 USDT (simulation)
All display options can be toggled: table, markers, labels, etc.
Notes:
When the rolling window is filled (2920 bars by default), thresholds are first calculated and then visually backfilled as left-extended lines.
The “buy markers” and “decision table” are light simulations without fees or funding costs — for rhythm and relative analysis, not backtesting.






















