Multi-Scale Adaptive MAs (Hurst, CVaR, Fractal) // AlgoFyreThe Multi-Scale Adaptive MAs (Hurst, CVaR, Fractal) indicator adjusts moving averages based on market conditions, using Hurst Exponent for trend persistence, CVaR for extreme risk assessment, and Fractal Dimension for market complexity. It enhances trend detection and risk management across various timeframes.
TABLE OF CONTENTS
🔶 ORIGINALITY 🔸Adaptive Mechanisms
🔸Multi-Faceted Analysis
🔸Versatility Across Timeframes
🔸Multi-Scale Combination
🔶 FUNCTIONALITY 🔸Hurst Exponent (H)
🞘 How it works
🞘 How to calculate
🞘 Code extract
🔸Conditional Value at Risk (CVaR)
🞘 How it works
🞘 How to calculate
🞘 Code extract
🔸Fractal Dimension (FD)
🞘 How it works
🞘 How to calculate
🞘 Code extract
🔶 INSTRUCTIONS 🔸Step-by-Step Guidelines
🞘 Setting Up the Indicator
🞘 Understanding What to Look For on the Chart
🞘 Possible Entry Signals
🞘 Possible Take Profit Strategies
🞘 Possible Stop-Loss Levels
🞘 Additional Tips
🔸Customize settings
🔶 CONCLUSION
▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅
🔶 ORIGINALITY The Multi-Scale Adaptive MAs (Hurst, CVaR, Fractal) indicator stands out due to its unique approach of dynamically adjusting moving averages based on advanced statistical measures, making it highly responsive to varying market conditions. Unlike traditional moving averages that rely on static periods, this indicator adapts in real-time using three distinct adaptive methods: Hurst Exponent, CVaR, and Fractal Dimension.
🔸Adaptive Mechanisms
Traditional MA indicators use fixed lengths, which can lead to lagging signals or over-sensitivity in volatile markets. The Multi-Scale Adaptive MAs employ adaptive methods to adjust the MA length dynamically, providing a more accurate reflection of current market conditions.
🔸Multi-Faceted Analysis
By integrating Hurst Exponent, CVaR, and Fractal Dimension, the indicator offers a comprehensive market analysis. It captures different aspects of market behavior, including trend persistence, risk of extreme movements, and complexity, which are often missed by standard MAs.
🔸Versatility Across Timeframes
The indicator’s ability to switch between different adaptive methods based on market conditions allows traders to analyze short-term, medium-term, and long-term trends with enhanced precision.
🔸Multi-Scale Combination
Utilizing multiple adaptive MAs in combination provides a more nuanced view of the market, allowing traders to see how short, medium, and long-term trends interact. This layered approach helps in identifying the strength and consistency of trends across different scales, offering more reliable signals and aiding in complex decision-making processes. When combined, these MAs can also signal key market shifts when they converge or diverge, offering deeper insights than a single MA could provide.
🔶 FUNCTIONALITY The indicator adjusts moving averages based on a variety of different choosable adaptives. The Hurst Exponent to identify trend persistence or mean reversion, adapting to market conditions for both short-term and long-term trends. Using CVaR, it evaluates the risk of extreme price movements, ensuring the moving average is more conservative during high-risk periods, protecting against potential large losses. By incorporating the Fractal Dimension, the indicator adapts to market complexity, adjusting to varying levels of price roughness and volatility, which allows it to respond more accurately to different market structures and patterns.
Let's dive into the details:
🔸Hurst Exponent (H)
Measures the degree of trend persistence or mean reversion.
By using the Hurst Exponent, the indicator adjusts to capture the strength and duration of trends, helping traders to stay in profitable trades longer and avoid false reversals in ranging markets.
It enhances the detection of trends, making it suitable for both short-term scalping and identifying long-term trends.
🞘 How it works Rescaled Range (R/S) Analysis Calculate the mean of the closing prices over a set window.
Determine the deviation of each price from the mean.
Compute the cumulative sum of these deviations over the window.
Calculate the range (R) of the cumulative deviations (maximum minus minimum).
Compute the standard deviation (S) of the price series over the window.
Obtain the R/S ratio as R/S.
Linear Regression for Hurst Exponent Calculate the logarithm of multiple window sizes and their corresponding R/S values.
Use linear regression to determine the slope of the line fitting the log(R/S) against log(window size).
The slope of this line is an estimate of the Hurst Exponent.
🞘 How to calculate Range (R)
Calculate the maximum cumulative deviation:
R=max(sum(deviation))−min(sum(deviation))
Where deviation is the difference between each price and the mean.
Standard Deviation (S)
Calculate the standard deviation of the price series:
S=sqrt((1/(n−1))∗sum((Xi−mean)2))
Rescaled Range (R/S)
Divide the range by the standard deviation:
R/S=R/S
Hurst Exponent
Perform linear regression to estimate the slope of:
log(R/S) versus log(windowsize)
The slope of this line is the Hurst Exponent.
🞘 Code extract // Hurst Exponent
calc_hurst(source_, adaptive_window_) =>
window_sizes = array.from(adaptive_window_/10, adaptive_window_/5, adaptive_window_/2, adaptive_window_)
float hurst_exp = 0.5
// Calculate Hurst Exponent proxy
rs_list = array.new_float()
log_length_list = array.new_float()
for i = 0 to array.size(window_sizes) - 1
len = array.get(window_sizes, i)
// Ensure we have enough data
if bar_index >= len * 2
mean = adaptive_sma(source_, len)
dev = source_ - mean
// Calculate cumulative deviations over the window
cum_dev = ta.cum(dev) - ta.cum(dev )
r = ta.highest(cum_dev, len) - ta.lowest(cum_dev, len)
s = ta.stdev(source_, len)
if s != 0
rs = r / s
array.push(rs_list, math.log(rs))
array.push(log_length_list, math.log(len))
// Linear regression to estimate Hurst Exponent
n = array.size(log_length_list)
if n > 1
mean_x = array.sum(log_length_list) / n
mean_y = array.sum(rs_list) / n
sum_num = 0.0
sum_den = 0.0
for i = 0 to n - 1
x = array.get(log_length_list, i)
y = array.get(rs_list, i)
sum_num += (x - mean_x) * (y - mean_y)
sum_den += (x - mean_x) * (x - mean_x)
hurst_exp := sum_den != 0 ? sum_num / sum_den : 0.5
else
hurst_exp := 0.5 // Default to 0.5 if not enough data
hurst_exp
🔸Conditional Value at Risk (CVaR)
Assesses the risk of extreme losses by focusing on tail risk.
This method adjusts the moving average to account for market conditions where extreme price movements are likely, providing a more conservative approach during periods of high risk.
Traders benefit by better managing risk and avoiding major losses during volatile market conditions.
🞘 How it works Calculate Returns Determine the returns as the percentage change between consecutive closing prices over a specified window.
Percentile Calculation Identify the percentile threshold (e.g., the 5th percentile) for the worst returns in the dataset.
Average of Extreme Losses Calculate the average of all returns that are less than or equal to this percentile, representing the CVaR.
🞘 How to calculate Return Calculation
Calculate the return as the percentage change between consecutive prices:
Return = (Pt − Pt−1) / Pt−1
Where Pt is the price at time t.
Percentile Threshold
Identify the return value at the specified percentile (e.g., 5th percentile):
PercentileValue=percentile(returns,percentile_threshold)
CVaR Calculation
Compute the average of all returns below the percentile threshold:
CVaR = (1/n)∗sum(Return) for all Return≤PercentileValue
Where n is the total number of returns.
🞘 Code extract // Percentile
calc_percentile(data, percentile, window) =>
arr = array.new_float(0)
for i = 0 to window - 1
array.push(arr, data )
array.sort(arr)
index = math.floor(percentile / 100 * (window - 1))
array.get(arr, index)
// Conditional Value at Risk
calc_cvar(percentile_value, returns, window) =>
// Collect returns worse than the threshold
cvar_sum = 0.0
cvar_count = 0
for i = 0 to window - 1
ret = returns
if ret <= percentile_value
cvar_sum += ret
cvar_count += 1
// Calculate CVaR
cvar = cvar_count > 0 ? cvar_sum / cvar_count : 0.0
cvar
🔸Fractal Dimension (FD)
Evaluates market complexity and roughness by analyzing how price movements behave across different scales.
It enables the moving average to adapt based on the level of market noise or structure, allowing for smoother MAs during complex, volatile periods and more sensitive MAs during clear trends.
This adaptability is crucial for traders dealing with varying market states, improving the indicator's responsiveness to price changes.
🞘 How it works Total Distance (L) Calculation Sum the absolute price movements between consecutive periods over a given window.
Maximum Distance (D) Calculation Calculate the maximum displacement from the first to the last price point within the window.
Calculate Fractal Dimension Use Katz's method to estimate the Fractal Dimension as the ratio of the logarithms of L and D, divided by the logarithm of the number of steps (N).
🞘 How to calculate Total Distance (L)
Sum the absolute price changes over the window:
L=sum(abs(Pt−Pt−1)) for t from 2 to n
Where Pt is the price at time t.
Maximum Distance (D)
Find the maximum absolute displacement from the first to the last price in the window:
D=max(abs(Pn-P1))
Fractal Dimension Calculation
Use Katz's method to estimate fractal dimension:
FD=log(L/D)/log(N)
Where N is the number of steps in the window.
🞘 Code extract // Fractal Dimension
calc_fractal(source_, adaptive_window_) =>
// Calculate the total distance (L) traveled by the price
L = 0.0
for i = 1 to adaptive_window_
L += math.abs(source_ - source_ )
// Calculate the maximum distance between first and last price
D = math.max(math.abs(source_ - source_ ), 1e-10) // Avoid division by zero
// Calculate the number of steps (N)
N = adaptive_window_
// Estimate the Fractal Dimension using Katz's formula
math.log(L / D) / math.log(N)
🔶 INSTRUCTIONS The Multi-Scale Adaptive MAs indicator can be set up by adding it to your TradingView chart and configuring the adaptive method (Hurst, CVaR, or Fractal) to match current market conditions. Look for price crossovers and changes in the slope for potential entry signals. Set take profit and stop-loss levels based on dynamic changes in the moving average, and consider combining it with other indicators for confirmation. Adjust settings and use adaptive strategies for enhanced trend detection and risk management.
🔸Step-by-Step Guidelines 🞘 Setting Up the Indicator Adding the Indicator to the Chart: Go to your TradingView chart.
Click on the "Indicators" button at the top.
Search for "Multi-Scale Adaptive MAs (Hurst, CVaR, Fractal)" in the indicators list.
Click on the indicator to add it to your chart.
Configuring the Indicator: Open the indicator settings by clicking on the gear icon next to its name on the chart.
Adaptive Method: Choose between "Hurst," "CVaR," and "Fractal" depending on the market condition and your trading style.
Length: Set the base length for the moving average (e.g., 20, 50, or 100). This length will be adjusted dynamically based on the selected adaptive method.
Other Parameters: Adjust any other parameters as needed, such as window sizes or scaling factors specific to each adaptive method.
Chart Setup: Ensure you have an appropriate timeframe selected (e.g., 1-hour, 4-hour, daily) based on your trading strategy.
Consider using additional indicators like volume or RSI to confirm signals.
🞘 Understanding What to Look For on the Chart Indicator Behavior: Observe how the adaptive moving average (AMA) behaves compared to standard moving averages, e.g. notice how it might change direction with strength (Hurst).
For example, the AMA may become smoother during high market volatility (CVaR) or more responsive during strong trends (Hurst).
Crossovers: Look for crossovers between the price and the adaptive moving average.
A bullish crossover occurs when the price crosses above the AMA, suggesting a potential uptrend.
A bearish crossover occurs when the price crosses below the AMA, indicating a possible downtrend.
Slope and Direction: Pay attention to the slope of the AMA. A rising slope suggests a bullish trend, while a declining slope indicates a bearish trend.
The slope’s steepness can give you clues about the trend's strength.
🞘 Possible Entry Signals Bullish Entry: Crossover Entry: Enter a long position when the price crosses above the AMA and the AMA has a positive slope.
Confirmation Entry: Combine the crossover with other indicators like RSI (above 50) or increasing volume for confirmation.
Bearish Entry: Crossover Entry: Enter a short position when the price crosses below the AMA and the AMA has a negative slope.
Confirmation Entry: Use additional indicators like RSI (below 50) or decreasing volume to confirm the bearish trend.
Adaptive Method Confirmation: Hurst: Enter when the AMA indicates a strong trend (steeper slope). Suitable for trend-following strategies.
CVaR: Be cautious during high-risk periods. Enter only if confirmed by other indicators, as the AMA may become more conservative.
Fractal: Ideal for capturing reversals in complex markets. Look for crossovers in volatile markets.
🞘 Possible Take Profit Strategies Static Take Profit Levels: Set take profit levels based on predefined ratios (e.g., 1:2 or 1:3 risk-reward ratio).
Place take profit orders at recent swing highs (for long positions) or swing lows (for short positions).
Trailing Stop Loss: Use a trailing stop based on a percentage of the AMA value to lock in profits as the trend progresses.
Adjust the trailing stop dynamically to follow the AMA, allowing profits to run while protecting gains.
Adaptive Method Based Exits: Hurst: Exit when the AMA begins to flatten or turn in the opposite direction, signaling a potential trend reversal.
CVaR: Consider taking profits earlier during high-risk periods when the AMA suggests caution.
Fractal: Use the AMA to exit in complex markets when it smooths out, indicating reduced volatility.
🞘 Possible Stop-Loss Levels Initial Stop Loss: Place an initial stop loss below the AMA (for long positions) or above the AMA (for short positions) to protect against adverse movements.
Use a buffer (e.g., ATR value) to avoid being stopped out by normal price fluctuations.
Adaptive Stop Loss: Adjust the stop loss dynamically based on the AMA. Move the stop loss along the AMA as the trend progresses to minimize risk.
This helps in adapting to changing market conditions and avoiding premature exits.
Adaptive Method-Specific Stop Loss: Hurst: Use wider stops during trending markets to allow for minor pullbacks.
CVaR: Adjust stops in high-risk periods to avoid being stopped out prematurely during price fluctuations.
Fractal: Place stops at recent support/resistance levels in highly volatile markets.
🞘 Additional Tips Combine with Other Indicators: Enhance your strategy by combining the AMA with other technical indicators like MACD, RSI, or Bollinger Bands for better signal confirmation.
Backtesting and Practice: Backtest the indicator on historical data to understand how it performs in different market conditions.
Practice using the indicator on a demo account before applying it to live trading.
Market Awareness: Always be aware of market conditions and fundamental events that might impact price movements, as the AMA reacts to price action and may not account for sudden news-driven events.
🔸Customize settings 🞘 Time Override: Enables or disables the ability to override the default time frame for the moving averages. When enabled, you can specify a custom time frame for the calculations.
🞘 Time: Specifies the custom time frame to use when the Time Override setting is enabled.
🞘 Enable MA: Enables or disables the moving average. When disabled, MA will not be displayed on the chart.
🞘 Show Smoothing Line: Enables or disables the display of a smoothing line for the moving average. The smoothing line helps to reduce noise and provide a clearer trend.
🞘 Show as Horizontal Line: Displays the moving average as a horizontal line instead of a dynamic line that follows the price.
🞘 Source: Specifies the data source for the moving average calculation (e.g., close, open, high, low).
🞘 Length: Sets the period length for the moving average. A longer length will result in a smoother moving average, while a shorter length will make it more responsive to price changes.
🞘 Time: Specifies a custom time frame for the moving average, overriding the default time frame if Time Override is enabled.
🞘 Method: Selects the calculation method for the moving average (e.g., SMA, EMA, SMMA, WMA, VWMA).
🞘 Offset: Shifts the moving average forward or backward by the specified number of bars.
🞘 Color: Sets the color for the moving average line.
🞘 Adaptive Method: Selects the adaptive method to dynamically adjust the moving average based on market conditions (e.g., Hurst, CVaR, Fractal).
🞘 Window Size: Sets the window size for the adaptive method, determining how much historical data is used for the calculation.
🞘 CVaR Scaling Factor: Adjusts the influence of CVaR on the moving average length, controlling how much the length changes based on calculated risk.
🞘 CVaR Risk: Specifies the percentile cutoff for the worst-case returns used in the CVaR calculation to assess extreme losses.
🞘 Smoothing Method: Selects the method for smoothing the moving average (e.g., SMA, EMA, SMMA, WMA, VWMA).
🞘 Smoothing Length: Sets the period length for smoothing the moving average.
🞘 Fill Color to Smoothing Moving Average: Enables or disables the color fill between the moving average and its smoothing line.
🞘 Transparency: Sets the transparency level for the color fill between the moving average and its smoothing line.
🞘 Show Label: Enables or disables the display of a label for the moving average on the chart.
🞘 Show Label for Smoothing: Enables or disables the display of a label for the smoothing line of the moving average on the chart.
🔶 CONCLUSION The Multi-Scale Adaptive MAs indicator offers a sophisticated approach to trend analysis and risk management by dynamically adjusting moving averages based on Hurst Exponent, CVaR, and Fractal Dimension. This adaptability allows traders to respond more effectively to varying market conditions, capturing trends and managing risks with greater precision. By incorporating advanced statistical measures, the indicator goes beyond traditional moving averages, providing a nuanced and versatile tool for both short-term and long-term trading strategies. Its unique ability to reflect market complexity and extreme risks makes it an invaluable asset for traders seeking a deeper understanding of market dynamics.
Moving_averages
MTF MAs and Crosses Nexus [DarkWaveAlgo]🧾 Description:
A nexus is a connection, link, or neuronal junction where signals and information are transmitted between different elements.
The MTF MAs and Crosses Nexus indicator serves as a nexus between MTF Moving Averages by facilitating the visualization and interaction of up to eight multi-timeframe moving averages, each with its own customizable timeframe, period, cross-over and cross-under alerts and plot markers, moving average calculation type, and price source.
It acts as a utility/control center that brings together multiple MTF moving averages (MTF MAs) and allows you to visualize the interactions between them with exceptional ease-of-use and customizability, helping to provide you with valuable insights into potential trend reversals, momentum shifts, and trading opportunities.
💡 Originality and Usefulness:
While there are other multi-timeframe moving average indicators available, MTF MAs and Crosses Nexus' customizable alert and signal settings offer intra-indicator MTF moving average cross markers and alerts not seen in other MTF MA indicators, allowing you to visualize the cross-over and cross-under relationships between the indicator's MAs with an 'all-in-one' experience. We also believe it stands above the rest with its sheer quantity and quality of settings, features, and usability.
✔️ Re-Published to Avoid Misleading Values
This script has been re-published to ensure that it does not use `request.security()` calls using lookahead_on to access future data when referencing moving averages from other timeframes. This decreases the likelihood that the indicator will provide deceiving values. This change has been made in accordance with the PineScript documentation: "Using barmerge.lookahead_on at timeframes higher than the chart's without offsetting the `expression` argument like in `close ` will introduce future leak in scripts, as the function will then return the `close` price before it is actually known in the current context" and the Publishing Rule: "Do not use `request.security()` calls using lookahead to access future data".
💠 Features:
8 toggleable MTF Moving Averages with customizable timeframes, periods, moving average calculation types, and price sources
Customizable cross-over and cross-under alert and chart signal options for each MTF MA (toggleable cross alerts and signals for crosses between intra-indicator MAs and bar price values)
Aesthetic and flexible coloring and color theme styling options
End-of chart labels and options for ease-of-use and legibility
⚙️ Settings:
Use a Color Theme: When this setting is enabled, all manual 'Bullish and Bearish Colors' are overridden. All plots will use the colors from your selected Color Theme - excepting those plots set to use the 'Single Color' coloring method.
Color Theme: When 'Use a Color Theme' is enabled, this setting allows you to select the color theme you wish to use.
Hide MAs on Timeframes Lower Than the Chart: When this setting is enabled, any MTF MA with a timeframe smaller than that of the chart the indicator is applied to will be hidden from view.
Enable: Show/hide a specific MTF MA.
Timeframe: Set the timeframe for a specific MTF MA.
Period: Set the lookback period for a specific MTF MA.
Type: Set the calculation type for a specific MTF MA. Options include: Exponential, Simple, Weighted, Volume-Weighted, and Hull.
Source Price: Set the source value used for a specific MTF MA's calculation.
Enable Cross Over Signals & Alerts: When enabled, cross-over chart signals (markers) and alerts are enabled for when this specific MTF MA crosses above its respective 'Cross Over Cross Source'.
Enable Cross Under Signals & Alerts: When enabled, cross-under chart signals (markers) and alerts are enabled for when this specific MTF MA crosses below its respective 'Cross Under Cross Source'.
Cross Source: Set the target plot which this specific MTF MA must cross (for either a cross-over or cross-under event) to trigger a chart signal and alert.
Marker Position: Set the position where this specific MTF MA's cross chart signal should appear. Options include: Above Bar, Below Bar, and On MA Line.
Coloring Method: Set the coloring method for this specific MA. The coloring method defines how the MA should be dynamically colored. Options include: Single Color, Increasing/Decreasing, and Over/Under Price.
Bullish Color: When 'Use a Color Theme' is disabled, this will set the 'bullish color' for this specific MTF MA.
Bearish Color: When 'Use a Color Theme' is disabled, this will set the 'bearish color' for this specific MTF MA.
Single Color: When the 'Coloring Method' is set to Single Color for this specific MA, this color option will set the MA's color.
Enable Label: When enabled, a label will show at the end of the chart displaying the timeframe, period, MA type, and current price value of this specific MTF MA.
Size: Sets the font size of this specific MTF MA's label.
Label Offset (in Bars): Sets the distance from the latest bar, in bars, at which this specific MTF MA's label is displayed.
Show Label Line: When enabled, this specific MTF MA's label will be accommodated by a dashed line connecting it to its plot.
📈 Chart:
The chart shown in this original publication displays the 15 minute chart on BTCUSDT. Displayed on the chart are 4 MTF MAs: the 15m 20 WMA, 30m 100 EMA, 1h 11 EMA, and 1D 7 VWMA - offering an exemplary view of how you can use these MTF MAs and crosses to your advantage in gauging trend relationships across multiple timeframes.
Fetch ATR + MA StrategyA trend following indicator that allows traders/investors to enter trades for the long term, as it is mainly tested on the daily chart. The indicator fires off buy and sell signals. The sell signals can be turned off as trader can decide to use this indicator for long term buy signals. The buy signals are indicated by the green diamonds, and the red diamonds show the points on then chart where the asset can be sold.
The indicator uses a couple indicators in order to generate the buy signals:
- ADX
- ATR
- Moving Average of ATR
- 50 SMA
- 200 SMA
The buy signal is generated at the cross overs of the 50 and 200 SMA's while the ATR is lower than then Moving Average of the ATR. The buy signal is fired when these conditions are met and if the ADX is lower than 30.
The thought process is as follows:
When the ATR is lower than its moving average, the price should be in a low volatilty environment. An ADX between 25 and 50 signals a Strong trend. Every value below 25 is an absent or weak trend. So entering a trade when the volatilty is still low but increasing, you'll be entering a trade at the start of a new uptrend. This mechanism also filters out lots of false signals of the simple cross overs.
The sell signals are fired every time the 50 SMA drops below the 200 SMA.
Display Trade Volume with MA Angle and Price VelocityThis Pine Script indicator is designed to provide traders with a visual representation of trade volume, moving average (MA) angle, and price velocity on a chart. The primary components of this indicator are:
Trade Volume: The indicator compares the current bar's trade volume with the average volume over a user-defined lookback period. The volume is displayed as either "Low" or "Trade" in a table, with red or green background color, respectively, to indicate whether it's below or above the average volume.
MA Angle: The indicator calculates the angle of the moving average (either Simple, Exponential, or Hull) over a user-defined length. A positive angle is shown in green, while a negative angle is shown in red. The angle is displayed in degrees in the table.
Price Velocity: This component calculates the velocity of price movement by comparing the difference between high and low prices over a user-defined lookback period. It then displays the velocity as either "Slow" or "Fast" in the table, with red or green background color, respectively, depending on whether it's below or above the average difference.
The indicator also includes alert conditions for high and low volume situations, notifying the trader when the current bar's volume is significantly higher or lower than the average volume.
Smoothing R-Squared ComparisonIntroduction
Heyo guys, here I made a comparison between my favorised smoothing algorithms.
I chose the R-Squared value as rating factor to accomplish the comparison.
The indicator is non-repainting.
Description
In technical analysis, traders often use moving averages to smooth out the noise in price data and identify trends. While moving averages are a useful tool, they can also obscure important information about the underlying relationship between the price and the smoothed price.
One way to evaluate this relationship is by calculating the R-squared value, which represents the proportion of the variance in the price that can be explained by the smoothed price in a linear regression model.
This PineScript code implements a smoothing R-squared comparison indicator.
It provides a comparison of different smoothing techniques such as Kalman filter, T3, JMA, EMA, SMA, Super Smoother and some special combinations of them.
The Kalman filter is a mathematical algorithm that uses a series of measurements observed over time, containing statistical noise and other inaccuracies, and produces estimates of unknown variables that tend to be more accurate than those based on a single measurement.
The input parameters for the Kalman filter include the process noise covariance and the measurement noise covariance, which help to adjust the sensitivity of the filter to changes in the input data.
The T3 smoothing technique is a popular method used in technical analysis to remove noise from a signal.
The input parameters for the T3 smoothing method include the length of the window used for smoothing, the type of smoothing used (Normal or New), and the smoothing factor used to adjust the sensitivity to changes in the input data.
The JMA smoothing technique is another popular method used in technical analysis to remove noise from a signal.
The input parameters for the JMA smoothing method include the length of the window used for smoothing, the phase used to shift the input data before applying the smoothing algorithm, and the power used to adjust the sensitivity of the JMA to changes in the input data.
The EMA and SMA techniques are also popular methods used in technical analysis to remove noise from a signal.
The input parameters for the EMA and SMA techniques include the length of the window used for smoothing.
The indicator displays a comparison of the R-squared values for each smoothing technique, which provides an indication of how well the technique is fitting the data.
Higher R-squared values indicate a better fit. By adjusting the input parameters for each smoothing technique, the user can compare the effectiveness of different techniques in removing noise from the input data.
Usage
You can use it to find the best fitting smoothing method for the timeframe you usually use.
Just apply it on your preferred timeframe and look for the highlighted table cell.
Conclusion
It seems like the T3 works best on timeframes under 4H.
There's where I am active, so I will use this one more in the future.
Thank you for checking this out. Enjoy your day and leave me a like or comment. 🧙♂️
---
Credits to:
▪@loxx – T3
▪@balipour – Super Smoother
▪ChatGPT – Wrote 80 % of this article and helped with the research
L_Trade_BoundariesLibrary "L_Trade_Boundaries"
Trade Boundaries suggest a strength of the security with respect to previous lows. The "L" implies library, and the trade boundaries implies it could be utilized for price strengths. Though, this should not be used as a single parameter to trade wildly. This library can be imported to a custom indicator to utilized the custom functions. There are moving averages attached at the bottom right of the canvas (overlay) to benchmark the closing price with respect to Moving Averages: 20, 28, and 200 (i.e., "D" if timeframe == "D") respectively. The Volume Indicator located at the top of the canvas is a default function (function already made by the trading view) this shows the volume with respect to the selected time frame. All of the indicators tell a story with regard to the security price (in strength terms).
What is available in this Library?
Litmus Color
> This is a function will change color of two numbers, if the first number is less than the second, the color will be red; otherwise, the color will be green.
Lister
> This is simply using an array by revisiting previous lows and plotting to the current time frame (i.e., "D"). There is a custom frequency input for the function, it will go back as much as the implied/specified length. Note: I am still learning how to use array, use this function with discretion. I would also appreciate if there are suggestions commented below.
Moving Average
> This function invokes three moving average metrics: 20, 28, and 200 respectively. The values are displayed at the bottom right of the canvas.
Timeframe Highlight
> This function checks for the input timeframe (i.e., "D", "W", "M") and if the time frame happens to be the same, it will give a "true" result. This result can be utilized for highlighting the positive results on the canvas (the red lines).
litmus_color(value1, value2)
Parameters:
value1
value2
lister(length)
Parameters:
length
moving_averages()
timeframe_highlight(timeframe)
Parameters:
timeframe
Blocky's EMA RibbonA classic EMA ribbon setup.
The script uses eight EMAs, with default lengths ranging from 21 to 55 periods, with an additional EMA with a default length of 200 periods.
The lengths of the EMAs can be customized, when customizing, the shortest time frame should be first and the longest time frame last.
The ribbons gradient strength is calculated based on the EMA's sequence, and their separation.
The color and transparency are set based on the calculated strength. The bolder the color, the stronger the strength.
Use the opacity multiplier to increase/decrease the strength of the gradient. BITSTAMP:BTCUSD
Odd_Moving AveragesMulti Moving Average Analysis
A highly customizable indicator to help discover moving averages being used in the market.
📈 Chart up to 15 Moving Averages in the same indicator
⏳ Changeable time frame resolution
Ⅲ Available types - Simple, Weighted, Volume-weighted
≡ Custom and pre configured length sets
🪄 Automatic hiding of moving averages a set % away from last price
🌈 14 selectable color sets for plot lines
🗻 Selectable themed legend of values
-Removes hidden values
-Selectable density of data
⇄ Selectable chart data locations
Fetch TrendsThis indicator can be used as a tool to measure the strength of the current trend. It is also trying to achieve to alert traders on when a trend can shift.
In order to achieve this, it uses three simple indicators:
1: 9 Simple moving average
2: 50 Simple moving average
3: Rsi (14)
The moving averages are used to define the current trend of the market, and the rsi is used to measure the strength. We use a color gradient to reach our second goal with this indicator.
The gradient is calculated based on the rsi value, which means the trader can use this indicator to visualize the strength of the current trend. It also helps to alert the trader when the trend starts to shift.
Lets say we use green to signal a strong positive trend, and blue for a weak positive trend. The candles are green in a strong uptrend, and are getting more blue once the trend starts to weaken.
As soon as the trend shifts from bullish to bearish, the bars become a diferent color.
Moving Average Compendium RefurbishedThis is my effort to bring together in a single script the widest range of moving averages possible.
I aggregated the calculation of averages within a library.
For more information about the library follow the link:
Basically this indicator is the visual result of this library.
You can choose the moving average and the script updates the chart as per the type.
The unique parameters of certain moving averages remain at their default values.
To have a rainbow of moving averages I also made an indicator:
Available moving averages:
AARMA = 'Adaptive Autonomous Recursive Moving Average'
ADEMA = '* Alpha-Decreasing Exponential Moving Average'
AHMA = 'Ahrens Moving Average'
ALMA = 'Arnaud Legoux Moving Average'
ALSMA = 'Adaptive Least Squares'
AUTOL = 'Auto-Line'
CMA = 'Corrective Moving average'
CORMA = 'Correlation Moving Average Price'
COVWEMA = 'Coefficient of Variation Weighted Exponential Moving Average'
COVWMA = 'Coefficient of Variation Weighted Moving Average'
DEMA = 'Double Exponential Moving Average'
DONCHIAN = 'Donchian Middle Channel'
EDMA = 'Exponentially Deviating Moving Average'
EDSMA = 'Ehlers Dynamic Smoothed Moving Average'
EFRAMA = '* Ehlrs Modified Fractal Adaptive Moving Average'
EHMA = 'Exponential Hull Moving Average'
EMA = 'Exponential Moving Average'
EPMA = 'End Point Moving Average'
ETMA = 'Exponential Triangular Moving Average'
EVWMA = 'Elastic Volume Weighted Moving Average'
FAMA = 'Following Adaptive Moving Average'
FIBOWMA = 'Fibonacci Weighted Moving Average'
FISHLSMA = 'Fisher Least Squares Moving Average'
FRAMA = 'Fractal Adaptive Moving Average'
GMA = 'Geometric Moving Average'
HKAMA = 'Hilbert based Kaufman\'s Adaptive Moving Average'
HMA = 'Hull Moving Average'
JURIK = 'Jurik Moving Average'
KAMA = 'Kaufman\'s Adaptive Moving Average'
LC_LSMA = '1LC-LSMA (1 line code lsma with 3 functions)'
LEOMA = 'Leo Moving Average'
LINWMA = 'Linear Weighted Moving Average'
LSMA = 'Least Squares Moving Average'
MAMA = 'MESA Adaptive Moving Average'
MCMA = 'McNicholl Moving Average'
MEDIAN = 'Median'
REGMA = 'Regularized Exponential Moving Average'
REMA = 'Range EMA'
REPMA = 'Repulsion Moving Average'
RMA = 'Relative Moving Average'
RSIMA = 'RSI Moving average'
RVWAP = '* Rolling VWAP'
SMA = 'Simple Moving Average'
SMMA = 'Smoothed Moving Average'
SRWMA = 'Square Root Weighted Moving Average'
SW_MA = 'Sine-Weighted Moving Average'
SWMA = '* Symmetrically Weighted Moving Average'
TEMA = 'Triple Exponential Moving Average'
THMA = 'Triple Hull Moving Average'
TREMA = 'Triangular Exponential Moving Average'
TRSMA = 'Triangular Simple Moving Average'
TT3 = 'Tillson T3'
VAMA = 'Volatility Adjusted Moving Average'
VIDYA = 'Variable Index Dynamic Average'
VWAP = '* VWAP'
VWMA = 'Volume-weighted Moving Average'
WMA = 'Weighted Moving Average'
WWMA = 'Welles Wilder Moving Average'
XEMA = 'Optimized Exponential Moving Average'
ZEMA = 'Zero-Lag Exponential Moving Average'
ZSMA = 'Zero-Lag Simple Moving Average'
Moving Averages ProxyLibrary "MovingAveragesProxy"
Moving Averages Proxy - Library of all moving averages spread out in different libraries
rvwap(_src, fixedTfInput, minsInput, hoursInput, daysInput, minBarsInput)
Calculates the Rolling VWAP (customized VWAP developed by the team of TradingView)
Parameters:
_src : (float) Source. Default: close
fixedTfInput : (bool) Use a fixed time period. Default: false
minsInput : (int) Minutes. Default: 0
hoursInput : (int) Hours. Default: 0
daysInput : (int) Days. Default: 1
minBarsInput : (int) Bars. Default: 10
Returns: (float) Rolling VWAP
correlationMa(src, len, factor)
Correlation Moving Average
Parameters:
src : (float) Source. Default: close
len : (int) Length
factor : (float) Factor. Default: 1.7
Returns: (float) Correlation Moving Average
regma(src, len, lambda)
Regularized Exponential Moving Average
Parameters:
src : (float) Source. Default: close
len : (int) Length
lambda : (float) Lambda. Default: 0.5
Returns: (float) Regularized Exponential Moving Average
repma(src, len)
Repulsion Moving Average
Parameters:
src : (float) Source. Default: close
len : (int) Length
Returns: (float) Repulsion Moving Average
epma(src, length, offset)
End Point Moving Average
Parameters:
src : (float) Source. Default: close
length : (int) Length
offset : (float) Offset. Default: 4
Returns: (float) End Point Moving Average
lc_lsma(src, length)
1LC-LSMA (1 line code lsma with 3 functions)
Parameters:
src : (float) Source. Default: close
length : (int) Length
Returns: (float) 1LC-LSMA Moving Average
aarma(src, length)
Adaptive Autonomous Recursive Moving Average
Parameters:
src : (float) Source. Default: close
length : (int) Length
Returns: (float) Adaptive Autonomous Recursive Moving Average
alsma(src, length)
Adaptive Least Squares
Parameters:
src : (float) Source. Default: close
length : (int) Length
Returns: (float) Adaptive Least Squares
ahma(src, length)
Ahrens Moving Average
Parameters:
src : (float) Source. Default: close
length : (int) Length
Returns: (float) Ahrens Moving Average
adema(src)
Ahrens Moving Average
Parameters:
src : (float) Source. Default: close
Returns: (float) Moving Average
autol(src, lenDev)
Auto-Line
Parameters:
src : (float) Source. Default: close
lenDev : (int) Length for standard deviation
Returns: (float) Auto-Line
fibowma(src, length)
Fibonacci Weighted Moving Average
Parameters:
src : (float) Source. Default: close
length : (int) Length
Returns: (float) Moving Average
fisherlsma(src, length)
Fisher Least Squares Moving Average
Parameters:
src : (float) Source. Default: close
length : (int) Length
Returns: (float) Moving Average
leoma(src, length)
Leo Moving Average
Parameters:
src : (float) Source. Default: close
length : (int) Length
Returns: (float) Moving Average
linwma(src, period, weight)
Linear Weighted Moving Average
Parameters:
src : (float) Source. Default: close
period : (int) Length
weight : (int) Weight
Returns: (float) Moving Average
mcma(src, length)
McNicholl Moving Average
Parameters:
src : (float) Source. Default: close
length : (int) Length
Returns: (float) Moving Average
srwma(src, length)
Square Root Weighted Moving Average
Parameters:
src : (float) Source. Default: close
length : (int) Length
Returns: (float) Moving Average
EDSMA(src, len)
Ehlers Dynamic Smoothed Moving Average.
Parameters:
src : Series to use ('close' is used if no argument is supplied).
len : Lookback length to use.
Returns: EDSMA smoothing.
dema(x, t)
Double Exponential Moving Average.
Parameters:
x : Series to use ('close' is used if no argument is supplied).
t : Lookback length to use.
Returns: DEMA smoothing.
tema(src, len)
Triple Exponential Moving Average.
Parameters:
src : Series to use ('close' is used if no argument is supplied).
len : Lookback length to use.
Returns: TEMA smoothing.
smma(src, len)
Smoothed Moving Average.
Parameters:
src : Series to use ('close' is used if no argument is supplied).
len : Lookback length to use.
Returns: SMMA smoothing.
hullma(src, len)
Hull Moving Average.
Parameters:
src : Series to use ('close' is used if no argument is supplied).
len : Lookback length to use.
Returns: Hull smoothing.
frama(x, t)
Fractal Reactive Moving Average.
Parameters:
x : Series to use ('close' is used if no argument is supplied).
t : Lookback length to use.
Returns: FRAMA smoothing.
kama(x, t)
Kaufman's Adaptive Moving Average.
Parameters:
x : Series to use ('close' is used if no argument is supplied).
t : Lookback length to use.
Returns: KAMA smoothing.
vama(src, len)
Volatility Adjusted Moving Average.
Parameters:
src : Series to use ('close' is used if no argument is supplied).
len : Lookback length to use.
Returns: VAMA smoothing.
donchian(len)
Donchian Calculation.
Parameters:
len : Lookback length to use.
Returns: Average of the highest price and the lowest price for the specified look-back period.
Jurik(src, len)
Jurik Moving Average.
Parameters:
src : Series to use ('close' is used if no argument is supplied).
len : Lookback length to use.
Returns: JMA smoothing.
xema(src, len)
Optimized Exponential Moving Average.
Parameters:
src : Series to use ('close' is used if no argument is supplied).
len : Lookback length to use.
Returns: XEMA smoothing.
ehma(src, len)
EHMA - Exponential Hull Moving Average
Parameters:
src : Source
len : Period
Returns: Exponential Hull Moving Average (EHMA)
covwema(src, len)
Coefficient of Variation Weighted Exponential Moving Average (COVWEMA)
Parameters:
src : Source
len : Period
Returns: Coefficient of Variation Weighted Exponential Moving Average (COVWEMA)
covwma(src, len)
Coefficient of Variation Weighted Moving Average (COVWMA)
Parameters:
src : Source
len : Period
Returns: Coefficient of Variation Weighted Moving Average (COVWMA)
eframa(src, len, FC, SC)
Ehlrs Modified Fractal Adaptive Moving Average (EFRAMA)
Parameters:
src : Source
len : Period
FC : Lower Shift Limit for Ehlrs Modified Fractal Adaptive Moving Average
SC : Upper Shift Limit for Ehlrs Modified Fractal Adaptive Moving Average
Returns: Ehlrs Modified Fractal Adaptive Moving Average (EFRAMA)
etma(src, len)
Exponential Triangular Moving Average (ETMA)
Parameters:
src : Source
len : Period
Returns: Exponential Triangular Moving Average (ETMA)
rma(src, len)
RMA - RSI Moving average
Parameters:
src : Source
len : Period
Returns: RSI Moving average (RMA)
thma(src, len)
THMA - Triple Hull Moving Average
Parameters:
src : Source
len : Period
Returns: Triple Hull Moving Average (THMA)
vidya(src, len)
Variable Index Dynamic Average (VIDYA)
Parameters:
src : Source
len : Period
Returns: Variable Index Dynamic Average (VIDYA)
zsma(src, len)
Zero-Lag Simple Moving Average (ZSMA)
Parameters:
src : Source
len : Period
Returns: Zero-Lag Simple Moving Average (ZSMA)
zema(src, len)
Zero-Lag Exponential Moving Average (ZEMA)
Parameters:
src : Source
len : Period
Returns: Zero-Lag Exponential Moving Average (ZEMA)
evwma(src, len)
EVWMA - Elastic Volume Weighted Moving Average
Parameters:
src : Source
len : Period
Returns: Elastic Volume Weighted Moving Average (EVWMA)
tt3(src, len, a1_t3)
Tillson T3
Parameters:
src : Source
len : Period
a1_t3 : Tillson T3 Volume Factor
Returns: Tillson T3
gma(src, len)
GMA - Geometric Moving Average
Parameters:
src : Source
len : Period
Returns: Geometric Moving Average (GMA)
wwma(src, len)
WWMA - Welles Wilder Moving Average
Parameters:
src : Source
len : Period
Returns: Welles Wilder Moving Average (WWMA)
cma(src, len)
Corrective Moving average (CMA)
Parameters:
src : Source
len : Period
Returns: Corrective Moving average (CMA)
edma(src, len)
Exponentially Deviating Moving Average (MZ EDMA)
Parameters:
src : Source
len : Period
Returns: Exponentially Deviating Moving Average (MZ EDMA)
rema(src, len)
Range EMA (REMA)
Parameters:
src : Source
len : Period
Returns: Range EMA (REMA)
sw_ma(src, len)
Sine-Weighted Moving Average (SW-MA)
Parameters:
src : Source
len : Period
Returns: Sine-Weighted Moving Average (SW-MA)
mama(src, len)
MAMA - MESA Adaptive Moving Average
Parameters:
src : Source
len : Period
Returns: MESA Adaptive Moving Average (MAMA)
fama(src, len)
FAMA - Following Adaptive Moving Average
Parameters:
src : Source
len : Period
Returns: Following Adaptive Moving Average (FAMA)
hkama(src, len)
HKAMA - Hilbert based Kaufman's Adaptive Moving Average
Parameters:
src : Source
len : Period
Returns: Hilbert based Kaufman's Adaptive Moving Average (HKAMA)
getMovingAverage(type, src, len, lsmaOffset, inputAlmaOffset, inputAlmaSigma, FC, SC, a1_t3, fixedTfInput, daysInput, hoursInput, minsInput, minBarsInput, lambda, volumeWeighted, gamma_aarma, smooth, linweight, volatility_lookback, jurik_phase, jurik_power)
Abstract proxy function that invokes the calculation of a moving average according to type
Parameters:
type : (string) Type of moving average
src : (float) Source of series (close, high, low, etc.)
len : (int) Period of loopback to calculate the average
lsmaOffset : (int) Offset for Least Squares MA
inputAlmaOffset : (float) Offset for ALMA
inputAlmaSigma : (float) Sigma for ALMA
FC : (int) Lower Shift Limit for Ehlrs Modified Fractal Adaptive Moving Average
SC : (int) Upper Shift Limit for Ehlrs Modified Fractal Adaptive Moving Average
a1_t3 : (float) Tillson T3 Volume Factor
fixedTfInput : (bool) Use a fixed time period in Rolling VWAP
daysInput : (int) Days in Rolling VWAP
hoursInput : (int) Hours in Rolling VWAP
minsInput : (int) Minutrs in Rolling VWAP
minBarsInput : (int) Bars in Rolling VWAP
lambda : (float) Regularization Constant in Regularized EMA
volumeWeighted : (bool) Apply volume weighted calculation in selected moving average
gamma_aarma : (float) Gamma for Adaptive Autonomous Recursive Moving Average
smooth : (float) Smooth for Adaptive Least Squares
linweight : (float) Weight for Volume Weighted Moving Average
volatility_lookback : (int) Loopback for Volatility Adjusted Moving Average
jurik_phase : (int) Phase for Jurik Moving Average
jurik_power : (int) Power for Jurik Moving Average
Returns: (float) Moving average
Moving Averages RefurbishedIntroduction
This is a collection of multiple moving averages, where you can have a rainbow of moving averages with different types that can be defined by the user.
There are already other indicators in this rainbow style, however certain averages are absent in certain indicators and present in others,
needing the merge to have a more complete solution.
Resources
Here there is the possibility to individually define each moving average.
In addition, it is possible to adjust some details, such as themes, coloring and periods.
Regarding the calculation of averages, credit goes to the following authors.
What I've done here is to group these averages together and allow them to combine.
Credits
TradingView
PineCoders
CrackingCryptocurrency
MightyZinger
Alex Orekhov (everget)
alexgrover
paragjyoti2012
Moving averages available
1. Exponential Moving Average
2. Simple Moving Average
3. Relative Moving Average
4. Weighted Moving Average
5. Ehlers Dynamic Smoothed Moving Average
6. Double Exponential Moving Average
7. Triple Exponential Moving Average
8. Smoothed Moving Average
9. Hull Moving Average
10. Fractal Adaptive Moving Average
11. Kaufman's Adaptive Moving Average
12. Volatility Adjusted Moving Average
13. Jurik Moving Average
14. Optimized Exponential Moving Average
15. Exponential Hull Moving Average
16. Arnaud Legoux Moving Average
17. Coefficient of Variation Weighted Exponential Moving Average
18. Coefficient of Variation Weighted Moving Average
19. * Ehlrs Modified Fractal Adaptive Moving Average
20. Exponential Triangular Moving Average
21. Least Squares Moving Average
22. RSI Moving average
23. Simple Triangular Moving Average
24. Triple Hull Moving Average
25. Variable Index Dynamic Average
26. Volume-weighted Moving Average
27. Zero-Lag Exponential Moving Average
28. Zero-Lag Simple Moving Average
29. Elastic Volume Weighted Moving Average
30. Tillson T3
31. Geometric Moving Average
32. Welles Wilder Moving Average
33. Adjusted Moving Average
34. Corrective Moving average
35. Exponentially Deviating Moving Average
36. EMA Range
37. Sine-Weighted Moving Average
38. Adaptive Moving Average TABLE
39. Following Adaptive Moving Average
40. Hilbert based Kaufman's Adaptive Moving Average
41. Median
42. * VWAP
43. * Rolling VWAP
44. Triangular Simple Moving Average
45. Triangular Exponential Moving Average
46. Moving Average Price Correlation
47. Regularized Exponential Moving Average
48. Repulsion Moving Average
49. * Symmetrically Weighted Moving Average
* fixed period averages
Bollinger Bands + Keltner Channel Refurbished█ Goals
This is an indicator that brings together Bollinger Bands and Keltner's Channels in one thing.
Both are very similar, so I decided to make a merge of the best features I found out there.
Here there is the possibility of choosing one of these two as needed.
In addition, I added the following resources:
1. Pre-Defined intermediate bands with Fibonacci values;
2. Detachment of the bands in which the price was present;
3. Choice of Moving Average:
"Simple", "Exponential", "Regularized Exponential", "Hull", "Arnaud Legoux", "Weighted Moving Average", "Least Squares Moving Average (Linear Regression)", "Volume Weighted Moving Average", "Smoothed Moving Average", "Median", "VWAP");
4. Statistics: bars count within the bands.
█ Concepts
Keltner Channels vs. Bollinger Bands
"These two indicators are quite similar.
Keltner Channels use ATR to calculate the upper and lower bands while Bollinger Bands use standard deviation instead.
The interpretation of the indicators is similar, although since the calculations are different the two indicators may provide slightly different information or trade signals."
(Investopedia)
Bollinger Bands (BB)
"Bollinger Bands (BB) are a widely popular technical analysis instrument created by John Bollinger in the early 1980’s.
Bollinger Bands consist of a band of three lines which are plotted in relation to security prices.
The line in the middle is usually a Simple Moving Average (SMA) set to a period of 20 days (the type of trend line and period can be changed by the trader; however a 20 day moving average is by far the most popular).
The SMA then serves as a base for the Upper and Lower Bands which are used as a way to measure volatility by observing the relationship between the Bands and price.
Typically the Upper and Lower Bands are set to two standard deviations away from the SMA (The Middle Line); however the number of standard deviations can also be adjusted by the trader."
(TradingView)
Keltner Channels (KC)
"The Keltner Channels (KC) indicator is a banded indicator similar to Bollinger Bands and Moving Average Envelopes.
They consist of an Upper Envelope above a Middle Line as well as a Lower Envelope below the Middle Line.
The Middle Line is a moving average of price over a user-defined time period.
Either a simple moving average or an exponential moving average are typically used. The Upper and Lower Envelopes (user defined) are set a range away from the Middle Line.
This can be a multiple of the daily high/low range, or more commonly a multiple of the Average True Range."
(TradingView)
█ Examples
Bollinger Bands with 200 REMA:
Keltner Channel with 200 REMA:
Bollinger Bands with 55 ALMA:
Keltner Channel with 55 ALMA:
Bollinger Bands with 55 Least Squares Moving Average:
█ Thanks
- TradingView (BB, KC, ATR, MA's)
- everget (Regularized Exponential Moving Average)
- TimeFliesBuy ("Triple Bollinger Bands")
- Rashad ("Fibonacci Bollinger Bands")
- Dicargo_Beam ("Is the Bollinger Bands assumption wrong?")