Candlestick Strength and Weakness with RSI and OBVThe "Candlestick Strength and Weakness with RSI and OBV" indicator, denoted as CSW, is a tool designed to assist traders in identifying potential trend reversals in financial markets. The CSW indicator combines the analysis of candlestick patterns, relative strength index (RSI), and on-balance volume (OBV) to provide traders with valuable insights into market dynamics.
The CSW indicator calculates the strength and weakness of each candlestick based on its open, close, high, and low prices. It considers the body range, upper shadow range, and lower shadow range of the candlestick to determine the distribution of strength and weakness within it. By quantifying the candlestick's strength and weakness, the indicator provides a visual representation of the balance between bullish and bearish forces in the market.
In addition to candlestick analysis, the CSW indicator incorporates RSI and OBV calculations to further validate potential trend reversals. The RSI is a widely-used momentum oscillator that measures the speed and change of price movements. The OBV, on the other hand, tracks the cumulative volume flow and helps identify periods of accumulation or distribution. By considering these indicators alongside candlestick strength and weakness, the CSW indicator enhances the accuracy of its signals.
To interpret the CSW indicator effectively, traders should consider the following:
Candlestick Strength and Weakness: The indicator plots two lines, "Candle Strength" and "Candle Weakness," representing the strength and weakness of each candlestick. The strength line indicates the bullish pressure, while the weakness line represents the bearish pressure.
Potential Reversal Signals: The CSW indicator identifies potential trend reversals based on the balance between candlestick strength and weakness, RSI readings, and OBV values. A bullish reversal signal occurs when the strength is higher than weakness, the RSI is below 30 (indicating oversold conditions), and the OBV is below its 20-period simple moving average (SMA). Conversely, a bearish reversal signal occurs when the weakness is higher than strength, the RSI is above 70 (indicating overbought conditions), and the OBV is above its 20-period SMA.
Trend Confirmation: The CSW indicator provides additional confirmation by comparing the closing price with the 20-period exponential moving average (EMA). If the closing price is above the EMA, it suggests an uptrend, while a closing price below the EMA indicates a downtrend.
Traders can add the indicator to their charts and customize its parameters based on their preferences. By monitoring the indicator's plots and observing the occurrence of potential reversal signals in alignment with the trend confirmation, traders can make informed decisions regarding entry or exit points in their trading strategies.
Cari dalam skrip untuk "relative strength"
Radar RiderThe Radar Rider indicator is a powerful tool that combines multiple technical indicators into a single spider plot, providing traders with a comprehensive view of market conditions. This article will delve into the workings of each built-in indicator and their arrangement within the spider plot. To better understand the structure of the script, let's first examine some of the primary functions and how they are utilized in the script.
Normalize Function: normalize(close, len)
The normalize function takes the close price and a length as arguments and normalizes the price data by scaling it between 0 and 1, making it easier to compare different indicators.
Exponential Moving Average (EMA) Filter: bes(source, alpha)
The EMA filter is used to smooth out data using an exponential moving average, with the given alpha value defining the level of smoothing. This helps reduce noise and enhance the trend-following characteristics of the indicators.
Maximum and Minimum Functions: max(src) and min(src)
These functions find the maximum and minimum values of the input data over a certain period, respectively. These values are used in the normalization process and can help identify extreme conditions in the market.
Min-Max Function: min_max(src)
The min-max function scales the input data between 0 and 100 by dividing the difference between the data point and the minimum value by the range between the maximum and minimum values. This standardizes the data, making it easier to compare across different indicators.
Slope Function: slope(source, length, n_len, pre_smoothing = 0.15, post_smoothing = 0.7)
The slope function calculates the slope of a given data source over a specified length, and then normalizes it using the provided normalization length. Pre-smoothing and post-smoothing values can be adjusted to control the level of smoothing applied to the data before and after calculating the slope.
Percent Function: percent(x, y)
The percent function calculates the percentage difference between two values, x and y. This is useful for comparing the relative change in different indicators.
In the given code, there are multiple indicators included. Here, we will discuss each of them in detail.
EMA Diff:
The Exponential Moving Average (EMA) Diff is the difference between two EMA values of different lengths. The EMA is a type of moving average that gives more weight to recent data points. The EMA Diff helps traders identify trends and potential trend reversals. In the code, the EMA Diff is calculated using the ema_diff() function, which takes length, close, filter, and len_norm as parameters.
Percent Rank EMA Diff:
The Percent Rank EMA Diff is the percentage rank of the EMA Diff within a given range. It helps traders identify overbought or oversold conditions in the market. In the code, the Percent Rank EMA Diff is calculated using the percent_rank_ema_diff() function, which takes length, close, filter, and len_norm as parameters.
EMA Diff Longer:
The EMA Diff Longer is the difference between two EMA values of different lengths, similar to EMA Diff but with a longer period. In the code, the EMA Diff Longer is calculated using the ema_diff_longer() function, which takes length, close, filter, and len_norm as parameters.
RSI Filter:
The Relative Strength Index (RSI) is a momentum oscillator that measures the speed and change of price movements. The RSI Filter is the RSI value passed through a filter to smooth out the data. In the code, the RSI Filter is calculated using the rsi_filter() function, which takes length, close, and filter as parameters.
RSI Diff Normalized:
The RSI Diff Normalized is the normalized value of the derivative of the RSI. It helps traders identify potential trend reversals in the market. In the code, the RSI Diff Normalized is calculated using the rsi_diff_normalized() function, which takes length, close, filter, len_mad, and len_norm as parameters.
Z Score:
The Z Score is a statistical measurement that describes a value's relationship to the mean of a group of values. In the context of the code, the Z Score is calculated for the closing price of a security. The z_score() function takes length, close, filter, and len_norm as parameters.
EMA Normalized:
The EMA Normalized is the normalized value of the EMA, which helps traders identify trends and potential trend reversals in the market. In the code, the EMA Normalized is calculated using the ema_normalized() function, which takes length, close, filter, and len_norm as parameters.
WMA Volume Normalized:
The Weighted Moving Average (WMA) Volume Normalized is the normalized value of the WMA of the volume. It helps traders identify volume trends and potential trend reversals in the market. In the code, the WMA Volume Normalized is calculated using the wma_volume_normalized() function, which takes length, volume, filter, and len_norm as parameters.
EMA Close Diff Normalized:
The EMA Close Diff Normalized is the normalized value of the derivative of the EMA of the closing price. It helps traders identify potential trend reversals in the market. In the code, the EMA Close Diff Normalized is calculated using the ema_close_diff_normalized() function, which takes length, close, filter, len_mad, and len_norm as parameters.
Momentum Normalized:
The Momentum Normalized is the normalized value of the momentum, which measures the rate of change of a security's price. It helps traders identify trends and potential trend reversals in the market. In the code, the Momentum Normalized is calculated using the momentum_normalized() function, which takes length, close, filter, and len_norm as parameters.
Slope Normalized:
The Slope Normalized is the normalized value of the slope, which measures the rate of change of a security's price over a specified period. It helps traders identify trends and potential trend reversals in the market. In the code, the Slope Normalized is calculated using the slope_normalized() function, which takes length, close, filter, and len_norm as parameters.
Trend Intensity:
Trend Intensity is a measure of the strength of a security's price trend. It is based on the difference between the average of price increases and the average of price decreases over a given period. The trend_intensity() function in the code calculates the Trend Intensity by taking length, close, filter, and len_norm as parameters.
Volatility Ratio:
The Volatility Ratio is a measure of the volatility of a security's price, calculated as the ratio of the True Range (TR) to the Exponential Moving Average (EMA) of the TR. The volatility_ratio() function in the code calculates the Volatility Ratio by taking length, high, low, close, and filter as parameters.
Commodity Channel Index (CCI):
The Commodity Channel Index (CCI) is a momentum-based oscillator used to help determine when an investment vehicle is reaching a condition of being overbought or oversold. The CCI is calculated as the difference between the mean price of a security and its moving average, divided by the mean absolute deviation (MAD) of the mean price. In the code, the CCI is calculated using the cci() function, which takes length, high, low, close, and filter as parameters.
These indicators are combined in the code to create a comprehensive trading strategy that considers multiple factors such as trend strength, momentum, volatility, and overbought/oversold conditions. The combined analysis provided by these indicators can help traders make informed decisions and improve their chances of success in the market.
The Radar Rider indicator is a powerful tool that combines multiple technical indicators into a single, easy-to-read visualization. By understanding the inner workings of each built-in indicator and their arrangement within the spider plot, traders can better interpret market conditions and make informed trading decisions.
FTR, WMA, OBV & RSI StrategyThis Pine Script code is a trading strategy that uses several indicators such as Fisher Transform (FTR), On-Balance Volume (OBV), Relative Strength Index (RSI), and a Weighted Moving Average (WMA). The strategy generates buy and sell signals based on the conditions of these indicators.
The Fisher Transform function is a technical indicator that uses past prices to determine whether the current market is bullish or bearish. The Fisher Transform function takes in four multipliers and a length parameter. The four multipliers are used to calculate four Fisher Transform values, and these values are used in combination to determine if the market is bullish or bearish.
The Weighted Moving Average (WMA) is a technical indicator that smooths out the price data by giving more weight to the most recent prices.
The Relative Strength Index (RSI) is a momentum indicator that measures the strength of a security's price action. The RSI ranges from 0 to 100 and is typically used to identify overbought or oversold conditions in the market.
The On-Balance Volume (OBV) is a technical indicator that uses volume to predict changes in the stock price. OBV values are calculated by adding volume on up days and subtracting volume on down days.
The strategy uses the Fisher Transform values to generate buy and sell signals when all four Fisher Transform values change color. It also uses the WMA to determine if the trend is bullish or bearish, the OBV to confirm the trend, and the RSI to filter out false signals.
The red and green triangular arrows attempt to indicate that the trend is bullish or bearish and should not be traded against in the opposite direction. This helps with my FOMO :)
All comments welcome!
The script should not be relied upon alone, there are no stop loss or take profit filters. The best results have been back-tested using Tradingview on the 45m - 3 hour timeframes.
RS RatingHello everyone.
The RS Rating (or Relative Strenght Rating) is a metric that tracks a stock's price performance relative to the rest of the market. Specifically, it looks at a stock's relative strength over the last 52 weeks.
It allows you to identify at a glance stocks that are outperforming the market and may be poised for further gains.
Designed for break-out traders, trend follower, value investors, the RS Rating can help you identify promising opportunities and make informed investment decisions.
The Rating stands as follow:
- From 1 (worst) to 99 (best)
- 99 rating means the stock is outperforming 99% of all stocks in terms of relative share price performance over the last 52 weeks.
The RS Rating is accompanied by the RS line which is a representation of the progress of the asset against the comparative symbol. (Here SP500)
Of course this script is inspired by the IBD rating system.
The results may be equivalent but it is not guaranteed.
This indicator proposes a scoring system in the style of the one proposed by IBD.
Indeed for an optimal result, it would be necessary to compare the relative performance of all actions, which is not yet possible on PineScript.
Here is the formula for calculating the score:
RS Score = 40% * P3 + 20% * P6 + 20% * P9 + 20% * P12
With
P3 = Performance over the last 3 months
P6 = Performance over the last 6 months
P9 = Performance over the last 9 months
P12 = Performance over the last 12 months
There is no equivalent solution for the moment on TradingView.
The rating score will only appear on the daily timeframe.
For now it's my pleasure to share!
Mean Reversion and TrendfollowingTitle: Mean Reversion and Trendfollowing
Introduction:
This script presents a hybrid trading strategy that combines mean reversion and trend following techniques. The strategy aims to capitalize on short-term price corrections during a downtrend (mean reversion) as well as ride the momentum of a trending market (trend following). It uses a 200-period Simple Moving Average (SMA) and a 2-period Relative Strength Index (RSI) to generate buy and sell signals.
Key Features:
Combines mean reversion and trend following techniques
Utilizes 200-period SMA and 2-period RSI
Customizable starting date
Allows for enabling/disabling mean reversion or trend following modes
Adjustable position sizing for trend following and mean reversion
Script Description:
The script implements a trading strategy that combines mean reversion and trend following techniques. Users can enable or disable either of these techniques through the input options. The strategy uses a 200-period Simple Moving Average (SMA) and a 2-period Relative Strength Index (RSI) to generate buy and sell signals.
The mean reversion mode is active when the price is below the SMA200, while the trend following mode is active when the price is above the SMA200. The script generates buy signals when the RSI is below 20 (oversold) in mean reversion mode or when the price is above the SMA200 in trend following mode. The script generates sell signals when the RSI is above 80 (overbought) in mean reversion mode or when the price falls below 95% of the SMA200 in trend following mode.
Users can adjust the position sizing for both trend following and mean reversion modes using the input options.
To use this script on TradingView, follow these steps:
Open TradingView and load your preferred chart.
Click on the 'Pine Editor' tab located at the bottom of the screen.
Paste the provided script into the Pine Editor.
Click 'Add to Chart' to apply the strategy to your chart.
Please note that the past performance of any trading system or methodology is not necessarily indicative of future results. Always use proper risk management and consult a financial advisor before making any investment decisions.
------
The following is a summary of the underlying whitepaper (onlinelibrary.wiley.com) for this strategy:
This paper proposes a theory of securities market under- and overreactions based on two psychological biases: investor overconfidence about the precision of private information and biased self-attribution, which causes asymmetric shifts in investors' confidence as a function of their investment outcomes. The authors show that overconfidence implies negative long-lag autocorrelations, excess volatility, and public-event-based return predictability. Biased self-attribution adds positive short-lag autocorrelations (momentum), short-run earnings "drift," and negative correlation between future returns and long-term past stock market and accounting performance.
The paper explains that there is empirical evidence challenging the traditional view that securities are rationally priced to reflect all publicly available information. Some of these anomalies include event-based return predictability, short-term momentum, long-term reversal, high volatility of asset prices relative to fundamentals, and short-run post-earnings announcement stock price "drift."
The authors argue that investor overconfidence can lead to stock prices overreacting to private information signals and underreacting to public signals. This overreaction-correction pattern is consistent with long-run negative autocorrelation in stock returns, excess volatility, and further implications for volatility conditional on the type of signal. The market's tendency to over- or underreact to different types of information allows the authors to address the pattern that average announcement date returns in virtually all event studies are of the same sign as the average post-event abnormal returns.
Biased self-attribution implies short-run momentum and long-term reversals in security prices. The dynamic analysis based on biased self-attribution can also lead to a lag-dependent response to corporate events. Cash flow or earnings surprises at first tend to reinforce confidence, causing a same-direction average stock price trend. Later reversal of overreaction can lead to an opposing stock price trend.
The paper concludes by summarizing the findings, relating the analysis to the literature on exogenous noise trading, and discussing issues related to the survival of overconfident traders in financial markets.
Relative Performance Dashboard v. 2This is a smaller and cleaner version of my previous Relative Performance table. It looks at the rate of change over 1M, 3M, 6M, 1YR & YTD and displays those for the current chart's ticker vs. an index/ticker of your choosing (SPX is default). I also have some fields for the ADR of the displayed chart, how far away the displayed chart is from 52-week highs, and a single number that compares the average relative strength of the displayed chart vs. the index. The way this average calculates is customizable by the user.
I like using this table next to an Earnings/Sales/Volume table that already exists by another user in the same pane and I designed this one so it can look just like that one to give a great view of the both fundamental and technical strength of your ticker in the same pane.
Keeping fundamental data independent from performance data allows you to still be able to see performance on things without fundamental data (i.e. ETFs, Indices, Crypto, etc.) as any script that uses fundamental data will not display when a chart that does not have fundamental data is displayed.
RSI & BB QQE Mod (highlight)This script is a combination of the RSI, QQE and BB
Here is an explanation on how I combined them, and how they are used:
- RSI (Relative Strength Index)
- Display a smoothed version of the RSI to identify "oversold" and "overbought" market phases
- Used to calculate a QQE
- QQE (Quantitative Qualitative Estimation)
- Used to identify trend direction and trend strength
- Used to set a basis for the BB
- BB (Bollinger Bands)
- Used with QQE as a basis to determine a relative definition of "high RSI" and "low RSI"
- Used with QQE as a basis to determine the volatility of the RSI at a given moment
- Used to predict pivot points
Here are the main signals:
- When "RSI Smoothed" line above the Upper BB then "RSI Smoothed" line turns green
- Also , display green background color highlight
- Also , and if "RSI Smoothed" is above the overbought line then display a second green background color highlight
- When "RSI Smoothed" line bellow the Lower BB then "RSI Smoothed" line turns red
- Also , display red background color highlight
- Also , and if "RSI Smoothed" is bellow the oversold line then display a second red background color highlight
A tool codded to be aesthetically pleasing and VERY customisable:
- Designed for both light theme and dark theme users
- Value can be easily modified in the settings
- Colors can be easily swapped in the settings
- Opacity of "fill" & "bgcolor" regrouped as a single input
A tool codded to be easy to read and to learn from:
- Sources and inspirations all listed within the script
- Structure easily identifiable (to understand with little to no effort how the script works)
Notes :
- This script is lagging, because of that I do recommend using it on relatively large timeframe
- This script is OpenSource, feel free to reuse it, but if so please remember to include a link to my script in your sources
- This script is not a magical tool, use at your own risk
UFO + Realtime Divergences (UO x MFI)UFO + Realtime Divergences (UO x MFI) + Alerts
The UFO is a hybrid of two powerful oscillators - the Ultimate Oscillator (UO) and the Money Flow Index (MFI)
Features of the UFO include:
- Optional divergence lines drawn directly onto the oscillator in realtime.
- Configurable alerts to notify you when divergences occur, as well as centerline crossovers.
- Configurable lookback periods to fine tune the divergences drawn in order to suit different trading styles and timeframes.
- Background colouring option to indicate when the oscillator has crossed its centerline.
- Alternate timeframe feature allows you to configure the oscillator to use data from a different timeframe than the chart it is loaded on.
- 2x MTF triple-timeframe Stochastic RSI overbought and oversold confluence signals painted at the top of the panel for use as a confluence for reversal entry trades.
The core calculations of the UFO+ combine the factory settings of the Ultimate Oscillator and Money Flow Index, taking an average of their combined values for its output eg:
UO_Value + MFI_Value / 2
The result is a powerful oscillator capable of detecting high quality divergences, including on very low timeframes and highly volatile markets, it benefits from the higher weighting of the most recent price action provided by the Ultimate Oscillators calculations, as well as the calculation of the MFI, which incorporates volume data. The UFO and its incorporated 2x triple-timeframe MTF Stoch RSI overbought and oversold signals makes it well adapted for low timeframe scalping and regular divergence trades in particular.
The Ultimate Oscillator (UO)
Tradingview describes the Ultimate Oscillator as follows:
“The Ultimate Oscillator indicator (UO) is a technical analysis tool used to measure momentum across three varying timeframes. The problem with many momentum oscillators is that after a rapid advance or decline in price, they can form false divergence trading signals. For example, after a rapid rise in price, a bearish divergence signal may present itself, however price continues to rise. The Ultimate Oscillator attempts to correct this by using multiple timeframes in its calculation as opposed to just one timeframe which is what is used in most other momentum oscillators.”
You can read more about the UO and its calculations here
The Money Flow Index ( MFI )
Investopedia describes the True Strength Indicator as follows:
“The Money Flow Index ( MFI ) is a technical oscillator that uses price and volume data for identifying overbought or oversold signals in an asset. It can also be used to spot divergences which warn of a trend change in price. The oscillator moves between 0 and 100. Unlike conventional oscillators such as the Relative Strength Index ( RSI ), the Money Flow Index incorporates both price and volume data, as opposed to just price. For this reason, some analysts call MFI the volume-weighted RSI .”
You can read more about the MFI and its calculations here
The Stochastic RSI (relating to the built-in MTF Stoch RSI feature)
The popular oscillator has been described as follows:
“The Stochastic RSI is an indicator used in technical analysis that ranges between zero and one (or zero and 100 on some charting platforms) and is created by applying the Stochastic oscillator formula to a set of relative strength index ( RSI ) values rather than to standard price data. Using RSI values within the Stochastic formula gives traders an idea of whether the current RSI value is overbought or oversold. The Stochastic RSI oscillator was developed to take advantage of both momentum indicators in order to create a more sensitive indicator that is attuned to a specific security's historical performance rather than a generalized analysis of price change.”
You can read more about the Stochastic RSI and its calculations here
How do traders use overbought and oversold levels in their trading?
The oversold level, that is when the Stochastic RSI is above the 80 level is typically interpreted as being 'overbought', and below the 20 level is typically considered 'oversold'. Traders will often use the Stochastic RSI at an overbought level as a confluence for entry into a short position, and the Stochastic RSI at an oversold level as a confluence for an entry into a long position. These levels do not mean that price will necessarily reverse at those levels in a reliable way, however. This is why this version of the Stoch RSI employs the triple timeframe overbought and oversold confluence, in an attempt to add a more confluence and reliability to this usage of the Stoch RSI .
What are divergences?
Divergence is when the price of an asset is moving in the opposite direction of a technical indicator, such as an oscillator, or is moving contrary to other data. Divergence warns that the current price trend may be weakening, and in some cases may lead to the price changing direction.
There are 4 main types of divergence, which are split into 2 categories;
regular divergences and hidden divergences. Regular divergences indicate possible trend reversals, and hidden divergences indicate possible trend continuation.
Regular bullish divergence: An indication of a potential trend reversal, from the current downtrend, to an uptrend.
Regular bearish divergence: An indication of a potential trend reversal, from the current uptrend, to a downtrend.
Hidden bullish divergence: An indication of a potential uptrend continuation.
Hidden bearish divergence: An indication of a potential downtrend continuation.
How do traders use divergences in their trading?
A divergence is considered a leading indicator in technical analysis , meaning it has the ability to indicate a potential price move in the short term future.
Hidden bullish and hidden bearish divergences, which indicate a potential continuation of the current trend are sometimes considered a good place for traders to begin, since trend continuation occurs more frequently than reversals, or trend changes.
When trading regular bullish divergences and regular bearish divergences, which are indications of a trend reversal, the probability of it doing so may increase when these occur at a strong support or resistance level . A common mistake new traders make is to get into a regular divergence trade too early, assuming it will immediately reverse, but these can continue to form for some time before the trend eventually changes, by using forms of support or resistance as an added confluence, such as when price reaches a moving average, the success rate when trading these patterns may increase.
Typically, traders will manually draw lines across the swing highs and swing lows of both the price chart and the oscillator to see whether they appear to present a divergence, this indicator will draw them for you, quickly and clearly, and can notify you when they occur.
Setting alerts.
With this indicator you can set alerts to notify you when any/all of the above types of divergences occur, on any chart timeframe you choose.
Configurable pivot period.
You can adjust the default pivot lookback values to suit your prefered trading style and timeframe. If you like to trade a shorter time frame, lowering the default lookback values will make the divergences drawn more sensitive to short term price action.
Disclaimer: This script includes code from the stock UO and MFI by Tradingview as well as the Divergence for Many Indicators v4 by LonesomeTheBlue.
Bitcoin Golden Bottom Oscillator (MZ BTC Oscillator)This indicator uses Elliot Wave Oscillator Methodology applied on "BTC Golden Bottom with Adaptive Moving Average" and Relative Strength Index of Resulted EVO to form an Oscillator to detect trend health in Bitcoin price. Ticker is set to "INDEX : BTCUSD" on 1D timeframe.
Methodology
Oscillator uses Adaptive Moving Average with 1 year of length, Minor length of 50 and Major length of 100 to mark AMA as Golden Bottom.
Percentage Elliot Wave Oscillator is calculated between BTC price and AMA.
Relative Strength Index of EVO is calculated to detect trend strength and divergence detection.
Hull Moving Average of resulted RSI is used to smoothen the Oscillator.
Oscillator is hard coded to 'INDEX:BTCUSD' ticker on 1d so it can be used on any other chart and on any other timeframe.
Color Schemes
Bright Red background color indicates that price has left top Fib multiple ATR band and possibly go for top.
Light Red background color indicates that price has left 2nd top Fib multiple ATR band and possibly go for local top.
Lime background color indicates that price has entered lowest band indicating local bottom.
Bright Green background color indicates that price is approximately resting on Golden Bottom i.e. AMA.
Oscillator color is set to gradient for easy directional adaption.
BTC Golden Bottom with Adaptive Moving Average
Combo 4+ KDJ STO RSI EMA3 Visual Trend Pine V5@RL! English !
Combo 4+ KDJ STO RSI EMA3 Visual Trend Pine V5 @ RL
Combo 4+ KDJ STO RSI EMA3 Visual Trend Pine V5 @ RL is a visual trend following indicator that groups and combines four trend following indicators. It is compiled in PINE Script Version V5 language.
• STOCH: Stochastic oscillator.
• RSI Divergence: Relative Strength Index Divergence. RSI Divergence is a difference between a fast and a slow RSI.
• KDJ: KDJ Indicator. (trend following indicator).
• EMA Triple: 3 exponential moving averages (Default display).
This indicator is intended to help beginners (and also the more experienced ones) to trade in the right direction of the market trend. It allows you to avoid the mistakes of always trading against the trend.
The calculation codes of the different indicators used are standard public codes used in the usual TradingView coding for these indicators.
The STO indicator calculation script is taken from TradingView's standard STOCH calculation.
The RSI indicator calculation script is a replica of the one created by @Shizaru.
The KDJ indicator calculation script is a replica of the one created by @iamaltcoin.
The Triple EMA indicator calculation script is a replica of the one created by @jwilcharts.
This indicator can be configured to your liking. It can even be used several times on the same graph (multi-instance), with different configurations or display of another indicator among the four that compose it, according to your needs or your tastes.
A single plot, among the 4 indicators that make it up, can be displayed at a time, but either with its own trend or with the trend of the 4 (3 by default) combined indicators (sell=green or buy=red, background color).
Trend indications (potential sell or buy areas) are displayed as a background color (bullish: green or bearish: red) when at least three of the four indicators (3 by default and configurable from 1 to 4) assume that the market is moving in the same direction. These trend indications can be configured and displayed, either only for the signal of the selected indicator and displayed, or for the signals of the four indicators together and combined (logical AND).
You can tune the input, style and visibility settings of each indicator to match your own preferences or habits.
A 'buy stop' or 'sell stop' signal is displayed (layouts) in the form of a colored square (green for 'stop buy' and red for 'stop sell'. These 'stop' signals can be configured and displayed, either only for the indicator chosen, or for the four indicators together and combined (logical OR).
Note that the presence of a Stop Long signal cancels the background color of the Long trend (green).
Likewise, the presence of a Stop Short signal cancels out the background color of the Short trend (red).
It is also made up of 3 labels:
• Trend Label
• signal Stop Label (signals Stop buy or sell )
• Info Label (Names of Long / Short / Stop Long / Stop Short indicators, and / Open / Close / High / Low ).
Each label is configurable (visibility and position on the graph).
• Trend label: indicates the number of indicators suggesting the same trend (Long or Short) as well as a strength index (PWR) of this trend: For example: 3 indicators in Short trend, 1 indicator in Long trend and 1 indicator in neutral trend will give: PWR SHORT = 2/4. (3 Short indicators - 1 Long indicator = 2 Pwr Short). And if PWR = 0 then the display is "Wait and See". It also indicates which current indicator is displayed and the display mode used (combined 1 to 4 indicators or not combined ).
• Signal Stop Label: Indicates a possible stop of the current trend.
• Label Info (Simple or Full) gives trend info for each of the 4 indicators and OHLC info for the chart (in “Full” mode).
It is possible to display this indicator several times on a chart (up to 3 indicators max with the Basic TradingView Plan and more with the paid plans), with different configurations: For example:
• 1-Stochastic - 2/4 Combined Signals - no Label displayed
• 1-RSI - Combined Signals 3/4 - Stop Label only displayed
• 1-KDJ - Combined Signals 4/4 - the 3 Labels displayed
• 1-EMA'3 - Non-combined signals (EMA only) - Trend Label displayed
Some indicators have filters / thresholds that can be configured according to your convenience and experience!
The choice of indicator colors is suitable for a graph with a "dark" theme, which you will probably need to modify for visual comfort, if you are using a "Light" mode or a custom mode.
This script is an indicator that you can run on standard chart types. It also works on non-standard chart types but the results will be skewed and different.
Non-standard charts are:
• Heikin Ashi (HA)
• Renko
• Kagi
• Point & Figure
• Range
As a reminder: No indicator is capable of providing accurate signals 100% of the time. Every now and then, even the best will fail, leaving you with a losing deal. Whichever indicator you base yourself on, remember to follow the basic rules of risk management and capital allocation.
BINANCE:BTCUSDT
**********************************************************************************************************************************************************************************************************************************************************************************
! Français !
Combo 4+ KDJ STO RSI EMA3 Visual Trend Pine V5@RL
Combo 4+ KDJ STO RSI EMA3 Visual Trend Pine V5@RL est un indicateur visuel de suivi de tendance qui regroupe et combine quatre indicateurs de suivi de tendance. Il est compilé en langage PINE Script Version V5.
• STOCH : Stochastique.
• RSI Divergence : Relative Strength Index Divergence. La Divergence RSI est une différence entre un RSI rapide et un RSI lent.
• KDJ : KDJ Indicateur. (indicateur de suivi de tendance).
• EMA Triple : 3 moyennes mobiles exponentielles (Affichage par défaut).
Cet indicateur est destiné à aider les débutants (et aussi les plus confirmé) à trader à dans le bon sens de la tendance du marché. Il permet d'éviter les erreurs qui consistent à toujours trader à contre tendance.
Les codes de calcul des différents indicateurs utilisés sont des codes publics standards utilisés dans le codage habituel de TradingView pour ces indicateurs !
Le script de calcul de l’indicateur STO est issu du calcul standard du STOCH de TradingView.
Le script de calcul de l’indicateur RSI Div est une réplique de celui créé par @Shizaru.
Le script de calcul de l’indicateur KDJ est une réplique de celui créé par @iamaltcoin.
Le script de calcul de l’indicateur Triple EMA est une réplique de celui créé par @jwilcharts
Cet indicateur peut être configuré à votre convenance. Il peut même être utilisé plusieurs fois sur le même graphique (multi-instance), avec des configurations différentes ou affichage d’un autre indicateur parmi les quatre qui le composent, selon vos besoins ou vos goûts.
Un seul tracé, parmi les 4 indicateurs qui le composent, peut être affiché à la fois mais, soit avec sa propre tendance soit avec la tendance des 4 (3 par défaut) indicateurs combinés (couleur de fond vente=vert ou achat=rouge).
Les indications de tendance (zones de vente ou d’achat potentielles) sont affichés sous la forme de couleur de fond (Haussier : vert ou baissier : rouge) lorsque au moins trois des quatre indicateurs (3 par défaut et configurable de 1 à 4) supposent que le marché évolue dans la même direction. Ces indications de tendance peuvent être configuré et affichés, soit uniquement pour le signal de l’indicateur choisi et affiché, soit pour les signaux des quatre indicateurs ensemble et combinés (ET logique).
Vous pouvez accorder les paramètres d’entrée, de style et de visibilité de chacun des indicateurs pour correspondre à vos propres préférences ou habitudes.
Un signal ‘stop achat’ ou ‘stop vente’ est affiché (layouts) sous la forme d’un carré de couleur (vert pour ‘stop achat’ et rouge pour ‘stop vente’. Ces signaux ‘stop’ peuvent être configuré et affichés, soit uniquement pour l’indicateur choisi, soit pour les quatre indicateurs ensemble et combinés (OU logique).
A noter que la présence d’un signal Stop Long annule la couleur de fond de la tendance Long (vert).
De même, la présence d’un signal Stop Short annule la couleur de fond de la tendance Short (rouge).
Il est aussi composé de 3 étiquettes (Labels) :
• Trend Label (infos de tendance)
• Signal Stop Label (signaux « Stop » achat ou vente)
• Infos Label (Noms des indicateurs Long/Short/Stop Long/Stop Short,
et /Open/Close/High/Low )
Chaque label est configurable (visibilité et position sur le graphique).
• Label Trend : indique le nombre d’indicateurs suggérant une même tendance (Long ou Short) ainsi qu’un indice de force (PWR) de cette tendance :
Par exemple : 3 indicateurs en tendance Short, 1 indicateur en tendance Long et 1 indicateur en tendance neutre donnera :
PWR SHORT = 2/4. (3 indicateurs Short – 1 indicateur Long=2 Pwr Short).
Et si PWR=0 alors l’affichage est « Wait and See » (Attendre et Observer).
Il indique aussi quel indicateur actuel est affiché et le mode d’affichage utilisé (combiné 1 à 4 indicateurs ou non combiné ).
• Signal Stop Label : Indique un possible arrêt de la tendance en cours.
• Infos Label (Simple ou complet) donne les infos de tendance de chacun des 4 indicateurs et les infos OHLC du graphique (en mode « Complet »).
Il est possible d’afficher ce même indicateur plusieurs fois sur un graphique (jusqu’à 3 indicateurs max avec le Plan Basic TradingView et plus avec les plans payants), avec des configurations différentes :
Par exemple :
• 1-Stochastique – Signaux Combinés 2/4 – aucun Label affiché
• 1-RSI – Signaux Combinés 3/4 – Label Stop uniquement affiché
• 1-KDJ – Signaux Combinés 4/4 – les 3 Labels affichés
• 1-EMA’3 - Signaux Non combinés (EMA seuls) – Trend Label affiché
Certains indicateurs ont des filtres/seuils (Thresholds) configurables selon votre convenance et votre expérience !
Le choix des couleurs de l’indicateur est adapté pour un graphique avec thème « sombre », qu’il vous faudra probablement modifier pour le confort visuel, si vous utilisez un mode « Clair » ou un mode personnalisé.
Ce script est un indicateur que vous pouvez exécuter sur des types de graphiques standard. Il fonctionne aussi sur des types de graphiques non-standard mais les résultats seront faussés et différents.
Les graphiques Non-standard sont :
• Heikin Ashi (HA)
• Renko
• Kagi
• Point & Figure
• Range
Pour rappel : Aucun indicateur n’est capable de fournir des signaux précis 100% du temps. De temps en temps, même les meilleurs échoueront, vous laissant avec une affaire perdante. Quel que soit l’indicateur sur lequel vous vous basez, n’oubliez pas de suivre les règles de base de gestion des risques et de répartition du capital.
BINANCE:BTCUSDT
Relative Volume & RSI PopThis is a basic idea/script designed to take a breakout trade by taking advantage of volume spikes when price/strength is extended (either long or short).
The script only utilises two indicators, the Relative Volume (RV) and the Relative Strength Index (RSI). The script allows the user to select a RSI value between 69 up to 100 for a long trade and between 35 down to 0 for short trade and then pair this with RV from 0 - 10. The period for both the RSI and RV can also be amended by the user but I found in most cases there was no benefit gained by changing away from normal "14" period lookback. The script typically only has small draw downs as the script is designed to exit the trade when the RSI returns back to "normalised" level, therefore the trades are generally quite short. The exit condition for a long trade is when RSI crosses back below 69 (which is why you cannot enter a long below this value) and for a short the, trade will close when RSI crosses back above 35 (which is why you cannot enter a short above this value). These exit values are locked.
By allowing RSI value to go all the way up to "100" on the long side and "0" on the short side this in effect is a way of eliminating the script from taking either longs or shorts if lets say you wanted to back test the script for long only spikes or short only spike. E.G. By setting RSI upper value to "75" the RV to "1" and RSI lower value to "0" then no short trades will not be taken in your back test as the RSI never really gets down to zero.
I put this together with meme stocks in mind and back tested it on day charts for AMC and then a few trending style stocks too. It typically worked best as long only and with RSI settings between 71 - 75 and RV at 1 or 1.5. I also found it had okay results on some lower 1hr timeframe futures markets and weekly time frames too (albeit trades were few and far between on weekly timeframe).
The beauty of such a basic script you could easily set up a trading view screener to look for these opportunities everyday and perhaps even add in an ADX filter on the screener to see if the trend is increasing. Then use this script to run a back test on the stocks that you've selected from the screener.
Bollinger Band Width PercentileIntroducing the Bollinger Band Width Percentile
Definitions :
Bollinger Band Width Percentile is derived from the Bollinger Band Width indicator.
It shows the percentage of bars over a specified lookback period that the Bollinger Band Width was less than the current Bollinger Band Width.
Bollinger Band Width is derived from the Bollinger Bands® indicator.
It quantitatively measures the width between the Upper and Lower Bands of the Bollinger Bands.
Bollinger Bands® is a volatility-based indicator.
It consists of three lines which are plotted in relation to a security's price.
The Middle Line is typically a Simple Moving Average.
The Upper and Lower Bands are typically 2 standard deviations above, and below the SMA (Middle Line).
Volatility is a statistical measure of the dispersion of returns for a given security or market index, measured by the standard deviation of logarithmic returns.
The Broad Concept :
Quoting Tradingview specifically for commonly noted limitations of the BBW indicator which I have based this indicator on....
“ Bollinger Bands Width (BBW) outputs a Percentage Difference between the Upper Band and the Lower Band.
This value is used to define the narrowness of the bands.
What needs to be understood however is that a trader cannot simply look at the BBW value and determine if the Band is truly narrow or not.
The significance of an instruments relative narrowness changes depending on the instrument or security in question.
What is considered narrow for one security may not be for another.
What is considered narrow for one security may even change within the scope of the same security depending on the timeframe.
In order to accurately gauge the significance of a narrowing of the bands, a technical analyst will need to research past BBW fluctuations and price performance to increase trading accuracy. ”
Here I present the Bollinger Band Width Percentile as a refinement of the BBW to somewhat overcome the limitations cited above.
Much of the work researching past BBW fluctuations, and making relative comparisons is done naturally by calculating the Bollinger Band Width Percentile.
This calculation also means that it can be read in a similar fashion across assets, greatly simplifying the interpretation of it.
Plotted Components of the Bollinger Band Width Percentile indicator :
Scale High
Mid Line
Scale Low
BBWP plot
Moving Average 1
Moving Average 2
Extreme High Alert
Extreme Low Alert
Bollinger Band Width Percentile Properties:
BBWP Length
The time period to be used in calculating the Moving average which creates the Basis for the BBW component of the BBWP.
Basis Type
The type of moving average to be used as the Basis for the BBW component of the BBWP.
BBWP Lookback
The lookback period to be used in calculating the BBWP itself.
BBWP Plot settings
The BBWP plot settings give a choice between a user defined solid color, and a choice of "Blue Green Red", or "Blue Red" spectrum palettes.
Moving Averages
Has 2 Optional User definable and adjustable moving averages of the BBWP.
Visual Alerts
Optional User adjustable High and low Signal columns.
How to read the BBWP :
A BBWP read of 95 % ... means that the current BBW level is greater than 95% of the lookback period.
A BBWP read of 5 % .... means that the current BBW level is lower than 95% of the lookback period.
Proposed interpretations :
When the BBWP gets above 90 % and particularly when it hits 100% ... this can be a signal that volatility is reaching a maximum and that a macro High or Low is about to be set.
When the BBWP gets below 10 % and particularly when it hits 0% ...... this can be a signal that volatility is reaching a minimum and that there could be a violent range breakout into a trending move.
When the BBWP hits a low level < 5 % and then gets above its moving average ...... this can be an early signal that a consolidation phase is ending and a trending move is beginning.
When the BBWP hits a high level > 95 % and then falls below its moving average ... this can be an early signal that a trending move is ending and a consolidation phase is beginning.
Essential knowledge :
The BBWP was designed with the daily timeframe in mind, but technical analysists may find use for it on other time frames also.
High and Low BBWP readings do not entail any direction bias.
Deeper Concepts :
In finance, “mean reversion” is the assumption that a financial instrument's price will tend to move towards the average price over time.
If we apply that same logic to volatility as represented here by the Bollinger band width percentile, the assumption is that the Bollinger band width percentile will tend to contract from extreme highs, and expand from extreme lows over time corresponding to repeated phases of contraction and expansion of volatility.
It is clear that for most assets there are periods of directional trending behavior followed by periods of “consolidation” ( trading sideways in a range ).
This often ends with a tightening range under reducing volume and volatility ( popularly known as “the squeeze” ).
The squeeze typically ends with a “breakout” from the range characterized by a rapid increase in volume, and volatility when price action again trends directionally, and the cycle repeats.
Typical Use Cases :
The Bollinger Band Width Percentile may be especially useful for Options traders, as it can provide a bias for when Options are relatively expensive, or inexpensive from a Volatility (Vega) perspective.
When the Bollinger Band Width Percentile is relatively high ( 85 percentile or above ) it may be more advantageous to be a net seller of Vega.
When the Bollinger Band Width Percentile is relatively low ( 15 percentile or below ) it may be advantageous to be net long Vega.
Here we examine a number of actionable signals on BTCUSD daily timeframe using the BBWP and a momentum oscillator ( using the TSI here but can equally be used with Bollinger bands, moving averages, or the traders preferred momentum oscillator ).
In this first case we will examine how a spot trader and an options trader could each use a low BBWP read to alert them to a good potential trade setup.
note: using a period of 30 for both the Bollinger bands and the BBWP period ( approximately a month ) and a BBWP lookback of 350 ( approximately a year )
As we see the Bollinger Bands have gradually contracted while price action trended down and the BBWP also fell consistently while below its moving average ( denoting falling volatility ) down to an extremely low level <5% until it broke above its moving average along with a break of range to the upside ( signaling the end of the consolidation at a low level and the beginning of a new trending move to the upside with expanding volatility).
In this next case we will continue to follow the price action presuming that the traders have taken or locked in profit at reasonable take profit levels from the previous trade setup.
Here we see the contraction of the Bollinger bands, and the BBWP alongside price action breaking below the BB Basis giving a warning that the trending move to the upside is likely over.
We then see the BBWP rising and getting above its moving average while price action fails to get above the BB Basis, likewise the TSI fails to get above its signal line and actually crosses below its zeroline.
The trader would normally take this as a signal that the next trending move could be to the downside.
The next trending move turns out to be a dramatic downside move which causes the BBWP to hit 100% signaling that volatility is likely to hit a maximum giving good opportunities for profitable trades to the skilled trader as outlined.
Limitations :
Here we will look at 2 cases where blindly taking BBWP signals could cause the trader to take a failed trade.
In this first example we will look at blindly taking a low volatility options trade
Low Volatility and corresponding low BBWP levels do not automatically mean there has to be expansion immediately, these periods of extreme low volatility can go on for quite some time.
In this second example we will look at blindly taking a high volatility spot short trade
High volatility and corresponding high BBWP levels do not automatically mean there has to be a macro high and contraction of volatility immediately, these periods of extreme high volatility can also go on for quite some time, hence the famous saying "The trend is your friend until the end of the trend" and lesser well known, but equally valid saying "never try to short the top of a parabolic blow off top"
Markets are variable and past performance is no guarantee of future results, this is not financial advice, I am not a financial advisor.
Final thoughts
The BBWP is an improvement over the BBW in my opinion, and is a novel, and useful addition to a Technical Analysts toolkit.
It is not a standalone indicator and is meant to be used in conjunction with other tools for direction bias, and Good Risk Management to base sound trades off.
John Bollinger has suggested using Bolliger bands, and its related indicators with two or three other non-correlated indicators that provide more direct market signals.
He believes it is crucial to use indicators based on different types of data.
Some of his favored technical techniques are moving average divergence/convergence (MACD), on-balance volume and relative strength index (RSI).
Thanks
Massive respect to John Bollinger, long-time technician of the markets, and legendary creator of both the Bollinger Bands® in the 1980´s, and the Bollinger band Width indicator in 2010 which this indicator is based on.
His work continues to inspire, decades after he brought the original Bollinger Bands to the market.
Much respect also to Eric Crown who gave me the fundamental knowledge of Technical Analysis, and Options trading.
Quantitative Qualitative Estimation QQE
The QQE indicator is a momentum based indicator to determine trend and sideways.
The Qualitative Quantitative Estimation (QQE) indicator works like a smoother version of the popular Relative Strength Index (RSI) indicator. QQE expands on RSI by adding two volatility based trailing stop lines. These trailing stop lines are composed of a fast and a slow moving Average True Range (ATR). These ATR lines are smoothed making this indicator less susceptible to short term volatility.
The most common method of using QQE is to look for crosses of the fast and slow moving trailing stop lines during periods when the QQE line reflects overbought or oversold conditions
Qualitative Quantitative Estimation made up of a smoothed Relative Strength Index (RSI) indicator plus fast and slow volatility-based trailing levels.
Qualitative Quantitative Estimation can be used in two directions:
1.Determine the trend, i.e. if the line is above the 50 level, the trend is ascending, if below - descending;
2.Search for signals at the moment of crossing of the QQE FAST (maroon) and QQE SLOW (blue) lines.
The QQE itself is generally considered to indicate an up-trend ifQQE FAST is above QQE SLOW, and a down-trend if below QQE SLOW.
Often a middle-range between 40 and 60 is set and if the indicator is in that range, then the market is considered to be tracking sideways, or in no trend.
You will need to set only one parameter – “SF” "RSI SMoothing Factor", an analogue of the period in RSI.
By the way, judging from the open source information, the algorithm used the standard strength index with a period of 14 for calculations.
Various signals can be created from the indicator such as:
-Buy when QQE FAST crosses above QQE SLOW below 50 level or just buy when QQE lines crosses above 50 level.
-Sell when QQE FAST crosses below QQE SLOW above 50 level or just sell when QQE lines crosses below 50 level.
WARNING: QQE IS A RSI BASED INDICATOR SO THAT IT CAN TRIGGER FALSE SIGNALS DURING DIVERGENCES!
Kıvanç Özbilgiç
SectorsThis script attempts to show the relative strength of the 11 sectors in the SPX, which can be accomplished in three ways:
1. Sectors - displays all sector indices as they appear normally
2. Sector Relativity - displays each sector divided by the sum of the other 10 sectors
3. Sector Alpha - displays the alpha of each sector as compared to the sum of the other 10 sectors
I have seen some other iterations of this script that compare each sector to the SPX as a whole, a couple problems with that:
1. SPX sector weightings are unequal and change quarterly, meaning you will get an inaccurate depiction of relative sector strength across time.
2. Even if using an equal-weight SPX, you would be comparing a sector to itself as all 11 sectors are included in the SPX, not just the complementary 10 you are looking to compare one sector to.
For more information on the sectors in the SPX or the calculation of Alpha, visit the links at the top of the script.
*Includes an option for repainting -- default value is true, meaning the script will repaint the current bar.
False = Not Repainting = Value for the current bar is not repainted, but all past values are offset by 1 bar.
True = Repainting = Value for the current bar is repainted, but all past values are correct and not offset by 1 bar.
In both cases, all of the historical values are correct, it is just a matter of whether you prefer the current bar to be realistically painted and the historical bars offset by 1, or the current bar to be repainted and the historical data to match their respective price bars.
As explained by TradingView,`f_security()` is for coders who want to offer their users a repainting/no-repainting version of the HTF data.
MAs & RSI strategy long onlyThis system originates from many articles by Enrico Malverti, Trading System, 2015.
Many trading systems are more stable if you use simple and not so innovative indicators, like exponential moving averages and Relative Strengthe index.
Differently by the original article:
- there is no ATR Filter, but we have introduced a Schaff Indicator. If you have multiple shares/commodities to choose, prefer what has a better value of Schaff;
- there is no fixed stop loss but a second moving average (fast), used as target. There are also Simple Mov Averages on lows (trailing stop loss for long) and a SMA on highs (trailing stop loss for short position).
Be careful, in the system only long case, because being short is not the reverse of being long (as stated in my blog)
SMA on highs are therefore only graphically put.
In this version, I’ve changed the “religious” use of EMAs (“sponsored by” Alexander Elder) to “ordinary” MAs: this because since simple moving averages measure all the factor in addition egual each one, this involve a sort of “offset” in the graph, while EMAs give a major “importance” to the last value (last close itself, you’re already considering): therefore this calculation may be counterproductive.
HOW TO OPERATE
BUY when prices crosses over SMAon long period (we suggest, however, sma long = Sma fast period = no. 11 for italian and european shares)
SELL when
prices go under SMA on lows (7 period), or under on SMA fast!
RSI crosses under level 70 or is higher than 75 (or 80, but in code there is 75)
stock gain% vs index gain %This shows the relative strength or weakness of a stock vs an index on any given candle price movement.
Negative stock candle and relative strength shows accumulation
Positive stock candle and relative weakness shows distribution
accumulation will plot an 'A'
distribution will plot a 'D'
Currency Relative Strengths [GM] - Data IndicatorI created this tool for the purpose of determining strongest and weakest currencies over different periods of time. Each major currency is compared to the field of other majors and its average change is measured over a predetermined period of time. The result is displayed as a percentage. I use it for trend following but it can also be used to fade exhaustion.
Instructions
Add indicator to chart
Select a time frame under settings
Place cursor over period of interest
Click "Data Window" on right hand side bar
View % change avg values for each currency
Altcoin Market Share vs ETH/BTCIdea from x.com on X
Each colored line represents the percentage share of different altcoin baskets (excluding stablecoins) or ETH relative to either the ETH or BTC market cap (can add more, e.g. SOL or create different dashboards with Memes, AI, DeFi, you name it)
I know: At first glance, this may seem noisy and complex, but it all depends on the questions you want to answer. Once you define those, much of the noise becomes irrelevant, allowing you to simplify the analysis and focus only on what matters to you. What I’ve done here is provide a few initial insights that I found useful (will isolate a couple of them in future).
This analysis doesn’t tell you which specific coins to buy, but rather provides a broad market overview as a foundation. It helps guide you toward areas of relative strength or weakness.
I’ve included a lot of information here, but the key is to extract the signal from the noise by asking the right questions, for example: At what point do altcoins become overvalued or undervalued against Ethereum? However, when asking these questions, it's important to remember that an overvaluation or undervaluation of Ethereum relative to altcoins tells you little about its valuation against Bitcoin or USD. These are separate questions further down the process.
Inside Candle DivergenceStudy Material: Inside Candle Divergence Indicator (aiTrendview)
1. Introduction
The Inside Candle Divergence Indicator is a custom tool built on TradingView using Pine Script. It is designed to help traders identify potential reversal points or trend continuations using a mix of candlestick analysis, RSI (Relative Strength Index), VWAP (Volume Weighted Average Price), Pivot Points, and Volume analytics. The tool also provides a dashboard table on the chart, summarizing all key values in a single glance for traders and analysts.
This indicator is not just a signal generator but also an educational framework—explaining how different concepts in technical analysis combine to build a systematic approach for market entries and exits.
________________________________________
2. Core Concepts Behind the Tool
A. Inside Candle Pattern
An Inside Candle forms when the current candle’s high is lower than or equal to the previous candle’s high, and the low is higher than or equal to the previous candle’s low.
• This means the entire price action of the current candle is "inside" the range of the previous candle.
• A bullish inside candle occurs when the close is higher than the open.
• A bearish inside candle occurs when the close is lower than the open.
This pattern shows market indecision but also sets up potential breakouts or trend reversals.
________________________________________
B. RSI (Relative Strength Index)
The indicator calculates RSI using the formula from the ta.rsi() function in TradingView. RSI helps measure momentum in the market.
• A low RSI (below 25) signals an oversold zone → possible buy.
• A high RSI (above 75) signals an overbought zone → possible sell.
By combining RSI with the Inside Candle, the indicator ensures that signals are triggered only when momentum and price patterns confirm each other.
________________________________________
C. Buy & Sell Signals
• Buy Signal: Triggered when RSI < Buy Level (default 25) and a bullish inside candle forms.
• Sell Signal: Triggered when RSI > Sell Level (default 75) and a bearish inside candle forms.
When triggered, the chart displays a BUY (green label below candle) or SELL (red label above candle) marker. The indicator also saves the entry price and signal bar for future reference inside the dashboard.
________________________________________
D. VWAP (Volume Weighted Average Price)
VWAP is calculated using the typical price (H+L+C)/3 and weighting it by volume.
• VWAP shows the average trading price weighted by volume, widely used by institutions.
• The tool calculates the distance of price from VWAP in % terms.
• If price is far above VWAP, the market may be overheated (overbought). If far below, it may be undervalued (oversold).
________________________________________
E. Volume Analysis
The tool splits volume into Buy Volume and Sell Volume:
• Buy Volume: If close > open.
• Sell Volume: If close ≤ open.
• Cumulative totals are maintained, and percentages are calculated to show what proportion of total market volume is bullish vs bearish.
• A progress bar style visual (using blocks █) shows the dominance of buyers or sellers.
This allows traders to quickly measure whether buyers or sellers are controlling the market trend.
________________________________________
F. Daily Pivot Points
Pivot Points are calculated using the previous day’s high, low, and close:
• Pivot = (High + Low + Close) / 3
• R1, S1, R2, S2, R3, S3 levels are derived from this pivot.
• These levels act as support and resistance zones.
The script plots Pivot, R1, and S1 lines on the chart for easy reference.
________________________________________
G. Trend Direction
The indicator checks where the price is compared to R1 and S1:
• If price > R1 → Bullish Trend
• If price < S1 → Bearish Trend
• Otherwise → Neutral Trend
The trend direction is displayed in the dashboard with arrows (↑, ↓, →).
________________________________________
H. Price Change Calculation
The tool calculates:
• Price Change = Current Close – Previous Close
• Percentage Change = (Change / Previous Close) × 100
• Displays ▲ (green upward) or ▼ (red downward) with the exact percentage.
This gives traders a quick snapshot of intraday price movement.
________________________________________
I. Dashboard Table
One of the most powerful features is the real-time dashboard table shown on the chart. It contains:
1. Symbol & Price Info (Current ticker, price, change %)
2. RSI Reading (with color coding: green for oversold, red for overbought)
3. VWAP and Distance from VWAP
4. Volume Analysis with Progress Bar (Buy vs Sell %)
5. Pivot Levels (Pivot, R1, S1)
6. Trend Direction (Bullish, Bearish, Neutral)
7. Signal Status (Last Buy/Sell signal with entry price)
This reduces the need for multiple indicators and gives traders a command-center view directly on the chart.
________________________________________
J. Alerts
The tool generates alerts whenever a Buy or Sell condition is met. Traders can set up TradingView alerts to be notified instantly when:
• Buy Signal Alert → RSI oversold + Bullish inside candle
• Sell Signal Alert → RSI overbought + Bearish inside candle
This ensures no opportunity is missed even if you’re not actively monitoring the chart.
________________________________________
K. Background Highlights
The chart background also changes faintly (light green or light red) when a Buy or Sell condition is triggered. This gives traders visual confirmation along with signals and alerts.
________________________________________
3. Practical Use of This Tool
• Scalpers & Intraday Traders can use it for quick momentum-based entries.
• Swing Traders can use the RSI + Inside Candle + Pivot Points to find medium-term reversals.
• Analysts can use the dashboard for real-time summaries in reports.
• Volume Analysis helps understand institutional activity.
Remember: This is not a standalone holy grail. It must be used with proper risk management and confirmation from higher timeframes.
________________________________________
4. Strict Disclaimer (aiTrendview)
⚠️ Disclaimer from aiTrendview:
This indicator is designed for educational and analytical purposes only. It is not financial advice or a guaranteed trading strategy. Markets are inherently risky and unpredictable; past performance of indicators does not ensure future results. Trading involves risk of financial loss, and traders must use proper risk management, stop-loss, and independent judgment.
aiTrendview strictly follows TradingView.com rules and compliance guidelines.
Any misuse of this tool, its code, or analytical features for unauthorized commercial purposes, false promises, or misleading activities is strictly discouraged. The creators of this script and aiTrendview will not be responsible for any losses, damages, or misuse arising from its application. Always trade responsibly and only with money you can afford to lose.
________________________________________
CNS - Multi-Timeframe Bollinger Band OscillatorMy hope is to optimize the settings for this indicator and reintroduce it as a "strategy" with suggested position entry and exit points shown in the price pane.
I’ve been having good results setting the “Bollinger Band MA Length” in the Input tab to between 5 and 10. You can use the standard 20 period, but your results will not be as granular.
This indicator has proven very good at finding local tops and bottoms by combining data from multiple timeframes. Use BB timeframes that are lower than the timeframe you are viewing in your price pane.
The default settings work best on the weekly timeframe, but can be adjusted for most timeframes including intraday.
Be cognizant that the indicator, like other oscillators, does occasionally produce divergences at tops and bottoms.
Any feedback is appreciated.
Overview
This indicator is an oscillator that measures the normalized position of the price relative to Bollinger Bands across multiple timeframes. It takes the price's position within the Bollinger Bands (calculated on different timeframes) and averages those positions to create a single value that oscillates between 0 and 1. This value is then plotted as the oscillator, with reference lines and colored regions to help interpret the price's relative strength or weakness.
How It Works
Bollinger Band Calculation:
The indicator uses a custom function f_getBBPosition() to calculate the position of the price within Bollinger Bands for a given timeframe.
Price Position Normalization:
For each timeframe, the function normalizes the price's position between the upper and lower Bollinger Bands.
It calculates three positions based on the high, low, and close prices of the requested timeframe:
pos_high = (High - Lower Band) / (Upper Band - Lower Band)
pos_low = (Low - Lower Band) / (Upper Band - Lower Band)
pos_close = (Close - Lower Band) / (Upper Band - Lower Band)
If the upper band is not greater than the lower band or if the data is invalid (e.g., na), it defaults to 0.5 (the midline).
The average of these three positions (avg_pos) represents the normalized position for that timeframe, ranging from 0 (at the lower band) to 1 (at the upper band).
Multi-Timeframe Averaging:
The indicator fetches Bollinger Band data from four customizable timeframes (default: 30min, 60min, 240min, daily) using request.security() with lookahead=barmerge.lookahead_on to get the latest available data.
It calculates the normalized position (pos1, pos2, pos3, pos4) for each timeframe using f_getBBPosition().
These four positions are then averaged to produce the final avg_position:avg_position = (pos1 + pos2 + pos3 + pos4) / 4
This average is the oscillator value, which is plotted and typically oscillates between 0 and 1.
Moving Averages:
Two optional moving averages (MA1 and MA2) of the avg_position can be enabled, calculated using simple moving averages (ta.sma) with customizable lengths (default: 5 and 10).
These can be potentially used for MA crossover strategies.
What Is Being Averaged?
The oscillator (avg_position) is the average of the normalized price positions within the Bollinger Bands across the four selected timeframes. Specifically:It averages the avg_pos values (pos1, pos2, pos3, pos4) calculated for each timeframe.
Each avg_pos is itself an average of the normalized positions of the high, low, and close prices relative to the Bollinger Bands for that timeframe.
This multi-timeframe averaging smooths out short-term fluctuations and provides a broader perspective on the price's position within the volatility bands.
Interpretation
0.0 The price is at or below the lower Bollinger Band across all timeframes (indicating potential oversold conditions).
0.15: A customizable level (green band) which can be used for exiting short positions or entering long positions.
0.5: The midline, where the price is at the average of the Bollinger Bands (neutral zone).
0.85: A customizable level (orange band) which can be used for exiting long positions or entering short positions.
1.0: The price is at or above the upper Bollinger Band across all timeframes (indicating potential overbought conditions).
The colored regions and moving averages (if enabled) help identify trends or crossovers for trading signals.
Example
If the 30min timeframe shows the close at the upper band (position = 1.0), the 60min at the midline (position = 0.5), the 240min at the lower band (position = 0.0), and the daily at the upper band (position = 1.0), the avg_position would be:(1.0 + 0.5 + 0.0 + 1.0) / 4 = 0.625
This value (0.625) would plot in the orange region (between 0.85 and 0.5), suggesting the price is relatively strong but not at an extreme.
Notes
The use of lookahead=barmerge.lookahead_on ensures the indicator uses the latest available data, making it more real-time, though its effectiveness depends on the chart timeframe and TradingView's data feed.
The indicator’s sensitivity can be adjusted by changing bb_length ("Bollinger Band MA Length" in the Input tab), bb_mult ("Bollinger Band Standard Deviation," also in the Input tab), or the selected timeframes.
Multi-Timeframe Bollinger BandsMy hope is to optimize the settings for this indicator and reintroduce it as a "strategy" with suggested position entry and exit points shown in the price pane.
I’ve been having good results setting the “Bollinger Band MA Length” in the Input tab to between 5 and 10. You can use the standard 20 period, but your results will not be as granular.
This indicator has proven very good at finding local tops and bottoms by combining data from multiple timeframes. Use timeframes that are lower than the timeframe you are viewing in your price pane. Be cognizant that the indicator, like other oscillators, does occasionally produce divergences at tops and bottoms.
Any feedback is appreciated.
Overview
This indicator is an oscillator that measures the normalized position of the price relative to Bollinger Bands across multiple timeframes. It takes the price's position within the Bollinger Bands (calculated on different timeframes) and averages those positions to create a single value that oscillates between 0 and 1. This value is then plotted as the oscillator, with reference lines and colored regions to help interpret the price's relative strength or weakness.
How It Works
Bollinger Band Calculation:
The indicator uses a custom function f_getBBPosition() to calculate the position of the price within Bollinger Bands for a given timeframe.
Price Position Normalization:
For each timeframe, the function normalizes the price's position between the upper and lower Bollinger Bands.
It calculates three positions based on the high, low, and close prices of the requested timeframe:
pos_high = (High - Lower Band) / (Upper Band - Lower Band)
pos_low = (Low - Lower Band) / (Upper Band - Lower Band)
pos_close = (Close - Lower Band) / (Upper Band - Lower Band)
If the upper band is not greater than the lower band or if the data is invalid (e.g., na), it defaults to 0.5 (the midline).
The average of these three positions (avg_pos) represents the normalized position for that timeframe, ranging from 0 (at the lower band) to 1 (at the upper band).
Multi-Timeframe Averaging:
The indicator fetches Bollinger Band data from four customizable timeframes (default: 30min, 60min, 240min, daily) using request.security() with lookahead=barmerge.lookahead_on to get the latest available data.
It calculates the normalized position (pos1, pos2, pos3, pos4) for each timeframe using f_getBBPosition().
These four positions are then averaged to produce the final avg_position:avg_position = (pos1 + pos2 + pos3 + pos4) / 4
This average is the oscillator value, which is plotted and typically oscillates between 0 and 1.
Moving Averages:
Two optional moving averages (MA1 and MA2) of the avg_position can be enabled, calculated using simple moving averages (ta.sma) with customizable lengths (default: 5 and 10).
These can be potentially used for MA crossover strategies.
What Is Being Averaged?
The oscillator (avg_position) is the average of the normalized price positions within the Bollinger Bands across the four selected timeframes. Specifically:It averages the avg_pos values (pos1, pos2, pos3, pos4) calculated for each timeframe.
Each avg_pos is itself an average of the normalized positions of the high, low, and close prices relative to the Bollinger Bands for that timeframe.
This multi-timeframe averaging smooths out short-term fluctuations and provides a broader perspective on the price's position within the volatility bands.
Interpretation
0.0 The price is at or below the lower Bollinger Band across all timeframes (indicating potential oversold conditions).
0.15: A customizable level (green band) which can be used for exiting short positions or entering long positions.
0.5: The midline, where the price is at the average of the Bollinger Bands (neutral zone).
0.85: A customizable level (orange band) which can be used for exiting long positions or entering short positions.
1.0: The price is at or above the upper Bollinger Band across all timeframes (indicating potential overbought conditions).
The colored regions and moving averages (if enabled) help identify trends or crossovers for trading signals.
Example
If the 30min timeframe shows the close at the upper band (position = 1.0), the 60min at the midline (position = 0.5), the 240min at the lower band (position = 0.0), and the daily at the upper band (position = 1.0), the avg_position would be:(1.0 + 0.5 + 0.0 + 1.0) / 4 = 0.625
This value (0.625) would plot in the orange region (between 0.85 and 0.5), suggesting the price is relatively strong but not at an extreme.
Notes
The use of lookahead=barmerge.lookahead_on ensures the indicator uses the latest available data, making it more real-time, though its effectiveness depends on the chart timeframe and TradingView's data feed.
The indicator’s sensitivity can be adjusted by changing bb_length ("Bollinger Band MA Length" in the Input tab), bb_mult ("Bollinger Band Standard Deviation," also in the Input tab), or the selected timeframes.
Multi-Timeframe Bollinger Band PositionBeta version.
My hope is to optimize the settings for this indicator and reintroduce it as a "strategy" with suggested position entry and exit points shown in the price pane.
Any feedback is appreciated.
Overview
This indicator is an oscillator that measures the normalized position of the price relative to Bollinger Bands across multiple timeframes. It takes the price's position within the Bollinger Bands (calculated on different timeframes) and averages those positions to create a single value that oscillates between 0 and 1. This value is then plotted as the oscillator, with reference lines and colored regions to help interpret the price's relative strength or weakness.
How It Works
Bollinger Band Calculation:
The indicator uses a custom function f_getBBPosition() to calculate the position of the price within Bollinger Bands for a given timeframe.
Price Position Normalization:
For each timeframe, the function normalizes the price's position between the upper and lower Bollinger Bands.
It calculates three positions based on the high, low, and close prices of the requested timeframe:
pos_high = (High - Lower Band) / (Upper Band - Lower Band)
pos_low = (Low - Lower Band) / (Upper Band - Lower Band)
pos_close = (Close - Lower Band) / (Upper Band - Lower Band)
If the upper band is not greater than the lower band or if the data is invalid (e.g., na), it defaults to 0.5 (the midline).
The average of these three positions (avg_pos) represents the normalized position for that timeframe, ranging from 0 (at the lower band) to 1 (at the upper band).
Multi-Timeframe Averaging:
The indicator fetches Bollinger Band data from four customizable timeframes (default: 30min, 60min, 240min, daily) using request.security() with lookahead=barmerge.lookahead_on to get the latest available data.
It calculates the normalized position (pos1, pos2, pos3, pos4) for each timeframe using f_getBBPosition().
These four positions are then averaged to produce the final avg_position:avg_position = (pos1 + pos2 + pos3 + pos4) / 4
This average is the oscillator value, which is plotted and typically oscillates between 0 and 1.
Moving Averages:
Two optional moving averages (MA1 and MA2) of the avg_position can be enabled, calculated using simple moving averages (ta.sma) with customizable lengths (default: 5 and 10).
These can be potentially used for MA crossover strategies.
What Is Being Averaged?
The oscillator (avg_position) is the average of the normalized price positions within the Bollinger Bands across the four selected timeframes. Specifically:It averages the avg_pos values (pos1, pos2, pos3, pos4) calculated for each timeframe.
Each avg_pos is itself an average of the normalized positions of the high, low, and close prices relative to the Bollinger Bands for that timeframe.
This multi-timeframe averaging smooths out short-term fluctuations and provides a broader perspective on the price's position within the volatility bands.
Interpretation:
0.0 The price is at or below the lower Bollinger Band across all timeframes (indicating potential oversold conditions).
0.15: A customizable level (green band) which can be used for exiting short positions or entering long positions.
0.5: The midline, where the price is at the average of the Bollinger Bands (neutral zone).
0.85: A customizable level (orange band) which can be used for exiting long positions or entering short positions.
1.0: The price is at or above the upper Bollinger Band across all timeframes (indicating potential overbought conditions).
The colored regions and moving averages (if enabled) help identify trends or crossovers for trading signals.
Example:
If the 30min timeframe shows the close at the upper band (position = 1.0), the 60min at the midline (position = 0.5), the 240min at the lower band (position = 0.0), and the daily at the upper band (position = 1.0), the avg_position would be:(1.0 + 0.5 + 0.0 + 1.0) / 4 = 0.625
This value (0.625) would plot in the orange region (between 0.85 and 0.5), suggesting the price is relatively strong but not at an extreme.
Notes:
The use of lookahead=barmerge.lookahead_on ensures the indicator uses the latest available data, making it more real-time, though its effectiveness depends on the chart timeframe and TradingView's data feed.
The indicator’s sensitivity can be adjusted by changing bb_length ("Bollinger Band MA Length" in the Input tab), bb_mult ("Bollinger Band Standard Deviation," also in the Input tab), or the selected timeframes.
Markov Chain [3D] | FractalystWhat exactly is a Markov Chain?
This indicator uses a Markov Chain model to analyze, quantify, and visualize the transitions between market regimes (Bull, Bear, Neutral) on your chart. It dynamically detects these regimes in real-time, calculates transition probabilities, and displays them as animated 3D spheres and arrows, giving traders intuitive insight into current and future market conditions.
How does a Markov Chain work, and how should I read this spheres-and-arrows diagram?
Think of three weather modes: Sunny, Rainy, Cloudy.
Each sphere is one mode. The loop on a sphere means “stay the same next step” (e.g., Sunny again tomorrow).
The arrows leaving a sphere show where things usually go next if they change (e.g., Sunny moving to Cloudy).
Some paths matter more than others. A more prominent loop means the current mode tends to persist. A more prominent outgoing arrow means a change to that destination is the usual next step.
Direction isn’t symmetric: moving Sunny→Cloudy can behave differently than Cloudy→Sunny.
Now relabel the spheres to markets: Bull, Bear, Neutral.
Spheres: market regimes (uptrend, downtrend, range).
Self‑loop: tendency for the current regime to continue on the next bar.
Arrows: the most common next regime if a switch happens.
How to read: Start at the sphere that matches current bar state. If the loop stands out, expect continuation. If one outgoing path stands out, that switch is the typical next step. Opposite directions can differ (Bear→Neutral doesn’t have to match Neutral→Bear).
What states and transitions are shown?
The three market states visualized are:
Bullish (Bull): Upward or strong-market regime.
Bearish (Bear): Downward or weak-market regime.
Neutral: Sideways or range-bound regime.
Bidirectional animated arrows and probability labels show how likely the market is to move from one regime to another (e.g., Bull → Bear or Neutral → Bull).
How does the regime detection system work?
You can use either built-in price returns (based on adaptive Z-score normalization) or supply three custom indicators (such as volume, oscillators, etc.).
Values are statistically normalized (Z-scored) over a configurable lookback period.
The normalized outputs are classified into Bull, Bear, or Neutral zones.
If using three indicators, their regime signals are averaged and smoothed for robustness.
How are transition probabilities calculated?
On every confirmed bar, the algorithm tracks the sequence of detected market states, then builds a rolling window of transitions.
The code maintains a transition count matrix for all regime pairs (e.g., Bull → Bear).
Transition probabilities are extracted for each possible state change using Laplace smoothing for numerical stability, and frequently updated in real-time.
What is unique about the visualization?
3D animated spheres represent each regime and change visually when active.
Animated, bidirectional arrows reveal transition probabilities and allow you to see both dominant and less likely regime flows.
Particles (moving dots) animate along the arrows, enhancing the perception of regime flow direction and speed.
All elements dynamically update with each new price bar, providing a live market map in an intuitive, engaging format.
Can I use custom indicators for regime classification?
Yes! Enable the "Custom Indicators" switch and select any three chart series as inputs. These will be normalized and combined (each with equal weight), broadening the regime classification beyond just price-based movement.
What does the “Lookback Period” control?
Lookback Period (default: 100) sets how much historical data builds the probability matrix. Shorter periods adapt faster to regime changes but may be noisier. Longer periods are more stable but slower to adapt.
How is this different from a Hidden Markov Model (HMM)?
It sets the window for both regime detection and probability calculations. Lower values make the system more reactive, but potentially noisier. Higher values smooth estimates and make the system more robust.
How is this Markov Chain different from a Hidden Markov Model (HMM)?
Markov Chain (as here): All market regimes (Bull, Bear, Neutral) are directly observable on the chart. The transition matrix is built from actual detected regimes, keeping the model simple and interpretable.
Hidden Markov Model: The actual regimes are unobservable ("hidden") and must be inferred from market output or indicator "emissions" using statistical learning algorithms. HMMs are more complex, can capture more subtle structure, but are harder to visualize and require additional machine learning steps for training.
A standard Markov Chain models transitions between observable states using a simple transition matrix, while a Hidden Markov Model assumes the true states are hidden (latent) and must be inferred from observable “emissions” like price or volume data. In practical terms, a Markov Chain is transparent and easier to implement and interpret; an HMM is more expressive but requires statistical inference to estimate hidden states from data.
Markov Chain: states are observable; you directly count or estimate transition probabilities between visible states. This makes it simpler, faster, and easier to validate and tune.
HMM: states are hidden; you only observe emissions generated by those latent states. Learning involves machine learning/statistical algorithms (commonly Baum–Welch/EM for training and Viterbi for decoding) to infer both the transition dynamics and the most likely hidden state sequence from data.
How does the indicator avoid “repainting” or look-ahead bias?
All regime changes and matrix updates happen only on confirmed (closed) bars, so no future data is leaked, ensuring reliable real-time operation.
Are there practical tuning tips?
Tune the Lookback Period for your asset/timeframe: shorter for fast markets, longer for stability.
Use custom indicators if your asset has unique regime drivers.
Watch for rapid changes in transition probabilities as early warning of a possible regime shift.
Who is this indicator for?
Quants and quantitative researchers exploring probabilistic market modeling, especially those interested in regime-switching dynamics and Markov models.
Programmers and system developers who need a probabilistic regime filter for systematic and algorithmic backtesting:
The Markov Chain indicator is ideally suited for programmatic integration via its bias output (1 = Bull, 0 = Neutral, -1 = Bear).
Although the visualization is engaging, the core output is designed for automated, rules-based workflows—not for discretionary/manual trading decisions.
Developers can connect the indicator’s output directly to their Pine Script logic (using input.source()), allowing rapid and robust backtesting of regime-based strategies.
It acts as a plug-and-play regime filter: simply plug the bias output into your entry/exit logic, and you have a scientifically robust, probabilistically-derived signal for filtering, timing, position sizing, or risk regimes.
The MC's output is intentionally "trinary" (1/0/-1), focusing on clear regime states for unambiguous decision-making in code. If you require nuanced, multi-probability or soft-label state vectors, consider expanding the indicator or stacking it with a probability-weighted logic layer in your scripting.
Because it avoids subjectivity, this approach is optimal for systematic quants, algo developers building backtested, repeatable strategies based on probabilistic regime analysis.
What's the mathematical foundation behind this?
The mathematical foundation behind this Markov Chain indicator—and probabilistic regime detection in finance—draws from two principal models: the (standard) Markov Chain and the Hidden Markov Model (HMM).
How to use this indicator programmatically?
The Markov Chain indicator automatically exports a bias value (+1 for Bullish, -1 for Bearish, 0 for Neutral) as a plot visible in the Data Window. This allows you to integrate its regime signal into your own scripts and strategies for backtesting, automation, or live trading.
Step-by-Step Integration with Pine Script (input.source)
Add the Markov Chain indicator to your chart.
This must be done first, since your custom script will "pull" the bias signal from the indicator's plot.
In your strategy, create an input using input.source()
Example:
//@version=5
strategy("MC Bias Strategy Example")
mcBias = input.source(close, "MC Bias Source")
After saving, go to your script’s settings. For the “MC Bias Source” input, select the plot/output of the Markov Chain indicator (typically its bias plot).
Use the bias in your trading logic
Example (long only on Bull, flat otherwise):
if mcBias == 1
strategy.entry("Long", strategy.long)
else
strategy.close("Long")
For more advanced workflows, combine mcBias with additional filters or trailing stops.
How does this work behind-the-scenes?
TradingView’s input.source() lets you use any plot from another indicator as a real-time, “live” data feed in your own script (source).
The selected bias signal is available to your Pine code as a variable, enabling logical decisions based on regime (trend-following, mean-reversion, etc.).
This enables powerful strategy modularity : decouple regime detection from entry/exit logic, allowing fast experimentation without rewriting core signal code.
Integrating 45+ Indicators with Your Markov Chain — How & Why
The Enhanced Custom Indicators Export script exports a massive suite of over 45 technical indicators—ranging from classic momentum (RSI, MACD, Stochastic, etc.) to trend, volume, volatility, and oscillator tools—all pre-calculated, centered/scaled, and available as plots.
// Enhanced Custom Indicators Export - 45 Technical Indicators
// Comprehensive technical analysis suite for advanced market regime detection
//@version=6
indicator('Enhanced Custom Indicators Export | Fractalyst', shorttitle='Enhanced CI Export', overlay=false, scale=scale.right, max_labels_count=500, max_lines_count=500)
// |----- Input Parameters -----| //
momentum_group = "Momentum Indicators"
trend_group = "Trend Indicators"
volume_group = "Volume Indicators"
volatility_group = "Volatility Indicators"
oscillator_group = "Oscillator Indicators"
display_group = "Display Settings"
// Common lengths
length_14 = input.int(14, "Standard Length (14)", minval=1, maxval=100, group=momentum_group)
length_20 = input.int(20, "Medium Length (20)", minval=1, maxval=200, group=trend_group)
length_50 = input.int(50, "Long Length (50)", minval=1, maxval=200, group=trend_group)
// Display options
show_table = input.bool(true, "Show Values Table", group=display_group)
table_size = input.string("Small", "Table Size", options= , group=display_group)
// |----- MOMENTUM INDICATORS (15 indicators) -----| //
// 1. RSI (Relative Strength Index)
rsi_14 = ta.rsi(close, length_14)
rsi_centered = rsi_14 - 50
// 2. Stochastic Oscillator
stoch_k = ta.stoch(close, high, low, length_14)
stoch_d = ta.sma(stoch_k, 3)
stoch_centered = stoch_k - 50
// 3. Williams %R
williams_r = ta.stoch(close, high, low, length_14) - 100
// 4. MACD (Moving Average Convergence Divergence)
= ta.macd(close, 12, 26, 9)
// 5. Momentum (Rate of Change)
momentum = ta.mom(close, length_14)
momentum_pct = (momentum / close ) * 100
// 6. Rate of Change (ROC)
roc = ta.roc(close, length_14)
// 7. Commodity Channel Index (CCI)
cci = ta.cci(close, length_20)
// 8. Money Flow Index (MFI)
mfi = ta.mfi(close, length_14)
mfi_centered = mfi - 50
// 9. Awesome Oscillator (AO)
ao = ta.sma(hl2, 5) - ta.sma(hl2, 34)
// 10. Accelerator Oscillator (AC)
ac = ao - ta.sma(ao, 5)
// 11. Chande Momentum Oscillator (CMO)
cmo = ta.cmo(close, length_14)
// 12. Detrended Price Oscillator (DPO)
dpo = close - ta.sma(close, length_20)
// 13. Price Oscillator (PPO)
ppo = ta.sma(close, 12) - ta.sma(close, 26)
ppo_pct = (ppo / ta.sma(close, 26)) * 100
// 14. TRIX
trix_ema1 = ta.ema(close, length_14)
trix_ema2 = ta.ema(trix_ema1, length_14)
trix_ema3 = ta.ema(trix_ema2, length_14)
trix = ta.roc(trix_ema3, 1) * 10000
// 15. Klinger Oscillator
klinger = ta.ema(volume * (high + low + close) / 3, 34) - ta.ema(volume * (high + low + close) / 3, 55)
// 16. Fisher Transform
fisher_hl2 = 0.5 * (hl2 - ta.lowest(hl2, 10)) / (ta.highest(hl2, 10) - ta.lowest(hl2, 10)) - 0.25
fisher = 0.5 * math.log((1 + fisher_hl2) / (1 - fisher_hl2))
// 17. Stochastic RSI
stoch_rsi = ta.stoch(rsi_14, rsi_14, rsi_14, length_14)
stoch_rsi_centered = stoch_rsi - 50
// 18. Relative Vigor Index (RVI)
rvi_num = ta.swma(close - open)
rvi_den = ta.swma(high - low)
rvi = rvi_den != 0 ? rvi_num / rvi_den : 0
// 19. Balance of Power (BOP)
bop = (close - open) / (high - low)
// |----- TREND INDICATORS (10 indicators) -----| //
// 20. Simple Moving Average Momentum
sma_20 = ta.sma(close, length_20)
sma_momentum = ((close - sma_20) / sma_20) * 100
// 21. Exponential Moving Average Momentum
ema_20 = ta.ema(close, length_20)
ema_momentum = ((close - ema_20) / ema_20) * 100
// 22. Parabolic SAR
sar = ta.sar(0.02, 0.02, 0.2)
sar_trend = close > sar ? 1 : -1
// 23. Linear Regression Slope
lr_slope = ta.linreg(close, length_20, 0) - ta.linreg(close, length_20, 1)
// 24. Moving Average Convergence (MAC)
mac = ta.sma(close, 10) - ta.sma(close, 30)
// 25. Trend Intensity Index (TII)
tii_sum = 0.0
for i = 1 to length_20
tii_sum += close > close ? 1 : 0
tii = (tii_sum / length_20) * 100
// 26. Ichimoku Cloud Components
ichimoku_tenkan = (ta.highest(high, 9) + ta.lowest(low, 9)) / 2
ichimoku_kijun = (ta.highest(high, 26) + ta.lowest(low, 26)) / 2
ichimoku_signal = ichimoku_tenkan > ichimoku_kijun ? 1 : -1
// 27. MESA Adaptive Moving Average (MAMA)
mama_alpha = 2.0 / (length_20 + 1)
mama = ta.ema(close, length_20)
mama_momentum = ((close - mama) / mama) * 100
// 28. Zero Lag Exponential Moving Average (ZLEMA)
zlema_lag = math.round((length_20 - 1) / 2)
zlema_data = close + (close - close )
zlema = ta.ema(zlema_data, length_20)
zlema_momentum = ((close - zlema) / zlema) * 100
// |----- VOLUME INDICATORS (6 indicators) -----| //
// 29. On-Balance Volume (OBV)
obv = ta.obv
// 30. Volume Rate of Change (VROC)
vroc = ta.roc(volume, length_14)
// 31. Price Volume Trend (PVT)
pvt = ta.pvt
// 32. Negative Volume Index (NVI)
nvi = 0.0
nvi := volume < volume ? nvi + ((close - close ) / close ) * nvi : nvi
// 33. Positive Volume Index (PVI)
pvi = 0.0
pvi := volume > volume ? pvi + ((close - close ) / close ) * pvi : pvi
// 34. Volume Oscillator
vol_osc = ta.sma(volume, 5) - ta.sma(volume, 10)
// 35. Ease of Movement (EOM)
eom_distance = high - low
eom_box_height = volume / 1000000
eom = eom_box_height != 0 ? eom_distance / eom_box_height : 0
eom_sma = ta.sma(eom, length_14)
// 36. Force Index
force_index = volume * (close - close )
force_index_sma = ta.sma(force_index, length_14)
// |----- VOLATILITY INDICATORS (10 indicators) -----| //
// 37. Average True Range (ATR)
atr = ta.atr(length_14)
atr_pct = (atr / close) * 100
// 38. Bollinger Bands Position
bb_basis = ta.sma(close, length_20)
bb_dev = 2.0 * ta.stdev(close, length_20)
bb_upper = bb_basis + bb_dev
bb_lower = bb_basis - bb_dev
bb_position = bb_dev != 0 ? (close - bb_basis) / bb_dev : 0
bb_width = bb_dev != 0 ? (bb_upper - bb_lower) / bb_basis * 100 : 0
// 39. Keltner Channels Position
kc_basis = ta.ema(close, length_20)
kc_range = ta.ema(ta.tr, length_20)
kc_upper = kc_basis + (2.0 * kc_range)
kc_lower = kc_basis - (2.0 * kc_range)
kc_position = kc_range != 0 ? (close - kc_basis) / kc_range : 0
// 40. Donchian Channels Position
dc_upper = ta.highest(high, length_20)
dc_lower = ta.lowest(low, length_20)
dc_basis = (dc_upper + dc_lower) / 2
dc_position = (dc_upper - dc_lower) != 0 ? (close - dc_basis) / (dc_upper - dc_lower) : 0
// 41. Standard Deviation
std_dev = ta.stdev(close, length_20)
std_dev_pct = (std_dev / close) * 100
// 42. Relative Volatility Index (RVI)
rvi_up = ta.stdev(close > close ? close : 0, length_14)
rvi_down = ta.stdev(close < close ? close : 0, length_14)
rvi_total = rvi_up + rvi_down
rvi_volatility = rvi_total != 0 ? (rvi_up / rvi_total) * 100 : 50
// 43. Historical Volatility
hv_returns = math.log(close / close )
hv = ta.stdev(hv_returns, length_20) * math.sqrt(252) * 100
// 44. Garman-Klass Volatility
gk_vol = math.log(high/low) * math.log(high/low) - (2*math.log(2)-1) * math.log(close/open) * math.log(close/open)
gk_volatility = math.sqrt(ta.sma(gk_vol, length_20)) * 100
// 45. Parkinson Volatility
park_vol = math.log(high/low) * math.log(high/low)
parkinson = math.sqrt(ta.sma(park_vol, length_20) / (4 * math.log(2))) * 100
// 46. Rogers-Satchell Volatility
rs_vol = math.log(high/close) * math.log(high/open) + math.log(low/close) * math.log(low/open)
rogers_satchell = math.sqrt(ta.sma(rs_vol, length_20)) * 100
// |----- OSCILLATOR INDICATORS (5 indicators) -----| //
// 47. Elder Ray Index
elder_bull = high - ta.ema(close, 13)
elder_bear = low - ta.ema(close, 13)
elder_power = elder_bull + elder_bear
// 48. Schaff Trend Cycle (STC)
stc_macd = ta.ema(close, 23) - ta.ema(close, 50)
stc_k = ta.stoch(stc_macd, stc_macd, stc_macd, 10)
stc_d = ta.ema(stc_k, 3)
stc = ta.stoch(stc_d, stc_d, stc_d, 10)
// 49. Coppock Curve
coppock_roc1 = ta.roc(close, 14)
coppock_roc2 = ta.roc(close, 11)
coppock = ta.wma(coppock_roc1 + coppock_roc2, 10)
// 50. Know Sure Thing (KST)
kst_roc1 = ta.roc(close, 10)
kst_roc2 = ta.roc(close, 15)
kst_roc3 = ta.roc(close, 20)
kst_roc4 = ta.roc(close, 30)
kst = ta.sma(kst_roc1, 10) + 2*ta.sma(kst_roc2, 10) + 3*ta.sma(kst_roc3, 10) + 4*ta.sma(kst_roc4, 15)
// 51. Percentage Price Oscillator (PPO)
ppo_line = ((ta.ema(close, 12) - ta.ema(close, 26)) / ta.ema(close, 26)) * 100
ppo_signal = ta.ema(ppo_line, 9)
ppo_histogram = ppo_line - ppo_signal
// |----- PLOT MAIN INDICATORS -----| //
// Plot key momentum indicators
plot(rsi_centered, title="01_RSI_Centered", color=color.purple, linewidth=1)
plot(stoch_centered, title="02_Stoch_Centered", color=color.blue, linewidth=1)
plot(williams_r, title="03_Williams_R", color=color.red, linewidth=1)
plot(macd_histogram, title="04_MACD_Histogram", color=color.orange, linewidth=1)
plot(cci, title="05_CCI", color=color.green, linewidth=1)
// Plot trend indicators
plot(sma_momentum, title="06_SMA_Momentum", color=color.navy, linewidth=1)
plot(ema_momentum, title="07_EMA_Momentum", color=color.maroon, linewidth=1)
plot(sar_trend, title="08_SAR_Trend", color=color.teal, linewidth=1)
plot(lr_slope, title="09_LR_Slope", color=color.lime, linewidth=1)
plot(mac, title="10_MAC", color=color.fuchsia, linewidth=1)
// Plot volatility indicators
plot(atr_pct, title="11_ATR_Pct", color=color.yellow, linewidth=1)
plot(bb_position, title="12_BB_Position", color=color.aqua, linewidth=1)
plot(kc_position, title="13_KC_Position", color=color.olive, linewidth=1)
plot(std_dev_pct, title="14_StdDev_Pct", color=color.silver, linewidth=1)
plot(bb_width, title="15_BB_Width", color=color.gray, linewidth=1)
// Plot volume indicators
plot(vroc, title="16_VROC", color=color.blue, linewidth=1)
plot(eom_sma, title="17_EOM", color=color.red, linewidth=1)
plot(vol_osc, title="18_Vol_Osc", color=color.green, linewidth=1)
plot(force_index_sma, title="19_Force_Index", color=color.orange, linewidth=1)
plot(obv, title="20_OBV", color=color.purple, linewidth=1)
// Plot additional oscillators
plot(ao, title="21_Awesome_Osc", color=color.navy, linewidth=1)
plot(cmo, title="22_CMO", color=color.maroon, linewidth=1)
plot(dpo, title="23_DPO", color=color.teal, linewidth=1)
plot(trix, title="24_TRIX", color=color.lime, linewidth=1)
plot(fisher, title="25_Fisher", color=color.fuchsia, linewidth=1)
// Plot more momentum indicators
plot(mfi_centered, title="26_MFI_Centered", color=color.yellow, linewidth=1)
plot(ac, title="27_AC", color=color.aqua, linewidth=1)
plot(ppo_pct, title="28_PPO_Pct", color=color.olive, linewidth=1)
plot(stoch_rsi_centered, title="29_StochRSI_Centered", color=color.silver, linewidth=1)
plot(klinger, title="30_Klinger", color=color.gray, linewidth=1)
// Plot trend continuation
plot(tii, title="31_TII", color=color.blue, linewidth=1)
plot(ichimoku_signal, title="32_Ichimoku_Signal", color=color.red, linewidth=1)
plot(mama_momentum, title="33_MAMA_Momentum", color=color.green, linewidth=1)
plot(zlema_momentum, title="34_ZLEMA_Momentum", color=color.orange, linewidth=1)
plot(bop, title="35_BOP", color=color.purple, linewidth=1)
// Plot volume continuation
plot(nvi, title="36_NVI", color=color.navy, linewidth=1)
plot(pvi, title="37_PVI", color=color.maroon, linewidth=1)
plot(momentum_pct, title="38_Momentum_Pct", color=color.teal, linewidth=1)
plot(roc, title="39_ROC", color=color.lime, linewidth=1)
plot(rvi, title="40_RVI", color=color.fuchsia, linewidth=1)
// Plot volatility continuation
plot(dc_position, title="41_DC_Position", color=color.yellow, linewidth=1)
plot(rvi_volatility, title="42_RVI_Volatility", color=color.aqua, linewidth=1)
plot(hv, title="43_Historical_Vol", color=color.olive, linewidth=1)
plot(gk_volatility, title="44_GK_Volatility", color=color.silver, linewidth=1)
plot(parkinson, title="45_Parkinson_Vol", color=color.gray, linewidth=1)
// Plot final oscillators
plot(rogers_satchell, title="46_RS_Volatility", color=color.blue, linewidth=1)
plot(elder_power, title="47_Elder_Power", color=color.red, linewidth=1)
plot(stc, title="48_STC", color=color.green, linewidth=1)
plot(coppock, title="49_Coppock", color=color.orange, linewidth=1)
plot(kst, title="50_KST", color=color.purple, linewidth=1)
// Plot final indicators
plot(ppo_histogram, title="51_PPO_Histogram", color=color.navy, linewidth=1)
plot(pvt, title="52_PVT", color=color.maroon, linewidth=1)
// |----- Reference Lines -----| //
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dashed, linewidth=1)
hline(50, "Midline", color=color.gray, linestyle=hline.style_dotted, linewidth=1)
hline(-50, "Lower Midline", color=color.gray, linestyle=hline.style_dotted, linewidth=1)
hline(25, "Upper Threshold", color=color.gray, linestyle=hline.style_dotted, linewidth=1)
hline(-25, "Lower Threshold", color=color.gray, linestyle=hline.style_dotted, linewidth=1)
// |----- Enhanced Information Table -----| //
if show_table and barstate.islast
table_position = position.top_right
table_text_size = table_size == "Tiny" ? size.tiny : table_size == "Small" ? size.small : size.normal
var table info_table = table.new(table_position, 3, 18, bgcolor=color.new(color.white, 85), border_width=1, border_color=color.gray)
// Headers
table.cell(info_table, 0, 0, 'Category', text_color=color.black, text_size=table_text_size, bgcolor=color.new(color.blue, 70))
table.cell(info_table, 1, 0, 'Indicator', text_color=color.black, text_size=table_text_size, bgcolor=color.new(color.blue, 70))
table.cell(info_table, 2, 0, 'Value', text_color=color.black, text_size=table_text_size, bgcolor=color.new(color.blue, 70))
// Key Momentum Indicators
table.cell(info_table, 0, 1, 'MOMENTUM', text_color=color.purple, text_size=table_text_size, bgcolor=color.new(color.purple, 90))
table.cell(info_table, 1, 1, 'RSI Centered', text_color=color.purple, text_size=table_text_size)
table.cell(info_table, 2, 1, str.tostring(rsi_centered, '0.00'), text_color=color.purple, text_size=table_text_size)
table.cell(info_table, 0, 2, '', text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 1, 2, 'Stoch Centered', text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 2, 2, str.tostring(stoch_centered, '0.00'), text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 0, 3, '', text_color=color.red, text_size=table_text_size)
table.cell(info_table, 1, 3, 'Williams %R', text_color=color.red, text_size=table_text_size)
table.cell(info_table, 2, 3, str.tostring(williams_r, '0.00'), text_color=color.red, text_size=table_text_size)
table.cell(info_table, 0, 4, '', text_color=color.orange, text_size=table_text_size)
table.cell(info_table, 1, 4, 'MACD Histogram', text_color=color.orange, text_size=table_text_size)
table.cell(info_table, 2, 4, str.tostring(macd_histogram, '0.000'), text_color=color.orange, text_size=table_text_size)
table.cell(info_table, 0, 5, '', text_color=color.green, text_size=table_text_size)
table.cell(info_table, 1, 5, 'CCI', text_color=color.green, text_size=table_text_size)
table.cell(info_table, 2, 5, str.tostring(cci, '0.00'), text_color=color.green, text_size=table_text_size)
// Key Trend Indicators
table.cell(info_table, 0, 6, 'TREND', text_color=color.navy, text_size=table_text_size, bgcolor=color.new(color.navy, 90))
table.cell(info_table, 1, 6, 'SMA Momentum %', text_color=color.navy, text_size=table_text_size)
table.cell(info_table, 2, 6, str.tostring(sma_momentum, '0.00'), text_color=color.navy, text_size=table_text_size)
table.cell(info_table, 0, 7, '', text_color=color.maroon, text_size=table_text_size)
table.cell(info_table, 1, 7, 'EMA Momentum %', text_color=color.maroon, text_size=table_text_size)
table.cell(info_table, 2, 7, str.tostring(ema_momentum, '0.00'), text_color=color.maroon, text_size=table_text_size)
table.cell(info_table, 0, 8, '', text_color=color.teal, text_size=table_text_size)
table.cell(info_table, 1, 8, 'SAR Trend', text_color=color.teal, text_size=table_text_size)
table.cell(info_table, 2, 8, str.tostring(sar_trend, '0'), text_color=color.teal, text_size=table_text_size)
table.cell(info_table, 0, 9, '', text_color=color.lime, text_size=table_text_size)
table.cell(info_table, 1, 9, 'Linear Regression', text_color=color.lime, text_size=table_text_size)
table.cell(info_table, 2, 9, str.tostring(lr_slope, '0.000'), text_color=color.lime, text_size=table_text_size)
// Key Volatility Indicators
table.cell(info_table, 0, 10, 'VOLATILITY', text_color=color.yellow, text_size=table_text_size, bgcolor=color.new(color.yellow, 90))
table.cell(info_table, 1, 10, 'ATR %', text_color=color.yellow, text_size=table_text_size)
table.cell(info_table, 2, 10, str.tostring(atr_pct, '0.00'), text_color=color.yellow, text_size=table_text_size)
table.cell(info_table, 0, 11, '', text_color=color.aqua, text_size=table_text_size)
table.cell(info_table, 1, 11, 'BB Position', text_color=color.aqua, text_size=table_text_size)
table.cell(info_table, 2, 11, str.tostring(bb_position, '0.00'), text_color=color.aqua, text_size=table_text_size)
table.cell(info_table, 0, 12, '', text_color=color.olive, text_size=table_text_size)
table.cell(info_table, 1, 12, 'KC Position', text_color=color.olive, text_size=table_text_size)
table.cell(info_table, 2, 12, str.tostring(kc_position, '0.00'), text_color=color.olive, text_size=table_text_size)
// Key Volume Indicators
table.cell(info_table, 0, 13, 'VOLUME', text_color=color.blue, text_size=table_text_size, bgcolor=color.new(color.blue, 90))
table.cell(info_table, 1, 13, 'Volume ROC', text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 2, 13, str.tostring(vroc, '0.00'), text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 0, 14, '', text_color=color.red, text_size=table_text_size)
table.cell(info_table, 1, 14, 'EOM', text_color=color.red, text_size=table_text_size)
table.cell(info_table, 2, 14, str.tostring(eom_sma, '0.000'), text_color=color.red, text_size=table_text_size)
// Key Oscillators
table.cell(info_table, 0, 15, 'OSCILLATORS', text_color=color.purple, text_size=table_text_size, bgcolor=color.new(color.purple, 90))
table.cell(info_table, 1, 15, 'Awesome Osc', text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 2, 15, str.tostring(ao, '0.000'), text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 0, 16, '', text_color=color.red, text_size=table_text_size)
table.cell(info_table, 1, 16, 'Fisher Transform', text_color=color.red, text_size=table_text_size)
table.cell(info_table, 2, 16, str.tostring(fisher, '0.000'), text_color=color.red, text_size=table_text_size)
// Summary Statistics
table.cell(info_table, 0, 17, 'SUMMARY', text_color=color.black, text_size=table_text_size, bgcolor=color.new(color.gray, 70))
table.cell(info_table, 1, 17, 'Total Indicators: 52', text_color=color.black, text_size=table_text_size)
regime_color = rsi_centered > 10 ? color.green : rsi_centered < -10 ? color.red : color.gray
regime_text = rsi_centered > 10 ? "BULLISH" : rsi_centered < -10 ? "BEARISH" : "NEUTRAL"
table.cell(info_table, 2, 17, regime_text, text_color=regime_color, text_size=table_text_size)
This makes it the perfect “indicator backbone” for quantitative and systematic traders who want to prototype, combine, and test new regime detection models—especially in combination with the Markov Chain indicator.
How to use this script with the Markov Chain for research and backtesting:
Add the Enhanced Indicator Export to your chart.
Every calculated indicator is available as an individual data stream.
Connect the indicator(s) you want as custom input(s) to the Markov Chain’s “Custom Indicators” option.
In the Markov Chain indicator’s settings, turn ON the custom indicator mode.
For each of the three custom indicator inputs, select the exported plot from the Enhanced Export script—the menu lists all 45+ signals by name.
This creates a powerful, modular regime-detection engine where you can mix-and-match momentum, trend, volume, or custom combinations for advanced filtering.
Backtest regime logic directly.
Once you’ve connected your chosen indicators, the Markov Chain script performs regime detection (Bull/Neutral/Bear) based on your selected features—not just price returns.
The regime detection is robust, automatically normalized (using Z-score), and outputs bias (1, -1, 0) for plug-and-play integration.
Export the regime bias for programmatic use.
As described above, use input.source() in your Pine Script strategy or system and link the bias output.
You can now filter signals, control trade direction/size, or design pairs-trading that respect true, indicator-driven market regimes.
With this framework, you’re not limited to static or simplistic regime filters. You can rigorously define, test, and refine what “market regime” means for your strategies—using the technical features that matter most to you.
Optimize your signal generation by backtesting across a universe of meaningful indicator blends.
Enhance risk management with objective, real-time regime boundaries.
Accelerate your research: iterate quickly, swap indicator components, and see results with minimal code changes.
Automate multi-asset or pairs-trading by integrating regime context directly into strategy logic.
Add both scripts to your chart, connect your preferred features, and start investigating your best regime-based trades—entirely within the TradingView ecosystem.
References & Further Reading
Ang, A., & Bekaert, G. (2002). “Regime Switches in Interest Rates.” Journal of Business & Economic Statistics, 20(2), 163–182.
Hamilton, J. D. (1989). “A New Approach to the Economic Analysis of Nonstationary Time Series and the Business Cycle.” Econometrica, 57(2), 357–384.
Markov, A. A. (1906). "Extension of the Limit Theorems of Probability Theory to a Sum of Variables Connected in a Chain." The Notes of the Imperial Academy of Sciences of St. Petersburg.
Guidolin, M., & Timmermann, A. (2007). “Asset Allocation under Multivariate Regime Switching.” Journal of Economic Dynamics and Control, 31(11), 3503–3544.
Murphy, J. J. (1999). Technical Analysis of the Financial Markets. New York Institute of Finance.
Brock, W., Lakonishok, J., & LeBaron, B. (1992). “Simple Technical Trading Rules and the Stochastic Properties of Stock Returns.” Journal of Finance, 47(5), 1731–1764.
Zucchini, W., MacDonald, I. L., & Langrock, R. (2017). Hidden Markov Models for Time Series: An Introduction Using R (2nd ed.). Chapman and Hall/CRC.
On Quantitative Finance and Markov Models:
Lo, A. W., & Hasanhodzic, J. (2009). The Heretics of Finance: Conversations with Leading Practitioners of Technical Analysis. Bloomberg Press.
Patterson, S. (2016). The Man Who Solved the Market: How Jim Simons Launched the Quant Revolution. Penguin Press.
TradingView Pine Script Documentation: www.tradingview.com
TradingView Blog: “Use an Input From Another Indicator With Your Strategy” www.tradingview.com
GeeksforGeeks: “What is the Difference Between Markov Chains and Hidden Markov Models?” www.geeksforgeeks.org
What makes this indicator original and unique?
- On‑chart, real‑time Markov. The chain is drawn directly on your chart. You see the current regime, its tendency to stay (self‑loop), and the usual next step (arrows) as bars confirm.
- Source‑agnostic by design. The engine runs on any series you select via input.source() — price, your own oscillator, a composite score, anything you compute in the script.
- Automatic normalization + regime mapping. Different inputs live on different scales. The script standardizes your chosen source and maps it into clear regimes (e.g., Bull / Bear / Neutral) without you micromanaging thresholds each time.
- Rolling, bar‑by‑bar learning. Transition tendencies are computed from a rolling window of confirmed bars. What you see is exactly what the market did in that window.
- Fast experimentation. Switch the source, adjust the window, and the Markov view updates instantly. It’s a rapid way to test ideas and feel regime persistence/switch behavior.
Integrate your own signals (using input.source())
- In settings, choose the Source . This is powered by input.source() .
- Feed it price, an indicator you compute inside the script, or a custom composite series.
- The script will automatically normalize that series and process it through the Markov engine, mapping it to regimes and updating the on‑chart spheres/arrows in real time.
Credits:
Deep gratitude to @RicardoSantos for both the foundational Markov chain processing engine and inspiring open-source contributions, which made advanced probabilistic market modeling accessible to the TradingView community.
Special thanks to @Alien_Algorithms for the innovative and visually stunning 3D sphere logic that powers the indicator’s animated, regime-based visualization.
Disclaimer
This tool summarizes recent behavior. It is not financial advice and not a guarantee of future results.