Hybrid Adaptive Double Exponential Smoothing🙏🏻 This is HADES (Hybrid Adaptive Double Exponential Smoothing) : fully data-driven & adaptive exponential smoothing method, that gains all the necessary info directly from data in the most natural way and needs no subjective parameters & no optimizations. It gets applied to data itself -> to fit residuals & one-point forecast errors, all at O(1) algo complexity. I designed it for streaming high-frequency univariate time series data, such as medical sensor readings, orderbook data, tick charts, requests generated by a backend, etc.
The HADES method is:
fit & forecast = a + b * (1 / alpha + T - 1)
T = 0 provides in-sample fit for the current datum, and T + n provides forecast for n datapoints.
y = input time series
a = y, if no previous data exists
b = 0, if no previous data exists
otherwise:
a = alpha * y + (1 - alpha) * a
b = alpha * (a - a ) + (1 - alpha) * b
alpha = 1 / sqrt(len * 4)
len = min(ceil(exp(1 / sig)), available data)
sig = sqrt(Absolute net change in y / Sum of absolute changes in y)
For the start datapoint when both numerator and denominator are zeros, we define 0 / 0 = 1
...
The same set of operations gets applied to the data first, then to resulting fit absolute residuals to build prediction interval, and finally to absolute forecasting errors (from one-point ahead forecast) to build forecasting interval:
prediction interval = data fit +- resoduals fit * k
forecasting interval = data opf +- errors fit * k
where k = multiplier regulating intervals width, and opf = one-point forecasts calculated at each time t
...
How-to:
0) Apply to your data where it makes sense, eg. tick data;
1) Use power transform to compensate for multiplicative behavior in case it's there;
2) If you have complete data or only the data you need, like the full history of adjusted close prices: go to the next step; otherwise, guided by your goal & analysis, adjust the 'start index' setting so the calculations will start from this point;
3) Use prediction interval to detect significant deviations from the process core & make decisions according to your strategy;
4) Use one-point forecast for nowcasting;
5) Use forecasting intervals to ~ understand where the next datapoints will emerge, given the data-generating process will stay the same & lack structural breaks.
I advise k = 1 or 1.5 or 4 depending on your goal, but 1 is the most natural one.
...
Why exponential smoothing at all? Why the double one? Why adaptive? Why not Holt's method?
1) It's O(1) algo complexity & recursive nature allows it to be applied in an online fashion to high-frequency streaming data; otherwise, it makes more sense to use other methods;
2) Double exponential smoothing ensures we are taking trends into account; also, in order to model more complex time series patterns such as seasonality, we need detrended data, and this method can be used to do it;
3) The goal of adaptivity is to eliminate the window size question, in cases where it doesn't make sense to use cumulative moving typical value;
4) Holt's method creates a certain interaction between level and trend components, so its results lack symmetry and similarity with other non-recursive methods such as quantile regression or linear regression. Instead, I decided to base my work on the original double exponential smoothing method published by Rob Brown in 1956, here's the original source , it's really hard to find it online. This cool dude is considered the one who've dropped exponential smoothing to open access for the first time🤘🏻
R&D; log & explanations
If you wanna read this, you gotta know, you're taking a great responsability for this long journey, and it gonna be one hell of a trip hehe
Machine learning, apprentissage automatique, машинное обучение, digital signal processing, statistical learning, data mining, deep learning, etc., etc., etc.: all these are just artificial categories created by the local population of this wonderful world, but what really separates entities globally in the Universe is solution complexity / algorithmic complexity.
In order to get the game a lil better, it's gonna be useful to read the HTES script description first. Secondly, let me guide you through the whole R&D; process.
To discover (not to invent) the fundamental universal principle of what exponential smoothing really IS, it required the review of the whole concept, understanding that many things don't add up and don't make much sense in currently available mainstream info, and building it all from the beginning while avoiding these very basic logical & implementation flaws.
Given a complete time t, and yet, always growing time series population that can't be logically separated into subpopulations, the very first question is, 'What amount of data do we need to utilize at time t?'. Two answers: 1 and all. You can't really gain much info from 1 datum, so go for the second answer: we need the whole dataset.
So, given the sequential & incremental nature of time series, the very first and basic thing we can do on the whole dataset is to calculate a cumulative , such as cumulative moving mean or cumulative moving median.
Now we need to extend this logic to exponential smoothing, which doesn't use dataset length info directly, but all cool it can be done via a formula that quantifies the relationship between alpha (smoothing parameter) and length. The popular formulas used in mainstream are:
alpha = 1 / length
alpha = 2 / (length + 1)
The funny part starts when you realize that Cumulative Exponential Moving Averages with these 2 alpha formulas Exactly match Cumulative Moving Average and Cumulative (Linearly) Weighted Moving Average, and the same logic goes on:
alpha = 3 / (length + 1.5) , matches Cumulative Weighted Moving Average with quadratic weights, and
alpha = 4 / (length + 2) , matches Cumulative Weighted Moving Average with cubic weghts, and so on...
It all just cries in your shoulder that we need to discover another, native length->alpha formula that leverages the recursive nature of exponential smoothing, because otherwise, it doesn't make sense to use it at all, since the usual CMA and CMWA can be computed incrementally at O(1) algo complexity just as exponential smoothing.
From now on I will not mention 'cumulative' or 'linearly weighted / weighted' anymore, it's gonna be implied all the time unless stated otherwise.
What we can do is to approach the thing logically and model the response with a little help from synthetic data, a sine wave would suffice. Then we can think of relationships: Based on algo complexity from lower to higher, we have this sequence: exponential smoothing @ O(1) -> parametric statistics (mean) @ O(n) -> non-parametric statistics (50th percentile / median) @ O(n log n). Based on Initial response from slow to fast: mean -> median Based on convergence with the real expected value from slow to fast: mean (infinitely approaches it) -> median (gets it quite fast).
Based on these inputs, we need to discover such a length->alpha formula so the resulting fit will have the slowest initial response out of all 3, and have the slowest convergence with expected value out of all 3. In order to do it, we need to have some non-linear transformer in our formula (like a square root) and a couple of factors to modify the response the way we need. I ended up with this formula to meet all our requirements:
alpha = sqrt(1 / length * 2) / 2
which simplifies to:
alpha = 1 / sqrt(len * 8)
^^ as you can see on the screenshot; where the red line is median, the blue line is the mean, and the purple line is exponential smoothing with the formulas you've just seen, we've met all the requirements.
Now we just have to do the same procedure to discover the length->alpha formula but for double exponential smoothing, which models trends as well, not just level as in single exponential smoothing. For this comparison, we need to use linear regression and quantile regression instead of the mean and median.
Quantile regression requires a non-closed form solution to be solved that you can't really implement in Pine Script, but that's ok, so I made the tests using Python & sklearn:
paste.pics
^^ on this screenshot, you can see the same relationship as on the previous screenshot, but now between the responses of quantile regression & linear regression.
I followed the same logic as before for designing alpha for double exponential smoothing (also considered the initial overshoots, but that's a little detail), and ended up with this formula:
alpha = sqrt(1 / length) / 2
which simplifies to:
alpha = 1 / sqrt(len * 4)
Btw, given the pattern you see in the resulting formulas for single and double exponential smoothing, if you ever want to do triple (not Holt & Winters) exponential smoothing, you'll need len * 2 , and just len * 1 for quadruple exponential smoothing. I hope that based on this sequence, you see the hint that Maybe 4 rounds is enough.
Now since we've dealt with the length->alpha formula, we can deal with the adaptivity part.
Logically, it doesn't make sense to use a slower-than-O(1) method to generate input for an O(1) method, so it must be something universal and minimalistic: something that will help us measure consistency in our data, yet something far away from statistics and close enough to topology.
There's one perfect entity that can help us, this is fractal efficiency. The way I define fractal efficiency can be checked at the very beginning of the post, what matters is that I add a square root to the formula that is not typically added.
As explained in the description of my metric QSFS , one of the reasons for SQRT-transformed values of fractal efficiency applied in moving window mode is because they start to closely resemble normal distribution, yet with support of (0, 1). Data with this interesting property (normally distributed yet with finite support) can be modeled with the beta distribution.
Another reason is, in infinitely expanding window mode, fractal efficiency of every time series that exhibits randomness tends to infinitely approach zero, sqrt-transform kind of partially neutralizes this effect.
Yet another reason is, the square root might better reflect the dimensional inefficiency or degree of fractal complexity, since it could balance the influence of extreme deviations from the net paths.
And finally, fractals exhibit power-law scaling -> measures like length, area, or volume scale in a non-linear way. Adding a square root acknowledges this intrinsic property, while connecting our metric with the nature of fractals.
---
I suspect that, given analogies and connections with other topics in geometry, topology, fractals and most importantly positive test results of the metric, it might be that the sqrt transform is the fundamental part of fractal efficiency that should be applied by default.
Now the last part of the ballet is to convert our fractal efficiency to length value. The part about inverse proportionality is obvious: high fractal efficiency aka high consistency -> lower window size, to utilize only the last data that contain brand new information that seems to be highly reliable since we have consistency in the first place.
The non-obvious part is now we need to neutralize the side effect created by previous sqrt transform: our length values are too low, and exponentiation is the perfect candidate to fix it since translating fractal efficiency into window sizes requires something non-linear to reflect the fractal dynamics. More importantly, using exp() was the last piece that let the metric shine, any other transformations & formulas alike I've tried always had some weird results on certain data.
That exp() in the len formula was the last piece that made it all work both on synthetic and on real data.
^^ a standalone script calculating optimal dynamic window size
Omg, THAT took time to write. Comment and/or text me if you need
...
"Versace Pip-Boy, I'm a young gun coming up with no bankroll" 👻
∞
Dynamic
Adaptive Supertrend with Dynamic Optimization [EdgeTerminal]The Enhanced Adaptive Supertrend represents a significant evolution of the traditional Supertrend indicator, incorporating advanced mathematical optimization, dynamic volatility adjustment, intelligent signal filtering, reduced noise and false positives.
Key Features
Dynamic volatility-adjusted bands
Self-optimizing multiplier
Intelligent signal filtering system
Cooldown period to prevent signal clustering
Clear buy/sell signals with optimal positioning
Smooth trend visualization
RSI and MACD integration for confirmation
Performance-based optimization
Dynamic Band Calculation
Dynamic Band Calculation automatically adapts to market volatility, generates wider bands in volatile periods, reducing false signals. It also generates tighter bands in stable periods, capturing smaller moves and smooth transitions between different volatility regimes.
RSI Integration
The RSI and MACD play multiple crucial roles in the Adaptive Supertrend.
It first helps with momentum factor calculation. This dynamically adjusts band width based on momentum conditions. When the RSI is oversold, bands widen by 20% to prevent false signals during strong downtrends and provide more room for price movements in extreme conditions.
When the RSI is overbought, brands tighten by 20% and they become more sensitive to potential reversals to help catch trend changes earlier.
This reduces false signals in strong trends, helps detect potential reversals earlier than the usual, create adaptive band width based on market conditions and finally, better protection against whipsaws.
MACD Integration
The MACD in this supertrend indicator serves as a trend confirmation tool. The idea is to use MACD crossovers to confirm trend changes to reduce false trend change signals and enhance the signal quality.
For this to become a signal, MACD crossovers must align with price movement to help filter out weak or false signals, which acts as an additional layer of trend confirmation.
Additionally, MACD line position relative to signal line indicates trend strength, helps maintain positions in strong trends and assists in early detection of trend weakening.
Momentum Integration
Momentum Integration prevents false signals in extreme conditions, It adjusts dynamic bands based on market momentum, improves trend confirmation in strong moves and reduces whipsaws during consolidations.
Improved signals
There are a few systems to generate better signals, allowing for generally faster signals compared to original supertrend, such as:
Enforced cooldown period between signals
Prevents signal clustering
Clearer entry/exit points
Reduced false signals during choppy markets
Performance Optimization
This script implements a Sharpe ratio-inspired optimization algorithm to balance returns against risk, penalize large drawdowns, adapt parameters in real-time and improve risk-adjusted performance
Parameter Settings
ATR Period: 10 (default) - adjust based on timeframe
Initial Multiplier: 3.0 (default) - will self-optimize
Optimization Period: 50 (default) - longer periods for more stability
Smoothing Period: 3 (default) - adjust for signal smoothness
Best Practices
Use on multiple timeframes for confirmation
Allow the optimization process to run for at least 50 bars
Monitor the adaptive multiplier for trend strength indication
Consider RSI and MACD alignment for stronger signals
Dynamic Resistance and Support LinesThis script is designed to dynamically plot support and resistance lines based on full-dollar and half-dollar price levels relative to the close price on a chart. The script is particularly useful for day traders and scalpers, as it helps visualize key psychological price levels that often act as support and resistance zones in volatile and fast-moving markets in real time.
Key Features:
Dynamic Resistance and Support Levels:
Full-dollar levels: These are calculated by rounding the close price to the nearest full dollar and then extending the levels by adding and subtracting increments of 1 (e.g., $1, $2, $3).
Half-dollar levels: These are calculated by adding and subtracting 0.5 increments to the nearest full-dollar price, providing additional reference points. The historical full-dollar levels remain where support and resistance may have occurred in the past.
Extend Lines:
You can toggle whether the support and resistance lines are extended to the right, left, or both directions. This allows flexibility in projecting potential future areas of support or resistance.
Custom Line Extension:
The user can set the number of bars (or time periods) that the support and resistance lines will extend, giving control over how long the levels remain on the chart.
Color-Coded Lines:
Red lines represent full-dollar resistance and support levels.
Blue lines represent half-dollar levels, making it easy to differentiate between key psychological price zones.
Line Flexibility:
The script allows the lines to extend both left and right on the chart, making it useful for analyzing historical price action or projecting future price movements. The number of bars for extension is customizable, allowing for tailored setups.
Nearest Full Dollar Plot:
The nearest full-dollar price level is plotted as a yellow circle on the chart. This serves as a quick visual cue for traders to monitor price proximity to critical levels.
Benefits in Day Trading, Scalping, and Volatile Markets:
Visualizing Key Psychological Levels:
Full-dollar and half-dollar price levels often act as psychological barriers for traders. This script helps traders easily identify these levels, which are important in both fast-moving markets and during sideways consolidation.
Improved Decision-Making:
By automatically drawing these support and resistance levels, the script helps day traders and scalpers make quicker and more informed decisions, especially in volatile markets where every second counts.
Adaptability to Market Conditions:
The flexibility of extending lines based on trader preferences allows the user to adapt the script to various market conditions, such as high volatility or trend-based trading, providing a clear view of potential breakout or reversal areas.
Better Risk Management:
Having predefined support and resistance levels helps traders better manage risk, as these levels can act as logical areas for setting stop losses or taking profits.
This script is especially valuable for traders looking to capitalize on quick market movements or identify key entry and exit points during market volatility.
Dynamic Jurik RSX w/ Fisher Transform█ Introduction
The Dynamic Jurik RSX with Fisher Transform is a powerful and adaptive momentum indicator designed for traders who seek a non-laggy view of price movements. This script is based on the classic Jurik RSX (Relative Strength Index). It also includes features such as the dynamic overbought and oversold limits, the Inverse Fisher Transform, trend display, slope calculations, and the ability to color extremes for better clarity.
█ Key Features:
• RSX: The Relative Strength Index (RSX) in this script is based on Jurik’s RSX, which is smoother than the traditional RSI and aims to reduce noise and lag. This script calculates the RSX using an exponential smoothing technique and adaptive adjustments.
• Inverse Fisher Transform: This script can optionally apply the Inverse Fisher Transform to the RSX, which helps to normalize the RSX values, compressing them between -1 and 1. The inverse transformation makes it easier to spot extreme values (overbought and oversold conditions) by enhancing the visual clarity of those extremes. It also smooths the curve over a user-defined period in hopes of providing a more consistent signal.
• Dynamic Limits: The dynamic overbought and oversold limits are calculated based on the RSX's recent high and low values. The limits adjust dynamically depending on market conditions, making them more relevant to current price action.
• Slope Display: The slope of the RSX is calculated as the rate of change between the current and previous RSX value. The slope is displayed as dots when the slope exceeds the threshold designated by the user, providing visual cues for momentum shifts.
• Trend Coloring: Optionally, the user can also enable a trend-based display. It is simply based on current value of RSX versus the previous one. If RSX is rising then the trend is bullish, if not, then the trend is bearish.
• Coloring Extremes: Users can configure the RSX to color the chart when prices enter extreme conditions, such as overbought or oversold zones, providing visual cues for market reversals.
█ Attached Chart Notes:
• Top Panel: Enabled dynamic limits, Trend display, standard Jurik RSX with 20 lookback period, and Slope display.
• Middle Panel: Enabled dynamic limits, Extremes display, and standard Jurik RSX with 20 lookback period.
• Bottom Panel: Enabled dynamic limits, Trend display, Inverse Fisher Transform with 14 lookback period and 9 smoothing period. and Slope display.
█ Credits:
Special thanks to Everget for providing the original script. The script was also slightly modified based on updates from outside sources.
█ Disclaimer:
This script is for educational purposes only and should not be considered financial advice. Always conduct your own research and consult a professional before making any trading decisions.
Support Resistance UltimateThe "Support Resistance ULTIMATE" indicator is a comprehensive tool for traders on the TradingView platform, designed to identify key support and resistance levels using two primary techniques: pivot points and volume data. This indicator provides flexibility and customization, allowing traders to adapt it to their specific trading strategies.
KEY FEATURES
Pivot-Based Levels:
This feature calculates support and resistance levels using pivot points, which are derived from the high, low, and close prices of previous trading periods. Pivot points are crucial for forecasting potential market turning points.
Users can customize the pivot calculation by selecting the source type (either 'Close' or 'High/Low') and adjusting the lookback periods for both the left and right sides of the pivot calculation. This flexibility allows traders to adapt the indicator to different market conditions and timeframes.
Volume-Based Levels:
This option focuses on identifying support and resistance levels based on volume data, specifically the Point of Control (POC). The POC represents the price level with the highest traded volume during a specific time period, reflecting a consensus value among market participants.
The indicator includes a rolling POC calculation, allowing traders to dynamically assess areas of significant trading interest that may serve as support or resistance zones.
ADVANTAGES
Customization and Flexibility:
Traders can choose between pivot-based and volume-based levels or use both simultaneously, depending on their analysis needs. This dual approach provides a comprehensive view of market dynamics, accommodating various trading styles.
The indicator offers customizable color settings for support and resistance lines, enhancing chart readability and allowing traders to personalize their visual analysis.
Enhanced Market Insights:
By utilizing pivot points, traders can identify potential reversal or consolidation points, aiding in the prediction of market trends and the establishment of strategic entry and exit points.
Volume-based levels provide insights into market sentiment and participation, highlighting areas of strong support or resistance based on trading volume. This can improve risk management and trade execution by identifying high-probability trading zones.
Importance Scoring:
The indicator calculates the importance of each level based on the number of touches and the duration it holds. This scoring system helps traders assess the strength of support and resistance levels, with thicker lines indicating more significant levels.
This indicator is intended for educational and informational purposes only and should not be considered financial advice. Trading involves significant risk, and you should consult with a financial advisor before making any trading decisions. The performance of this indicator is not guaranteed, and past results do not predict future performance. Use at your own risk.
Three Anchored Moving Averages (VWAP / SMA / EMA)
This indicator allows users to anchor three types of moving averages (Simple Moving Average (SMA), Exponential Moving Average (EMA), and Volume Weighted Average Price (VWAP)) to specific points in time (anchor points)
Key Features:
Select from three Moving Average Types:
Simple Moving Average (SMA): Averages the closing prices over a specified period.
Exponential Moving Average (EMA): Gives more weight to recent prices, making it more responsive to new information.
Volume Weighted Average Price (VWAP): Averages the price weighted by volume, useful for understanding the average price at which the asset has traded over a period.
Up to Three Anchor Points:
Users can set up to three different anchor points to calculate the moving averages from specific dates and times. This allows for analysis of price action starting from significant points or specific events. For example, you can anchor to the low and high of a move to identify key levels or to points where the price takes off from a previous anchored MA.
Customisable Sentiment Options:
Each anchor point can be associated with a sentiment input (Auto, Bull, Bear, None), which influences if the MAs are displayed as lines or zones/bands:
Auto: Automatically determines the sentiment based on whether anchor points are on pivot highs and lows. If anchored to a pivot high, the system will assume a bearish sentiment and display a red band or zone between the MA OHLC4 and High. Anchoring to a pivot low will display a green band (OHLC4 - Low).
Bull: Forces a bullish sentiment (Green Band - OHLC4 to Low)
Bear: Forces a bearish sentiment (Red Band - OHLC4 to High)
None: Ignores sentiment and displays a single line (OHLC4)
Chart Matching:
The indicator includes an option to display the moving averages only if the chart symbol matches a specified ticker. This feature ensures that the indicator is relevant to the specific asset being analysed.
How to Use the Indicator:
1. Set Anchor Points: When added to your chart, select three anchor points by point and click. If you only wish to anchor to a single point, click on that point three times and disable the other two in settings once the indicator is applied.
2. Select Moving Average Type: Choose between SMA, EMA, or VWAP using the dropdown menu. EMAs are the most responsive.
3. Enable/Disable Anchor Points: Use the checkboxes to enable or disable each anchor point.
4. Select Sentiment Type: Choose between Auto, Bull, Bear, or None.
5. Chart Matching: Optionally, specify a chart symbol to restrict the indicator's display to that particular asset.
6. Interpret the Plots: The indicator plots the high, mid, and low values of the selected moving average type from each anchor point. The fills between these plots help identify potential support and resistance zones. These should be used as points of interest for pullback reversals or potential continuation if the price breaks through.
Practical Applications:
Trend Analysis: Identify the overall trend direction from specific historical points.
Support and Resistance: Determine key dynamic support and resistance levels based on anchored moving averages.
Event-Based Analysis: Anchor the moving averages to significant events (e.g., earnings releases, economic data) to study their impact on price trends.
Multi Timeframe Analysis: Higher Timeframe Anchors can be used to identify longer term trend analysis. Switching to a lower timeframe for execution triggers at these points wont distort the MA levels as they are anchored to a specific point in time
Intraday or Swing Trading: trend analysis using anchor points can be used for any style of trading (Intraday / Swing / Invest). Use anchored levels as points of interest and wait for hints in price action to try and catch the next move.
Dynamic Candle StrengthHow It Works
Initialization of Dynamic Levels:
The first candle's high and low are taken as the initial dynamic high and dynamic low levels.
If the next candle's close price is above the dynamic high, the candle is colored green, indicating bullish conditions.
If the next candle's close price is below the dynamic low, the candle is colored black, indicating bearish conditions.
If a candle's high and low crossed both the dynamic high and dynamic low, the dynamic high and low levels are updated to the high and low of that candle, but the candle color will continue with the same color as the previous candle.
Maintaining and Updating Dynamic Levels:
The dynamic high and low are only updated if a candle's close is above the current dynamic high or below the current dynamic low.
If the candle does not close above or below these levels, the dynamic high and low remain unchanged.
Visual Signals:
Green Bars: Indicate that the candle's close is above the dynamic high, suggesting bullish conditions.
Black Bars: Indicate that the candle's close is below the dynamic low, suggesting bearish conditions.
This method ensures that the dynamic high and low levels are adjusted in real-time based on the most recent significant price movements, providing a reliable measure of market sentiment.
Dynamic Order Blocks [LuxAlgo]The Dynamic Order Blocks indicator displays the most recent unmitigated bullish and bearish order blocks on the chart, providing dynamic support/resistance areas.
When price sweeps an order block, this is highlighted by the script indicating a potential reversal.
The average between the displayed order blocks is also displayed.
🔶 USAGE
Order blocks are a popular method of price action analysis, representing price areas where more significant market participants accumulate their orders.
Displaying order blocks dynamically allows obtaining relevant areas of support/resistance. Users can obtain longer-term order blocks using a higher "Swing Lookback" setting.
Users can also use mitigation events to assess the current trend direction, with price mitigating a bearish order block (breaking above the upper extremity) indicating an uptrend, and price mitigating a bullish order block (breaking below the lower extremity) indicating a downtrend.
🔹 Average Level
An average level obtained from the displayed bullish and bearish order blocks is included in the indicator and offers an additional polyvalent dynamic support/resistance level.
The change of direction of the average line can also be indicative of the current trend direction.
🔹 Dynamic Sweeps
Price sweeping the mitigation level of an order block is highlighted on the chart using bordered rectangles. These highlight a breakout failure and can be indicative of a potential reversal.
🔶 SETTINGS
Swing Lookback: Period of the swing detection used to construct order blocks. Higher values will return longer-term order blocks.
Use Candle Body: Use the candle body as the order block area instead of the candle full range.
DynamicFunctionsLibrary "DynamicFunctions"
Custom Dynamic functions that allow an adaptive calculation beginning from the first bar
RoC(src, period)
Dynamic RoC
Parameters:
src (float) : and period
Custom function to calculate the actual period considering non-na source values
period (int)
dynamicMedian(src, length)
Dynamic Median
Parameters:
src (float) : and length
length (int)
kernelRegression(src, bandwidth, kernel_type)
Dynamic Kernel Regression Calculation Uses either of the following inputs for kernel_type: Epanechnikov Logistic Wave
Parameters:
src (float)
bandwidth (int)
kernel_type (string)
waveCalculation(source, bandwidth, width)
Use together with kernelRegression function to get chart applicable band
Parameters:
source (float)
bandwidth (int)
width (float)
Rsi(src, length)
Dynamic RSI function
Parameters:
src (float)
length (int)
dynamicStdev(src, period)
Dynamic SD function
Parameters:
src (float)
period (int)
stdv_bands(src, length, mult)
Dynamic SD Bands
Parameters:
src (float)
length (int)
mult (float)
Returns: Basis, Positive SD, Negative SD
Adx(dilen, adxlen)
Dynamic ADX
Parameters:
dilen (int)
adxlen (int)
Returns: adx
Atr(length)
Dynamic ATR
Parameters:
length (int)
Returns: ATR
Macd(source, fastLength, slowLength, signalSmoothing)
Dynamic MACD
Parameters:
source (float)
fastLength (int)
slowLength (int)
signalSmoothing (int)
Returns: macdLine, signalLine, histogram
Advanced Dynamic Threshold RSI [Elysian_Mind]Advanced Dynamic Threshold RSI Indicator
Overview
The Advanced Dynamic Threshold RSI Indicator is a powerful tool designed for traders seeking a unique approach to RSI-based signals. This indicator combines traditional RSI analysis with dynamic threshold calculation and optional Bollinger Bands to generate weighted buy and sell signals.
Features
Dynamic Thresholds: The indicator calculates dynamic thresholds based on market volatility, providing more adaptive signal generation.
Performance Analysis: Users can evaluate recent price performance to further refine signals. The script calculates the percentage change over a specified lookback period.
Bollinger Bands Integration: Optional integration of Bollinger Bands for additional confirmation and visualization of potential overbought or oversold conditions.
Customizable Settings: Traders can easily customize key parameters, including RSI length, SMA length, lookback bars, threshold multiplier, and Bollinger Bands parameters.
Weighted Signals: The script introduces a unique weighting mechanism for signals, reducing false positives and improving overall reliability.
Underlying Calculations and Methods
1. Dynamic Threshold Calculation:
The heart of the Advanced Dynamic Threshold RSI Indicator lies in its ability to dynamically calculate thresholds based on multiple timeframes. Let's delve into the technical details:
RSI Calculation:
For each specified timeframe (1-hour, 4-hour, 1-day, 1-week), the Relative Strength Index (RSI) is calculated using the standard 14-period formula.
SMA of RSI:
The Simple Moving Average (SMA) is applied to each RSI, resulting in the smoothing of RSI values. This smoothed RSI becomes the basis for dynamic threshold calculations.
Dynamic Adjustment:
The dynamically adjusted threshold for each timeframe is computed by adding a constant value (5 in this case) to the respective SMA of RSI. This dynamic adjustment ensures that the threshold reflects changing market conditions.
2. Weighted Signal System:
To enhance the precision of buy and sell signals, the script introduces a weighted signal system. Here's how it works technically:
Signal Weighting:
The script assigns weights to buy and sell signals based on the crossover and crossunder events between RSI and the dynamically adjusted thresholds. If a crossover event occurs, the weight is set to 2; otherwise, it remains at 1.
Signal Combination:
The weighted buy and sell signals from different timeframes are combined using logical operations. A buy signal is generated if the product of weights from all timeframes is equal to 2, indicating alignment across timeframe.
3. Experimental Enhancements:
The Advanced Dynamic Threshold RSI Indicator incorporates experimental features for educational exploration. While not intended as proven strategies, these features aim to offer users a glimpse into unconventional analysis. Some of these features include Performance Calculation, Volatility Calculation, Dynamic Threshold Calculation Using Volatility, Bollinger Bands Module, Weighted Signal System Incorporating New Features.
3.1 Performance Calculation:
The script calculates the percentage change in the price over a specified lookback period (variable lookbackBars). This provides a measure of recent performance.
pctChange(src, length) =>
change = src - src
pctChange = (change / src ) * 100
recentPerformance1H = pctChange(close, lookbackBars)
recentPerformance4H = pctChange(request.security(syminfo.tickerid, "240", close), lookbackBars)
recentPerformance1D = pctChange(request.security(syminfo.tickerid, "1D", close), lookbackBars)
3.2 Volatility Calculation:
The script computes the standard deviation of the closing price to measure volatility.
volatility1H = ta.stdev(close, 20)
volatility4H = ta.stdev(request.security(syminfo.tickerid, "240", close), 20)
volatility1D = ta.stdev(request.security(syminfo.tickerid, "1D", close), 20)
3.3 Dynamic Threshold Calculation Using Volatility:
The dynamic thresholds for RSI are calculated by adding a multiplier of volatility to 50.
dynamicThreshold1H = 50 + thresholdMultiplier * volatility1H
dynamicThreshold4H = 50 + thresholdMultiplier * volatility4H
dynamicThreshold1D = 50 + thresholdMultiplier * volatility1D
3.4 Bollinger Bands Module:
An additional module for Bollinger Bands is introduced, providing an option to enable or disable it.
// Additional Module: Bollinger Bands
bbLength = input(20, title="Bollinger Bands Length")
bbMultiplier = input(2.0, title="Bollinger Bands Multiplier")
upperBand = ta.sma(close, bbLength) + bbMultiplier * ta.stdev(close, bbLength)
lowerBand = ta.sma(close, bbLength) - bbMultiplier * ta.stdev(close, bbLength)
3.5 Weighted Signal System Incorporating New Features:
Buy and sell signals are generated based on the dynamic threshold, recent performance, and Bollinger Bands.
weightedBuySignal = rsi1H > dynamicThreshold1H and rsi4H > dynamicThreshold4H and rsi1D > dynamicThreshold1D and crossOver1H
weightedSellSignal = rsi1H < dynamicThreshold1H and rsi4H < dynamicThreshold4H and rsi1D < dynamicThreshold1D and crossUnder1H
These features collectively aim to provide users with a more comprehensive view of market dynamics by incorporating recent performance and volatility considerations into the RSI analysis. Users can experiment with these features to explore their impact on signal accuracy and overall indicator performance.
Indicator Placement for Enhanced Visibility
Overview
The design choice to position the "Advanced Dynamic Threshold RSI" indicator both on the main chart and beneath it has been carefully considered to address specific challenges related to visibility and scaling, providing users with an improved analytical experience.
Challenges Faced
1. Differing Scaling of RSI Results:
RSI values for different timeframes (1-hour, 4-hour, and 1-day) often exhibit different scales, especially in markets like gold.
Attempting to display these RSIs on the same chart can lead to visibility issues, as the scaling differences may cause certain RSI lines to appear compressed or nearly invisible.
2. Candlestick Visibility vs. RSI Scaling:
Balancing the visibility of candlestick patterns with that of RSI values posed a unique challenge.
A single pane for both candlesticks and RSIs may compromise the clarity of either, particularly when dealing with assets that exhibit distinct volatility patterns.
Design Solution
Placing the buy/sell signals above/below the candles helps to maintain a clear association between the signals and price movements.
By allocating RSIs beneath the main chart, users can better distinguish and analyze the RSI values without interference from candlestick scaling.
Doubling the scaling of the 1-hour RSI (displayed in blue) addresses visibility concerns and ensures that it remains discernible even when compared to the other two RSIs: 4-hour RSI (orange) and 1-day RSI (green).
Bollinger Bands Module is optional, but is turned on as default. When the module is turned on, the users can see the upper Bollinger Band (green) and lower Bollinger Band (red) on the main chart to gain more insight into price actions of the candles.
User Flexibility
This dual-placement approach offers users the flexibility to choose their preferred visualization:
The main chart provides a comprehensive view of buy/sell signals in relation to candlestick patterns.
The area beneath the chart accommodates a detailed examination of RSI values, each in its own timeframe, without compromising visibility.
The chosen design optimizes visibility and usability, addressing the unique challenges posed by differing RSI scales and ensuring users can make informed decisions based on both price action and RSI dynamics.
Usage
Installation
To ensure you receive updates and enhancements seamlessly, follow these steps:
Open the TradingView platform.
Navigate to the "Indicators" tab in the top menu.
Click on "Community Scripts" and search for "Advanced Dynamic Threshold RSI Indicator."
Select the indicator from the search results and click on it to add to your chart.
This ensures that any future updates to the indicator can be easily applied, keeping you up-to-date with the latest features and improvements.
Review Code
Open TradingView and navigate to the Pine Editor.
Copy the provided script.
Paste the script into the Pine Editor.
Click "Add to Chart."
Configuration
The indicator offers several customizable settings:
RSI Length: Defines the length of the RSI calculation.
SMA Length: Sets the length of the SMA applied to the RSI.
Lookback Bars: Determines the number of bars used for recent performance analysis.
Threshold Multiplier: Adjusts the multiplier for dynamic threshold calculation.
Enable Bollinger Bands: Allows users to enable or disable Bollinger Bands integration.
Interpreting Signals
Buy Signal: Generated when RSI values are above dynamic thresholds and a crossover occurs.
Sell Signal: Generated when RSI values are below dynamic thresholds and a crossunder occurs.
Additional Information
The indicator plots scaled RSI lines for 1-hour, 4-hour, and 1-day timeframes.
Users can experiment with additional modules, such as machine-learning simulation, dynamic real-life improvements, or experimental signal filtering, depending on personal preferences.
Conclusion
The Advanced Dynamic Threshold RSI Indicator provides traders with a sophisticated tool for RSI-based analysis, offering a unique combination of dynamic thresholds, performance analysis, and optional Bollinger Bands integration. Traders can customize settings and experiment with additional modules to tailor the indicator to their trading strategy.
Disclaimer: Use of the Advanced Dynamic Threshold RSI Indicator
The Advanced Dynamic Threshold RSI Indicator is provided for educational and experimental purposes only. The indicator is not intended to be used as financial or investment advice. Trading and investing in financial markets involve risk, and past performance is not indicative of future results.
The creator of this indicator is not a financial advisor, and the use of this indicator does not guarantee profitability or specific trading outcomes. Users are encouraged to conduct their own research and analysis and, if necessary, consult with a qualified financial professional before making any investment decisions.
It is important to recognize that all trading involves risk, and users should only trade with capital that they can afford to lose. The Advanced Dynamic Threshold RSI Indicator is an experimental tool that may not be suitable for all individuals, and its effectiveness may vary under different market conditions.
By using this indicator, you acknowledge that you are doing so at your own risk and discretion. The creator of this indicator shall not be held responsible for any financial losses or damages incurred as a result of using the indicator.
Kind regards,
Ely
Dynamic Volume-Volatility Adjusted MomentumThis Indicator in a refinement of my earlier script PC*VC Moving average Old with easier to follow color codes, overbought and oversold zones. This script has converted the previous script into a standardized measure by converting it into Z-scores and also incorporated a volatility based dynamic length option. Below is a detailed Explanation.
The "Dynamic Volume-Volatility Adjusted Momentum" or "Nasan Momentum Oscillator" is designed to capture market momentum while accounting for volume and volatility fluctuations. It leverages the Typical Price (TP), calculated as the average of high, low, and close prices, and introduces the Price Coefficient (PC) based on deviations from the simple moving average (SMA) across various time frames. Additionally, the Volume Coefficient (VC) compares current volume to SMA, and calculates Intraday Volatility (IDV) which gauges the daily price range relative to the close. Then intraday volatility ratio is calculated ( IDV Ratio) as the ratio of current Intraday Volatility (IDV) to the average of IDV for three different length periods, which provides a relative measure of current intraday volatility compared to its recent historical average. An inter-day ATR based Relative Volatility (RV) is calculated to adjusts for changing market volatility based on which the dynamic length adjustment adapts the moving average (standard length is 14). The PC *VC/IDV Ratio integrates price, volume, and volatility information which provides a volume and volatility adjusted momentum. This volume and volatility adjusted momentum is converted into a standardized Z-Score. The Z-Score measures deviations from the mean. Color-coded plots visually represent momentum, and thresholds aid in identifying overbought or oversold conditions.
The indicator incorporates a nuanced approach to emphasize the joint impact of price and volume while considering the stabilizing effect of lower intraday volatility. Placing the volume ratio (VC) in the numerator means that higher volume positively contributes to the overall ratio, aligning with the observation that increased volumes often accompany robust price movements. Simultaneously, the decision to include the inverse of intraday volatility (1/IDV) in the denominator acts as a dampener, reducing the impact of extreme intraday volatility on the momentum indicator. This design choice aims to filter out noise, giving more weight to significant price changes supported by substantial trading activity. In essence, the indicator's design seeks to provide a more robust momentum measure that balances the influence of price, volume, and volatility in the analysis of market dynamics.
KeitoFX Dynamic Indicator Free vers.This script represents a versatile dynamic indicator called "KeitoFX Dynamic Indicator Free version." It is developed by the author "KeitoFX" and operates as a custom indicator overlaying on financial charts. The indicator utilizes a unique algorithm to dynamically identify bullish and bearish candlestick patterns with specific criteria.
Key Features:
- The indicator visually marks bullish and bearish candlestick patterns using triangle shapes, providing quick visual cues to traders.
- Bullish patterns are detected when the closing price is higher than the opening price and the high and low prices of the candlestick form a narrow range.
- Bearish patterns are identified when the closing price is lower than the opening price, and the high and low prices also form a narrow range.
The indicator incorporates flexible settings that users can customize to fit their trading preferences:
- Users can choose the table's placement, either at the "Top Right," "Middle Right," or "Bottom Right" of the chart.
- Customizable dimensions for the width and height of the table are available.
- Adjustable text size settings ranging from "Auto" to "Huge" are provided for the displayed text.
- A descriptive table containing trading rules and conditions is optionally displayed below the price chart.
Additional Information:
- The indicator's color scheme is harmonious, with shades of purple and neutral tones.
- The "Require FVG" setting influences the pattern detection's sensitivity.
- A dynamic standard deviation is calculated based on the selected displacement settings and historical candle ranges.
- A "FVG" condition enhances pattern accuracy.
- Bullish and bearish pattern detection includes overlapping with other predefined arrays to increase pattern significance.
Note:
This indicator is provided under the Mozilla Public License 2.0, as indicated by the source code comment at the beginning of the script. Users are encouraged to review and comply with the license terms when using this indicator in their trading activities.
Dynamic Stop Loss DemoWhat does this script do ?
This script is for pine script programmers and explains how to implement a dynamic stop-loss strategy. It is different from trailing stop-loss. Trailing stop-loss can only set the retracement value, but this script can take profit on part of the position at a fixed price and allows users to decide whether to take profit on all positions based on whether a certain track is breached or other conditions author want. In this demo, it use rsi crossover and crossunder to decide the strategy condition, and use close price as open price, and use lowest low / highest high as stop price, and use 1.5 risk ratio to calculate the fixed first profit price. It will take 50% position size when the first profit price was reached. Then it will close all rest positions when the inverse condition come out or the dynamic stop(calculated by ATR) breached or when the price back to the open price or the stop price.
How is this script implemented
When start strategy by strategy.entry , it gives a custom id which contains direction, openPrice, stopPrice, profitPrice, qty, etc. It can be get from the global variable strategy.posiition_entry_name .
Anchored Moving Averages - InteractiveWhat is an Anchored Moving Average?
An anchored moving average (AMA) is created when you select a point on the chart and start calculating the moving average from there.
Thus the moving average’s denominator is not fixed but cumulative and dynamic. It is similar to an Anchored VWAP, but neglecting the volume data, which may be useful when this data is not reliable and you want to focus just on price.
Main Features
This interactive indicator allows you to select 3 different points in time to plot their respective moving averages. As soon as you add the indicator to your chart you will be asked to click on the 3 different points where you want to start the calculation for each moving average.
Each AMA (Anchored Moving Average) will be colored according to its slope, using a gradient defined by two user chosen colors in the indicator menu.
The default source for the calculation is the pivot price (HLC3) but can also be modified in the menu.
Examples:
Enjoy!
Waddah Attar Explosion with TDI First of all, a big shoutout to @shayankm, @LazyBear, @Bromley, @Goldminds and @LuxAlgo, the ones that made this script possible.
This is a version of Waddah Attar Explosion with Traders Dynamic Index.
WAE provides volume and volatility information. Also, WAE calculation was changed to a full-on MACD, to provide the momentum: the idea is to "assess" which MACD bars have significant momentum (i.e. crossover the Explosion Line)
TDI provides momentum, divergences as well as overbought and oversold areas. There is also a RSI on a different timeframe, for convergence.
Almost everything is editable:
- All moving averages are customizable, including the TRAMA, from @LuxAlgo
Waddah Attar Explosion_
- Three different crossing signals: histogram crossing contracting Explosion Line, expanding Explosion Line and ascending Explosion Line while both Bolling Bands are expanding; Explosion Line shows different color when expanding.
- Explosion line signals: Below DeadZone line and Exhaustion (highest value in a given lookback period). You can set a predefined EPL slope to filter out some noise.
- Deadzone signal : Deadzone squeeze ( lowst value in a given lookback period)
TDI:
- Overbought an Oversold signals. The OB and OS shapes have two colors, in order to display extreme signals on current timeframe or extreme signals on current and different time frame.
- Visual display of RSI outside the Bollinger Bands, and crossing of RSI Moving Average crossing of zero line.
I believe this combination is great for so many reasons!
Like the idea of TTM Squeeze? You can tune the Deadzone and Explosion lines to look for a volatility breakout
Like trading divergences or want to filter out extreme areas? The RSI is great for that
You like the using the MACD strategy but don't like the amount of false signals given? this WAE version filters some of them out.
If you are a Bollinger bands fan, you can customize both indicators to trade breakouts and/or mean reversion strategies, and filter out exhaustion of the bands expansion
This is my first publication, so give it a go and provide feedback if possible.
Entry helperHello traders,
This is a script I use daily as a scalper and it helps me a lot, maybe it can help you, this is why I am sharing it!
PART 1 - DESCRIPTION
This program is specifically designed to help scalpers but can be used for all types of trading but won't be as useful.
This script is what I call an entry helper as it calculates dynamically the position size, stop loss and take profit levels and more.
When scalping and placing market entry orders, the price can move significantely while you are calculating your position size according to your stop loss, capital, risk and especially close price that changes very quickly, this results in a risk that is not ideally controlled and personally was a source of frustration and stress. I wanted to enter my quantity and stop loss values as fast as possible and make the process easier.
This script automates the calculation of the position size, stop loss and take profit levels according the the users input and prints the data visibly on the screen so it is easy to copy by the trader. It allows the trader to be confident that his risk is as controlled as possible.
The script is easy to use and set up, this guide will help you if you have any difficulies or questions.
PART 2 - HOW TO USE THE SCRIPT
- SET THE CAPITAL SETTINGS
1 - Set your capital value in $
- SET THE TRADE SETTINGS
2 - Set your trade side (BUY or SELL)
3 - Set you desired risk in % of your capital
- ENTRY SETTINGS
4 - Set your entry from 2 different options
|MARKET| (default option)
This option will place the entry level at the last available price
|LIMIT|
This option allows you to input a fixed price level for the entry
- STOP LOSS SETTINGS
5 - Select your stop loss placement from 4 different options
|EXTREMA STOP LOSS| (default option)
This option will place the stop loss at the highest/lowest (extrema) price level within the last N candles
|ATR EXTREMA|
This option uses the same price level as the EXTREMA STOP LOSS but will add/soustract the last ATR value (calculated on the N last candles) multiplied by a coefficient that you input
|TICKS EXTREMA|
This option uses the same price level as the EXTREMA STOP LOSS but will add/soustract a number of ticks that you input
|PRICE LEVEL|
This option allows you to input a fixed price level for the stop loss
- TAKE PROFIT SETTINGS
6 - Select your take profit from 3 different options
|NONE| (default option)
This option will not display any take profit level, I have added this option as I don't have take profit targets
|RR|
This option uses a risk to reward ratio (reward/risk) that you input, it will automatically calculate the take profit level that corresponds
|PRICE LEVEL|
This option allows you to input a fixed price level for the take profit
- QUANTITY AND FEE SETTINGS
7 - Set the quantity settings, it represents the quantity in a lot (usually 100 000 in forex, 100 in stocks 1 for crypto currencies)
8 - Set the fee per quantity (turning lot)
- VISUAL SETTINGS
9 - Show or remove the tab
- TAB SETTINGS
10 - Select the data that you want to display in the tab (the tab will adapt automatically)
NOTES:
The vertical dashed line shows what candle has been used for the calculation of the stop loss, it allows you to visualize what candle the script has selected in case of an EXTREMA stop loss option.
I hope this helps you out! Any suggestions are welcome and I hope that the guide is clear enough.
Happy trading!
Dynamic Highest Lowest Moving AverageSimilar to my last script, although this one uses the RSI value of
(highest high - price) / (price - lowest low)
to feed into the the logic creating the dynamic length. Choose how the length curve works by selecting either Incline, Decline, Peak or Trough.
Lastly select the moving average type to filter the result through to smoothen things out a bit
to find something that works for your strategy. This is useful as an entry/exit indicator along with other moving averages, or even just a standalone if you play with the settings enough.
Dynamic Array Table (versatile display methods)Library "datTable"
Dynamic Array Table.... Configurable Shape/Size Table from Arrays
Allows for any data in any size combination of arrays to join together
with:
all possible orientations!
filling all cells contiguously and/or flipping at boundaries
vertical or horizontal rotation
x/y axis direction swapping
all types array inputs for data.
please notify of any bugs. thanks
init(_posit)
Get Table (otional gapping cells)
Parameters:
_posit : String or Int (1-9 3x3 grid L to R)
Returns: Table
coords()
Req'd coords Seperate for VARIP table, non-varip coords
add
Add arrays to display table. coords reset each calc
uses displaytable object, string titles, and color optional array, and second line optional data array.
Strategy PnL LibraryLibrary "Strategy_PnL_Library"
TODO: This is a library that helps you learn current pnl of open position and use it to create your own dynamic take profit or stop loss rules based on current level of your profit. It should only be used with strategies.
inTrade()
inTrade: Checks if a position is currently open.
Returns: bool: true for yes, false for no.
notInTrade()
inTrade: Checks if a position is currently open. Interchangeable with inTrade but just here for simple semantics.
Returns: bool: true for yes, false for no.
pnl()
pnl: Calculates current profit or loss of position after the commission. If the strategy is not in trade it will always return na.
Returns: float: Current Profit or Loss of position, positive values for profit, negative values for loss.
entryBars()
entryBars: Checks how many bars it's been since the entry of the position.
Returns: int: Returns a int of strategy entry bars back. Minimum value is always corrected to 1 to avoid lookback errors.
pnlvelocity()
pnlvelocity: Calculates the velocity of pnl by following the change in open profit compared to previous bar. If the strategy is not in trade it will always return na.
Returns: float: Returns a float value of pnl velocity.
pnlacc()
pnlacc: Calculates the acceleration of pnl by following the change in profit velocity compared to previous bar. If the strategy is not in trade it will always return na.
Returns: float: Returns a float value of pnl acceleration.
pnljerk()
pnljerk: Calculates the jerk of pnl by following the change in profit acceleration compared to previous bar. If the strategy is not in trade it will always return na.
Returns: float: Returns a float value of pnl jerk.
pnlhigh()
pnlhigh: Calculates the highest value the pnl has reached since the start of the current position. If the strategy is not in trade it will always return na.
Returns: float: Returns a float highest value the pnl has reached.
pnllow()
pnllow: Calculates the lowest value the pnl has reached since the start of the current position. If the strategy is not in trade it will always return na.
Returns: float: Returns a float lowest value the pnl has reached.
pnldev()
pnldev: Calculates the deviance of the pnl since the start of the current position. If the strategy is not in trade it will always return na.
Returns: float: Returns a float deviance value of the pnl.
pnlvar()
pnlvar: Calculates the variance value of the pnl since the start of the current position. If the strategy is not in trade it will always return na.
Returns: float: Returns a float variance value of the pnl.
pnlstdev()
pnlstdev: Calculates the stdev value of the pnl since the start of the current position. If the strategy is not in trade it will always return na.
Returns: float: Returns a float stdev value of the pnl.
pnlmedian()
pnlmedian: Calculates the median value of the pnl since the start of the current position. If the strategy is not in trade it will always return na.
Returns: float: Returns a float median value of the pnl.
SUPER RSI [Gabbo]this indicator serves to differentiate the classic source of RSI
with these inputs you can modify the inputs of the different Bar's, you can choose between:
Candles = classic Candles
Heikin Hashi
Kagi
Line break
Pointfigure
Renko
Selecting the input: "Use Different Source ???" you can use a source with multiple elements of your choice
2 = (Source 1 + Source 2) / 2
3 = (Source 1 + Source 2 + Source 3) / 3
4 = (Source 1 + Source 2 + Source 3 + Source 4) / 4
5 = (Source 1 + Source 2 + Source 3 + Source 4 + Source 5) / 5
Variety RSI w/ Dynamic Zones [Loxx]Variety RSI w/ Dynamic Zones is an indicator with 7 different RSI types with Dynamic Zones. This indicator has signal crossing options for signal, middle, and all Dynamic Zone levels.
What is RSI?
The relative strength index ( RSI ) is a momentum indicator used in technical analysis . RSI measures the speed and magnitude of a security's recent price changes to evaluate overvalued or undervalued conditions in the price of that security.
The RSI is displayed as an oscillator (a line graph) on a scale of zero to 100. The indicator was developed by J. Welles Wilder Jr. and introduced in his seminal 1978 book, New Concepts in Technical Trading Systems.
The RSI can do more than point to overbought and oversold securities. It can also indicate securities that may be primed for a trend reversal or corrective pullback in price. It can signal when to buy and sell. Traditionally, an RSI reading of 70 or above indicates an overbought situation. A reading of 30 or below indicates an oversold condition.
What are Dynamic Zones?
As explained in "Stocks & Commodities V15:7 (306-310): Dynamic Zones by Leo Zamansky, Ph .D., and David Stendahl"
Most indicators use a fixed zone for buy and sell signals. Here’ s a concept based on zones that are responsive to past levels of the indicator.
One approach to active investing employs the use of oscillators to exploit tradable market trends. This investing style follows a very simple form of logic: Enter the market only when an oscillator has moved far above or below traditional trading lev- els. However, these oscillator- driven systems lack the ability to evolve with the market because they use fixed buy and sell zones. Traders typically use one set of buy and sell zones for a bull market and substantially different zones for a bear market. And therein lies the problem.
Once traders begin introducing their market opinions into trading equations, by changing the zones, they negate the system’s mechanical nature. The objective is to have a system automatically define its own buy and sell zones and thereby profitably trade in any market — bull or bear. Dynamic zones offer a solution to the problem of fixed buy and sell zones for any oscillator-driven system.
An indicator’s extreme levels can be quantified using statistical methods. These extreme levels are calculated for a certain period and serve as the buy and sell zones for a trading system. The repetition of this statistical process for every value of the indicator creates values that become the dynamic zones. The zones are calculated in such a way that the probability of the indicator value rising above, or falling below, the dynamic zones is equal to a given probability input set by the trader.
To better understand dynamic zones, let's first describe them mathematically and then explain their use. The dynamic zones definition:
Find V such that:
For dynamic zone buy: P{X <= V}=P1
For dynamic zone sell: P{X >= V}=P2
where P1 and P2 are the probabilities set by the trader, X is the value of the indicator for the selected period and V represents the value of the dynamic zone.
The probability input P1 and P2 can be adjusted by the trader to encompass as much or as little data as the trader would like. The smaller the probability, the fewer data values above and below the dynamic zones. This translates into a wider range between the buy and sell zones. If a 10% probability is used for P1 and P2, only those data values that make up the top 10% and bottom 10% for an indicator are used in the construction of the zones. Of the values, 80% will fall between the two extreme levels. Because dynamic zone levels are penetrated so infrequently, when this happens, traders know that the market has truly moved into overbought or oversold territory.
Calculating the Dynamic Zones
The algorithm for the dynamic zones is a series of steps. First, decide the value of the lookback period t. Next, decide the value of the probability Pbuy for buy zone and value of the probability Psell for the sell zone.
For i=1, to the last lookback period, build the distribution f(x) of the price during the lookback period i. Then find the value Vi1 such that the probability of the price less than or equal to Vi1 during the lookback period i is equal to Pbuy. Find the value Vi2 such that the probability of the price greater or equal to Vi2 during the lookback period i is equal to Psell. The sequence of Vi1 for all periods gives the buy zone. The sequence of Vi2 for all periods gives the sell zone.
In the algorithm description, we have: Build the distribution f(x) of the price during the lookback period i. The distribution here is empirical namely, how many times a given value of x appeared during the lookback period. The problem is to find such x that the probability of a price being greater or equal to x will be equal to a probability selected by the user. Probability is the area under the distribution curve. The task is to find such value of x that the area under the distribution curve to the right of x will be equal to the probability selected by the user. That x is the dynamic zone.
Included
RSI source pre-smoothing options
Bar coloring
4 types of signal crossing options
Alerts
Loxx's Expanded Source Types
Loxx's RSI Variety RSI types
Dynamic Zone of Bollinger Band Stops Line [Loxx]Dynamic Zone of Bollinger Band Stops Line is a Bollinger Band indicator with Dynamic Zones. This indicator serves as both a trend indicator and a dynamic stop-loss indicator.
What are Bollinger Bands?
A Bollinger Band is a technical analysis tool defined by a set of trendlines plotted two standard deviations (positively and negatively) away from a simple moving average (SMA) of a security's price, but which can be adjusted to user preferences.
Bollinger Bands were developed and copyrighted by famous technical trader John Bollinger, designed to discover opportunities that give investors a higher probability of properly identifying when an asset is oversold or overbought.
What are Dynamic Zones?
As explained in "Stocks & Commodities V15:7 (306-310): Dynamic Zones by Leo Zamansky, Ph .D., and David Stendahl"
Most indicators use a fixed zone for buy and sell signals. Here’ s a concept based on zones that are responsive to past levels of the indicator.
One approach to active investing employs the use of oscillators to exploit tradable market trends. This investing style follows a very simple form of logic: Enter the market only when an oscillator has moved far above or below traditional trading lev- els. However, these oscillator- driven systems lack the ability to evolve with the market because they use fixed buy and sell zones. Traders typically use one set of buy and sell zones for a bull market and substantially different zones for a bear market. And therein lies the problem.
Once traders begin introducing their market opinions into trading equations, by changing the zones, they negate the system’s mechanical nature. The objective is to have a system automatically define its own buy and sell zones and thereby profitably trade in any market — bull or bear. Dynamic zones offer a solution to the problem of fixed buy and sell zones for any oscillator-driven system.
An indicator’s extreme levels can be quantified using statistical methods. These extreme levels are calculated for a certain period and serve as the buy and sell zones for a trading system. The repetition of this statistical process for every value of the indicator creates values that become the dynamic zones. The zones are calculated in such a way that the probability of the indicator value rising above, or falling below, the dynamic zones is equal to a given probability input set by the trader.
To better understand dynamic zones, let's first describe them mathematically and then explain their use. The dynamic zones definition:
Find V such that:
For dynamic zone buy: P{X <= V}=P1
For dynamic zone sell: P{X >= V}=P2
where P1 and P2 are the probabilities set by the trader, X is the value of the indicator for the selected period and V represents the value of the dynamic zone.
The probability input P1 and P2 can be adjusted by the trader to encompass as much or as little data as the trader would like. The smaller the probability, the fewer data values above and below the dynamic zones. This translates into a wider range between the buy and sell zones. If a 10% probability is used for P1 and P2, only those data values that make up the top 10% and bottom 10% for an indicator are used in the construction of the zones. Of the values, 80% will fall between the two extreme levels. Because dynamic zone levels are penetrated so infrequently, when this happens, traders know that the market has truly moved into overbought or oversold territory.
Calculating the Dynamic Zones
The algorithm for the dynamic zones is a series of steps. First, decide the value of the lookback period t. Next, decide the value of the probability Pbuy for buy zone and value of the probability Psell for the sell zone.
For i=1, to the last lookback period, build the distribution f(x) of the price during the lookback period i. Then find the value Vi1 such that the probability of the price less than or equal to Vi1 during the lookback period i is equal to Pbuy. Find the value Vi2 such that the probability of the price greater or equal to Vi2 during the lookback period i is equal to Psell. The sequence of Vi1 for all periods gives the buy zone. The sequence of Vi2 for all periods gives the sell zone.
In the algorithm description, we have: Build the distribution f(x) of the price during the lookback period i. The distribution here is empirical namely, how many times a given value of x appeared during the lookback period. The problem is to find such x that the probability of a price being greater or equal to x will be equal to a probability selected by the user. Probability is the area under the distribution curve. The task is to find such value of x that the area under the distribution curve to the right of x will be equal to the probability selected by the user. That x is the dynamic zone.
Included
Bar coloring
Signals
Alerts
3 types of signal smoothing
EchoMorphicAverageLibrary "EchoMorphicAverage"
Original Self Referencing Moving Average which references
it's own output agsainst itself and the incoming source to dynamically
alter smoothness and length internally per calculation cycle.
@kaigouthro
Inputs are float length series.
Contact Me for More Dynamic Float Length Indicators.
wema(src, mod, len)
Waited Echo-Morphic Average
Parameters:
src : (float) input value
mod : (float) modifier(0-1) mix of current value
len : (float) length
Returns: output processed smoothed value
wemaStack(src, mod, len)
Stacked Multipass Waited Echo-Morphic Average
Parameters:
src : (float) input value
mod : (float) modifier(0-1) mix of current value
len : (float) length
Returns: output processed smoothed value