Uptrick: Momentum-Volatility Composite Signal### Title: Uptrick: Momentum-Volatility Composite Signal
### Overview
The "Uptrick: Momentum-Volatility Composite Signal" is an innovative trading tool designed to offer traders a sophisticated synthesis of momentum, volatility, volume flow, and trend detection into a single comprehensive indicator. This tool stands out by providing an integrated view of market dynamics, which is critical for identifying potential trading opportunities with greater precision and confidence. Its unique approach differentiates it from traditional indicators available on the TradingView platform, making it a valuable asset for traders aiming to enhance their market analysis.
### Unique Features
This indicator integrates multiple crucial elements of market behavior:
- Momentum Analysis : Utilizes Rate of Change (ROC) metrics to assess the speed and strength of market movements.
- Volatility Tracking : Incorporates Average True Range (ATR) metrics to measure market volatility, aiding in risk assessment.
- Volume Flow Analysis : Analyzes shifts in volume to detect buying or selling pressure, adding depth to market understanding.
- Trend Detection : Uses the difference between short-term and long-term Exponential Moving Averages (EMA) to detect market trends, providing insights into potential reversals or confirmations.
Customization and Inputs
The Uptrick indicator offers a variety of user-defined settings tailored to fit different trading styles and strategies, enhancing its adaptability across various market conditions:
Rate of Change Length (rocLength) : This setting defines the period over which momentum is calculated. Shorter periods may be preferred by day traders who need to respond quickly to market changes, while longer periods could be better suited for position traders looking at more extended trends.
ATR Length (atrLength) : Adjusts the timeframe for assessing volatility. A shorter ATR length can help day traders manage the quick shifts in market volatility, whereas longer lengths might be more applicable for swing or position traders who deal with longer-term market movements.
Volume Flow Length (volumeFlowLength): Determines the analysis period for volume flow to identify buying or selling pressure. Day traders might opt for shorter periods to catch rapid volume changes, while longer periods could serve swing traders to understand the accumulation or distribution phases better.
Short EMA Length (shortEmaLength): Specifies the period for the short-term EMA, crucial for trend detection. Shorter lengths can aid day traders in spotting immediate trend shifts, whereas longer lengths might help swing traders in identifying more sustainable trend changes.
Long EMA Length (longEmaLength): Sets the period for the long-term EMA, which is useful for observing longer-term market trends. This setting is particularly valuable for position traders who need to align with the broader market direction.
Composite Signal Moving Average Length (maLength): This parameter sets the smoothing period for the composite signal's moving average, helping to reduce noise in the signal output. A shorter moving average length can be beneficial for day traders reacting to market conditions swiftly, while a longer length might help swing and position traders in smoothing out less significant fluctuations to focus on significant trends.
These customization options ensure that traders can fine-tune the Uptrick indicator to their specific trading needs, whether they are scanning for quick opportunities or analyzing more prolonged market trends.
### Functionality Details
The indicator operates through a sophisticated algorithm that integrates multiple market dimensions:
1. Momentum and Volatility Calculation : Combines ROC and ATR to gauge the market’s momentum and stability.
2. Volume and Trend Analysis : Integrates volume data with EMAs to provide a comprehensive view of current market trends and potential shifts.
3. Signal Composite : Each component is normalized and combined into a composite signal, offering traders a nuanced perspective on when to enter or exit trades.
The indicator performs its calculations as follows:
Momentum and Volatility Calculation:
roc = ta.roc(close, rocLength)
atr = ta.atr(atrLength)
Volume and Trend Analysis:
volumeFlow = ta.cum(volume) - ta.ema(ta.cum(volume), volumeFlowLength)
emaShort = ta.ema(close, shortEmaLength)
emaLong = ta.ema(close, longEmaLength)
emaDifference = emaShort - emaLong
Composite Signal Calculation:
Normalizes each component (ROC, ATR, volume flow, EMA difference) and combines them into a composite signal:
rocNorm = (roc - ta.sma(roc, rocLength)) / ta.stdev(roc, rocLength)
atrNorm = (atr - ta.sma(atr, atrLength)) / ta.stdev(atr, atrLength)
volumeFlowNorm = (volumeFlow - ta.sma(volumeFlow, volumeFlowLength)) / ta.stdev(volumeFlow, volumeFlowLength)
emaDiffNorm = (emaDifference - ta.sma(emaDifference, longEmaLength)) / ta.stdev(emaDifference, longEmaLength)
compositeSignal = (rocNorm + atrNorm + volumeFlowNorm + emaDiffNorm) / 4
### Originality
The originality of the Uptrick indicator lies in its ability to merge diverse market metrics into a unified signal. This multi-faceted approach goes beyond traditional indicators by offering a deeper, more holistic analysis of market conditions, providing traders with insights that are not only based on price movements but also on underlying market dynamics.
### Practical Application
The Uptrick indicator excels in environments where understanding the interplay between volume, momentum, and volatility is crucial. It is especially useful for:
- Day Traders : Can leverage real-time data to make quick decisions based on sudden market changes.
- Swing Traders : Benefit from understanding medium-term trends to optimize entry and exit points.
- Position Traders : Utilize long-term market trend data to align with overall market movements.
### Best Practices
To maximize the effectiveness of the Uptrick indicator, consider the following:
- Combine with Other Indicators : Use alongside other technical tools like RSI or MACD for additional validation.
- Adapt Settings to Market Conditions : Adjust the indicator settings based on the asset and market volatility to improve signal accuracy.
- Risk Management : Implement robust risk management strategies, including setting stop-loss orders based on the volatility measured by the ATR.
### Practical Examples and Demonstrations
- Example for Day Trading : In a volatile market, a trader notices a sharp increase in the momentum score coinciding with a surge in volume but stable volatility, signaling a potential bullish breakout.
- Example for Swing Trading : On a 4-hour chart, the indicator shows a gradual alignment of decreasing volatility and increasing buying volume, suggesting a strengthening upward trend suitable for a long position.
### Alerts and Their Uses
- Alert Configurations : Set alerts for when the composite score crosses predefined thresholds to capture potential buy or sell events.
- Strategic Application : Use alerts to stay informed of significant market moves without the need to continuously monitor the markets, enabling timely and informed trading decisions.
Technical Notes
Efficiency and Compatibility: The indicator is designed for efficiency, running smoothly across different trading platforms including TradingView, and can be easily integrated with existing trading setups. It leverages advanced mathematical models for normalizing and smoothing data, ensuring consistent and reliable signal quality across different market conditions.
Limitations : The effectiveness of the Uptrick indicator can vary significantly across different market conditions and asset classes. It is designed to perform best in liquid markets where data on volume, volatility, and price trends are readily available and reliable. Traders should be aware that in low-liquidity or highly volatile markets, the signals might be less reliable and require additional confirmation.
Usage Recommendations : While the Uptrick indicator is a powerful tool, it is recommended to use it in conjunction with other analysis methods to confirm signals. Traders should also continuously monitor the performance and adjust settings as needed to align with their specific trading strategies and market conditions.
### Conclusion
The "Uptrick: Momentum-Volatility Composite Signal" is a revolutionary tool that offers traders an advanced methodology for analyzing market dynamics. By combining momentum, volatility, volume, and trend detection into a single, cohesive indicator, it provides a powerful, actionable insight into market movements, making it an indispensable tool for traders aiming to optimize their trading strategies.
在腳本中搜尋"roc"
TASC 2024.09 Precision Trend Analysis█ OVERVIEW
This script introduces an approach for detecting and confirming trends in price series based on digital signal processing principles, as presented by John Ehlers in the "Precision Trend Analysis" article from the September 2024 edition of TASC's Traders' Tips .
█ CONCEPTS
Traditional trend-following indicators, such as moving averages , are lowpass filters that pass low-frequency components in a series and remove high-frequency components. Because lowpass filters preserve lengthy cycles in the data while attenuating shorter cycles, such filters have unavoidable lag that impacts the timeliness of trading signals.
In his article, John Ehlers presents an alternative approach that combines two highpass filters with different lengths to remove undesired high-frequency content via cancellation . Highpass filters have nearly zero lag. As such, the resulting trend indicator from this approach is very responsive to changes in the price series, with peaks and valleys that closely align with those of the price data. The indicator signifies an uptrend when its value is positive (i.e., above the balance point) and a downtrend when it is negative.
Subsequently, John Ehlers demonstrates that one can use the trend indicator's rate of change (ROC) to determine the onset of new trend movements. The ROC is zero at peaks and valleys in the trend indicator. Therefore, when the ROC crosses above zero, it signifies the onset or continuation of an uptrend. Likewise, the ROC crossing below zero indicates the onset or continuation of a downtrend. Note, however, that because the ROC does not preserve lower-frequency information, it can produce whipsaw trading signals in sideways or continuously trending price series.
This script implements both the trend indicator and its ROC along with the following on-chart signals:
• Green and red arrows that indicate the possible onset or continuation of an uptrend and downtrend, respectively
• Bar and plot colors that signify the sign (direction) of the trend indicator
█ CALCULATIONS
The math behind the trend indicator comes from digital filter design principles. The first step applies a digital highpass filter that attenuates long cycles with periods above the user-specified critical period. The default value is 250 bars, representing roughly one year for instruments such as stocks on the daily timeframe. The next step applies a highpass filter with a shorter period (40 bars by default). The difference between these filters determines the trend indicator, which preserves cyclic components between 40 and 250 bars by default while attenuating and eliminating others. The ROC represents the scaled one-bar difference in the trend indicator.
US Futures Momentum OverviewThe "US Futures Momentum Overview" indicator is designed to provide a comprehensive view of momentum across various U.S. futures markets. It calculates the Rate of Change (ROC) for multiple futures contracts and displays them as lines on a chart. Each futures market is plotted with a unique color for easy differentiation, allowing traders to quickly assess the momentum in different markets.
Features:
ROC Calculation: Measures the percentage change in price over a specified period, indicating the rate of change in momentum.
Futures Markets Covered: Includes major U.S. indices, commodities, and agricultural products.
How to Use:
Momentum Analysis: Observe the ROC lines for each futures market. A positive ROC indicates increasing momentum, while a negative ROC suggests decreasing momentum.
Trend Identification: Use the ROC values to identify strong trends in different markets. Markets with higher positive ROC values show stronger upward momentum.
Comparison: Compare momentum across various futures markets to identify which ones are showing stronger trends and might offer better trading opportunities.
MomentumIndicatorsLibrary "MomentumIndicators"
This is a library of 'Momentum Indicators', also denominated as oscillators.
The purpose of this library is to organize momentum indicators in just one place, making it easy to access.
In addition, it aims to allow customized versions, not being restricted to just the price value.
An example of this use case is the popular Stochastic RSI.
# Indicators:
1. Relative Strength Index (RSI):
Measures the relative strength of recent price gains to recent price losses of an asset.
2. Rate of Change (ROC):
Measures the percentage change in price of an asset over a specified time period.
3. Stochastic Oscillator (Stoch):
Compares the current price of an asset to its price range over a specified time period.
4. True Strength Index (TSI):
Measures the price change, calculating the ratio of the price change (positive or negative) in relation to the
absolute price change.
The values of both are smoothed twice to reduce noise, and the final result is normalized
in a range between 100 and -100.
5. Stochastic Momentum Index (SMI):
Combination of the True Strength Index with a signal line to help identify turning points in the market.
6. Williams Percent Range (Williams %R):
Compares the current price of an asset to its highest high and lowest low over a specified time period.
7. Commodity Channel Index (CCI):
Measures the relationship between an asset's current price and its moving average.
8. Ultimate Oscillator (UO):
Combines three different time periods to help identify possible reversal points.
9. Moving Average Convergence/Divergence (MACD):
Shows the difference between short-term and long-term exponential moving averages.
10. Fisher Transform (FT):
Normalize prices into a Gaussian normal distribution.
11. Inverse Fisher Transform (IFT):
Transform the values of the Fisher Transform into a smaller and more easily interpretable scale is through the
application of an inverse transformation to the hyperbolic tangent function.
This transformation takes the values of the FT, which range from -infinity to +infinity, to a scale limited
between -1 and +1, allowing them to be more easily visualized and compared.
12. Premier Stochastic Oscillator (PSO):
Normalizes the standard stochastic oscillator by applying a five-period double exponential smoothing average of
the %K value, resulting in a symmetric scale of 1 to -1
# Indicators of indicators:
## Stochastic:
1. Stochastic of RSI (Relative Strengh Index)
2. Stochastic of ROC (Rate of Change)
3. Stochastic of UO (Ultimate Oscillator)
4. Stochastic of TSI (True Strengh Index)
5. Stochastic of Williams R%
6. Stochastic of CCI (Commodity Channel Index).
7. Stochastic of MACD (Moving Average Convergence/Divergence)
8. Stochastic of FT (Fisher Transform)
9. Stochastic of Volume
10. Stochastic of MFI (Money Flow Index)
11. Stochastic of On OBV (Balance Volume)
12. Stochastic of PVI (Positive Volume Index)
13. Stochastic of NVI (Negative Volume Index)
14. Stochastic of PVT (Price-Volume Trend)
15. Stochastic of VO (Volume Oscillator)
16. Stochastic of VROC (Volume Rate of Change)
## Inverse Fisher Transform:
1.Inverse Fisher Transform on RSI (Relative Strengh Index)
2.Inverse Fisher Transform on ROC (Rate of Change)
3.Inverse Fisher Transform on UO (Ultimate Oscillator)
4.Inverse Fisher Transform on Stochastic
5.Inverse Fisher Transform on TSI (True Strength Index)
6.Inverse Fisher Transform on CCI (Commodity Channel Index)
7.Inverse Fisher Transform on Fisher Transform (FT)
8.Inverse Fisher Transform on MACD (Moving Average Convergence/Divergence)
9.Inverse Fisher Transfor on Williams R% (Williams Percent Range)
10.Inverse Fisher Transfor on CMF (Chaikin Money Flow)
11.Inverse Fisher Transform on VO (Volume Oscillator)
12.Inverse Fisher Transform on VROC (Volume Rate of Change)
## Stochastic Momentum Index:
1.Stochastic Momentum Index of RSI (Relative Strength Index)
2.Stochastic Momentum Index of ROC (Rate of Change)
3.Stochastic Momentum Index of VROC (Volume Rate of Change)
4.Stochastic Momentum Index of Williams R% (Williams Percent Range)
5.Stochastic Momentum Index of FT (Fisher Transform)
6.Stochastic Momentum Index of CCI (Commodity Channel Index)
7.Stochastic Momentum Index of UO (Ultimate Oscillator)
8.Stochastic Momentum Index of MACD (Moving Average Convergence/Divergence)
9.Stochastic Momentum Index of Volume
10.Stochastic Momentum Index of MFI (Money Flow Index)
11.Stochastic Momentum Index of CMF (Chaikin Money Flow)
12.Stochastic Momentum Index of On Balance Volume (OBV)
13.Stochastic Momentum Index of Price-Volume Trend (PVT)
14.Stochastic Momentum Index of Volume Oscillator (VO)
15.Stochastic Momentum Index of Positive Volume Index (PVI)
16.Stochastic Momentum Index of Negative Volume Index (NVI)
## Relative Strength Index:
1. RSI for Volume
2. RSI for Moving Average
rsi(source, length)
RSI (Relative Strengh Index). Measures the relative strength of recent price gains to recent price losses of an asset.
Parameters:
source : (float) Source of series (close, high, low, etc.)
length : (int) Period of loopback
Returns: (float) Series of RSI
roc(source, length)
ROC (Rate of Change). Measures the percentage change in price of an asset over a specified time period.
Parameters:
source : (float) Source of series (close, high, low, etc.)
length : (int) Period of loopback
Returns: (float) Series of ROC
stoch(kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Stochastic Oscillator. Compares the current price of an asset to its price range over a specified time period.
Parameters:
kLength
kSmoothing : (int) Period for smoothig stochastic
dSmoothing : (int) Period for signal (moving average of stochastic)
maTypeK : (int) Type of Moving Average for Stochastic Oscillator
maTypeD : (int) Type of Moving Average for Stochastic Oscillator Signal
almaOffsetKD : (float) Offset for Arnaud Legoux Moving Average for Oscillator and Signal
almaSigmaKD : (float) Sigma for Arnaud Legoux Moving Average for Oscillator and Signal
lsmaOffSetKD : (int) Offset for Least Squares Moving Average for Oscillator and Signal
Returns: A tuple of Stochastic Oscillator and Moving Average of Stochastic Oscillator
stoch(source, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Stochastic Oscillator. Customized source. Compares the current price of an asset to its price range over a specified time period.
Parameters:
source : (float) Source of series (close, high, low, etc.)
kLength : (int) Period of loopback to calculate the stochastic
kSmoothing : (int) Period for smoothig stochastic
dSmoothing : (int) Period for signal (moving average of stochastic)
maTypeK : (int) Type of Moving Average for Stochastic Oscillator
maTypeD : (int) Type of Moving Average for Stochastic Oscillator Signal
almaOffsetKD : (float) Offset for Arnaud Legoux Moving Average for Stoch and Signal
almaSigmaKD : (float) Sigma for Arnaud Legoux Moving Average for Stoch and Signal
lsmaOffSetKD : (int) Offset for Least Squares Moving Average for Stoch and Signal
Returns: A tuple of Stochastic Oscillator and Moving Average of Stochastic Oscillator
tsi(source, shortLength, longLength, maType, almaOffset, almaSigma, lsmaOffSet)
TSI (True Strengh Index). Measures the price change, calculating the ratio of the price change (positive or negative) in relation to the absolute price change.
The values of both are smoothed twice to reduce noise, and the final result is normalized in a range between 100 and -100.
Parameters:
source : (float) Source of series (close, high, low, etc.)
shortLength : (int) Short length
longLength : (int) Long length
maType : (int) Type of Moving Average for TSI
almaOffset : (float) Offset for Arnaud Legoux Moving Average
almaSigma : (float) Sigma for Arnaud Legoux Moving Average
lsmaOffSet : (int) Offset for Least Squares Moving Average
Returns: (float) TSI
smi(sourceTSI, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
SMI (Stochastic Momentum Index). A TSI (True Strengh Index) plus a signal line.
Parameters:
sourceTSI : (float) Source of series for TSI (close, high, low, etc.)
shortLengthTSI : (int) Short length for TSI
longLengthTSI : (int) Long length for TSI
maTypeTSI : (int) Type of Moving Average for Signal of TSI
almaOffsetTSI : (float) Offset for Arnaud Legoux Moving Average
almaSigmaTSI : (float) Sigma for Arnaud Legoux Moving Average
lsmaOffSetTSI : (int) Offset for Least Squares Moving Average
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
Returns: A tuple with TSI, signal of TSI and histogram of difference
wpr(source, length)
Williams R% (Williams Percent Range). Compares the current price of an asset to its highest high and lowest low over a specified time period.
Parameters:
source : (float) Source of series (close, high, low, etc.)
length : (int) Period of loopback
Returns: (float) Series of Williams R%
cci(source, length, maType, almaOffset, almaSigma, lsmaOffSet)
CCI (Commodity Channel Index). Measures the relationship between an asset's current price and its moving average.
Parameters:
source : (float) Source of series (close, high, low, etc.)
length : (int) Period of loopback
maType : (int) Type of Moving Average
almaOffset : (float) Offset for Arnaud Legoux Moving Average
almaSigma : (float) Sigma for Arnaud Legoux Moving Average
lsmaOffSet : (int) Offset for Least Squares Moving Average
Returns: (float) Series of CCI
ultimateOscillator(fastLength, middleLength, slowLength)
UO (Ultimate Oscilator). Combines three different time periods to help identify possible reversal points.
Parameters:
fastLength : (int) Fast period of loopback
middleLength : (int) Middle period of loopback
slowLength : (int) Slow period of loopback
Returns: (float) Series of Ultimate Oscilator
ultimateOscillator(source, fastLength, middleLength, slowLength)
UO (Ultimate Oscilator). Customized source. Combines three different time periods to help identify possible reversal points.
Parameters:
source : (float) Source of series (close, high, low, etc.)
fastLength : (int) Fast period of loopback
middleLength : (int) Middle period of loopback
slowLength : (int) Slow period of loopback
Returns: (float) Series of Ultimate Oscilator
macd(source, fastLength, slowLength, signalLength, maTypeFast, maTypeSlow, maTypeMACD, almaOffset, almaSigma, lsmaOffSet)
MACD (Moving Average Convergence/Divergence). Shows the difference between short-term and long-term exponential moving averages.
Parameters:
source : (float) Source of series (close, high, low, etc.)
fastLength : (int) Period for fast moving average
slowLength : (int) Period for slow moving average
signalLength : (int) Signal length
maTypeFast : (int) Type of fast moving average
maTypeSlow : (int) Type of slow moving average
maTypeMACD : (int) Type of MACD moving average
almaOffset : (float) Offset for Arnaud Legoux Moving Average
almaSigma : (float) Sigma for Arnaud Legoux Moving Average
lsmaOffSet : (int) Offset for Least Squares Moving Average
Returns: A tuple with MACD, Signal, and Histgram
fisher(length)
Fisher Transform. Normalize prices into a Gaussian normal distribution.
Parameters:
length
Returns: A tuple with Fisher Transform and signal
fisher(source, length)
Fisher Transform. Customized source. Normalize prices into a Gaussian normal distribution.
Parameters:
source : (float) Source of series (close, high, low, etc.)
length
Returns: A tuple with Fisher Transform and signal
inverseFisher(source, length, subtrahend, denominator)
Inverse Fisher Transform.
Transform the values of the Fisher Transform into a smaller and more easily interpretable scale is
through the application of an inverse transformation to the hyperbolic tangent function.
This transformation takes the values of the FT, which range from -infinity to +infinity,
to a scale limited between -1 and +1, allowing them to be more easily visualized and compared.
Parameters:
source : (float) Source of series (close, high, low, etc.)
length : (int) Period for loopback
subtrahend : (int) Denominator. Useful in unbounded indicators. For example, in CCI.
denominator
Returns: (float) Series of Inverse Fisher Transform
premierStoch(length, smoothlen)
Premier Stochastic Oscillator (PSO).
Normalizes the standard stochastic oscillator by applying a five-period double exponential smoothing
average of the %K value, resulting in a symmetric scale of 1 to -1.
Parameters:
length : (int) Period for loopback
smoothlen : (int) Period for smoothing
Returns: (float) Series of PSO
premierStoch(source, smoothlen, subtrahend, denominator)
Premier Stochastic Oscillator (PSO) of custom source.
Normalizes the source by applying a five-period double exponential smoothing average.
Parameters:
source : (float) Source of series (close, high, low, etc.)
smoothlen : (int) Period for smoothing
subtrahend : (int) Denominator. Useful in unbounded indicators. For example, in CCI.
denominator
Returns: (float) Series of PSO
stochRsi(sourceRSI, lengthRSI, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
sourceRSI
lengthRSI
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochRoc(sourceROC, lengthROC, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
sourceROC
lengthROC
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochUO(fastLength, middleLength, slowLength, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
fastLength
middleLength
slowLength
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochTSI(source, shortLength, longLength, maType, almaOffset, almaSigma, lsmaOffSet, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
source
shortLength
longLength
maType
almaOffset
almaSigma
lsmaOffSet
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochWPR(source, length, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
source
length
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochCCI(source, length, maType, almaOffset, almaSigma, lsmaOffSet, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
source
length
maType
almaOffset
almaSigma
lsmaOffSet
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochMACD(source, fastLength, slowLength, signalLength, maTypeFast, maTypeSlow, maTypeMACD, almaOffset, almaSigma, lsmaOffSet, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
source
fastLength
slowLength
signalLength
maTypeFast
maTypeSlow
maTypeMACD
almaOffset
almaSigma
lsmaOffSet
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochFT(length, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
length
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochVolume(kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochMFI(source, length, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
source
length
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochOBV(source, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
source
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochPVI(source, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
source
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochNVI(source, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
source
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochPVT(source, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
source
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochVO(shortLen, longLen, maType, almaOffset, almaSigma, lsmaOffSet, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
shortLen
longLen
maType
almaOffset
almaSigma
lsmaOffSet
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
stochVROC(length, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD)
Parameters:
length
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
iftRSI(sourceRSI, lengthRSI, lengthIFT)
Parameters:
sourceRSI
lengthRSI
lengthIFT
iftROC(sourceROC, lengthROC, lengthIFT)
Parameters:
sourceROC
lengthROC
lengthIFT
iftUO(fastLength, middleLength, slowLength, lengthIFT)
Parameters:
fastLength
middleLength
slowLength
lengthIFT
iftStoch(kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD, lengthIFT)
Parameters:
kLength
kSmoothing
dSmoothing
maTypeK
maTypeD
almaOffsetKD
almaSigmaKD
lsmaOffSetKD
lengthIFT
iftTSI(source, shortLength, longLength, maType, almaOffset, almaSigma, lsmaOffSet, lengthIFT)
Parameters:
source
shortLength
longLength
maType
almaOffset
almaSigma
lsmaOffSet
lengthIFT
iftCCI(source, length, maType, almaOffset, almaSigma, lsmaOffSet, lengthIFT)
Parameters:
source
length
maType
almaOffset
almaSigma
lsmaOffSet
lengthIFT
iftFisher(length, lengthIFT)
Parameters:
length
lengthIFT
iftMACD(source, fastLength, slowLength, signalLength, maTypeFast, maTypeSlow, maTypeMACD, almaOffset, almaSigma, lsmaOffSet, lengthIFT)
Parameters:
source
fastLength
slowLength
signalLength
maTypeFast
maTypeSlow
maTypeMACD
almaOffset
almaSigma
lsmaOffSet
lengthIFT
iftWPR(source, length, lengthIFT)
Parameters:
source
length
lengthIFT
iftMFI(source, length, lengthIFT)
Parameters:
source
length
lengthIFT
iftCMF(length, lengthIFT)
Parameters:
length
lengthIFT
iftVO(shortLen, longLen, maType, almaOffset, almaSigma, lsmaOffSet, lengthIFT)
Parameters:
shortLen
longLen
maType
almaOffset
almaSigma
lsmaOffSet
lengthIFT
iftVROC(length, lengthIFT)
Parameters:
length
lengthIFT
smiRSI(source, length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
source
length
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiROC(source, length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
source
length
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiVROC(length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
length
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiWPR(source, length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
source
length
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiFT(length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
length
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiFT(source, length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
source
length
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiCCI(source, length, maTypeCCI, almaOffsetCCI, almaSigmaCCI, lsmaOffSetCCI, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
source
length
maTypeCCI
almaOffsetCCI
almaSigmaCCI
lsmaOffSetCCI
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiUO(fastLength, middleLength, slowLength, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
fastLength
middleLength
slowLength
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiMACD(source, fastLength, slowLength, signalLength, maTypeFast, maTypeSlow, maTypeMACD, almaOffset, almaSigma, lsmaOffSet, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
source
fastLength
slowLength
signalLength
maTypeFast
maTypeSlow
maTypeMACD
almaOffset
almaSigma
lsmaOffSet
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiVol(shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiMFI(source, length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
source
length
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiCMF(length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
length
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiOBV(source, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
source
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiPVT(source, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
source
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiVO(shortLen, longLen, maType, almaOffset, almaSigma, lsmaOffSet, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
shortLen
longLen
maType
almaOffset
almaSigma
lsmaOffSet
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiPVI(source, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
source
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
smiNVI(source, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal)
Parameters:
source
shortLengthTSI
longLengthTSI
maTypeTSI
almaOffsetTSI
almaSigmaTSI
lsmaOffSetTSI
maTypeSignal
smoothingLengthSignal
almaOffsetSignal
almaSigmaSignal
lsmaOffSetSignal
rsiVolume(length)
Parameters:
length
rsiMA(sourceMA, lengthMA, maType, almaOffset, almaSigma, lsmaOffSet, lengthRSI)
Parameters:
sourceMA
lengthMA
maType
almaOffset
almaSigma
lsmaOffSet
lengthRSI
Money Flow Pulse💸 In markets where volatility is cheap and structure is noisy, what matters most isn’t just the move — it’s the effort behind it. Money Flow Pulse (MFP) offers a compact, color-coded readout of real-time conviction by scoring volume-weighted price action on a five-tier scale. It doesn’t try to predict reversals or validate trends. Instead, it reveals the quality of the move in progress: is it fading , driving , exhausting , or hollow ?
🎨 MFP draws from the traditional Money Flow Index (MFI), a volume-enhanced momentum oscillator, but transforms it into a modular “pressure readout” that fits seamlessly into any structural overlay. Rather than oscillating between extremes with little interpretive guidance, MFP discretizes the flow into clean, color-coded regimes ranging from strong inflow (+2) to strong outflow (–2). The result is a responsive diagnostic layer that complements, rather than competes with, tools like ATR and/or On-Balance Volume.
5️⃣ MFP uses a normalized MFI value smoothed over 13 periods and classified into a 5-tier readout of Volume-Driven Conviction :
🍆 Exhaustion Inflow — usually a top or blowoff; not strength, but overdrive (+2)
🥝 Active Inflow — supportive of trend continuation (+1)
🍋 Neutral — chop, coil, or fakeouts (0)
🍑 Selling Intent — weakening structure, possible fade setups (-1)
🍆 Exhaustion Outflow — often signals forced selling or accumulation traps (-2)
🎭 These tiers are not arbitrary. Each one is tuned to reflect real capital behavior across timeframes. For instance, while +1 may support continuation, +2 often precedes exhaustion — especially on the lower timeframes. Similarly, a –1 reading during a pullback suggests sell-side pressure is building, but a shift to –2 may mean capitulation is already underway. The difference between the two can define whether a move is tradable continuation or strategic exhaustion .
🌊 The MFI ROC (Rate of Change) feature can be toggled to become a volatility-aware pulse monitor beneath the derived MFI tier. Instead of scoring direction or structure, ROC reveals how fast conviction is changing — not just where it’s headed, but how hard it's accelerating or decaying. It measures the raw Δ between the current and previous MFI values, exposing bursts of energy, fading pressure, or transitional churn .
🎢 Visually, ROC appears as a low-opacity area fill, anchored to a shared lemon-yellow zero line. When the green swell rises, buying pressure is accelerating; when the red drops, flow is actively deteriorating. A subtle bump may signal early interest — while a steep wave hints at an emotional overreaction. The ROC value itself provides numeric insight alongside the raw MFI score. A reading of +3.50 implies strong upside momentum in the flow — often supporting trend ignition. A score of –6.00 suggests rapid deceleration or full exhaustion — often preceding reversals or failed breakouts.
・ MFI shows you where the flow is
・ ROC tells you how it’s behaving
😎 This blend reveals not just structure or intent — but also urgency . And in flow-based trading, urgency often precedes outcome.
🧩 Divergence isn’t delay — it’s disagreement . One of the most revealing features of MFP is how it exposes momentum dissonance — situations where price and flow part ways. These divergences often front-run pivots , traps , or velocity stalls . Unlike RSI-style divergence, which whispers of exhaustion, MFI divergence signals a breakdown in conviction. The structure may extend — but the effort isn’t there.
・ Price ▲ MFI ▼ → Effortless Markup : Often signals distribution or a grind into liquidity. Without rising MFI, the rally lacks true flow participation — a warning of fragility.
・ Price ▼ MFI ▲ → Absorption or Early Accumulation : Price breaks down, but money keeps flowing in — a hidden bid. Watch for MFI tier shifts or ROC bursts to confirm a reversal.
🏄♂️ These moments don’t require signal overlays or setup hunting. MFP narrates the imbalance. When price breaks structure but flow does not — or vice versa — you’re not seeing trend, you’re seeing disagreement, and that's where edge begins.
💤 MFP is especially effective on intraday charts where volume dislocations matter most. On the 1H or 15m chart, it helps distinguish between breakouts with conviction versus those lacking flow. On higher timeframes, its resolution softens — it becomes more of a drift indicator than a trigger device. That’s by design: MFP prioritizes pulse, not position. It’s not the fire, it’s the heat.
📎 Use MFP in confluence with structural overlays to validate price behavior. A ribbon expansion with rising MFP is real. A compression breakout without +1 flow is "fishy". Watch how MFP behaves near key zones like anchored VWAP, MAs or accumulation pivots. When MFP rises into a +2 and fails to sustain, the reversal isn’t just technical — it’s flow-based.
🪟 MFP doesn’t speak loudly, but it never whispers without reason. It’s the pulse check before action — the breath of the move before the breakout. While it stays visually minimal on the chart, the true power is in the often overlooked Data Window, where traders can read and interpret the score in real time. Once internalized, these values give structure-aware traders a framework for conviction, continuation, or caution.
🛜 MFP doesn’t chase momentum — it confirms conviction. And in markets defined by noise, that signal isn’t just helpful — it’s foundational.
Fuzzy SMA Trend Analyzer (experimental)[FibonacciFlux]Fuzzy SMA Trend Analyzer (Normalized): Advanced Market Trend Detection Using Fuzzy Logic Theory
Elevate your technical analysis with institutional-grade fuzzy logic implementation
Research Genesis & Conceptual Framework
This indicator represents the culmination of extensive research into applying fuzzy logic theory to financial markets. While traditional technical indicators often produce binary outcomes, market conditions exist on a continuous spectrum. The Fuzzy SMA Trend Analyzer addresses this limitation by implementing a sophisticated fuzzy logic system that captures the nuanced, multi-dimensional nature of market trends.
Core Fuzzy Logic Principles
At the heart of this indicator lies fuzzy logic theory - a mathematical framework designed to handle imprecision and uncertainty:
// Improved fuzzy_triangle function with guard clauses for NA and invalid parameters.
fuzzy_triangle(val, left, center, right) =>
if na(val) or na(left) or na(center) or na(right) or left > center or center > right // Guard checks
0.0
else if left == center and center == right // Crisp set (single point)
val == center ? 1.0 : 0.0
else if left == center // Left-shoulder shape (ramp down from 1 at center to 0 at right)
val >= right ? 0.0 : val <= center ? 1.0 : (right - val) / (right - center)
else if center == right // Right-shoulder shape (ramp up from 0 at left to 1 at center)
val <= left ? 0.0 : val >= center ? 1.0 : (val - left) / (center - left)
else // Standard triangle
math.max(0.0, math.min((val - left) / (center - left), (right - val) / (right - center)))
This implementation of triangular membership functions enables the indicator to transform crisp numerical values into degrees of membership in linguistic variables like "Large Positive" or "Small Negative," creating a more nuanced representation of market conditions.
Dynamic Percentile Normalization
A critical innovation in this indicator is the implementation of percentile-based normalization for SMA deviation:
// ----- Deviation Scale Estimation using Percentile -----
// Calculate the percentile rank of the *absolute* deviation over the lookback period.
// This gives an estimate of the 'typical maximum' deviation magnitude recently.
diff_abs_percentile = ta.percentile_linear_interpolation(math.abs(raw_diff), normLookback, percRank) + 1e-10
// ----- Normalize the Raw Deviation -----
// Divide the raw deviation by the estimated 'typical max' magnitude.
normalized_diff = raw_diff / diff_abs_percentile
// ----- Clamp the Normalized Deviation -----
normalized_diff_clamped = math.max(-3.0, math.min(3.0, normalized_diff))
This percentile normalization approach creates a self-adapting system that automatically calibrates to different assets and market regimes. Rather than using fixed thresholds, the indicator dynamically adjusts based on recent volatility patterns, significantly enhancing signal quality across diverse market environments.
Multi-Factor Fuzzy Rule System
The indicator implements a comprehensive fuzzy rule system that evaluates multiple technical factors:
SMA Deviation (Normalized): Measures price displacement from the Simple Moving Average
Rate of Change (ROC): Captures price momentum over a specified period
Relative Strength Index (RSI): Assesses overbought/oversold conditions
These factors are processed through a sophisticated fuzzy inference system with linguistic variables:
// ----- 3.1 Fuzzy Sets for Normalized Deviation -----
diffN_LP := fuzzy_triangle(normalized_diff_clamped, 0.7, 1.5, 3.0) // Large Positive (around/above percentile)
diffN_SP := fuzzy_triangle(normalized_diff_clamped, 0.1, 0.5, 0.9) // Small Positive
diffN_NZ := fuzzy_triangle(normalized_diff_clamped, -0.2, 0.0, 0.2) // Near Zero
diffN_SN := fuzzy_triangle(normalized_diff_clamped, -0.9, -0.5, -0.1) // Small Negative
diffN_LN := fuzzy_triangle(normalized_diff_clamped, -3.0, -1.5, -0.7) // Large Negative (around/below percentile)
// ----- 3.2 Fuzzy Sets for ROC -----
roc_HN := fuzzy_triangle(roc_val, -8.0, -5.0, -2.0)
roc_WN := fuzzy_triangle(roc_val, -3.0, -1.0, -0.1)
roc_NZ := fuzzy_triangle(roc_val, -0.3, 0.0, 0.3)
roc_WP := fuzzy_triangle(roc_val, 0.1, 1.0, 3.0)
roc_HP := fuzzy_triangle(roc_val, 2.0, 5.0, 8.0)
// ----- 3.3 Fuzzy Sets for RSI -----
rsi_L := fuzzy_triangle(rsi_val, 0.0, 25.0, 40.0)
rsi_M := fuzzy_triangle(rsi_val, 35.0, 50.0, 65.0)
rsi_H := fuzzy_triangle(rsi_val, 60.0, 75.0, 100.0)
Advanced Fuzzy Inference Rules
The indicator employs a comprehensive set of fuzzy rules that encode expert knowledge about market behavior:
// --- Fuzzy Rules using Normalized Deviation (diffN_*) ---
cond1 = math.min(diffN_LP, roc_HP, math.max(rsi_M, rsi_H)) // Strong Bullish: Large pos dev, strong pos roc, rsi ok
strength_SB := math.max(strength_SB, cond1)
cond2 = math.min(diffN_SP, roc_WP, rsi_M) // Weak Bullish: Small pos dev, weak pos roc, rsi mid
strength_WB := math.max(strength_WB, cond2)
cond3 = math.min(diffN_SP, roc_NZ, rsi_H) // Weakening Bullish: Small pos dev, flat roc, rsi high
strength_N := math.max(strength_N, cond3 * 0.6) // More neutral
strength_WB := math.max(strength_WB, cond3 * 0.2) // Less weak bullish
This rule system evaluates multiple conditions simultaneously, weighting them by their degree of membership to produce a comprehensive trend assessment. The rules are designed to identify various market conditions including strong trends, weakening trends, potential reversals, and neutral consolidations.
Defuzzification Process
The final step transforms the fuzzy result back into a crisp numerical value representing the overall trend strength:
// --- Step 6: Defuzzification ---
denominator = strength_SB + strength_WB + strength_N + strength_WBe + strength_SBe
if denominator > 1e-10 // Use small epsilon instead of != 0.0 for float comparison
fuzzyTrendScore := (strength_SB * STRONG_BULL +
strength_WB * WEAK_BULL +
strength_N * NEUTRAL +
strength_WBe * WEAK_BEAR +
strength_SBe * STRONG_BEAR) / denominator
The resulting FuzzyTrendScore ranges from -1 (strong bearish) to +1 (strong bullish), providing a smooth, continuous evaluation of market conditions that avoids the abrupt signal changes common in traditional indicators.
Advanced Visualization with Rainbow Gradient
The indicator incorporates sophisticated visualization using a rainbow gradient coloring system:
// Normalize score to for gradient function
normalizedScore = na(fuzzyTrendScore) ? 0.5 : math.max(0.0, math.min(1.0, (fuzzyTrendScore + 1) / 2))
// Get the color based on gradient setting and normalized score
final_color = get_gradient(normalizedScore, gradient_type)
This color-coding system provides intuitive visual feedback, with color intensity reflecting trend strength and direction. The gradient can be customized between Red-to-Green or Red-to-Blue configurations based on user preference.
Practical Applications
The Fuzzy SMA Trend Analyzer excels in several key applications:
Trend Identification: Precisely identifies market trend direction and strength with nuanced gradation
Market Regime Detection: Distinguishes between trending markets and consolidation phases
Divergence Analysis: Highlights potential reversals when price action and fuzzy trend score diverge
Filter for Trading Systems: Provides high-quality trend filtering for other trading strategies
Risk Management: Offers early warning of potential trend weakening or reversal
Parameter Customization
The indicator offers extensive customization options:
SMA Length: Adjusts the baseline moving average period
ROC Length: Controls momentum sensitivity
RSI Length: Configures overbought/oversold sensitivity
Normalization Lookback: Determines the adaptive calculation window for percentile normalization
Percentile Rank: Sets the statistical threshold for deviation normalization
Gradient Type: Selects the preferred color scheme for visualization
These parameters enable fine-tuning to specific market conditions, trading styles, and timeframes.
Acknowledgments
The rainbow gradient visualization component draws inspiration from LuxAlgo's "Rainbow Adaptive RSI" (used under CC BY-NC-SA 4.0 license). This implementation of fuzzy logic in technical analysis builds upon Fermi estimation principles to overcome the inherent limitations of crisp binary indicators.
This indicator is shared under Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) license.
Remember that past performance does not guarantee future results. Always conduct thorough testing before implementing any technical indicator in live trading.
Crypto Divergence from BTCThis script is used to indicate when price action of a crypto coin is diverging significantly from that of BTC.
Explanation of the Script:
Inputs:
roc_length: The period used for calculating the Rate of Change.
ma_length: The period used for the moving average of the ROC.
threshold: The percentage difference that indicates a divergence.
Price Data:
The script retrieves the current asset's price and Bitcoin's price.
ROC Calculation:
The ROC for both the current asset and BTC is calculated based on the defined roc_length.
Moving Averages:
Simple moving averages (SMA) of the ROC values are calculated to smooth out the data.
Divergence Detection:
The indicator checks if the current asset's ROC MA is significantly higher or lower than Bitcoin's ROC MA based on the specified threshold.
Plotting:
The script plots the ROC values and their moving averages.
It also highlights the background in green when a bullish divergence is detected (when the asset is moving up while BTC is lagging) and in red for a bearish divergence.
Leading Indicator by Parag RautBreakdown of the Leading Indicator:
Linear Regression (LRC):
A linear regression line is used to estimate the current trend direction. When the price is above or below the regression line, it indicates whether the price is deviating from its mean, signaling potential reversals.
Rate of Change (ROC):
ROC measures the momentum of the price over a set period. By using thresholds (positive or negative), we predict that the price will continue in the same direction if momentum is strong enough.
Leading Indicator Calculation:
We calculate the difference between the price and the linear regression line. This is normalized using the standard deviation of price over the same period, giving us a leading signal based on price divergence from the mean trend.
The leading indicator is used to forecast changes in price behavior by identifying when the price is either stretched too far from the mean (indicating a potential reversal) or showing strong momentum in a particular direction (predicting trend continuation).
Buy and Sell Signals:
Buy Signal: Generated when ROC is above a threshold and the leading indicator shows the price is above the regression line.
Sell Signal: Generated when ROC is below a negative threshold and the leading indicator shows the price is below the regression line.
Visual Representation:
The indicator oscillates around zero. Values above zero signal potential upward price movements, while values below zero signal potential downward movements.
Background colors highlight potential buy (green) and sell (red) areas based on our conditions.
How It Works as a Leading Indicator:
This indicator attempts to predict price movements before they happen by combining the trend (via linear regression) and momentum (via ROC).
When the price significantly diverges from the trendline and momentum supports a continuation, it signals a potential entry point (either buy or sell).
It is leading in that it anticipates price movement before it becomes fully apparent in the market.
Next Steps:
You can adjust the length of the linear regression and ROC to fine-tune the indicator’s sensitivity to your trading style.
This can be combined with other indicators or used as part of a larger strategy
Moving Average Ratio [InvestorUnknown]Overview
The "Moving Average Ratio" (MAR) indicator is a versatile tool designed for valuation, mean-reversion, and long-term trend analysis. This indicator provides multiple display modes to cater to different analytical needs, allowing traders and investors to gain deeper insights into the market dynamics.
Features
1. Moving Average Ratio (MAR):
Calculates the ratio of the chosen source (close, open, ohlc4, hl2 …) to a longer-term moving average of choice (SMA, EMA, HMA, WMA, DEMA)
Useful for identifying overbought or oversold conditions, aiding in mean-reversion strategies and valuation of assets.
For some high beta asset classes, like cryptocurrencies, you might want to use logarithmic scale for the raw MAR, below you can see the visual difference of using Linear and Logarithmic scale on BTC
2. MAR Z-Score:
Computes the Z-Score of the MAR to standardize the ratio over chosen time period, making it easier to identify extreme values relative to the historical mean.
Helps in detecting significant deviations from the mean, which can indicate potential reversal points and buying/selling opportunities
3. MAR Trend Analysis:
Uses a combination of short-term (default 1, raw MAR) and long-term moving averages of the MAR to identify trend changes.
Provides a visual representation of bullish and bearish trends based on moving average crossings.
Using Logarithmic scale can improve the visuals for some asset classes.
4. MAR Momentum:
Measures the momentum of the MAR by calculating the difference over a specified period.
Useful for detecting changes in the market momentum and potential trend reversals.
5. MAR Rate of Change (ROC):
Calculates the rate of change of the MAR to assess the speed and direction of price movements.
Helps in identifying accelerating or decelerating trends.
MAR Momentum and Rate of Change are very similar, the only difference is that the Momentum is expressed in units of the MAR change and ROC is expressed as % change of MAR over chosen time period.
Customizable Settings
General Settings:
Display Mode: Select the display mode from MAR, MAR Z-Score, MAR Trend, MAR Momentum, or MAR ROC.
Color Bars: Option to color the bars based on the current display mode.
Wait for Bar Close: Toggle to wait for the bar to close before updating the MAR value.
MAR Settings:
Length: Period for the moving average calculation.
Source: Data source for the moving average calculation.
Moving Average Type: Select the type of moving average (SMA, EMA, WMA, HMA, DEMA).
Z-Score Settings:
Z-Score Length: Period for the Z-Score calculation.
Trend Analysis Settings:
Moving Average Type: Select the type of moving average for trend analysis (SMA, EMA).
Longer Moving Average: Period for the longer moving average.
Shorter Moving Average: Period for the shorter moving average.
Momentum Settings:
Momentum Length: Period for the momentum calculation.
Rate of Change Settings:
ROC Length: Period for the rate of change calculation.
Calculation and Plotting
Moving Average Ratio (MAR):
Calculates the ratio of the price to the selected moving average type and length.
Plots the MAR with a gradient color based on its Z-Score, aiding in visual identification of extreme values.
// Moving Average Ratio (MAR)
ma_main = switch ma_main_type
"SMA" => ta.sma(src, len)
"EMA" => ta.ema(src, len)
"WMA" => ta.wma(src, len)
"HMA" => ta.hma(src, len)
"DEMA" => ta.dema(src, len)
mar = (waitforclose ? src : src) / ma_main
z_col = color.from_gradient(z, -2.5, 2.5, color.green, color.red)
plot(disp_mode.mar ? mar : na, color = z_col, histbase = 1, style = plot.style_columns)
barcolor(color_bars ? (disp_mode.mar ? (z_col) : na) : na)
MAR Z-Score:
Computes the Z-Score of the MAR and plots it with a color gradient indicating the magnitude of deviation from the mean.
// MAR Z-Score
mean = ta.sma(math.log(mar), z_len)
stdev = ta.stdev(math.log(mar),z_len)
z = (math.log(mar) - mean) / stdev
plot(disp_mode.mar_z ? z : na, color = z_col, histbase = 0, style = plot.style_columns)
plot(disp_mode.mar_z ? 1 : na, color = color.new(color.red,70))
plot(disp_mode.mar_z ? 2 : na, color = color.new(color.red,50))
plot(disp_mode.mar_z ? 3 : na, color = color.new(color.red,30))
plot(disp_mode.mar_z ? -1 : na, color = color.new(color.green,70))
plot(disp_mode.mar_z ? -2 : na, color = color.new(color.green,50))
plot(disp_mode.mar_z ? -3 : na, color = color.new(color.green,30))
barcolor(color_bars ? (disp_mode.mar_z ? (z_col) : na) : na)
MAR Trend:
Plots the MAR along with its short-term and long-term moving averages.
Uses color changes to indicate bullish or bearish trends based on moving average crossings.
// MAR Trend - Moving Average Crossing
mar_ma_long = switch ma_trend_type
"SMA" => ta.sma(mar, len_trend_long)
"EMA" => ta.ema(mar, len_trend_long)
mar_ma_short = switch ma_trend_type
"SMA" => ta.sma(mar, len_trend_short)
"EMA" => ta.ema(mar, len_trend_short)
plot(disp_mode.mar_t ? mar : na, color = mar_ma_long < mar_ma_short ? color.new(color.green,50) : color.new(color.red,50), histbase = 1, style = plot.style_columns)
plot(disp_mode.mar_t ? mar_ma_long : na, color = mar_ma_long < mar_ma_short ? color.green : color.red, linewidth = 4)
plot(disp_mode.mar_t ? mar_ma_short : na, color = mar_ma_long < mar_ma_short ? color.green : color.red, linewidth = 2)
barcolor(color_bars ? (disp_mode.mar_t ? (mar_ma_long < mar_ma_short ? color.green : color.red) : na) : na)
MAR Momentum:
Plots the momentum of the MAR, coloring the bars to indicate increasing or decreasing momentum.
// MAR Momentum
mar_mom = mar - mar
// MAR Momentum
mom_col = mar_mom > 0 ? (mar_mom > mar_mom ? color.new(color.green,0): color.new(color.green,30)) : (mar_mom < mar_mom ? color.new(color.red,0): color.new(color.red,30))
plot(disp_mode.mar_m ? mar_mom : na, color = mom_col, histbase = 0, style = plot.style_columns)
MAR Rate of Change (ROC):
Plots the ROC of the MAR, using color changes to show the direction and strength of the rate of change.
// MAR Rate of Change
mar_roc = ta.roc(mar,len_roc)
// MAR ROC
roc_col = mar_roc > 0 ? (mar_roc > mar_roc ? color.new(color.green,0): color.new(color.green,30)) : (mar_roc < mar_roc ? color.new(color.red,0): color.new(color.red,30))
plot(disp_mode.mar_r ? mar_roc : na, color = roc_col, histbase = 0, style = plot.style_columns)
Summary:
This multi-purpose indicator provides a comprehensive toolset for various trading strategies, including valuation, mean-reversion, and trend analysis. By offering multiple display modes and customizable settings, it allows users to tailor the indicator to their specific analytical needs and market conditions.
Non-Sinusoidal Multi-Layered Moving Average OscillatorThis indicator utilizes multiple moving averages (MAs) of different lengths their difference and its rate of change to provide a comprehensive view of both short-term and long-term market trends. The output signal is characterized by its non-sinusoidal nature, offering distinct advantages in trend analysis and market forecasting.
Combining the difference between two moving averages with the ROC allows to assess not only the direction and strength of the trend but also the momentum behind it. Transforming these signal in to non-sinusoidal output enhances its utility.
The indicator allows traders to select any one or more of seven moving average options. Larger timeframes (e.g., MA89/MA144) provide a broader identification of the overall trend, helping to understand the general market direction. Smaller timeframes (e.g., MA5/MA8) are more sensitive to price changes and can indicate better entry and exit points, aiding in the identification of retracements and pullbacks. By combining multiple timeframes, traders can get a comprehensive view of the market, enabling more precise and informed trading decisions.
Key Features:
Multiple Moving Averages:
The indicator calculates several exponential moving averages (EMAs) based on different lengths: MA5, MA8, MA13, MA21, MA34, MA55, MA89, and MA144.
These MAs are further smoothed using a secondary exponential moving average, with the smoothing length customizable by the user.
Percentage Differences:
The indicator computes the percentage differences between successive MAs (e.g., (MA5 - MA8) / MA8 * 100). These differences highlight the relative movement of prices over different periods, providing insights into market momentum and trend strength.
Short-term MA differences (e.g., MA5/MA8) are more sensitive to recent price changes, making them useful for detecting quick market movements.
Long-term MA differences (e.g., MA89/MA144) smooth out short-term fluctuations, helping to identify major trends.
Rate of Change (ROC):
The indicator applies the Rate of Change (ROC) to the percentage differences of the MAs. ROC measures the speed at which the percentage differences are changing over time, providing an additional layer of trend analysis.
ROC helps in understanding the acceleration or deceleration of market trends, indicating the strength and potential reversals.
Transformations:
The percentage differences undergo a series of mathematical transformations (either inverse hyperbolic sine transformation or inverse fisher transformation) to refine the signal and enhance its interpretability. These transformations include adjustments to stabilize the values and highlight significant movements.
checkbox allows users to select which mathematical transformations to use.
Non-Sinusoidal Nature:
The output signal of this indicator is non-sinusoidal, characterized by abrupt changes and distinct patterns rather than smooth, wave-like oscillations.
The non-sinusoidal signal provides clearer demarcations of trend changes and is more responsive to sudden market shifts.
This nature reduces the lag typically associated with sinusoidal indicators, allowing for more timely and accurate trading decisions.
Customizable Options:
Users can select which MA pairs to include in the analysis using checkboxes. This flexibility allows the indicator to adapt to different trading strategies, whether focused on short-term movements or long-term trends.
Visual Representation:
The indicator plots the transformed values on a separate panel, making it easy for traders to visualize the trends and potential entry or exit points.
Usage Scenarios:
Short-Term Trading: By focusing on shorter MAs (e.g., MA5/MA8), traders can capture quick market movements and identify short-term trends.
Long-Term Analysis: Utilizing longer MAs (e.g., MA89/MA144) helps in identifying major market trends.
Combination of MAs: The ability to mix different MA lengths provides a balanced view, helping traders make decisions based on both immediate price actions and overall market direction.
Practical Benefits:
Early Signal Detection: The sensitivity of short-term MAs provides early signals for potential trend changes, assisting traders in timely decision-making.
Trend Confirmation: Long-term MAs offer stable trend confirmation, reducing the likelihood of false signals in volatile markets.
Noise Reduction: The mathematical transformations and ROC applied to the percentage differences help in filtering out market noise, focusing on meaningful price movements.
Improved Responsiveness: The non-sinusoidal nature of the signal allows the indicator to react more quickly to market changes, providing more accurate and timely trading signals.
Clearer Trend Demarcations: Non-sinusoidal signals make it easier to identify distinct phases of market trends, aiding in better interpretation and decision-making.
Trend, Momentum, Volume Delta Ratings Emoji RatingsThis indicator provides a visual summary of three key market conditions - Trend, Momentum, and Volume Delta - to help traders quickly assess the current state of the market. The goal is to offer a concise, at-a-glance view of these important technical factors.
Trend (HMA): The indicator uses a Hull Moving Average (HMA) to assess the overall trend direction. If the current price is above the HMA, the trend is considered "Good" or bullish (represented by a 😀 emoji). If the price is below the HMA, the trend is "Bad" or bearish (🤮). If the price is equal to the HMA, the trend is considered "Neutral" (😐).
Momentum (ROC): The Rate of Change (ROC) is used to measure the momentum of the market. A positive ROC indicates "Good" or bullish momentum (😀), a negative ROC indicates "Bad" or bearish momentum (🤮), and a zero ROC is considered "Neutral" (😐).
Volume Delta: The indicator calculates the difference between the current trading volume and a simple moving average of the volume (Volume Delta). If the Volume Delta is above a user-defined threshold, it is considered "Good" or bullish (😀). If the Volume Delta is below the negative of the threshold, it is "Bad" or bearish (🤮). Values within the threshold are considered "Neutral" (😐).
The indicator displays these three ratings in a compact table format in the top-right corner of the chart. The table uses color-coding to quickly convey the overall market conditions - green for "Good", red for "Bad", and gray for "Neutral".
This indicator can be useful for traders who want a concise, at-a-glance view of the current market trend, momentum, and volume activity. By combining these three technical factors, traders can get a more well-rounded understanding of the market conditions and potentially identify opportunities or areas of concern more easily.
The user can customize the indicator by adjusting the lengths of the HMA, ROC, and Volume moving average, as well as the Volume Delta threshold. The colors used in the table can also be customized to suit the trader's preferences.
VIX Dashboard [NariCapitalTrading]Overview
This VIX Dashboard is designed to provide traders with a quick visual reference into the current volatility and trend direction of the market as measured by CBOE VIX. It uses statistical measures and indicators including Rate of Change (ROC), Average True Range (ATR), and simple moving averages (SMA) to analyze the VIX.
Components
ATR Period : The ATR Period is used to calculate the Average True Range. The default period set is 24.
Trend Period : This period is used for the Simple Moving Average (SMA) to determine the trend direction. The default is set to 48.
Speed Up/Down Thresholds : These thresholds are used to determine significant increases or decreases in the VIX’s rate of change, signaling potential market volatility spikes or drops. These are customizable in the input section.
VIX Data : The script fetches the closing price of the VIX from a specified source (CBOE:VIX) with a 60-minute interval.
Rate of Change (ROC) : The ROC measures the percentage change in price from one period to the next. The script uses a default period of 20. The period can be customized in the input section.
VIX ATR : This is the Average True Range of the VIX, indicating the daily volatility level.
Trend Direction : Determined by comparing the VIX data with its SMA, indicating if the trend is up, down, or neutral. The trend direction can be customized in the input section.
Dashboard Display : The script creates a table on the chart that dynamically updates with the VIX ROC, ATR, trend direction, and speed.
Calculations
VIX ROC : Calculated as * 100
VIX ATR : ATR is calculated using the 'atrPeriod' and is a measure of volatility.
Trend Direction : Compared against the SMA over 'trendPeriod'.
Trader Interpretation
High ROC Value : Indicates increasing volatility, which could signal a market turn or increased uncertainty.
High ATR Value : Suggests high volatility, often seen in turbulent market conditions.
Trend Direction : Helps in understanding the overall market sentiment and trend.
Speed Indicators : “Mooning” suggests rapid increase in volatility, whereas “Cratering” indicates a rapid decrease.
The interpretation of these indicators should be combined with other market analysis tools for best results.
Golden Transform The Golden Transform Oscillator contains multiple technical indicators and conditions for making buy and sell decisions. Here's a breakdown of its components and what it's trying to achieve:
Strategy Setup:
The GT is designed to be plotted on the chart without overlaying other indicators.
Rate of Change (ROC) Calculation:
The Rate of Change (ROC) indicator is calculated with a specified period ("Rate of Change Length").
The ROC measures the percentage change in price over the specified period.
Hull Modified TRIX Calculation:
The Hull Modified TRIX indicator is calculated with a specified period ("Hull TRIX Length").
The Hull MA (Moving Average) formula, a modified WMA, is used to calculate a modified TRIX indicator, which is a momentum oscillator.
Hull MA Calculation:
A Hull Moving Average (Hull MA) is calculated as an entry filter.
Fisher Transform Calculation:
The Fisher Transform indicator is calculated to serve as a preemptive exit filter.
It involves mathematical transformations of price data to create an oscillator that can help identify potential reversals. The Fisher Transform is further smoothed using a Hull Moving Average (HMA).
Conditions and Signals:
Long conditions are determined based on crossovers between ROC and TRIX, as well as price relative the the MA. Short conditions are inversed.
Exit Conditions:
Exit conditions are defined for both long and short positions.
For long positions, the strategy exits if ROC crosses under TRIX, or if the smoothed Fisher Transform crosses above a threshold and declines. Once again, short conditions are the inverse.
Visualization and Plotting:
The script uses background colors for entry and shapes for exits to highlight different levels and conditions for the ROC/TRIX correlation.
It plots the Fisher Transform values and a lag trigger on the chart.
Overall, this script is a complex algorithm that combines multiple technical indicators and conditions to generate trading signals and manage positions in the financial markets. It aims to identify potential entry and exit points based on the interplay of the mentioned indicators and conditions.
Trend Surge with Pullback FilterTrend Surge with Pullback Filter
Overview
Trend Surge with Pullback Filter is a price action-based strategy designed to enter strong trends not at the breakout, but at the first controlled pullback after a surge. It filters out noise by requiring momentum confirmation and low volatility conditions, aiming for better entry prices and reduced risk exposure.
How It Works
A strong upward trend is identified when the Rate of Change (ROC) exceeds a defined percentage (e.g., 2%).
Instead of jumping into the trend immediately, the strategy waits for a pullback: the price must drop at least 1% below its recent high (over the past 3 candles).
A low volatility environment is also required for entry — measured using ATR being below its 20-period average multiplied by a safety factor.
If all three conditions are met (trend + pullback + quiet volatility), the system enters a long position.
The trade is managed using a dynamic ATR-based stop-loss and a take-profit at 2x ATR.
An automatic exit occurs after 30 bars if neither SL nor TP is hit.
Key Features
- Momentum-triggered trend detection via ROC
- Smart pullback filter avoids overbought entries
- Volatility-based filter to eliminate noise and choppy conditions
- Dynamic risk-reward ratio with ATR-driven exit logic
- Time-limited exposure using bar-based exit
Parameter Explanation
ROC Length (10): Looks for short-term price surges
ROC Threshold (2.0%): Trend is considered valid if price increased more than 2%
Pullback Lookback (3): Checks last 3 candles for price retracement
Minimum Pullback % (1.0%): Entry only if price pulled back at least 1%
ATR Length (14): Measures current volatility
Low Volatility Multiplier (1.2): ATR must be below this multiple of its 20-period average
Risk-Reward (2.0): Target is set at 2x the stop-loss distance
Max Bars (30): Trade is closed automatically after 30 bars
Originality Statement
This strategy doesn’t enter at the trend start, unlike many momentum bots. Instead, it waits for the first market hesitation — a minor pullback under low volatility — before entering. This logic mimics how real traders often wait for a better entry after a breakout, avoiding emotional overbought buys. The combined use of ROC, dynamic pullback detection, and ATR-based environment filters makes it both practical and original for real-world trading.
Disclaimer
This strategy is intended for educational and research purposes. Backtest thoroughly and understand the logic before using with real capital.
Trend Analysis with Volatility and MomentumVolatility and Momentum Trend Analyzer
The Volatility and Momentum Trend Analyzer is a multi-faceted TradingView indicator designed to provide a comprehensive analysis of market trends, volatility, and momentum. It incorporates key features to identify trend direction (uptrend, downtrend, or sideways), visualize weekly support and resistance levels, and offer a detailed assessment of market strength and activity. Below is a breakdown of its functionality:
1. Input Parameters
The indicator provides customizable settings for precision and adaptability:
Volatility Lookback Period: Configurable period (default: 14) for calculating Average True Range (ATR), which measures market volatility.
Momentum Lookback Period: Configurable period (default: 14) for calculating the Rate of Change (ROC), which measures the speed and strength of price movements.
Support/Resistance Lookback Period: Configurable period (default: 7 weeks) to determine critical support and resistance levels based on weekly high and low prices.
2. Volatility Analysis (ATR)
The Average True Range (ATR) is calculated to quantify the market's volatility:
What It Does: ATR measures the average range of price movement over the specified lookback period.
Visualization: Plotted as a purple line in a separate panel below the price chart, with values amplified (multiplied by 10) for better visibility.
3. Momentum Analysis (ROC)
The Rate of Change (ROC) evaluates the momentum of price movements:
What It Does: ROC calculates the percentage change in closing prices over the specified lookback period, indicating the strength and direction of market moves.
Visualization: Plotted as a yellow line in a separate panel below the price chart, with values amplified (multiplied by 10) for better visibility.
4. Trend Detection
The indicator identifies the current market trend based on momentum and the position of the price relative to its moving average:
Uptrend: Occurs when momentum is positive, and the closing price is above the simple moving average (SMA) of the specified lookback period.
Downtrend: Occurs when momentum is negative, and the closing price is below the SMA.
Sideways Trend: Occurs when neither of the above conditions is met.
Visualization: The background of the price chart changes color to reflect the detected trend:
Green: Uptrend.
Red: Downtrend.
Gray: Sideways trend.
5. Weekly Support and Resistance
Critical levels are calculated based on weekly high and low prices:
Support: The lowest price observed over the last specified number of weeks.
Resistance: The highest price observed over the last specified number of weeks.
Visualization:
Blue Line: Indicates the support level.
Orange Line: Indicates the resistance level.
Both lines are displayed on the main price chart, dynamically updating as new data becomes available.
6. Alerts
The indicator provides configurable alerts for trend changes, helping traders stay informed without constant monitoring:
Uptrend Alert: Notifies when the market enters an uptrend.
Downtrend Alert: Notifies when the market enters a downtrend.
Sideways Alert: Notifies when the market moves sideways.
7. Key Use Cases
Trend Following: Identify and follow the dominant trend to capitalize on sustained price movements.
Volatility Assessment: Measure market activity to determine potential breakouts or quiet consolidation phases.
Support and Resistance: Highlight key levels where price is likely to react, assisting in decision-making for entries, exits, or stop-loss placement.
Momentum Tracking: Gauge the strength and speed of price moves to validate trends or anticipate reversals.
8. Visualization Summary
Main Chart:
Background color-coded for trend direction (green, red, gray).
Blue and orange lines for weekly support and resistance.
Lower Panels:
Purple line for volatility (ATR).
Yellow line for momentum (ROC).
Percentile Momentum IndicatorInput Parameters:
lengthPercentile: Defines the period used to calculate the percentile values (default: 30).
lengthMomentum: Defines the period for calculating the Rate of Change (ROC) momentum (default: 10).
Core Logic:
Rate of Change (ROC): The script calculates the ROC of the closing price over the specified period (lengthMomentum).
Percentile Calculations: The script calculates two key percentiles:
percentile_upper (80th percentile of the high prices)
percentile_lower (20th percentile of the low prices)
Percentile Average: An average of the upper and lower percentiles is calculated (avg_percentile).
Trade Signals:
Buy Signal: Triggered when the ROC is positive, the close is above the percentile_lower, and the close is above the avg_percentile.
Sell Signal: Triggered when the ROC is negative, the close is below the percentile_upper, and the close is below the avg_percentile.
Trade State Management:
The script uses a binary state: 1 for long (buy) and -1 for short (sell).
The trade state is updated based on buy or sell signals.
Bar Coloring:
Bars are colored dynamically based on the trade state:
Green for long (buy signal).
Red for short (sell signal).
The same color is applied to the percentile and average percentile lines for visual consistency.
Momentum Memory Indicator
The Momentum Memory Indicator (MMI) is a custom tool designed to predict future price movements based on the historical momentum of an asset. By calculating the Rate of Change (ROC) and then averaging it over a specified "memory" period, the MMI provides a prediction that reflects both recent and slightly older momentum data. The prediction is visualized as a histogram, with colors indicating the direction of the momentum.
**Parameters:**
1. **Rate of Change Period (ROC Period):** This parameter sets the period for the Rate of Change calculation, which measures the momentum of the asset. The default value is 14.
2. **Memory Period:** This parameter determines the period over which the average momentum is calculated. By considering momentum over this "memory" period, the indicator aims to provide a more stable and reliable prediction. The default value is 5.
**Logic:**
1. **Rate of Change (Momentum):** The ROC is calculated based on the asset's closing prices over the specified ROC period. It provides a measure of how much the price has changed over that period, indicating momentum.
2. **Average Momentum:** The average momentum is calculated by taking a simple moving average (SMA) of the ROC values over the memory period. This smoothens out the momentum data and provides a more stable value for prediction.
3. **Prediction:** The prediction is calculated by adjusting the current closing price based on the average momentum. This gives an estimate of where the price might be in the next period, assuming the momentum continues.
4. **Prediction Color:** The color of the prediction histogram is determined by the direction of the average momentum. A positive momentum results in a green histogram, while a negative momentum results in a red histogram.
**Plots:**
1. **Prediction (Histogram):** Represents the predicted price movement based on the average momentum. The direction and magnitude of the histogram bars provide insights into the expected price change. The color of the bars (green or red) indicates the direction of the momentum.
D-BoT Alpha ReversalsHello traders, today I'm going to share with you a strategy that I use very frequently. I wanted to share this strategy that I use in my manual trades by translating it into code. I'm sharing it with you with completely open source code.
RSI of ROC: The indicator initially calculates RSI (Relative Strength Index) on ROC (Rate of Change). This is a method that tracks the rate of price change (ROC) over a certain period and applies it to the RSI calculation.
Adaptive RSI: The code then calculates the RSI for all periods between the minimum and maximum RSI lengths. It takes the average of these calculations and names it as avg_rsi66. In addition, it checks whether each RSI value exceeds the determined overbought and oversold limits.
Signal Triggers: If both RSI of ROC and avg_rsi66 are above or below the specified overbought or oversold levels and the difference between these two values is less than the specified threshold value (Extremities Sensitivity), a signal is triggered. In addition, the color of the bar is also checked: An overbought (sell) signal is triggered for a red bar and an oversold (buy) signal is triggered for a green bar.
Signal Visualization: Signals are shown on the chart at appropriate places with "Sell" or "Buy" shapes. Also, each of these conditions is defined as an alert condition.
The general purpose of this indicator is to determine the turning points of the market. Overbought and oversold signals are based on the idea that the price may turn from these areas. That is, a "Sell" signal indicates a turning point where the price may start to fall, while a "Buy" signal indicates a turning point where the price may start to rise.
These types of indicators usually have some weak points:
False Signals: Like any kind of technical analysis indicator, this indicator can also give false signals. That is, you may get a "Buy" or "Sell" signal but the price may not move in the expected direction.
Market Conditions: This indicator may perform better under certain market conditions. For example, a trend-following indicator usually works well in trending markets, but can be misleading in range-bound markets. This indicator too can perform better or worse in a particular market situation.
Parameter Selection: The choice of the parameters of the indicator (ROC and RSI lengths, overbought/oversold levels, etc.) can significantly affect the quality of the indicator signals. Parameters should be optimized for various assets and time frames.
In conclusion, it would be better to use this indicator not as a standalone trading system, but in conjunction with other technical analysis tools or fundamental analysis. Also, it is always beneficial to test a new trading strategy on past data or on a demo account before trading with real money."
Stay tuned for more of my original strategies :)
Happy trading...
Fundamental Value and Dividend Growth InvestingThis script is an original implementation of a Fundamental Value and Dividend Growth Investing Strategy for traders who want to incorporate these concepts in their trading decisions. The script uses technical indicators to determine buy and sell signals based on a set of criteria.
To use the script, traders can input various parameters, such as the length of the simple moving averages (SMA), the rate of change (ROC) length, and the dividend yield. The script calculates the SMA for the long and short periods, the ROC, and the dividend.
The buy signal is triggered when the current closing price is greater than the short-term SMA, the short-term SMA crosses above the long-term SMA, the ROC is positive, and the closing price is greater than the dividend. The sell signal is triggered when the current closing price is less than the long-term SMA, the long-term SMA crosses above the short-term SMA, and the ROC is negative.
The script plots the signals and the indicators, such as the SMA200, the SMS50, the dividend, and the ROC. The script also includes alert conditions for the buy and sell signals.
The concept underlying the calculations of this script is the Fundamental Value and Dividend Growth Investing Strategy. This strategy aims to identify stocks that are trading below their intrinsic value and have a history of increasing dividends. The SMA and ROC indicators help identify the trends in the stock price, while the dividend yield helps identify stocks with a history of dividend growth.
Overall, this script offers traders an original and useful tool for incorporating Fundamental Value and Dividend Growth Investing Strategy into their trading decisions.
KST con HMA---------- ENGLISH DESCRIPTION ----------
The indicator created is called "KST with HMA" and is used to measure the impulse of an asset's price.
The code begins by defining four variables representing ROC (Rate of Change) period lengths for calculating the KST (Know Sure Thing) and a variable for the length of the HMA (Hull Moving Average).
Next, an HMA function is defined to calculate the Hull Moving Average, a type of weighted moving average that adjusts for price volatility.
ROC values are then calculated for the four periods defined above and KST values are calculated as a weighted sum of the ROC values. These values are then normalized with the HMA and the standard deviation of the HMA is calculated. The normalized value is finally plotted with three different color lines: black for values greater than 1, red for values less than -1, and green for values between -1 and 1.
Finally, a black dashed line is plotted to represent the zero line. The green line indicates a phase of market uncertainty or lateralization, while the indicator can be used to identify buy points above zero and sell points below zero.
---------- ITALIAN DESCRIPTION ----------
L'indicatore creato è chiamato "KST con HMA" e viene utilizzato per misurare l'impulso del prezzo di un asset.
Il codice inizia definendo quattro variabili che rappresentano le lunghezze dei periodi di ROC (Rate of Change) per il calcolo del KST (Know Sure Thing) e una variabile per la lunghezza dell'HMA (Hull Moving Average).
Successivamente viene definita una funzione HMA per il calcolo della Hull Moving Average, un tipo di media mobile ponderata che si adatta alla volatilità del prezzo.
Vengono poi calcolati i valori ROC per i quattro periodi definiti in precedenza e calcolati i valori KST come somma ponderata dei valori ROC. Questi valori vengono poi normalizzati con l'HMA e viene calcolata la deviazione standard dell'HMA. Il valore normalizzato viene infine plottato con tre diverse linee di colore: nero per valori superiori a 1, rosso per valori inferiori a -1 e verde per valori tra -1 e 1.
Infine, viene plottata una linea tratteggiata nera per rappresentare la linea zero. La linea verde indica una fase di incertezza o lateralizzazione del mercato, mentre l'indicatore può essere utilizzato per individuare punti di acquisto sopra lo zero e di vendita al di sotto dello zero.
Jdawg Sentiment Momentum Oscillator EnhancedThe Jdawg Sentiment Momentum Oscillator Enhanced (JSMO_E) is a versatile technical analysis indicator designed to provide traders with insights into potential trend changes and overbought or oversold market conditions. JSMO_E combines the principles of the Relative Strength Index (RSI), the Simple Moving Average (SMA), and the Rate of Change (ROC) to create a comprehensive tool for assessing market sentiment and momentum.
The uniqueness of JSMO_E lies in its ability to integrate the RSI, SMA of RSI, and ROC of RSI, while also allowing users to customize the weight of the ROC component. This combination of features is not commonly found in other indicators, which increases its distinctiveness.
To effectively use JSMO_E, follow these steps:
Apply the JSMO_E indicator to the price chart of the asset you are analyzing.
Observe the plotted JSMO_E line in relation to the zero line, overbought, and oversold levels.
When the JSMO_E line crosses above the zero line, it may signal the beginning of an uptrend or bullish momentum. Conversely, when the JSMO_E line crosses below the zero line, it may indicate the start of a downtrend or bearish momentum.
Overbought and oversold levels, marked by the red and green dashed lines, respectively, can serve as a warning that a trend reversal may be imminent. When the JSMO_E line reaches or surpasses the overbought level, it might indicate that the asset is overvalued and could experience a price decline. Conversely, when the JSMO_E line reaches or goes below the oversold level, it can signal that the asset is undervalued and may experience a price increase.
Adjust the input parameters (RSI Period, SMA Period, ROC Period, and ROC Weight) as needed to optimize the indicator for the specific market and time frame you are analyzing.
The JSMO_E indicator is suitable for various markets, including stocks, forex, commodities, and cryptocurrencies. However, its effectiveness may vary depending on the market conditions and time frames used. It is recommended to use JSMO_E in conjunction with other technical analysis tools and methods to confirm potential trade setups and improve overall trading performance. Always conduct thorough backtesting and forward-testing before employing any indicator in a live trading environment.
Momentum ScoreMomentum is the tendency of assets that have gone up in price to continue going up in price - and for assets that have gone down in price to continue going down in price. The reasons behind it are not well understood by academics, but momentum is a property that exists across geographies and asset classes.
The Momentum Score is a system that scores companies based on their one year total returns, excluding the last month of returns. In other words, a momentum score for today will be based on the total returns of a stock from 12 months ago today to one month ago today.
Our Momentum Score 13612W has the following composition:
MS 13612W = 12 * Roc(1) + 4 * Roc(3) + 2 * Roc(6) + 1 * Roc(12)
with ROC = (p0/pt) - 1, where pt equals price p with a t-month lag
Accumulated Rate of ChangeThis is a volatility indicator, inspired by ROC(Rate of change).
Shows three values:
- ROC, based on previous bar's price
- Accumulated ROC, shows price change rate since previous nth* bar. Both positive and negative price changes increases the rate.
- Accumulated Positive ROC, considers positive change rate only
- Accumulated Negative ROC, considers negative change rate only
* based on given number of bars in settings