Percent Change Smoothed (PCT + EMA)ROC works great on data with only positive numbers (like prices).
But it fails to correctly represent the rate of change when source series have negative values.
ROC is positive when:
Source is positive AND Source is rising
OR Source is negative AND Source is falling
Percent change (PCT) is just a ROC that deals with this sign confusion.
Anyone with Data Science backgroud would likely know about it.
PCT is positive only when:
Source is rising
When applying to only positive data PCT = ROC they are exactly equal.
I've also added EMA smoothing option.
Enjoy!
Cari dalam skrip untuk "roc"
ROC(2) pivot plottingtoday's pivot (day 0)= yesterday's close (day 1) minus close of 2 days before yesterday (day 3) plus day before yesterday's close (day 2)
Rate Of Change - Absolute ValueMeasures the period's change in terms of the instrument's value (e.g. pip, dollar, etc) instead of as a percentage. I generally use it on a daily time frame with a period=1 to see how the current day's move compares with prior days' moves in order to gain a perspective into how this move ranks historically.
Adaptive Momentum Reversion StrategyThe Adaptive Momentum Reversion Strategy: An Empirical Approach to Market Behavior
The Adaptive Momentum Reversion Strategy seeks to capitalize on market price dynamics by combining concepts from momentum and mean reversion theories. This hybrid approach leverages a Rate of Change (ROC) indicator along with Bollinger Bands to identify overbought and oversold conditions, triggering trades based on the crossing of specific thresholds. The strategy aims to detect momentum shifts and exploit price reversions to their mean.
Theoretical Framework
Momentum and Mean Reversion: Momentum trading assumes that assets with a recent history of strong performance will continue in that direction, while mean reversion suggests that assets tend to return to their historical average over time (Fama & French, 1988; Poterba & Summers, 1988). This strategy incorporates elements of both, looking for periods when momentum is either overextended (and likely to revert) or when the asset’s price is temporarily underpriced relative to its historical trend.
Rate of Change (ROC): The ROC is a straightforward momentum indicator that measures the percentage change in price over a specified period (Wilder, 1978). The strategy calculates the ROC over a 2-period window, making it responsive to short-term price changes. By using ROC, the strategy aims to detect price acceleration and deceleration.
Bollinger Bands: Bollinger Bands are used to identify volatility and potential price extremes, often signaling overbought or oversold conditions. The bands consist of a moving average and two standard deviation bounds that adjust dynamically with price volatility (Bollinger, 2002).
The strategy employs two sets of Bollinger Bands: one for short-term volatility (lower band) and another for longer-term trends (upper band), with different lengths and standard deviation multipliers.
Strategy Construction
Indicator Inputs:
ROC Period: The rate of change is computed over a 2-period window, which provides sensitivity to short-term price fluctuations.
Bollinger Bands:
Lower Band: Calculated with a 18-period length and a standard deviation of 1.7.
Upper Band: Calculated with a 21-period length and a standard deviation of 2.1.
Calculations:
ROC Calculation: The ROC is computed by comparing the current close price to the close price from rocPeriod days ago, expressing it as a percentage.
Bollinger Bands: The strategy calculates both upper and lower Bollinger Bands around the ROC, using a simple moving average as the central basis. The lower Bollinger Band is used as a reference for identifying potential long entry points when the ROC crosses above it, while the upper Bollinger Band serves as a reference for exits, when the ROC crosses below it.
Trading Conditions:
Long Entry: A long position is initiated when the ROC crosses above the lower Bollinger Band, signaling a potential shift from a period of low momentum to an increase in price movement.
Exit Condition: A position is closed when the ROC crosses under the upper Bollinger Band, or when the ROC drops below the lower band again, indicating a reversal or weakening of momentum.
Visual Indicators:
ROC Plot: The ROC is plotted as a line to visualize the momentum direction.
Bollinger Bands: The upper and lower bands, along with their basis (simple moving averages), are plotted to delineate the expected range for the ROC.
Background Color: To enhance decision-making, the strategy colors the background when extreme conditions are detected—green for oversold (ROC below the lower band) and red for overbought (ROC above the upper band), indicating potential reversal zones.
Strategy Performance Considerations
The use of Bollinger Bands in this strategy provides an adaptive framework that adjusts to changing market volatility. When volatility increases, the bands widen, allowing for larger price movements, while during quieter periods, the bands contract, reducing trade signals. This adaptiveness is critical in maintaining strategy effectiveness across different market conditions.
The strategy’s pyramiding setting is disabled (pyramiding=0), ensuring that only one position is taken at a time, which is a conservative risk management approach. Additionally, the strategy includes transaction costs and slippage parameters to account for real-world trading conditions.
Empirical Evidence and Relevance
The combination of momentum and mean reversion has been widely studied and shown to provide profitable opportunities under certain market conditions. Studies such as Jegadeesh and Titman (1993) confirm that momentum strategies tend to work well in trending markets, while mean reversion strategies have been effective during periods of high volatility or after sharp price movements (De Bondt & Thaler, 1985). By integrating both strategies into one system, the Adaptive Momentum Reversion Strategy may be able to capitalize on both trending and reverting market behavior.
Furthermore, research by Chan (1996) on momentum-based trading systems demonstrates that adaptive strategies, which adjust to changes in market volatility, often outperform static strategies, providing a compelling rationale for the use of Bollinger Bands in this context.
Conclusion
The Adaptive Momentum Reversion Strategy provides a robust framework for trading based on the dual concepts of momentum and mean reversion. By using ROC in combination with Bollinger Bands, the strategy is capable of identifying overbought and oversold conditions while adapting to changing market conditions. The use of adaptive indicators ensures that the strategy remains flexible and can perform across different market environments, potentially offering a competitive edge for traders who seek to balance risk and reward in their trading approaches.
References
Bollinger, J. (2002). Bollinger on Bollinger Bands. McGraw-Hill Professional.
Chan, L. K. C. (1996). Momentum, Mean Reversion, and the Cross-Section of Stock Returns. Journal of Finance, 51(5), 1681-1713.
De Bondt, W. F., & Thaler, R. H. (1985). Does the Stock Market Overreact? Journal of Finance, 40(3), 793-805.
Fama, E. F., & French, K. R. (1988). Permanent and Temporary Components of Stock Prices. Journal of Political Economy, 96(2), 246-273.
Jegadeesh, N., & Titman, S. (1993). Returns to Buying Winners and Selling Losers: Implications for Stock Market Efficiency. Journal of Finance, 48(1), 65-91.
Poterba, J. M., & Summers, L. H. (1988). Mean Reversion in Stock Prices: Evidence and Implications. Journal of Financial Economics, 22(1), 27-59.
Wilder, J. W. (1978). New Concepts in Technical Trading Systems. Trend Research.
KST Strategy [Skyrexio]Overview
KST Strategy leverages Know Sure Thing (KST) indicator in conjunction with the Williams Alligator and Moving average to obtain the high probability setups. KST is used for for having the high probability to enter in the direction of a current trend when momentum is rising, Alligator is used as a short term trend filter, while Moving average approximates the long term trend and allows trades only in its direction. Also strategy has the additional optional filter on Choppiness Index which does not allow trades if market is choppy, above the user-specified threshold. Strategy has the user specified take profit and stop-loss numbers, but multiplied by Average True Range (ATR) value on the moment when trade is open. The strategy opens only long trades.
Unique Features
ATR based stop-loss and take profit. Instead of fixed take profit and stop-loss percentage strategy utilizes user chosen numbers multiplied by ATR for its calculation.
Configurable Trading Periods. Users can tailor the strategy to specific market windows, adapting to different market conditions.
Optional Choppiness Index filter. Strategy allows to choose if it will use the filter trades with Choppiness Index and set up its threshold.
Methodology
The strategy opens long trade when the following price met the conditions:
Close price is above the Alligator's jaw line
Close price is above the filtering Moving average
KST line of Know Sure Thing indicator shall cross over its signal line (details in justification of methodology)
If the Choppiness Index filter is enabled its value shall be less than user defined threshold
When the long trade is executed algorithm defines the stop-loss level as the low minus user defined number, multiplied by ATR at the trade open candle. Also it defines take profit with close price plus user defined number, multiplied by ATR at the trade open candle. While trade is in progress, if high price on any candle above the calculated take profit level or low price is below the calculated stop loss level, trade is closed.
Strategy settings
In the inputs window user can setup the following strategy settings:
ATR Stop Loss (by default = 1.5, number of ATRs to calculate stop-loss level)
ATR Take Profit (by default = 3.5, number of ATRs to calculate take profit level)
Filter MA Type (by default = Least Squares MA, type of moving average which is used for filter MA)
Filter MA Length (by default = 200, length for filter MA calculation)
Enable Choppiness Index Filter (by default = true, setting to choose the optional filtering using Choppiness index)
Choppiness Index Threshold (by default = 50, Choppiness Index threshold, its value shall be below it to allow trades execution)
Choppiness Index Length (by default = 14, length used in Choppiness index calculation)
KST ROC Length #1 (by default = 10, value used in KST indicator calculation, more information in Justification of Methodology)
KST ROC Length #2 (by default = 15, value used in KST indicator calculation, more information in Justification of Methodology)
KST ROC Length #3 (by default = 20, value used in KST indicator calculation, more information in Justification of Methodology)
KST ROC Length #4 (by default = 30, value used in KST indicator calculation, more information in Justification of Methodology)
KST SMA Length #1 (by default = 10, value used in KST indicator calculation, more information in Justification of Methodology)
KST SMA Length #2 (by default = 10, value used in KST indicator calculation, more information in Justification of Methodology)
KST SMA Length #3 (by default = 10, value used in KST indicator calculation, more information in Justification of Methodology)
KST SMA Length #4 (by default = 15, value used in KST indicator calculation, more information in Justification of Methodology)
KST Signal Line Length (by default = 10, value used in KST indicator calculation, more information in Justification of Methodology)
User can choose the optimal parameters during backtesting on certain price chart.
Justification of Methodology
Before understanding why this particular combination of indicator has been chosen let's briefly explain what is KST, Williams Alligator, Moving Average, ATR and Choppiness Index.
The KST (Know Sure Thing) is a momentum oscillator developed by Martin Pring. It combines multiple Rate of Change (ROC) values, smoothed over different timeframes, to identify trend direction and momentum strength. First of all, what is ROC? ROC (Rate of Change) is a momentum indicator that measures the percentage change in price between the current price and the price a set number of periods ago.
ROC = 100 * (Current Price - Price N Periods Ago) / Price N Periods Ago
In our case N is the KST ROC Length inputs from settings, here we will calculate 4 different ROCs to obtain KST value:
KST = ROC1_smooth × 1 + ROC2_smooth × 2 + ROC3_smooth × 3 + ROC4_smooth × 4
ROC1 = ROC(close, KST ROC Length #1), smoothed by KST SMA Length #1,
ROC2 = ROC(close, KST ROC Length #2), smoothed by KST SMA Length #2,
ROC3 = ROC(close, KST ROC Length #3), smoothed by KST SMA Length #3,
ROC4 = ROC(close, KST ROC Length #4), smoothed by KST SMA Length #4
Also for this indicator the signal line is calculated:
Signal = SMA(KST, KST Signal Line Length)
When the KST line rises, it indicates increasing momentum and suggests that an upward trend may be developing. Conversely, when the KST line declines, it reflects weakening momentum and a potential downward trend. A crossover of the KST line above its signal line is considered a buy signal, while a crossover below the signal line is viewed as a sell signal. If the KST stays above zero, it indicates overall bullish momentum; if it remains below zero, it points to bearish momentum. The KST indicator smooths momentum across multiple timeframes, helping to reduce noise and provide clearer signals for medium- to long-term trends.
Next, let’s discuss the short-term trend filter, which combines the Williams Alligator and Williams Fractals. Williams Alligator
Developed by Bill Williams, the Alligator is a technical indicator that identifies trends and potential market reversals. It consists of three smoothed moving averages:
Jaw (Blue Line): The slowest of the three, based on a 13-period smoothed moving average shifted 8 bars ahead.
Teeth (Red Line): The medium-speed line, derived from an 8-period smoothed moving average shifted 5 bars forward.
Lips (Green Line): The fastest line, calculated using a 5-period smoothed moving average shifted 3 bars forward.
When the lines diverge and align in order, the "Alligator" is "awake," signaling a strong trend. When the lines overlap or intertwine, the "Alligator" is "asleep," indicating a range-bound or sideways market. This indicator helps traders determine when to enter or avoid trades.
The next indicator is Moving Average. It has a lot of different types which can be chosen to filter trades and the Least Squares MA is used by default settings. Let's briefly explain what is it.
The Least Squares Moving Average (LSMA) — also known as Linear Regression Moving Average — is a trend-following indicator that uses the least squares method to fit a straight line to the price data over a given period, then plots the value of that line at the most recent point. It draws the best-fitting straight line through the past N prices (using linear regression), and then takes the endpoint of that line as the value of the moving average for that bar. The LSMA aims to reduce lag and highlight the current trend more accurately than traditional moving averages like SMA or EMA.
Key Features:
It reacts faster to price changes than most moving averages.
It is smoother and less noisy than short-term EMAs.
It can be used to identify trend direction, momentum, and potential reversal points.
ATR (Average True Range) is a volatility indicator that measures how much an asset typically moves during a given period. It was introduced by J. Welles Wilder and is widely used to assess market volatility, not direction.
To calculate it first of all we need to get True Range (TR), this is the greatest value among:
High - Low
abs(High - Previous Close)
abs(Low - Previous Close)
ATR = MA(TR, n) , where n is number of periods for moving average, in our case equals 14.
ATR shows how much an asset moves on average per candle/bar. A higher ATR means more volatility; a lower ATR means a calmer market.
The Choppiness Index is a technical indicator that quantifies whether the market is trending or choppy (sideways). It doesn't indicate trend direction — only the strength or weakness of a trend. Higher Choppiness Index usually approximates the sideways market, while its low value tells us that there is a high probability of a trend.
Choppiness Index = 100 × log10(ΣATR(n) / (MaxHigh(n) - MinLow(n))) / log10(n)
where:
ΣATR(n) = sum of the Average True Range over n periods
MaxHigh(n) = highest high over n periods
MinLow(n) = lowest low over n periods
log10 = base-10 logarithm
Now let's understand how these indicators work in conjunction and why they were chosen for this strategy. KST indicator approximates current momentum, when it is rising and KST line crosses over the signal line there is high probability that short term trend is reversing to the upside and strategy allows to take part in this potential move. Alligator's jaw (blue) line is used as an approximation of a short term trend, taking trades only above it we want to avoid trading against trend to increase probability that long trade is going to be winning.
Almost the same for Moving Average, but it approximates the long term trend, this is just the additional filter. If we trade in the direction of the long term trend we increase probability that higher risk to reward trade will hit the take profit. Choppiness index is the optional filter, but if it turned on it is used for approximating if now market is in sideways or in trend. On the range bounded market the potential moves are restricted. We want to decrease probability opening trades in such condition avoiding trades if this index is above threshold value.
When trade is open script sets the stop loss and take profit targets. ATR approximates the current volatility, so we can make a decision when to exit a trade based on current market condition, it can increase the probability that strategy will avoid the excessive stop loss hits, but anyway user can setup how many ATRs to use as a stop loss and take profit target. As was said in the Methodology stop loss level is obtained by subtracting number of ATRs from trade opening candle low, while take profit by adding to this candle's close.
Backtest Results
Operating window: Date range of backtests is 2023.01.01 - 2025.05.01. It is chosen to let the strategy to close all opened positions.
Commission and Slippage: Includes a standard Binance commission of 0.1% and accounts for possible slippage over 5 ticks.
Initial capital: 10000 USDT
Percent of capital used in every trade: 60%
Maximum Single Position Loss: -5.53%
Maximum Single Profit: +8.35%
Net Profit: +5175.20 USDT (+51.75%)
Total Trades: 120 (56.67% win rate)
Profit Factor: 1.747
Maximum Accumulated Loss: 1039.89 USDT (-9.1%)
Average Profit per Trade: 43.13 USDT (+0.6%)
Average Trade Duration: 27 hours
These results are obtained with realistic parameters representing trading conditions observed at major exchanges such as Binance and with realistic trading portfolio usage parameters.
How to Use
Add the script to favorites for easy access.
Apply to the desired timeframe and chart (optimal performance observed on 1h BTC/USDT).
Configure settings using the dropdown choice list in the built-in menu.
Set up alerts to automate strategy positions through web hook with the text: {{strategy.order.alert_message}}
Disclaimer:
Educational and informational tool reflecting Skyrexio commitment to informed trading. Past performance does not guarantee future results. Test strategies in a simulated environment before live implementation.
Rate of Change StrategyRate of Change Strategy :
INTRODUCTION :
This strategy is based on the Rate of Change indicator. It compares the current price with that of a user-defined period of time ago. This makes it easy to spot trends and even speculative bubbles. The strategy is long term and very risky, which is why we've added a Stop Loss. There's also a money management method that allows you to reinvest part of your profits or reduce the size of your orders in the event of substantial losses.
RATE OF CHANGE (ROC) :
As explained above, the ROC is used to situate the current price compared to that of a certain period of time ago. The formula for calculating ROC in relation to the previous year is as follows :
ROC (365) = (close/close (365) - 1) * 100
With this formula we can find out how many percent the change in the current price is compared with 365 days ago, and thus assess the trend.
PARAMETERS :
ROC Length : Length of the ROC to be calculated. The current price is compared with that of the selected length ago.
ROC Bubble Signal : ROC value indicating that we are in a bubble. This value varies enormously depending on the financial product. For example, in the equity market, a bubble exists when ROC = 40, whereas in cryptocurrencies, a bubble exists when ROC = 150.
Stop Loss (in %) : Stop Loss value in percentage. This is the maximum trade value percentage that can be lost in a single trade.
Fixed Ratio : This is the amount of gain or loss at which the order quantity is changed. The default is 400, which means that for each $400 gain or loss, the order size is increased or decreased by an amount chosen by the user.
Increasing Order Amount : This is the amount to be added to or subtracted from orders when the fixed ratio is reached. The default is $200, which means that for every $400 gain, $200 is reinvested in the strategy. On the other hand, for every $400 loss, the order size is reduced by $200.
Initial capital : $1000
Fees : Interactive Broker fees apply to this strategy. They are set at 0.18% of the trade value.
Slippage : 3 ticks or $0.03 per trade. Corresponds to the latency time between the moment the signal is received and the moment the order is executed by the broker.
Important : A bot has been used to test the different parameters and determine which ones maximize return while limiting drawdown. This strategy is the most optimal on BITSTAMP:BTCUSD in 1D timeframe with the following parameters :
ROC Length = 365
ROC Bubble Signal = 180
Stop Loss (in %) = 6
LONG CONDITION :
We are in a LONG position if ROC (365) > 0 for at least two days. This allows us to limit noise and irrelevant signals to ensure that the ROC remains positive.
SHORT CONDITION :
We are in a SHORT position if ROC (365) < 0 for at least two days. We also open a SHORT position when the speculative bubble is about to burst. If ROC (365) > 180, we're in a bubble. If the bubble has been in existence for at least a week and the ROC falls back below this threshold, we can expect the asset to return to reasonable prices, and thus a downward trend. So we're opening a SHORT position to take advantage of this upcoming decline.
EXIT RULES FOR WINNING TRADE :
The strategy is self-regulating. We don't exit a LONG trade until a SHORT signal has arrived, and vice versa. So, to exit a winning position, you have to wait for the entry signal of the opposite position.
RISK MANAGEMENT :
This strategy is very risky, and we can easily end up on the wrong side of the trade. That's why we're going to manage our risk with a Stop Loss, limiting our losses as a percentage of the trade's value. By default, this percentage is set at 6%. Each trade will therefore take a maximum loss of 6%.
If the SL has been triggered, it probably means we were on the wrong side. This is why we change the direction of the trade when a SL is triggered. For example, if we were SHORT and lost 6% of the trade value, the strategy will close this losing trade and open a long position without taking into account the ROC value. This allows us to be in position all the time and not miss the best opportunities.
MONEY MANAGEMENT :
The fixed ratio method was used to manage our gains and losses. For each gain of an amount equal to the value of the fixed ratio, we increase the order size by a value defined by the user in the "Increasing order amount" parameter. Similarly, each time we lose an amount equal to the value of the fixed ratio, we decrease the order size by the same user-defined value. This strategy increases both performance and drawdown.
NOTE :
Please note that the strategy is backtested from 2017-01-01. As the timeframe is 1D, this strategy is a medium/long-term strategy. That's why only 34 trades were closed. Be careful, as the test sample is small and performance may not necessarily reflect what may happen in the future.
Enjoy the strategy and don't forget to take the trade :)
Gaussian Average Rate Oscillator
Within the ALMA calculation, the Gaussian function is applied to each price data point within the specified window. The idea is to give more weight to data points that are closer to the center and reduce the weight for points that are farther away.
The strategy calculates and compares two different Rate of Change (ROC) indicators: one based on the Arnaud Legoux Moving Average (ALMA) and the other based on a smoothed Exponential Moving Average (EMA). The primary goal of this strategy is to identify potential buy and sell signals based on the relationship between these ROC indicators.
Here's how the strategy logic works
Calculating the ROC Indicators:
The script first calculates the ROC (Rate of Change) of the smoothed ALMA and the smoothed EMA. The smoothed ALMA is calculated using a specified window size and is then smoothed further with a specified smoothing period. The smoothed EMA is calculated using a specified EMA length and is also smoothed with the same smoothing period.
Comparing ROCs:
The script compares the calculated ROC values of the smoothed ALMA and smoothed EMA.
The color of the histogram bars representing the ROC of the smoothed ALMA depends on its relationship with the ROC of the smoothed EMA. Green indicates that the ROC of ALMA is higher, red indicates that it's lower, and black indicates equality.
Similarly, the color of the histogram bars representing the ROC of the smoothed EMA is determined based on its relationship with the ROC of the smoothed ALMA, they are simply inversed so that they match.
With the default color scheme, green bars indicate the Gaussian average is outperforming the EMA within the breadth and red bars mean it's underperforming. This is regardless of the rate of average price changes.
Generating Trade Signals:
Based on the comparison of the ROC values, the strategy identifies potential crossover points and trends. Buy signals could occur when the ROC of the smoothed ALMA crosses above the ROC of the smoothed EMA. Sell signals could occur when the ROC of the smoothed ALMA crosses below the ROC of the smoothed EMA.
Additional Information:
The script also plots a zero rate line at the zero level to provide a reference point for interpreting the ROC values.
In summary, the strategy attempts to capture potential buy and sell signals by analyzing the relationships between the ROC values of the smoothed ALMA and the smoothed EMA. These signals can provide insights into potential trends and momentum shifts in the price data.
Dynamic Rate of Change OscillatorDynamic Rate of Change (RoC) Oscillator with Color-Coded Histogram
Detailed Description for Publication
The Dynamic Rate of Change (RoC) Oscillator with Color-Coded Histogram is a sophisticated technical analysis tool designed to enhance your understanding of market momentum. Created using Pine Script v5 on the TradingView platform, this indicator integrates multiple Rate of Change (RoC) calculations into a unified momentum oscillator. The resulting data is displayed as a color-coded histogram, providing a clear visual representation of momentum changes.
Key Features and Functionality
Multi-Length RoC Calculation:
Short-term RoC: Calculated over a user-defined period (shortRoCLength), this captures variations in price momentum over a shorter duration, offering insights into the immediate price action.
Long-term RoC: This uses a longer period (longRoCLength) to provide a broader view of momentum, helping to smooth out short-term fluctuations and highlight more established trends.
Mid-term RoC: A weighted average of the short-term and long-term RoCs, the mid-term RoC (midRoCWeight) allows you to balance sensitivity and stability in the oscillator's behavior.
Weighted RoC Calculation:
The indicator calculates a single weighted average RoC by integrating short-term, long-term, and mid-term RoCs. The weighting factor can be adjusted to prioritize different market dynamics according to the trader’s strategy. This flexible approach enables the oscillator to remain applicable across diverse market conditions.
Oscillator Calculation and Smoothing:
The oscillator value is computed by subtracting a 14-period Weighted Moving Average (WMA) from the weighted RoC, which helps to normalize the oscillator, making it more responsive to changes in momentum.
The oscillator is then smoothed using a Simple Moving Average (SMA) over a user-defined period (smoothLength). This process reduces market noise, making the oscillator's signals clearer and easier to interpret.
Color-Coded Histogram:
The smoothed oscillator is displayed as a histogram, which is color-coded to reflect bullish or bearish momentum. You can customize the colors to match your charting style, with green typically representing upward momentum and red representing downward momentum.
The color-coded histogram allows for quick visual identification of momentum changes on the chart, aiding in your market analysis.
Zero-Line Reference:
A horizontal line at the zero level is plotted as a reference point. This zero-line helps in identifying when the histogram shifts from positive to negative or vice versa, which can be useful in understanding momentum shifts.
The zero-line offers a straightforward visual cue, making it easier to interpret the oscillator's signals in relation to market movements.
Customization and Versatility
The Dynamic RoC Oscillator with Histogram is designed with flexibility in mind, making it suitable for a wide range of trading styles, from short-term trading to longer-term analysis. Users have the ability to fine-tune the indicator’s input parameters to align with their specific needs:
Adjustable RoC Periods: Customize the short-term and long-term RoC lengths to match the timeframes you focus on.
Weighted Sensitivity: Adjust the mid-term RoC weight to emphasize different aspects of momentum according to your analysis approach.
Smoothing Options: Modify the smoothing moving average length to control the sensitivity of the oscillator, allowing you to balance responsiveness with noise reduction.
Use Cases
Momentum Analysis: Gain a clearer understanding of momentum changes within the market, which can aid in the evaluation of market trends.
Trend Analysis: The oscillator can help in assessing trends by highlighting when momentum is increasing or decreasing.
Chart Visualization: The color-coded histogram provides a visually intuitive method for monitoring momentum, helping you to more easily interpret market behavior.
Conclusion
The Dynamic Rate of Change (RoC) Oscillator with Color-Coded Histogram is a versatile and powerful tool for traders who seek a deeper analysis of market momentum. With its dynamic calculation methods and high degree of customization, this indicator can be tailored to suit a variety of trading strategies. By integrating it into your TradingView charts, you can enhance your technical analysis capabilities, gaining valuable insights into market momentum.
This indicator is easy to use and highly customizable, making it a valuable addition to any trader’s toolkit. Add it to your charts on the TradingView platform and start exploring its potential to enrich your market analysis.
DeepSignalFilterHelpersLibrary "DeepSignalFilterHelpers"
filter_intraday_intensity(useIiiFilter)
Parameters:
useIiiFilter (bool)
filter_vwma(src, length, useVwmaFilter)
Parameters:
src (float)
length (int)
useVwmaFilter (bool)
filter_nvi(useNviFilter)
Parameters:
useNviFilter (bool)
filter_emv(length, emvThreshold, useEmvFilter, useMovingAvg)
EMV filter for filtering signals based on Ease of Movement
Parameters:
length (int) : The length of the EMV calculation
emvThreshold (float) : The EMV threshold
useEmvFilter (bool) : Whether to apply the EMV filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_adi(length, threshold, useAdiFilter, useMovingAvg)
ADI filter for filtering signals based on Accumulation/Distribution Index
Parameters:
length (int) : The length of the ADI moving average calculation
threshold (float) : The ADI threshold
useAdiFilter (bool) : Whether to apply the ADI filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_mfi(length, mfiThreshold, useMfiFilter, useMovingAvg)
MFI filter for filtering signals based on Money Flow Index
Parameters:
length (int) : The length of the MFI calculation
mfiThreshold (float) : The MFI threshold
useMfiFilter (bool) : Whether to apply the MFI filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
detect_obv_states(obvThresholdStrong, obvThresholdModerate, lookbackPeriod, obvMode)
detect_obv_states: Identify OBV states with three levels (Strong, Moderate, Weak) over a configurable period
Parameters:
obvThresholdStrong (float) : Threshold for strong OBV movements
obvThresholdModerate (float) : Threshold for moderate OBV movements
lookbackPeriod (int) : Number of periods to analyze OBV trends
obvMode (string) : OBV mode to filter ("Strong", "Moderate", "Weak")
Returns: OBV state ("Strong Up", "Moderate Up", "Weak Up", "Positive Divergence", "Negative Divergence", "Consolidation", "Weak Down", "Moderate Down", "Strong Down")
filter_obv(src, length, obvMode, threshold, useObvFilter, useMovingAvg)
filter_obv: Filter signals based on OBV states
Parameters:
src (float) : The source series (default: close)
length (int) : The length of the OBV moving average calculation
obvMode (string) : OBV mode to filter ("Strong", "Moderate", "Weak")
threshold (float) : Optional threshold for additional filtering
useObvFilter (bool) : Whether to apply the OBV filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_cmf(length, cmfThreshold, useCmfFilter, useMovingAvg)
CMF filter for filtering signals based on Chaikin Money Flow
Parameters:
length (int) : The length of the CMF calculation
cmfThreshold (float) : The CMF threshold
useCmfFilter (bool) : Whether to apply the CMF filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_vwap(useVwapFilter)
VWAP filter for filtering signals based on Volume-Weighted Average Price
Parameters:
useVwapFilter (bool) : Whether to apply the VWAP filter
Returns: Filtered result indicating whether the signal should be used
filter_pvt(length, pvtThreshold, usePvtFilter, useMovingAvg)
PVT filter for filtering signals based on Price Volume Trend
Parameters:
length (int) : The length of the PVT moving average calculation
pvtThreshold (float) : The PVT threshold
usePvtFilter (bool) : Whether to apply the PVT filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_vo(shortLength, longLength, voThreshold, useVoFilter, useMovingAvg)
VO filter for filtering signals based on Volume Oscillator
Parameters:
shortLength (int) : The length of the short-term volume moving average
longLength (int) : The length of the long-term volume moving average
voThreshold (float) : The Volume Oscillator threshold
useVoFilter (bool) : Whether to apply the VO filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_cho(shortLength, longLength, choThreshold, useChoFilter, useMovingAvg)
CHO filter for filtering signals based on Chaikin Oscillator
Parameters:
shortLength (int) : The length of the short-term ADI moving average
longLength (int) : The length of the long-term ADI moving average
choThreshold (float) : The Chaikin Oscillator threshold
useChoFilter (bool) : Whether to apply the CHO filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_fi(length, fiThreshold, useFiFilter, useMovingAvg)
FI filter for filtering signals based on Force Index
Parameters:
length (int) : The length of the FI calculation
fiThreshold (float) : The Force Index threshold
useFiFilter (bool) : Whether to apply the FI filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_garman_klass_volatility(length, useGkFilter)
Parameters:
length (int)
useGkFilter (bool)
filter_frama(src, length, useFramaFilter)
Parameters:
src (float)
length (int)
useFramaFilter (bool)
filter_bollinger_bands(src, length, stdDev, useBollingerFilter)
Parameters:
src (float)
length (int)
stdDev (float)
useBollingerFilter (bool)
filter_keltner_channel(src, length, atrMult, useKeltnerFilter)
Parameters:
src (float)
length (simple int)
atrMult (float)
useKeltnerFilter (bool)
regime_filter(src, threshold, useRegimeFilter)
Regime filter for filtering signals based on trend strength
Parameters:
src (float) : The source series
threshold (float) : The threshold for the filter
useRegimeFilter (bool) : Whether to apply the regime filter
Returns: Filtered result indicating whether the signal should be used
regime_filter_v2(src, threshold, useRegimeFilter)
Regime filter for filtering signals based on trend strength
Parameters:
src (float) : The source series
threshold (float) : The threshold for the filter
useRegimeFilter (bool) : Whether to apply the regime filter
Returns: Filtered result indicating whether the signal should be used
filter_adx(src, length, adxThreshold, useAdxFilter)
ADX filter for filtering signals based on ADX strength
Parameters:
src (float) : The source series
length (simple int) : The length of the ADX calculation
adxThreshold (int) : The ADX threshold
useAdxFilter (bool) : Whether to apply the ADX filter
Returns: Filtered result indicating whether the signal should be used
filter_volatility(minLength, maxLength, useVolatilityFilter)
Volatility filter for filtering signals based on volatility
Parameters:
minLength (simple int) : The minimum length for ATR calculation
maxLength (simple int) : The maximum length for ATR calculation
useVolatilityFilter (bool) : Whether to apply the volatility filter
Returns: Filtered result indicating whether the signal should be used
filter_ulcer(src, length, ulcerThreshold, useUlcerFilter)
Ulcer Index filter for filtering signals based on Ulcer Index
Parameters:
src (float) : The source series
length (int) : The length of the Ulcer Index calculation
ulcerThreshold (float) : The Ulcer Index threshold (default: average Ulcer Index)
useUlcerFilter (bool) : Whether to apply the Ulcer Index filter
Returns: Filtered result indicating whether the signal should be used
filter_stddev(src, length, stdDevThreshold, useStdDevFilter)
Standard Deviation filter for filtering signals based on Standard Deviation
Parameters:
src (float) : The source series
length (int) : The length of the Standard Deviation calculation
stdDevThreshold (float) : The Standard Deviation threshold (default: average Standard Deviation)
useStdDevFilter (bool) : Whether to apply the Standard Deviation filter
Returns: Filtered result indicating whether the signal should be used
filter_macdv(src, shortLength, longLength, signalSmoothing, macdVThreshold, useMacdVFilter)
MACD-V filter for filtering signals based on MACD-V
Parameters:
src (float) : The source series
shortLength (simple int) : The short length for MACD calculation
longLength (simple int) : The long length for MACD calculation
signalSmoothing (simple int) : The signal smoothing length for MACD
macdVThreshold (float) : The MACD-V threshold (default: average MACD-V)
useMacdVFilter (bool) : Whether to apply the MACD-V filter
Returns: Filtered result indicating whether the signal should be used
filter_atr(length, atrThreshold, useAtrFilter)
ATR filter for filtering signals based on Average True Range (ATR)
Parameters:
length (simple int) : The length of the ATR calculation
atrThreshold (float) : The ATR threshold (default: average ATR)
useAtrFilter (bool) : Whether to apply the ATR filter
Returns: Filtered result indicating whether the signal should be used
filter_candle_body_and_atr(length, bodyThreshold, atrThreshold, useFilter)
Candle Body and ATR filter for filtering signals
Parameters:
length (simple int) : The length of the ATR calculation
bodyThreshold (float) : The threshold for candle body size (relative to ATR)
atrThreshold (float) : The ATR threshold (default: average ATR)
useFilter (bool) : Whether to apply the candle body and ATR filter
Returns: Filtered result indicating whether the signal should be used
filter_atrp(length, atrpThreshold, useAtrpFilter)
ATRP filter for filtering signals based on ATR Percentage (ATRP)
Parameters:
length (simple int) : The length of the ATR calculation
atrpThreshold (float) : The ATRP threshold (default: average ATRP)
useAtrpFilter (bool) : Whether to apply the ATRP filter
Returns: Filtered result indicating whether the signal should be used
filter_jma(src, length, phase, useJmaFilter)
Parameters:
src (float)
length (simple int)
phase (float)
useJmaFilter (bool)
filter_cidi(src, rsiLength, shortMaLength, longMaLength, useCidiFilter)
Parameters:
src (float)
rsiLength (simple int)
shortMaLength (int)
longMaLength (int)
useCidiFilter (bool)
filter_rsi(src, length, rsiThreshold, useRsiFilter)
Parameters:
src (float)
length (simple int)
rsiThreshold (float)
useRsiFilter (bool)
filter_ichimoku_oscillator(length, threshold, useFilter)
Ichimoku Oscillator filter for filtering signals based on Ichimoku Oscillator
Parameters:
length (int) : The length of the Ichimoku Oscillator calculation
threshold (float) : The threshold for the filter (default: average Ichimoku Oscillator)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_cmb_composite_index(src, shortLength, longLength, threshold, useFilter)
CMB Composite Index filter for filtering signals based on CMB Composite Index
Parameters:
src (float) : The source series
shortLength (simple int) : The short length for CMB calculation
longLength (simple int) : The long length for CMB calculation
threshold (float) : The threshold for the filter (default: average CMB Composite Index)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_connors_rsi(src, rsiLength, rocLength, streakLength, threshold, useFilter)
Connors RSI filter for filtering signals based on Connors RSI
Parameters:
src (float) : The source series
rsiLength (simple int) : The length for RSI calculation
rocLength (int) : The length for ROC calculation
streakLength (simple int) : The length for streak calculation
threshold (float) : The threshold for the filter (default: average Connors RSI)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_coppock_curve(src, roc1Length, roc2Length, wmaLength, threshold, useFilter)
Coppock Curve filter for filtering signals based on Coppock Curve
Parameters:
src (float) : The source series
roc1Length (int) : The length for the first ROC calculation
roc2Length (int) : The length for the second ROC calculation
wmaLength (int) : The length for the WMA calculation
threshold (float) : The threshold for the filter (default: average Coppock Curve)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_pmo(src, pmoLength, smoothingLength, threshold, useFilter)
DecisionPoint Price Momentum Oscillator filter for filtering signals based on PMO
Parameters:
src (float) : The source series
pmoLength (simple int) : The length for PMO calculation
smoothingLength (simple int) : The smoothing length for PMO
threshold (float) : The threshold for the filter (default: average PMO Oscillator)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_macd(src, shortLength, longLength, signalSmoothing, threshold, useFilter)
MACD filter for filtering signals based on MACD
Parameters:
src (float) : The source series
shortLength (simple int) : The short length for MACD calculation
longLength (simple int) : The long length for MACD calculation
signalSmoothing (simple int) : The signal smoothing length for MACD
threshold (float) : The threshold for the filter (default: average MACD)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_macd_histogram(src, shortLength, longLength, signalSmoothing, threshold, useFilter)
MACD-Histogram filter for filtering signals based on MACD-Histogram
Parameters:
src (float) : The source series
shortLength (simple int) : The short length for MACD calculation
longLength (simple int) : The long length for MACD calculation
signalSmoothing (simple int) : The signal smoothing length for MACD
threshold (float) : The threshold for the filter (default: average MACD-Histogram)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_kst(src, r1, r2, r3, r4, sm1, sm2, sm3, sm4, signalLength, threshold, useFilter)
Pring's Know Sure Thing filter for filtering signals based on KST
Parameters:
src (float) : The source series
r1 (int) : The first ROC length
r2 (int) : The second ROC length
r3 (int) : The third ROC length
r4 (int) : The fourth ROC length
sm1 (int) : The first smoothing length
sm2 (int) : The second smoothing length
sm3 (int) : The third smoothing length
sm4 (int) : The fourth smoothing length
signalLength (int) : The signal line smoothing length
threshold (float) : The threshold for the filter (default: average KST Oscillator)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_special_k(src, r1, r2, r3, r4, sm1, sm2, sm3, sm4, threshold, useFilter)
Pring's Special K filter for filtering signals based on Special K
Parameters:
src (float) : The source series
r1 (int) : The first ROC length
r2 (int) : The second ROC length
r3 (int) : The third ROC length
r4 (int) : The fourth ROC length
sm1 (int) : The first smoothing length
sm2 (int) : The second smoothing length
sm3 (int) : The third smoothing length
sm4 (int) : The fourth smoothing length
threshold (float) : The threshold for the filter (default: average Special K)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_roc_momentum(src, rocLength, momentumLength, threshold, useFilter)
ROC and Momentum filter for filtering signals based on ROC and Momentum
Parameters:
src (float) : The source series
rocLength (int) : The length for ROC calculation
momentumLength (int) : The length for Momentum calculation
threshold (float) : The threshold for the filter (default: average ROC and Momentum)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_rrg_relative_strength(src, length, threshold, useFilter)
RRG Relative Strength filter for filtering signals based on RRG Relative Strength
Parameters:
src (float) : The source series
length (int) : The length for RRG Relative Strength calculation
threshold (float) : The threshold for the filter (default: average RRG Relative Strength)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_alligator(useFilter)
Parameters:
useFilter (bool)
filter_wyckoff(useFilter)
Parameters:
useFilter (bool)
filter_squeeze_momentum(bbLength, bbStdDev, kcLength, kcMult, useFilter)
Parameters:
bbLength (int)
bbStdDev (float)
kcLength (simple int)
kcMult (float)
useFilter (bool)
filter_atr_compression(length, atrThreshold, useFilter)
Parameters:
length (simple int)
atrThreshold (float)
useFilter (bool)
filter_low_volume(length, useFilter)
Parameters:
length (int)
useFilter (bool)
filter_nvi_accumulation(useFilter)
Parameters:
useFilter (bool)
filter_ma_slope(src, length, slopeThreshold, useFilter)
Parameters:
src (float)
length (int)
slopeThreshold (float)
useFilter (bool)
filter_adx_low(len, lensig, adxThreshold, useFilter)
Parameters:
len (simple int)
lensig (simple int)
adxThreshold (int)
useFilter (bool)
filter_choppiness_index(length, chopThreshold, useFilter)
Parameters:
length (int)
chopThreshold (float)
useFilter (bool)
filter_range_detection(length, useFilter)
Parameters:
length (int)
useFilter (bool)
Recency-Weighted Market Memory w/ Quantile-Based DriftRecency-Weighted Market Memory w/ Quantile-Based Drift
This indicator combines market memory, recency-weighted drift, quantile-based volatility analysis, momentum (RoC) filtering, and historical correlation checks to generate dynamic forecasts of possible future price levels. It calculates bullish and bearish forecast lines at each horizon, reflecting how the price might behave based on historical similarities.
Trading Concepts & Mathematical Foundations Explained
1) Market Memory
Concept:
Markets tend to repeat past behaviors under similar conditions. By identifying historical market states that closely match current conditions, we predict future price movements based on what happened historically.
Calculation Steps:
We select a historical lookback window (for example, 210 bars).
Each historical bar within this window is evaluated to see if its conditions match the current market. Conditions include:
Correlation between price change and bullish/bearish volume changes (over a user-defined correlation lookback period).
Momentum (Rate of Change, RoC) measured over a separate lookback period.
Only bars closely matching current conditions (within user-defined tolerance percentages) are included.
2) Recency-Weighted Drift
Concept:
Recent market movements often influence future direction. We assign more importance to recent bars to capture the current market bias effectively.
Calculation Steps:
Consider recent price changes between opens and closes for a user-defined drift lookback (for example, last 20 bars).
Give higher weight to recent bars (the most recent bar gets the highest weight, and weights decrease progressively for older bars).
Average these weighted changes separately for upward and downward movements, then combine these averages to calculate a final drift percentage relative to the current price.
3) Correlation Filtering
Concept:
Price changes often correlate strongly with bullish or bearish volume activity. By using historical correlation comparisons, we focus only on past market states with similar volume-price dynamics.
Calculation Steps:
Compute current correlations between price changes and bullish/bearish volume over the user-defined correlation lookback.
Evaluate each historical bar to see if its correlation closely matches the current correlation (within a user-specified percentage tolerance).
Only historical bars meeting this correlation criterion are selected.
4) Momentum (RoC) Filtering
Concept:
Two market periods may exhibit similar correlation structures but differ in how fast prices move (momentum). To ensure true similarity, momentum is checked as an additional filter.
Calculation Steps:
Compute the current Rate of Change (RoC) over the specified RoC lookback.
For each candidate historical bar, calculate its historical RoC.
Only include historical bars whose RoC closely matches the current RoC (within the RoC percentage tolerance).
5) Quantile-Based Volatility and Drift Amplification
Concept:
Quantiles (such as the 95th, 50th, and 5th percentiles) help gauge if current prices are near historical extremes or the median. Quantile bands measure volatility expansions and contractions.
Calculation Steps:
Calculate the 95%, 50%, and 5% quantiles of price over the quantile lookback period.
Add and subtract multiples of the standard deviation to these quantiles, creating upper and lower bands.
Measure the bands' widths relative to the current price as volatility indicators.
Determine the active quantile (95%, 50%, or 5%) based on proximity to the current price (within a percentage tolerance).
Compute the rate of change (RoC) of the active quantile to detect directional bias.
Combine volatility and quantile RoC into a scaling factor that amplifies or dampens expected price moves.
6) Expected Value (EV) Computation & Forecast Lines
Concept:
We forecast future prices based on how similarly-conditioned historical periods performed. We average historical moves to estimate the expected future price.
Calculation Steps:
For each forecast horizon (e.g., 1 to 27 bars ahead), collect all historical price moves that passed correlation and RoC filters.
Calculate average historical moves for bullish and bearish cases separately.
Adjust these averages by applying recency-weighted drift and quantile-based scaling.
Translate adjusted percentages into absolute future price forecasts.
Draw bullish and bearish forecast lines accordingly.
Indicator Inputs & Their Roles
Correlation Tolerance (%)
Adjusts how strictly the indicator matches historical correlation. Higher tolerance includes more matches, lower tolerance selects fewer but closer matches.
Price RoC Lookback and Price RoC Tolerance (%)
Controls how momentum (speed of price moves) is matched historically. Increasing tolerance broadens historical matches.
Drift Lookback (bars)
Determines the number of recent bars influencing current drift estimation.
Quantile Lookback Period and Std Dev Multipliers
Defines quantile calculation and the size of the volatility bands.
Quantile Contact Tolerance (%)
Sets how close the current price must be to a quantile for it to be considered "active."
Forecast Horizons
Specifies how many future bars to forecast.
Continuous Forecast Lines
Toggles between drawing continuous lines or separate horizontal segments for each forecast horizon.
Practical Trading Applications
Bullish & Bearish EV Lines
These forecast lines indicate expected price levels based on historical similarity. Green indicates positive expectations; red indicates negative.
Momentum vs. Mean Reversion
Wide quantile bands and high drift suggest momentum, while extremes may signal possible reversals.
Volatility Sensitivity
Forecasts adapt dynamically to market volatility. Broader bands increase forecasted price movements.
Filtering Non-Relevant Historical Data
By using both correlation and RoC filtering, irrelevant past periods are excluded, enhancing forecast reliability.
Multi-Timeframe Suitability
Adaptable parameters make this indicator suitable for different trading styles and timeframes.
Complementary Tool
This indicator provides probabilistic projections rather than direct buy or sell signals. Combine it with other trading signals and analyses for optimal results.
Important Considerations
While historically-informed forecasts are valuable, market behavior can evolve unpredictably. Always manage risks and use supplementary analysis.
Experiment extensively with input settings for your specific market and timeframe to optimize forecasting performance.
Summary
The Recency-Weighted Market Memory w/ Quantile-Based Drift indicator uniquely merges multiple sophisticated concepts, delivering dynamic, historically-informed price forecasts. By combining historical similarity, adaptive drift, momentum filtering, and quantile-driven volatility scaling, traders gain an insightful perspective on future price possibilities.
Feel free to experiment, explore, and enjoy this powerful addition to your trading toolkit!
Rate of Change RSIIndicator Name: Rate of Change RSI
Description:
The Rate of Change (ROC) of the Relative Strength Index (RSI) is a technical indicator designed to provide insights into the momentum of an asset's price movement. It combines the Relative Strength Index (RSI), a popular momentum oscillator, with the Rate of Change (ROC) concept to assess the speed at which RSI values are changing.
How It Works:
Relative Strength Index (RSI): The RSI measures the magnitude of recent price changes to evaluate overbought or oversold conditions in an asset. It oscillates between 0 and 100, with readings above 70 typically indicating overbought conditions and readings below 30 indicating oversold conditions.
Rate of Change (ROC): The ROC calculates the percentage change in a given indicator over a specified period. In this indicator, we apply the ROC to the RSI values to determine how quickly the RSI is changing over time.
Key Features:
Acceleration and Deceleration: The ROC of RSI helps traders identify whether the momentum of the RSI is accelerating or decelerating. Positive values suggest increasing momentum, while negative values indicate decreasing momentum.
Dynamic Color Change: The color of the ROC RSI line changes dynamically based on the RSI level. When the RSI is between 0 and 40, the line color is blue, indicating potential oversold conditions. When the RSI is between 40 and 60, the line color is yellow, suggesting neutral conditions. When the RSI is above 60, the line color changes to green, indicating potential overbought conditions.
How to Use:
Acceleration: When the ROC RSI is positive and increasing while the RSI is above 60 (green), it may signal strong upward momentum.
Deceleration: Conversely, if the ROC RSI is negative and decreasing while the RSI is below 40 (blue), it may indicate weakening downward momentum.
Originality and Usefulness:
This indicator combines the RSI, a well-known momentum oscillator, with the ROC concept to provide a unique perspective on momentum dynamics. By dynamically adjusting the color of the ROC RSI line based on RSI levels, traders can quickly assess potential overbought or oversold conditions in the market.
Chart:
The chart displayed alongside this script provides a clean and easy-to-understand visualization of the ROC RSI indicator. The ROC RSI line color changes dynamically based on RSI levels, allowing traders to visually identify potential market conditions at a glance.
Smooth RSI [MarktQuant]This indicator combines elements of the Relative Strength Index (RSI) and Rate of Change (RoC) to provide a smoother and potentially more insightful view of market momentum and price movement. The Smooth RSI calculates RSI values across four price points (high, open, low, close) to average them, offering a less volatile RSI signal. Additionally, it incorporates a Rate of Change for trend confirmation, enhancing the decision-making process for trade entries and exits.
Features:
Multi-RSI Calculation: RSI is computed for high, open, low, and close prices, then averaged to reduce noise.
Trend Confirmation with RoC: Uses the Rate of Change to validate the RSI signals, coloring bars based on the trend direction.
Visual Signals:
Bar colors change based on combined RSI and RoC signals.
Green for bullish signals (RSI above 50 and positive RoC).
Red for bearish signals (RSI below 50 and negative RoC).
Horizontal lines at 30, 50, and 70 to denote overbought, neutral, and oversold conditions.
Customizable Display:
Option to show/hide RSI plot or RoC plot for cleaner charts.
Candle plot overlay option to visualize current price action alongside the indicator.
Inputs:
RSI Length: Default 28. Adjusts the lookback period for RSI calculation.
RoC Length: Default 28. Sets the period for the Rate of Change calculation.
Plot Settings:
Show RSI - Toggle RSI plot visibility.
Show RoC - Toggle RoC plot visibility.
Usage:
Long signals are indicated when the average RSI is above 50 and the RoC is positive.
Short signals are suggested when the average RSI falls below 50 with a negative RoC.
The color coding helps visually confirm trends at a glance.
Notes:
This indicator is best used in conjunction with other analysis methods to confirm signals.
Adjust the length parameters based on your trading timeframe for optimal results.
Disclaimer:
This indicator does not guarantee trading success; use it as part of a comprehensive trading strategy. Always conduct your own analysis before making trading decisions.
[JL] Fractals ATR BlockI decided to combine Fractal ROC , ATR Break, and Order Blocks to an Indicator
The Fractal ROC , ATR Break, and Order Blocks indicator combines three concepts to help traders identify potential trade opportunities and manage risk. By using a combination of Fractal ROC , ATR Break, and Order Blocks, traders can gain a deeper understanding of market dynamics and make more informed trading decisions.
Fractal ROC is a momentum-based indicator that calculates the rate of change of the price between fractals, which are turning points in the market. It is calculated by taking the difference between the closing price and the lowest price in the previous n+1 periods, and dividing it by the difference between the open price 2n periods ago and the lowest price in the previous n+1 periods. This calculation is done for both up and down fractals. When the Fractal ROC value is greater than the ROC Break Level (as determined by the input variable roclevel), it indicates a potential momentum shift in the market. This can be used to identify potential trade entries or exits, depending on your trading strategy.
ATR Break is an indicator that helps traders identify significant price movements in the market. It measures the distance between the price and the Average True Range (ATR), which is a measure of the volatility of the market. ATR Break is calculated by taking the difference between the close and high/low, and dividing it by the previous ATR value. This calculation is done for both up and down movements. When the ATR Break value is greater than the ATR Break Level (as determined by the input variable atrlevel), it indicates a significant move in the market. This can be used to identify potential breakouts or breakdowns, and can be used to set stop-loss and take-profit levels.
An Order Block is a price level where significant buying or selling activity has taken place. The order blocks made by ATR Break and Fractal ROC are drawn using boxes on the chart. When the ATR or Fractal ROC level is breached, a box is drawn with the high and low of the candle that breached the level as the top and bottom of the box, respectively. The box is then extended to the right until the end of the chart or until another ATR or Fractal ROC level is breached, at which point a new box is drawn. This allows traders to easily identify significant price movements and potential support and resistance levels on the chart. When an Order Block is identified, it can be used as a potential support or resistance level . If price approaches an Order Block from below, it is likely to bounce off this level and continue in an upward direction. Similarly, if price approaches an Order Block from above, it is likely to bounce off this level and continue in a downward direction. Traders can use these levels to identify potential trade entries or exits, as well as to set stop-loss and take-profit levels.
Overall, the Fractal ROC , ATR Break, and Order Blocks indicator is a powerful tool for traders who want to identify potential trade opportunities and manage risk. By combining these three concepts, traders can gain a deeper understanding of market dynamics and make more informed trading decisions. As with any indicator, it is important to use it in conjunction with other analysis tools and to have a clear trading plan in place.
Rate Of Change [SIDD]This Oscillator is helping identify rate of change in Price.
Basic Definition :-
The Rate of Change ( ROC ) is a momentum technical indicator.
It measures the percentage change in price between the current price and the price a certain number of periods ago.
This indicator is plotted against zero, with the indicator moving upwards into positive territory if price changes are to the upside, and moving into negative territory if price changes are to the downside.
Customization of inbuilt ROC:- I have created EMA of ROC with 9 days exponential moving average and Coloring the plot of 9 EMA of ROC Green and RED. Green line indicates that Price change rate is positive in last 9 time period on selected resolution (time frame) and Red line indicated that negative price change rate.
I have identified the zone like +5 and -5 line area in study where some resistance or support is there for 9 EMA ROC line. and if 9 EMA ROC crosses those line then intensity of previous trend get increased.
I have drawn here breakout trendline from lower high candle with hand mark up and same time ROC is above 5 marked with hand up. Similarly I have drawn hand mark down where breakdown trendline is drawn for higher low candle breakdown.
You can see clearly ROC 9 EMA is sync correctly with breakout and breakdown candle when ROC 9 EMA
is above 5 and below 5.
I able to observed that ROC 9 EMA is helping in finding correct breakout and breakdown candles with proper trendline breakout and breakdown.
above all my observation is with daily time frame and 1 Hr time frame candles mostly. If you are changing time frame then see the difference and post same in comment so I can watch those changes as well,
You can modify this study and lets create better than this as well. As I think nothing is perfect in this world always there is scope of improvement.
This study to see how the price are getting changing and what is the rate of change .
This study doesn't give any buy and sell recommendation.
I have other indicator which is given in my signature below that you can check.
CCO_LibraryLibrary "CCO_Library"
Contrarian Crowd Oscillator (CCO) Library - Multi-oscillator consensus indicator for contrarian trading signals
@author B3AR_Trades
calculate_oscillators(rsi_length, stoch_length, cci_length, williams_length, roc_length, mfi_length, percentile_lookback, use_rsi, use_stochastic, use_williams, use_cci, use_roc, use_mfi)
Calculate normalized oscillator values
Parameters:
rsi_length (simple int) : (int) RSI calculation period
stoch_length (int) : (int) Stochastic calculation period
cci_length (int) : (int) CCI calculation period
williams_length (int) : (int) Williams %R calculation period
roc_length (int) : (int) ROC calculation period
mfi_length (int) : (int) MFI calculation period
percentile_lookback (int) : (int) Lookback period for CCI/ROC percentile ranking
use_rsi (bool) : (bool) Include RSI in calculations
use_stochastic (bool) : (bool) Include Stochastic in calculations
use_williams (bool) : (bool) Include Williams %R in calculations
use_cci (bool) : (bool) Include CCI in calculations
use_roc (bool) : (bool) Include ROC in calculations
use_mfi (bool) : (bool) Include MFI in calculations
Returns: (OscillatorValues) Normalized oscillator values
calculate_consensus_score(oscillators, use_rsi, use_stochastic, use_williams, use_cci, use_roc, use_mfi, weight_by_reliability, consensus_smoothing)
Calculate weighted consensus score
Parameters:
oscillators (OscillatorValues) : (OscillatorValues) Individual oscillator values
use_rsi (bool) : (bool) Include RSI in consensus
use_stochastic (bool) : (bool) Include Stochastic in consensus
use_williams (bool) : (bool) Include Williams %R in consensus
use_cci (bool) : (bool) Include CCI in consensus
use_roc (bool) : (bool) Include ROC in consensus
use_mfi (bool) : (bool) Include MFI in consensus
weight_by_reliability (bool) : (bool) Apply reliability-based weights
consensus_smoothing (int) : (int) Smoothing period for consensus
Returns: (float) Weighted consensus score (0-100)
calculate_consensus_strength(oscillators, consensus_score, use_rsi, use_stochastic, use_williams, use_cci, use_roc, use_mfi)
Calculate consensus strength (agreement between oscillators)
Parameters:
oscillators (OscillatorValues) : (OscillatorValues) Individual oscillator values
consensus_score (float) : (float) Current consensus score
use_rsi (bool) : (bool) Include RSI in strength calculation
use_stochastic (bool) : (bool) Include Stochastic in strength calculation
use_williams (bool) : (bool) Include Williams %R in strength calculation
use_cci (bool) : (bool) Include CCI in strength calculation
use_roc (bool) : (bool) Include ROC in strength calculation
use_mfi (bool) : (bool) Include MFI in strength calculation
Returns: (float) Consensus strength (0-100)
classify_regime(consensus_score)
Classify consensus regime
Parameters:
consensus_score (float) : (float) Current consensus score
Returns: (ConsensusRegime) Regime classification
detect_signals(consensus_score, consensus_strength, consensus_momentum, regime)
Detect trading signals
Parameters:
consensus_score (float) : (float) Current consensus score
consensus_strength (float) : (float) Current consensus strength
consensus_momentum (float) : (float) Consensus momentum
regime (ConsensusRegime) : (ConsensusRegime) Current regime classification
Returns: (TradingSignals) Trading signal conditions
calculate_cco(rsi_length, stoch_length, cci_length, williams_length, roc_length, mfi_length, consensus_smoothing, percentile_lookback, use_rsi, use_stochastic, use_williams, use_cci, use_roc, use_mfi, weight_by_reliability, detect_momentum)
Calculate complete CCO analysis
Parameters:
rsi_length (simple int) : (int) RSI calculation period
stoch_length (int) : (int) Stochastic calculation period
cci_length (int) : (int) CCI calculation period
williams_length (int) : (int) Williams %R calculation period
roc_length (int) : (int) ROC calculation period
mfi_length (int) : (int) MFI calculation period
consensus_smoothing (int) : (int) Consensus smoothing period
percentile_lookback (int) : (int) Percentile ranking lookback
use_rsi (bool) : (bool) Include RSI
use_stochastic (bool) : (bool) Include Stochastic
use_williams (bool) : (bool) Include Williams %R
use_cci (bool) : (bool) Include CCI
use_roc (bool) : (bool) Include ROC
use_mfi (bool) : (bool) Include MFI
weight_by_reliability (bool) : (bool) Apply reliability weights
detect_momentum (bool) : (bool) Calculate momentum and acceleration
Returns: (CCOResult) Complete CCO analysis results
calculate_cco_default()
Calculate CCO with default parameters
Returns: (CCOResult) CCO result with standard settings
cco_consensus_score()
Get just the consensus score with default parameters
Returns: (float) Consensus score (0-100)
cco_consensus_strength()
Get just the consensus strength with default parameters
Returns: (float) Consensus strength (0-100)
is_panic_bottom()
Check if in panic bottom condition
Returns: (bool) True if panic bottom signal active
is_euphoric_top()
Check if in euphoric top condition
Returns: (bool) True if euphoric top signal active
bullish_consensus_reversal()
Check for bullish consensus reversal
Returns: (bool) True if bullish reversal detected
bearish_consensus_reversal()
Check for bearish consensus reversal
Returns: (bool) True if bearish reversal detected
bearish_divergence()
Check for bearish divergence
Returns: (bool) True if bearish divergence detected
bullish_divergence()
Check for bullish divergence
Returns: (bool) True if bullish divergence detected
get_regime_name()
Get current regime name
Returns: (string) Current consensus regime name
get_contrarian_signal()
Get contrarian signal
Returns: (string) Current contrarian trading signal
get_position_multiplier()
Get position size multiplier
Returns: (float) Recommended position sizing multiplier
OscillatorValues
Individual oscillator values
Fields:
rsi (series float) : RSI value (0-100)
stochastic (series float) : Stochastic value (0-100)
williams (series float) : Williams %R value (0-100, normalized)
cci (series float) : CCI percentile value (0-100)
roc (series float) : ROC percentile value (0-100)
mfi (series float) : Money Flow Index value (0-100)
ConsensusRegime
Consensus regime classification
Fields:
extreme_bearish (series bool) : Extreme bearish consensus (<= 20)
moderate_bearish (series bool) : Moderate bearish consensus (20-40)
mixed (series bool) : Mixed consensus (40-60)
moderate_bullish (series bool) : Moderate bullish consensus (60-80)
extreme_bullish (series bool) : Extreme bullish consensus (>= 80)
regime_name (series string) : Text description of current regime
contrarian_signal (series string) : Contrarian trading signal
TradingSignals
Trading signals
Fields:
panic_bottom_signal (series bool) : Extreme bearish consensus with high strength
euphoric_top_signal (series bool) : Extreme bullish consensus with high strength
consensus_reversal_bullish (series bool) : Bullish consensus reversal
consensus_reversal_bearish (series bool) : Bearish consensus reversal
bearish_divergence (series bool) : Bearish price-consensus divergence
bullish_divergence (series bool) : Bullish price-consensus divergence
strong_consensus (series bool) : High consensus strength signal
CCOResult
Complete CCO calculation results
Fields:
consensus_score (series float) : Main consensus score (0-100)
consensus_strength (series float) : Consensus strength (0-100)
consensus_momentum (series float) : Rate of consensus change
consensus_acceleration (series float) : Rate of momentum change
oscillators (OscillatorValues) : Individual oscillator values
regime (ConsensusRegime) : Regime classification
signals (TradingSignals) : Trading signals
position_multiplier (series float) : Recommended position sizing multiplier
simple swing indicator-KTRNSE:NIFTY
1. Pivot High/Low as Lines:
Purpose: Identifies local peaks (pivot highs) and troughs (pivot lows) in price and draws horizontal lines at these levels.
How it Works:
A pivot high occurs when the price is higher than the surrounding bars (based on the pivotLength parameter).
A pivot low occurs when the price is lower than the surrounding bars.
These pivots are drawn as horizontal lines at the price level of the pivot.
Visualization:
Pivot High: A red horizontal line is drawn at the price level of the pivot high.
Pivot Low: A green horizontal line is drawn at the price level of the pivot low.
Example:
Imagine the price is trending up, and at some point, it forms a peak. The script identifies this peak as a pivot high and draws a red line at the price of that peak. Similarly, if the price forms a trough, the script will draw a green line at the low point.
2. Moving Averages (20-day and 50-day):
Purpose: Plots the 20-day and 50-day simple moving averages (SMA) on the chart.
How it Works:
The 20-day SMA smooths the closing price over the last 20 days.
The 50-day SMA smooths the closing price over the last 50 days.
These lines provide an overview of short-term and long-term price trends.
Visualization:
20-day SMA: A blue line showing the 20-day moving average.
50-day SMA: An orange line showing the 50-day moving average.
Example:
When the price is above both moving averages, it indicates an uptrend. If the price crosses below these averages, it might signal a downtrend.
3. Supertrend:
Purpose: The Supertrend is an indicator based on the Average True Range (ATR) and is used to track the market trend.
How it Works:
When the market is in an uptrend, the Supertrend line will be green.
When the market is in a downtrend, the Supertrend line will be red.
Visualization:
Uptrend: The Supertrend line will be plotted in green.
Downtrend: The Supertrend line will be plotted in red.
Example:
If the price is above the Supertrend, the market is considered to be in an uptrend, and if the price is below the Supertrend, the market is in a downtrend.
4. Momentum (Rate of Change):
Purpose: Measures the rate at which the price changes over a set period, showing if the momentum is positive or negative.
How it Works:
The Rate of Change (ROC) measures how much the price has changed over a certain number of periods (e.g., 14).
Positive ROC indicates upward momentum, and negative ROC indicates downward momentum.
Visualization:
Positive ROC: A purple line is plotted above the zero line.
Negative ROC: A purple line is plotted below the zero line.
Example:
If the ROC line is above zero, it means the price is increasing, suggesting bullish momentum. If the ROC is below zero, it indicates bearish momentum.
5. Volume:
Purpose: Displays the volume of traded assets, giving insight into the strength of price movements.
How it Works:
The script will color the volume bars based on whether the price closed higher or lower than the previous bar.
Green bars indicate bullish volume (closing price higher than the previous bar), and red bars indicate bearish volume (closing price lower than the previous bar).
Visualization:
Bullish Volume: Green volume bars when the price closes higher.
Bearish Volume: Red volume bars when the price closes lower.
Example:
If you see a green volume bar, it suggests that the market is participating in an uptrend, and the price has closed higher than the previous period. Red bars indicate a downtrend or selling pressure.
6. MACD (Moving Average Convergence Divergence):
Purpose: The MACD is a trend-following momentum indicator that shows the relationship between two moving averages of the price.
How it Works:
The MACD Line is the difference between the 12-period EMA (Exponential Moving Average) and the 26-period EMA.
The Signal Line is the 9-period EMA of the MACD Line.
The MACD Histogram shows the difference between the MACD line and the Signal line.
Visualization:
MACD Line: A blue line representing the difference between the 12-period and 26-period EMAs.
Signal Line: An orange line representing the 9-period EMA of the MACD line.
MACD Histogram: A red or green histogram that shows the difference between the MACD line and the Signal line.
Example:
When the MACD line crosses above the Signal line, it’s considered a bullish signal. When the MACD line crosses below the Signal line, it’s considered a bearish signal.
Full Chart Example:
Imagine you're looking at a price chart with all the indicators:
Pivot High/Low Lines are drawn as red and green horizontal lines.
20-day and 50-day SMAs are plotted as blue and orange lines, respectively.
Supertrend shows a green or red line indicating the trend.
Momentum (ROC) is shown as a purple line oscillating around zero.
Volume bars are green or red based on whether the close is higher or lower.
MACD appears as a blue line and orange line, with a red or green histogram showing the MACD vs. Signal line difference.
How the Indicators Work Together:
Trend Confirmation: If the price is above the Supertrend line and both SMAs are trending up, it indicates a strong bullish trend.
Momentum: If the ROC is positive and the MACD line is above the Signal line, it further confirms bullish momentum.
Volume: Increasing volume, especially with green bars, suggests that the trend is being supported by active participation.
By using these combined indicators, you can get a comprehensive view of the market's trend, momentum, and potential reversal points (via pivot highs and lows).
T3 [RATE OF CHANGE] by SKiNNiEHDeveloped by Tim Tillson, the Tilson Moving Average (T3) is a trend indicator with the advantage of having less lag than other ones. That is, a faster moving average. The T3 moving average is an "indicator of an indicator" as it includes several EMAs of another EMA. Unlike other moving averages, the t3 adds the so-called volume factor, a value between 0 and 1.
The T3 RATE OF CHANGE by SKiNNiEH is a unique indicator that integrates the T3 moving average with a normalized Rate of Change (RoC) calculation. Unlike traditional T3 moving averages, this indicator provides additional smoothing modes (SINGLE, DOUBLE & TRIPLE) for the T3, whilst enhancing visual feedback of the plotted line by generating a dynamic line thickness, a dynamic line color & brightness and trade entry bars, offering traders a more dynamic view of market conditions without going "overboard" with settings.
How It Works
Visualization
The T3 line varies in thickness and color based on the RoC values, giving traders visual cues about market strength and direction.
Thicker and brighter lines indicate stronger trends, while thinner and duller lines suggest weaker trends.
Rate of Change Filte r
This filter refines trend detection by using the line thickness measurement.
Adjustable from 0 (disabled) to 4, where higher settings only consider stronger trends for signals.
The T3 line turns gray when the filter is triggered or when the RoC is extremely low, signaling a weak or neutral market.
T3 Calculation (mode)
SINGLE
The T3 calculation is applied once to the closing price.
This mode has the least smoothing effect and the least lag. It reacts more quickly to price changes but is less smooth.
DOUBLE
The T3 calculation is applied twice sequentially.
The first T3 calculation smooths the closing price.
The second T3 calculation smooths the result of the first T3 calculation.
This mode provides more smoothing and introduces more lag compared to SINGLE mode. It is smoother but reacts slower to price changes.
TRIPLE
The T3 calculation is applied three times sequentially.
The first T3 calculation smooths the closing price.
The second T3 calculation smooths the result of the first T3 calculation.
The third T3 calculation smooths the result of the second T3 calculation.
This mode provides the most smoothing and introduces the most lag by reacting the slowest to price changes.
Rate of Change (RoC) Calculation
The script calculates the Rate of Change (RoC) for the T3 values based on the selected mode (SINGLE, DOUBLE, TRIPLE). The RoC measures the percentage change between the most recent value and a value in the past. The measurement is then normalized in three different ranges.
Normalization 5: Determines T3 line thickness on a scale from 0 - 5
Normalization 10: Determines T3 color brightness on a scale from 0 - 10
Normalization 100: Determines Rate of Change percentage
Rate of Change Filter
The script uses the RoC filter to refine the trend detection logic. By using the line thickness measurement, a filter can be enabled by setting this input on 1 - 4. As an example, setting this to 4 means that only a line thickness of 5 would be considered for a trade signal. Setting this to 0 disables the filter. The T3 line will turn gray when the filter is triggered, the T3 line can also turn gray without the filter, when the Rate of Change is extremely low.
Trade Signals
A trade signal is printed as a vertical green or red bar when the following conditions are met:
Long:
Closing price is above the T3 line
Rate of Change percentage is above 0
Previous trade signal was a short signal **
Rate of Change is not filtered
Short:
Closing price is below the T3 line
Rate of Change percentage is below 0
Previous trade signal was a long signal **
Rate of Change is not filtered
** Or this is the very first recorded trade signal
It should be noted that the trade signals in this script are trade entry signals, not trade exit signals. Use at your own risk.
Instructions for Use
Setting Up the Indicator
Apply the indicator to your trading chart.
Choose the desired T3 mode (SINGLE, DOUBLE, TRIPLE) based on your need for smoothing and lag.
Set the desired length (lookback period).
Set the desired factor between 0 and 1 (increments of 0.1)
Choose an overall line thickness and brightness that suits your screen and taste preferences.
Apply the Rate of Change filter. Setting this to 0 will disable the filter
Tip: use the trade entry vertical bars as a visual calibration tool the adjust mode, length, factor and filter.
Interpreting Visual Cues
Observe the T3 line's thickness: thicker lines indicate stronger trends, while thinner lines suggest weaker trends.
Observe the T3 line's color and color brightness: green indicates a more bullish trend, while red indicates a more bearish trend. A brighter color suggest a stronger trend. A gray color means the RoC is very low / neutral, or the RoC filter is active.
Observe the T3 line's location relative to price: below price indicates a more bullish trend, above price indicates a more bearish trend. The T3 line distance from price can also be an indication of trend strength.
Observe vertical bars: a vertical bar is printed green when long conditions are met, a vertical bar is printed red when short conditions are met. See the rules that explain the trigger for this bar above.
Alerts
Go to the settings tab, set the condition to T3.RoC.S + LONG or SHORT.
Enter an alert name and message.
Configure your notification preferences in the notifications tab and create the alert
Notifications-tab: Choose your notification preferences
Create the alert.
Rate Of Change - Weekly SignalsRate of Change - Weekly Signals
This indicator gives a potential "buy signal" using Rate of Change of SPX and VIX together,
using the following criteria:
SPX Weekly ROC(10) has been BELOW -9 and now rises ABOVE -5
*PLUS*
VIX Weekly ROC(10) has been ABOVE +80 and now falls BELOW +10
The background will turn RED when ROC(SPX) is below -9 and ROC(VIX) is above +80.
The background will turn GREEN when ROC(SPX) is above -5 and ROC(VIX) is below +10.
So the potential "buy signal" is when you start to get GREEN BARS AFTER RED - usually with
some white/empty bars in between...but wait for the green. This indicates that the volatility
has settled down, and the market is starting to turn up.
This indicator gives excellent entry points, but be careful of the occasional false signals.
See Nov. 2001 and Nov. 2008, in both cases the market dropped another 25-30% before the final
bottom was formed. Always have an exit strategy, especially when buying in after a downtrend.
How I use this indicator, pretty much as shown in the preview. Weekly SPX as the main chart with
some medium/long moving averages to identify the trend, VIX added as a "Compare Symbol" in red,
and then the Weekly ROC signals below.
For the ROC graphs, you can show SPX+VIX together, SPX alone, or VIX alone. I prefer to display
them separately because they don't scale well together (VIX crowds out the SPX when it spikes).
Background color is still based on both SPX/VIX together, regardless of which graph is shown.
Note that there is no VIX data available on Trading View prior to 1990, so for those dates the
formula is using only ROC(SPX) and the assigned thresholds (-9 and -5, or whatever you choose).
Gabriel's Relative Strength IndexGabriel’s RSI—The Reinvention of Relative Strength
Not your average RSI.
This is a fully reengineered Relative Strength Index that merges the power of advanced signal processing, adaptive smoothing, volume dynamics, and intelligent divergence detection into a single, modular toolkit designed for precision trading across all markets.
Whether you’re scalping crypto, swing trading equities, or dissecting futures contracts—Gabriel’s RSI adapts to your strategy with unrivaled control and clarity.
⚙️ 1. RSI Settings
RSI Length (Jurik): Set to 51 by default to mimic a 21-period standard RSI when Jurik smoothing is applied. Adjust lower (e.g., 22) to mimic a 9-period RSI. 32 would be almost ~14, 13.33 RSI.
RSI Source: The default is hlc3 for smoother RSI. Can be changed to any price-based series (close, open, etc.) for customization.
📡 VIX-Aware: Automatically switches to high/low/close during VIX spikes using a custom Z-score model if toggled. (I backtested it, and it catches bottoms better.) 📡
🎯 2. RSI Smoothing Options
MA Type: Smoothing applies to both RSI and its MA overlay simultaneously. I used to use the 56 EMA RSI, and it works well too.
Options: JMA, T3, Kalman, Laguerre, Super Smoother, ALMA, VWMA, LSMA, etc.
JMA: Best for adaptive recursive smoothing. A power of 2 and a phase of 50 are used.
T3: Smooth and lag-reduced, suitable for trend detection. The alpha is 0.7.
SMA + Bollinger Bands: Adds deviation-based envelopes for volatility spotting. BB StdDev: Only relevant if BBs are used. Controls bandwidth for overbought/oversold zones.
MA Length: Affects how smooth or reactive the RSI signal is.
📉 3. MACD Settings
Fast/Slow Length: Defaults (21/81) optimized for smoother MACD with SMA or T3. For Algo trading, EMA/JMA is best.
Signal Length: Shorter (e.g., 2) gives more reactive crossover signals; it can be increased.
Source: Default is close. Close works best for the settings I input. I also tuned some of the other MA types that worked for it.
MA Types: JMA and EMA reduce noise and increase signal generation. Select SMA for simplicity or T3 for trend-following.
Histogram: Bar colors signal strength and trend of MACD directly on your chart.
🔀 4. Directional Movement Index (DMI)
ADX Smoothing: High values (e.g., 100) offer strong trend confirmation with Hann Window smoothing 12, or 14 for either regular RMA or double smoothed.
DI Length: Affects DI+/- sensitivity. 100 ADX - 12/14 DI or 15 ADX - 35 DI are suggested, the latter for quicker boot time, as 100 bars is quite long.
Smoothing Type: Choose Hann Window for refined smoothing; RMA (SMMA) for simplicity. Double-smoothing is RMA -> Hann window, best of both types.
Volatility Type: ATR includes gaps for a full-range volatility; ADR is useful for gapless strategies, particularly OTC markets and intraday.
Plotted as area fills, 0 to 100 scaled.
Color-coded as Red (ADX), Orange (DI-), Blue (DI+).
📊 5. Volume Z-Score
%R Length: Normalizes volume to percentile range (73 swing, 112 exhaustion).
Z-Score Lengths: Compares short-term and long-term volume trends with Z-scores of volume.
Fast Z-Score < Slow Z-Score = Gives a Volume Squeeze.
Fast MA > Slow MA = Bullish Volume Divergence; volume has been fired. Not via Z-score, but instead via SMA, ALMA, and RMA of volume.
WPR Volume: Weighted %R used to highlight exhaustion/pivot points.
Plot volume bars after a volume squeeze has been fired; if bars aren't plotted, then it's under squeeze. Backtest on ES1! Prove it's good for catching bottoms below 15 minutes as well.
🧠 6. Divergence Engine
Pivot Settings: Pivot Period (12), Divergence minval Lookback (5), and max Lookback Bars (100) control sensitivity. Works well on any asset class; these are the optimal settings for the RSI.
Source Options: RSI, MACD, ADX, DI difference, or Volume %R.
Divergence Types: Regular (Mean Reversal), Hidden (Trend Continuation).
Heikin Ashi Mode: Enables use of HA candles on normal charts for smoother pivots. May distort values if your chart is H.A. so leave it unchecked then.
💥 7. Squeeze Momentum System (SQZMOM PRO)
Squeeze Types:
⚫ Wide (Black) — Regular Compression
🔴 Normal (Red) — Standard squeeze
🟡 Narrow (Yellow) — Golden squeeze
🟣 Very Narrow (Purple) — Extreme compression
🟢 Fired (Green) — Fired Squeeze = Breakout
Plotted on the very bottom of my indicator.
Momentum Bars:
🔷 Cyan = Rising
🔵 Blue = Pullback
🔴 Red = Falling
🟡 Yellow = Corrective
Plotted on the top of my indicator.
Reversal Signals: Dashed lines on momentum–JMA crossovers (DM-style pivot logic) ploted directly on the chart.
📈 8. Rate of Change (RoC)
RoC of Momentum: EMA-smoothed RoC on momentum for leading signals. Double smoothed, once and then another time for smoother signals.
RoC of Momentum → EMA → EMA → JMA Signal.
Signal Line: JMA used to filter noise and generate reversal signals.
Crossovers: Bullish/bearish signals based on RoC vs. signal line are plotted as triangles directly on your chart.
Optimized: Backtested for short-term setups like 1H or faster. Works on Daily timeframes as well for Futures and 24/7 Markets.
🕰️ 9. Multi-Timeframe Squeeze Settings
Each timeframe (Hourly, 4H, Daily, Weekly, Monthly) has:
Reversal Toggle: Enables dashed line DM-style pivots on crossovers.
MA Length: For Jurik MA smoothing on momentum.
BB/KC Thresholds: Define squeeze sensitivity per timeframe. A shorter BB/KC length, 17-14-12, responds better on lower timeframes.
Momentum Length: Tailors oscillator responsiveness; 20 is ideal.
🧮 10. BB Std. Deviation Scaling
Low-Pass Super Smoother : Smooths noise for BBs.
High-Pass Butterworth : Extracts cycles for BB Stdv. blend.
Root Mean Squared : Dynamic BB width adjustment based on market activity. True-range-based.
LP -> HP -> RMS -> Bollinger Band Multiplier (2.0)
Optional Intensify: Increases the squeeze rate * 4. Can be used for some option pricing strategies.
🧵 11. Moving Average Ribbon
4 optional MAs with full customization:
Choose from 13 MA types (incl. Kalman, Laguerre, T3, ALMA)
Color-coded for trend analysis (MA1–MA4 mimicking 9/21/50/200 periods)
Optional crossover alerts
🔔12. Alerts
RSI: Overbought/oversold reversals. Several types. (🦅 / 🕊️)
MACD: Histogram shift through zero line. (🐘 / 🐴)
DMI/ADX: Crossovers and strength conditions. The key level is the level where if DI/ADX is past this threshold, then it's considered to be trending. (🐬 / 🐋 / 🛡️)
Volume: Smart Money alerts on low-volume zones. May concentrate on ICT sessions. (🚨)
Squeeze: Alerts on all 5 squeeze states. (⚫, 🔴, 🟡, 🟣, 🟢)
Momentum: Momentum / JMA crosses and reversals. (🐂 / 🐻)
RoC: Bullish and bearish crosses. (📈 / 📉)
Divergences: Regular, hidden, and combined. (🐂 / 🐻 / 🐾 / 🐼)
MA Ribbon: Cross alert (⚔️)
VIX: VIX Z-Score past 2.0 (🏴☠️)
📊 13. Visual Output Summary
RSI Line + MA + Optional BB
MACD Histogram (Color Adaptive)
DMI/ADX Area Fills
%R Volume Bars (Smart Money)
Squeeze Dots (Circles)
Momentum Bars (Squares)
RoC Arrows (Cross Signals)
Pivot Break Lines (Dashed)
Auto-Divergence Lines & Labels
MA Ribbon Overlay (Optional)
✅ Best Practices ✅
Watch the slope of the RSI for pullbacks on a strong trend. Combine it with squeeze for exit timing.
Combine RSI Divergence with MACD histogram cross and Squeeze firing for precise entry.
Use Volume Z-Score to filter for institutional activity, and enter Long. Watch for reversals as well.
Watch RoC crossovers for fast, leading signals.
Enable Reversal Lines on 1H+ charts for breakout or breakdown pivots.
Use multi-timeframe thresholds for swing confirmation. The TFs I use the most are 2-5-15 minutes for futures and swinging with 1 hour daily and weekly. Those are the TFs I backtested.
An optional MA Ribbon is here as well; it supports 13 MA types.
🌎 Asset-Agnostic
MACD Automatically adjusts for Crypto, Forex, Stocks, Commodities, and Indices.
Custom ALMA, T3, Kalman, and Laguerre filters optimized per asset class and timeframe.
📚 Tech Highlights
Over 15,000 lines of modular, structured Pine Script v6 code.
Integration of Ehlers Cycle Theory and various other filters, one for each indicator.
Designed for visual clarity, multi-dimensional signal stacking, and low lag/high accuracy.
🌀 All 64 outputs are filled, so there might not be any more future updates. It's also a bit slow to load due to that.
Puts vs Longs vs Price Oscillator SwiftEdgeWhat is this Indicator?
The "Low-Latency Puts vs Longs vs Price Oscillator" is a custom technical indicator built for TradingView to help traders visualize buying and selling activity in a market without access to order book data. It displays three lines in an oscillator below the price chart:
Green Line (Longs): Represents the strength of buying activity (bullish pressure).
Red Line (Puts): Represents the strength of selling activity (bearish pressure).
Yellow Line (Price): Shows the asset’s price in a scaled format for direct comparison.
The indicator uses price movements, volume, and momentum to estimate when buyers or sellers are active, providing a quick snapshot of market dynamics. It’s optimized for fast response to price changes (low latency), making it useful for both short-term and longer-term trading strategies.
How Does it Work?
Since TradingView doesn’t provide direct access to order book data (which shows real-time buy and sell orders), this indicator approximates buying and selling pressure using commonly available data: price, volume, and a momentum measure called Rate of Change (ROC). Here’s how it combines these elements:
Price Movement: The indicator checks if the price is rising or falling compared to the previous candlestick. A rising price suggests buying (longs), while a falling price suggests selling (puts).
Volume: Volume acts as a "weight" to measure the strength of these price moves. Higher volume during a price increase boosts the green line, while higher volume during a price decrease boosts the red line. This mimics how large orders in an order book would influence the market.
Rate of Change (ROC): ROC measures how fast the price is changing over a set period (e.g., 5 candlesticks). It adds a momentum filter—strong upward momentum reinforces buying signals, while strong downward momentum reinforces selling signals.
These components are calculated for each candlestick and summed over a short lookback period (e.g., 5 candlesticks) to create the green and red lines. The yellow line is simply the asset’s closing price scaled down to fit the oscillator’s range, allowing you to compare buying/selling strength directly with price action.
Why Combine These Elements?
The combination of price, volume, and ROC is intentional and synergistic:
Price alone isn’t enough—it tells you what happened but not how strong the move was.
Volume adds context by showing the intensity behind price changes, much like how order book volume indicates real buying or selling interest.
ROC ensures the indicator captures momentum, filtering out weak or random price moves and focusing on significant trends, similar to how aggressive order execution might appear in an order book.
Together, they create a balanced picture of market activity that’s more reliable than any single factor alone. The goal is to simulate the insights you’d get from an order book—where you’d see buy/sell imbalances—using data available in TradingView.
How to Use It
Setup:
Add the indicator to your chart via TradingView’s Pine Editor by copying and pasting the script.
Adjust the inputs to suit your trading style:
Lookback Period: Number of candlesticks (default 5) to sum buying/selling activity. Shorter = more responsive; longer = smoother.
Price Scale Factor: Scales the yellow price line (default 0.001). Increase for high-priced assets (e.g., 0.01 for indices like DAX) or decrease for low-priced ones (e.g., 0.0001 for crypto).
ROC Period: Candlesticks for momentum calculation (default 5). Shorter = faster response.
ROC Weight: How much momentum affects the signal (default 0.5). Higher = stronger momentum influence.
Volume Threshold: Minimum volume multiplier (default 1.5) to boost signals during high activity.
Reading the Oscillator:
Green Line Above Yellow: Strong buying pressure—price is rising with volume and momentum support. Consider this a bullish signal.
Red Line Above Yellow: Strong selling pressure—price is falling with volume and momentum support. Consider this a bearish signal.
Green/Red Crossovers: When the green line crosses above the red, it suggests buyers are taking control. When the red crosses above the green, sellers may be dominating.
Yellow Line Context: Compare green/red lines to the yellow price line to see if buying/selling strength aligns with price trends.
Trading Examples:
Bullish Setup: Green line spikes above yellow after a price breakout with high volume (e.g., DAX opening jump). Enter a long position if confirmed by other indicators.
Bearish Setup: Red line rises above yellow during a price drop with increasing volume. Look for a short opportunity.
Reversal Warning: If the green line stays high while price (yellow) flattens or drops, it could signal overbought conditions—be cautious.
What Makes It Unique?
Unlike traditional oscillators like RSI or MACD, which focus solely on price momentum or trends, this indicator blends price, volume, and momentum into a three-line system that mimics order book dynamics. Its low-latency design (short lookback and no heavy smoothing) makes it react quickly to market shifts, ideal for volatile markets like DAX or forex. The visual separation of buying (green) and selling (red) against price (yellow) offers a clear, intuitive way to spot imbalances without needing complex data.
Tips and Customization
Volatile Markets: Use a shorter lookback (e.g., 3) and ROC period (e.g., 3) for faster signals.
Stable Markets: Increase lookback (e.g., 10) for smoother, less noisy lines.
Scaling: If the green/red lines dwarf the yellow, adjust Price Scale Factor up (e.g., 0.01) to balance them.
Experiment: Test on your asset (stocks, crypto, indices) and tweak inputs to match its behavior.
Cartera SuperTrends v4 PublicDescription
This script creates a screener with a list of ETFs ordered by their average ROC in three different periods representing 4, 6 and 8 months by default. The ETF
BIL
is always included as a reference.
The previous average ROC value shows the calculation using the closing price from last month.
The current average ROC value shows the calculation using the current price.
The previous average column background color represents if the ETF average ROC is positive or negative.
The current average column background color represents if the ETF average ROC is positive or negative.
The current average column letters color represents if the current ETF average ROC is improving or not from the previous month.
Changes from V2 to V3
Added the option to make the calculation monthly, weekly or daily
Changes from V3 to V4
Adding up to 25 symbols
Highlight the number of tickers selected
Highlight the sorted column
Complete refactor of the code using a matrix of arrays
Options
The options available are:
Make the calculation monthly, weekly or daily
Adjust Data for Dividends
Manual calculation instead of using ta.roc function
Sort table
Sort table by the previous average ROC or the current average ROC
Number of tickers selected to highlight
First Period in months, weeks or days
Second Period in months, weeks or days
Third Period in months, weeks or days
Select the assets (max 25)
Usage
Just add the indicator to your favorite indicators and then add it to your chart.
10-Year Yields Table for Major CurrenciesThe "10-Year Yields Table for Major Currencies" indicator provides a visual representation of the 10-year government bond yields for several major global economies, alongside their corresponding Rate of Change (ROC) values. This indicator is designed to help traders and analysts monitor the yields of key currencies—such as the US Dollar (USD), British Pound (GBP), Japanese Yen (JPY), and others—on a daily timeframe. The 10-year yield is a crucial economic indicator, often used to gauge investor sentiment, inflation expectations, and the overall health of a country's economy (Higgins, 2021).
Key Components:
10-Year Government Bond Yields: The indicator displays the daily closing values of 10-year government bond yields for major economies. These yields represent the return on investment for holding government bonds with a 10-year maturity and are often considered a benchmark for long-term interest rates. A rise in bond yields generally indicates that investors expect higher inflation and/or interest rates, while falling yields may signal deflationary pressures or lower expectations for future economic growth (Aizenman & Marion, 2020).
Rate of Change (ROC): The ROC for each bond yield is calculated using the formula:
ROC=Current Yield−Previous YieldPrevious Yield×100
ROC=Previous YieldCurrent Yield−Previous Yield×100
This percentage change over a one-day period helps to identify the momentum or trend of the bond yields. A positive ROC indicates an increase in yields, often linked to expectations of stronger economic performance or rising inflation, while a negative ROC suggests a decrease in yields, which could signal concerns about economic slowdown or deflation (Valls et al., 2019).
Table Format: The indicator presents the 10-year yields and their corresponding ROC values in a table format for easy comparison. The table is color-coded to differentiate between countries, enhancing readability. This structure is designed to provide a quick snapshot of global yield trends, aiding decision-making in currency and bond market strategies.
Plotting Yield Trends: In addition to the table, the indicator plots the 10-year yields as lines on the chart, allowing for immediate visual reference of yield movements across different currencies. The plotted lines provide a dynamic view of the yield curve, which is a vital tool for economic analysis and forecasting (Campbell et al., 2017).
Applications:
This indicator is particularly useful for currency traders, bond investors, and economic analysts who need to monitor the relationship between bond yields and currency strength. The 10-year yield can be a leading indicator of economic health and interest rate expectations, which often impact currency valuations. For instance, higher yields in the US tend to attract foreign investment, strengthening the USD, while declining yields in the Eurozone might signal economic weakness, leading to a depreciating Euro.
Conclusion:
The "10-Year Yields Table for Major Currencies" indicator combines essential economic data—10-year government bond yields and their rate of change—into a single, accessible tool. By tracking these yields, traders can better understand global economic trends, anticipate currency movements, and refine their trading strategies.
References:
Aizenman, J., & Marion, N. (2020). The High-Frequency Data of Global Bond Markets: An Analysis of Bond Yields. Journal of International Economics, 115, 26-45.
Campbell, J. Y., Lo, A. W., & MacKinlay, A. C. (2017). The Econometrics of Financial Markets. Princeton University Press.
Higgins, M. (2021). Macroeconomic Analysis: Bond Markets and Inflation. Harvard Business Review, 99(5), 45-60.
Valls, A., Ferreira, M., & Lopes, M. (2019). Understanding Yield Curves and Economic Indicators. Financial Markets Review, 32(4), 72-91.