Kalman Volume Filter [ChartPrime]The "Kalman Volume Filter" , aims to provide insights into market volume dynamics by filtering out noise and identifying potential overbought or oversold conditions. Let's break down its components and functionality:
Settings:
Users can adjust various parameters to customize the indicator according to their preferences:
Volume Length: Defines the length of the volume period used in calculations.
Stabilization Coefficient (k): Determines the level of noise reduction in the signals.
Signal Line Length: Sets the length of the signal line used for identifying trends.
Overbought & Oversold Zone Level: Specifies the threshold levels for identifying overbought and oversold conditions.
Source: Allows users to select the price source for volume calculations.
Volume Zone Oscillator (VZO):
Calculates a volume-based oscillator indicating the direction and intensity of volume movements.
Utilizes a volume direction measurement over a specified period to compute the oscillator value.
Normalizes the oscillator value to improve comparability across different securities or timeframes.
// VOLUME ZONE OSCILLATOR
VZO(get_src, length) =>
Volume_Direction = get_src > get_src ? volume : -volume
VZO_volume = ta.hma(Volume_Direction, length)
Total_volume = ta.hma(volume, length)
VZO = VZO_volume / (Total_volume)
VZO := (VZO - 0) / ta.stdev(VZO, 200)
VZO
Kalman Filter:
Applies a Kalman filter to smooth out the VZO values and reduce noise.
Utilizes a stabilization coefficient (k) to control the degree of smoothing.
Generates a filtered output representing the underlying volume trend.
// KALMAN FILTER
series float M_n = 0.0 // - the resulting value of the current calculation
series float A_n = VZO // - the initial value of the current measurement
series float M_n_1 = nz(M_n ) // - the resulting value of the previous calculation
float k = input.float(0.06) // - stabilization coefficient
// Kalman Filter Formula
kalm(k)=>
k * A_n + (1 - k) * M_n_1
Volume Visualization:
Displays the volume histogram, with color intensity indicating the strength of volume movements.
Adjusts bar colors based on volume bursts to highlight significant changes in volume.
Overbought and Oversold Zones:
Marks overbought and oversold levels on the chart to assist in identifying potential reversal points.
Plotting:
Plots the Kalman Volume Filter line and a signal line for visual analysis.
Utilizes different colors and fills to distinguish between rising and falling trends.
Highlights specific events such as local buy or sell signals, as well as overbought or oversold conditions.
This indicator provides traders with a comprehensive view of volume dynamics, trend direction, and potential market turning points, aiding in informed decision-making during trading activities.
Filter
Kalman Hull Supertrend [BackQuant]Kalman Hull Supertrend
At its core, this indicator uses a Kalman filter of price, put inside of a hull moving average function (replacing the weighted moving averages) and then using that as a price source for the supertrend instead of the normal hl2 (high+low/2).
Therefore, making it more adaptive to price and also sensitive to recent price action.
PLEASE Read the following, knowing what an indicator does at its core before adding it into a system is pivotal. The core concepts can allow you to include it in a logical and sound manner.
1. What is a Kalman Filter
The Kalman Filter is an algorithm renowned for its efficiency in estimating the states of a linear dynamic system amidst noisy data. It excels in real-time data processing, making it indispensable in fields requiring precise and adaptive filtering, such as aerospace, robotics, and financial market analysis. By leveraging its predictive capabilities, traders can significantly enhance their market analysis, particularly in estimating price movements more accurately.
If you would like this on its own, with a more in-depth description please see our Kalman Price Filter.
2. Hull Moving Average (HMA) and Its Core Calculation
The Hull Moving Average (HMA) improves on traditional moving averages by combining the Weighted Moving Average's (WMA) smoothness and reduced lag. Its core calculation involves taking the WMA of the data set and doubling it, then subtracting the WMA of the full period, followed by applying another WMA on the result over the square root of the period's length. This methodology yields a smoother and more responsive moving average, particularly useful for identifying market trends more rapidly.
3. Combining Kalman Filter with HMA
The innovative combination of the Kalman Filter with the Hull Moving Average (KHMA) offers a unique approach to smoothing price data. By applying the Kalman Filter to the price source before its incorporation into the HMA formula, we enhance the adaptiveness and responsiveness of the moving average. This adaptive smoothing method reduces noise more effectively and adjusts more swiftly to price changes, providing traders with clearer signals for market entries or exits.
The calculation is like so:
KHMA(_src, _length) =>
f_kalman(2 * f_kalman(_src, _length / 2) - f_kalman(_src, _length), math.round(math.sqrt(_length)))
4. Integration with Supertrend
Incorporating this adaptive price smoothing technique into the Supertrend indicator further enhances its efficiency. The Supertrend, known for its proficiency in identifying the prevailing market trend and providing clear buy or sell signals, becomes even more powerful with an adaptive price source. This integration allows the Supertrend to adjust more dynamically to market changes, offering traders more accurate and timely trading signals.
5. Application in a Trading System
In a trading system, the Kalman Hull Supertrend indicator can serve as a critical component for identifying market trends and generating signals for potential entry and exit points. Its adaptiveness and sensitivity to price changes make it particularly useful for traders looking to minimize lag in signal generation and improve the accuracy of their market trend analysis. Whether used as a standalone tool or in conjunction with other indicators, its dynamic nature can significantly enhance trading strategies.
6. Core Calculations and Benefits
The core of this indicator lies in its sophisticated filtering and averaging techniques, starting with the Kalman Filter's predictive adjustments, followed by the adaptive smoothing of the Hull Moving Average, and culminating in the trend-detecting capabilities of the Supertrend. This multi-layered approach not only reduces market noise but also adapts to market volatility more effectively. Benefits include improved signal accuracy, reduced lag, and the ability to discern trend changes more promptly, offering traders a competitive edge.
Thus following all of the key points here are some sample backtests on the 1D Chart
Disclaimer: Backtests are based off past results, and are not indicative of the future.
INDEX:BTCUSD
INDEX:ETHUSD
BINANCE:SOLUSD
TASC 2024.04 The Ultimate Smoother█ OVERVIEW
This script presents an implementation of the digital smoothing filter introduced by John Ehlers in his article "The Ultimate Smoother" from the April 2024 edition of TASC's Traders' Tips .
█ CONCEPTS
The UltimateSmoother preserves low-frequency swings in the input time series while attenuating high-frequency variations and noise. The defining input parameter of the UltimateSmoother is the critical period , which represents the minimum wavelength (highest frequency) in the filter's pass band. In other words, the filter attenuates or removes the amplitudes of oscillations at shorter periods than the critical period.
According to Ehlers, one primary advantage of the UltimateSmoother is that it maintains zero lag in its pass band and minimal lag in its transition band, distinguishing it from other conventional digital filters (e.g., moving averages ). One can apply this smoother to various input data series, including other indicators.
█ CALCULATIONS
Ehlers derived the UltimateSmoother using inspiration from the design principles he learned from his experience with analog filters , as described in the original publication. On a technical level, the UltimateSmoother's unique response involves subtracting a high-pass response from an all-pass response . At very low frequencies (lengthy periods), where the high-pass filter response has virtually no amplitude, the subtraction yields a frequency and phase response practically equivalent to the input data. At other frequencies, the subtraction achieves filtration through cancellation due to the close similarities in response between the high-pass filter and the input data.
LTI_FiltersLinear Time-Invariant (LTI) filters are fundamental tools in signal processing that operate with consistent behavior over time and linearly respond to input signals. They are crucial for analyzing and manipulating signals in various applications, ensuring the output signal's integrity is maintained regardless of when an input is applied or its magnitude. The Windowed Sinc filter is a specific type of LTI filter designed for digital signal processing. It employs a Sinc function, ideal for low-pass filtering, truncated and shaped within a finite window to make it practically implementable. This process involves multiplying the Sinc function by a window function, which tapers off towards the ends, making the filter finite and suitable for digital applications. Windowed Sinc filters are particularly effective for tasks like data smoothing and removing unwanted frequency components, balancing between sharp cutoff characteristics and minimal distortion. The efficiency of Windowed Sinc filters in digital signal processing lies in their adept use of linear algebra, particularly in the convolution process, which combines input data with filter coefficients to produce the desired output. This mathematical foundation allows for precise control over the filtering process, optimizing the balance between filtering performance and computational efficiency. By leveraging linear algebra techniques such as matrix multiplication and Toeplitz matrices, these filters can efficiently handle large datasets and complex filtering tasks, making them invaluable in applications requiring high precision and speed, such as audio processing, financial signal analysis, and image restoration.
Library "LTI_Filters"
offset(length, enable)
Calculates the time offset required for aligning the output of a filter with its input, based on the filter's length. This is useful for centered filters where the output is naturally shifted due to the filter's operation.
Parameters:
length (simple int) : The length of the filter.
enable (simple bool) : A boolean flag to enable or dissable the offset calculation.
Returns: The calculated offset if enabled; otherwise, returns 0.
lti_filter(filter_type, source, length, prefilter, centered, fc, window_type)
General-purpose Linear Time-Invariant (LTI) filter function that can apply various filter types to a data series. Can be used to apply a variety of LTI filters with different characteristics to financial data series or other time series data.
Parameters:
filter_type (simple string) : Specifies the type of filter. ("Sinc", "SMA", "WMA")
source (float) : The input data series to filter.
length (simple int) : The length of the filter.
prefilter (simple bool) : Boolean indicating whether to prefilter the input data.
centered (simple bool) : Determines whether the filter coefficients are centered.
fc (simple float) : Filter cutoff. Expressed like a length.
window_type (simple string) : Type of window function to apply. ("Hann", "Hamming", "Blackman", "Triangular", "Lanczos", "None")
Returns: The filtered data series.
lti_sma(source, length, prefilter)
Applies a Simple Moving Average (SMA) filter to the data series. Useful for smoothing data series to identify trends or for use as a component in more complex indicators.
Parameters:
source (float) : The input data series to filter.
length (simple int) : The length of the SMA filter.
prefilter (simple bool) : Boolean indicating whether to prefilter the input data.
Returns: The SMA-filtered data series.
lti_wma(source, length, prefilter, centered)
Applies a Weighted Moving Average (WMA) filter to a data series. Ideal for smoothing data with emphasis on more recent values, allowing for dynamic adjustments to the weighting scheme.
Parameters:
source (float) : The input data series to filter.
length (simple int) : The length of the WMA filter.
prefilter (simple bool) : Boolean indicating whether to prefilter the input data.
centered (simple bool) : Determines whether the filter coefficients are centered.
Returns: The WMA-filtered data series.
lti_sinc(source, length, prefilter, centered, fc, window_type)
Applies a Sinc filter to a data series, optionally using a window function. Particularly useful for signal processing tasks within financial analysis, such as smoothing or trend identification, with the ability to fine-tune filter characteristics.
Parameters:
source (float) : The input data series to filter.
length (simple int) : The length of the Sinc filter.
prefilter (simple bool) : Boolean indicating whether to prefilter the input data.
centered (simple bool) : Determines whether the filter coefficients are centered.
fc (simple float) : Filter cutoff. Expressed like a length.
window_type (simple string) : Type of window function to apply. ("Hann", "Hamming", "Blackman", "Triangular", "Lanczos", "None")
Returns: The Sinc-filtered data series.
PhiSmoother Moving Average Ribbon [ChartPrime]DSP FILTRATION PRIMER:
DSP (Digital Signal Processing) filtration plays a critical role with financial indication analysis, involving the application of digital filters to extract actionable insights from data. Its primary trading purpose is to distinguish and isolate relevant signals separate from market noise, allowing traders to enhance focus on underlying trends and patterns. By smoothing out price data, DSP filters aid with trend detection, facilitating the formulation of more effective trading techniques.
Additionally, DSP filtration can play an impactful role with detecting support and resistance levels within financial movements. By filtering out noise and emphasizing significant price movements, identifying key levels for entry and exit points become more apparent. Furthermore, DSP methods are instrumental in measuring market volatility, enabling traders to assess volatility levels with improved accuracy.
In summary, DSP filtration techniques are versatile tools for traders and analysts, enhancing decision-making processes in financial markets. By mitigating noise and highlighting relevant signals, DSP filtration improves the overall quality of trading analysis, ultimately leading to better conclusions for market participants.
APPLYING FIR FILTERS:
FIR (Finite Impulse Response) filters are indispensable tools in the realm of financial analysis, particularly for trend identification and characterization within market data. These filters effectively smooth out price fluctuations and noise, enabling traders to discern underlying trends with greater fidelity. By applying FIR filters to price data, robust trading strategies can be developed with grounded trend-following principles, enhancing their ability to capitalize on market movements.
Moreover, FIR filter applications extend into wide-ranging utility within various fields, one being vital for informed decision-making in analysis. These filters help identify critical price levels where assets may tend to stall or reverse direction, providing traders with valuable insights to aid with identification of optimal entry and exit points within their indicator arsenal. FIRs are undoubtedly a cornerstone to modern trading innovation.
Additionally, FIR filters aid in volatility measurement and analysis, allowing traders to gauge market volatility accurately and adjust their risk management approaches accordingly. By incorporating FIR filters into their analytical arsenal, traders can improve the quality of their decision-making processes and achieve better trading outcomes when contending with highly dynamic market conditions.
INTRODUCTORY DEBUT:
ChartPrime's " PhiSmoother Moving Average Ribbon " indicator aims to mark a significant advancement in technical analysis methodology by removing unwanted fluctuations and disturbances while minimizing phase disturbance and lag. This indicator introduces PhiSmoother, a powerful FIR filter in it's own right comparable to Ehlers' SuperSmoother.
PhiSmoother leverages a custom tailored FIR filter to smooth out price fluctuations by mitigating aliasing noise problematic to identification of underlying trends with accuracy. With adjustable parameters such as phase control, traders can fine-tune the indicator to suit their specific analytical needs, providing a flexible and customizable solution.
Mathemagically, PhiSmoother incorporates various color coding preferences, enabling traders to visualize trends more effectively on a volatile landscape. Whether utilizing progression, chameleon, or binary color schemes, you can more fluidly interpret market dynamics and make informed visual decisions regarding entry and exit points based on color-coded plotting.
The indicator's alert system further enhances its utility by providing notifications of specifically chosen filter crossings. Traders can customize alert modes and messages while ensuring they stay informed about potential opportunities aligned with their trading style.
Overall, the "PhiSmoother Moving Average Ribbon" visually stands out as a revolutionary mechanism for technical analysis, offering traders a comprehensive solution for trend identification, visualization, and alerting within financial markets to achieve advantageous outcomes.
NOTEWORTHY SETTINGS FEATURES:
Price Source Selection - The indicator offers flexibility in choosing the price source for analysis. Traders can select from multiple options.
Phase Control Parameter - One of the notable standout features of this indicator is the phase control parameter. Traders can fine-tune the phase or lag of the indicator to adapt it to different market conditions or timeframes. This feature enables optimization of the indicator's responsiveness to price movements and align it with their specific trading tactics.
Coloring Preferences - Another magical setting is the coloring features, one being "Chameleon Color Magic". Traders can customize the color scheme of the indicator based on their visual preferences or to improve interpretation. The indicator offers options such as progression, chameleon, or binary color schemes, all having versatility to dynamically visualize market trends and patterns. Two colors may be specifically chosen to reduce overlay indicator interference while also contrasting for your visual acuity.
Alert Controls - The indicator provides diverse alert controls to manage alerts for specific market events, depending on their trading preferences.
Alertable Crossings: Receive an alert based on selectable predefined crossovers between moving average neighbors
Customizable Alert Messages: Traders can personalize alert messages with preferred information details
Alert Frequency Control: The frequency of alerts is adjustable for maximum control of timely notifications
Table to filter trades per dayThis script contains a block of code that allows users to filter the total number of trades, loss trades, win trades and win rate per day in a table. This makes it easier to compare which days were profitable and which were not.
Be aware that this script can only be used in strategy scripts. To use the script, open it and copy every line from "START" to "STOP". Then, paste these lines at the very bottom of the strategy script that you want to attach it to.
The user has the ability to adjust the position of the table and customize the size of the text displayed.
If the user sets "Check when the trade:" to "Opened", the script will monitor when the trade opens and add it to the table once it has been closed. If "Check when the trade:" is set to "Closed", the script will track when the trade is closed and add it to the table once it has been closed.
It is recommended to run the script on the "Exchange" setting for more accurate results, even though a "Set the timezone" option is available. This will prevent discrepancies caused by daylight saving time changes.
Please note that the code will only work properly if you choose a daily timeframe or lower.
FunctionsLibrary "Functions"
half_candle()
Half Candles
Returns: half candles (difference between open and close)
super_smoother(source, len)
Ehlers Super Smoother
Parameters:
source (float) : Source
len (int)
Returns: super smoothed moving average
quotient(length, K)
Ehlers early onset trend
Parameters:
length (int) : Length (default = 1)
K (float) : Factor (default = 0.8)
Returns: Ehlers early onset trend
butterworth_2Pole(src, length)
Ehlers 2 Pole Butterworth Filter
Parameters:
src (float) : Source
length (int) : Length
Returns: Ehlers 2 Pole Butterworth Filter
hann_ma(src, length)
Ehler's Hann Moving Average
Parameters:
src (float) : Source
length (int) : Length
Returns: Ehler's Hann Moving Average
oef(src)
Ehlers Optimum Elliptic Filter
Parameters:
src (float) : Source
Returns: Ehlers Optimum Elliptic Filter
moef(src)
Ehlers Modified Optimum Elliptic Filter
Parameters:
src (float) : Source
Returns: Ehlers Modified Optimum Elliptic Filter
arsi(src, length)
Advanced RSI
Parameters:
src (float) : Source
length (simple int) : Length (default = 14)
Returns: ARSI
smoothrng(src, length, multi)
Smooth Range
Parameters:
src (float) : Source
length (simple int) : Length
multi (float) : Multiplikator (default 3.0)
Returns: Smooth Range
chrono_utilsLibrary "chrono_utils"
📝 Description
Collection of objects and common functions that are related to datetime windows session days and time ranges. The main purpose of this library is to handle time-related functionality and make it easy to reason about a future bar checking if it will be part of a predefined session and/or inside a datetime window. All existing session functionality I found in the documentation e.g. "not na(time(timeframe, session, timezone))" are not suitable for strategy scripts, since the execution of the orders is delayed by one bar, due to the script execution happening at the bar close. Moreover, a history operator with a negative value that looks forward is not allowed in any pinescript expression. So, a prediction for the next bar using the bars_back argument of "time()"" and "time_close()" was necessary. Thus, I created this library to overcome this small but very important limitation. In the meantime, I added useful functionality to handle session-based behavior. An interesting utility that emerged from this development is data anomaly detection where a comparison between the prediction and the actual value is happening. If those two values are different then a data inconsistency happens between the prediction bar and the actual bar (probably due to a holiday, half session day, a timezone change etc..)
🤔 How to Guide
To use the functionality this library provides in your script you have to import it first!
Copy the import statement of the latest release by pressing the copy button below and then paste it into your script. Give a short name to this library so you can refer to it later on. The import statement should look like this:
import jason5480/chrono_utils/2 as chr
To check if a future bar will be inside a window first of all you have to initialize a DateTimeWindow object.
A code example is the following:
var dateTimeWindow = chr.DateTimeWindow.new().init(fromDateTime = timestamp('01 Jan 2023 00:00'), toDateTime = timestamp('01 Jan 2024 00:00'))
Then you have to "ask" the dateTimeWindow if the future bar defined by an offset (default is 1 that corresponds th the next bar), will be inside that window:
// Filter bars outside of the datetime window
bool dateFilterApproval = dateTimeWindow.is_bar_included()
You can visualize the result by drawing the background of the bars that are outside the given window:
bgcolor(color = dateFilterApproval ? na : color.new(color.fuchsia, 90), offset = 1, title = 'Datetime Window Filter')
In the same way, you can "ask" the Session if the future bar defined by an offset it will be inside that session.
First of all, you should initialize a Session object.
A code example is the following:
var sess = chr.Session.new().from_sess_string(sess = '0800-1700:23456', refTimezone = 'UTC')
Then check if the given bar defined by the offset (default is 1 that corresponds th the next bar), will be inside the session like that:
// Filter bars outside the sessions
bool sessionFilterApproval = view.sess.is_bar_included()
You can visualize the result by drawing the background of the bars that are outside the given session:
bgcolor(color = sessionFilterApproval ? na : color.new(color.red, 90), offset = 1, title = 'Session Filter')
In case you want to visualize multiple session ranges you can create a SessionView object like that:
var view = SessionView.new().init(SessionDays.new().from_sess_string('2345'), array.from(SessionTimeRange.new().from_sess_string('0800-1600'), SessionTimeRange.new().from_sess_string('1300-2200')), array.from('London', 'New York'), array.from(color.blue, color.orange))
and then call the draw method of the SessionView object like that:
view.draw()
🏋️♂️ Please refer to the "EXAMPLE DATETIME WINDOW FILTER" and "EXAMPLE SESSION FILTER" regions of the script for more advanced code examples of how to utilize the full potential of this library, including user input settings and advanced visualization!
⚠️ Caveats
As I mentioned in the description there are some cases that the prediction of the next bar is not accurate. A wrong prediction will affect the outcome of the filtering. The main reasons this could happen are the following:
Public holidays when the market is closed
Half trading days usually before public holidays
Change in the daylight saving time (DST)
A data anomaly of the chart, where there are missing and/or inconsistent data.
A bug in this library (Please report by PM sending the symbol, timeframe, and settings)
Special thanks to @robbatt and @skinra for the constructive feedback 🏆. Without them, the exposed API of this library would be very lengthy and complicated to use. Thanks to them, now the user of this library will be able to get the most, with only a few lines of code!
two_ma_logicLibrary "two_ma_logic"
The core logic for the two moving average strategy that is used as an example for the internal logic of
the "Template Trailing Strategy" and the "Two MA Signal Indicator"
ma(source, maType, length)
ma - Calculate the moving average of the given source for the given length and type of the average
Parameters:
source (float) : - The source of the values
maType (simple string) : - The type of the moving average
length (simple int) : - The length of the moving average
Returns: - The resulted value of the calculations of the moving average
getDealConditions(drawings, longDealsEnabled, shortDealsEnabled, endDealsEnabled, cnlStartDealsEnabled, cnlEndDealsEnabled, emaFilterEnabled, emaAtrBandEnabled, adxFilterEnabled, adxSmoothing, diLength, adxThreshold)
Parameters:
drawings (TwoMaDrawings)
longDealsEnabled (simple bool)
shortDealsEnabled (simple bool)
endDealsEnabled (simple bool)
cnlStartDealsEnabled (simple bool)
cnlEndDealsEnabled (simple bool)
emaFilterEnabled (simple bool)
emaAtrBandEnabled (simple bool)
adxFilterEnabled (simple bool)
adxSmoothing (simple int)
diLength (simple int)
adxThreshold (simple float)
TwoMaDrawings
Fields:
fastMA (series__float)
slowMA (series__float)
emaLine (series__float)
emaUpperBand (series__float)
emaLowerBand (series__float)
Laguerre RSI - non repaintingIt seems that the traditional Laguerre* functions repaint due to the gamma parameter.
That goes even for the editorial pick here.
But one could use calculation period instead of "gamma" parameter. This gives us a non-repainting Laguerre RSI fit for scalping trends.
At first glance, I haven't seen anyone do this with a pine script, but I could be wrong because it's not a big deal.
So here is a variation of Laguerre RSI, without repainting. It's a little bit more insensitive, but this is not of great importance, since only the extreme values are used for confirmation.
( * Laguerre RSI is based on John EHLERS' Laguerre Filter to avoid the noise of RSI.)
And if you implement this indicator into a strategy (like I do) I can give you a trick.
Traditionaly the condition is at follows:
LaRSI = cd == 0 ? 100 : cu / (cu + cd)
(this is the final part of the indicator before the plotting)
LongLaguerre= LaRSIupb
It's fine for the short (ot exit long), but for the long is better to make a swich between the CD and CU parameters, as follows:
LaRSI1 = cd == 0 ? 100 : cu / (cu + cd)
LaRSI2 = cu == 0 ? 100 : cu / (cu + cd)
LongLaguerre= LaRSI2upb
White NoiseThe "White Noise" indicator is designed to visualize the dispersion of price movements around a moving average, providing insights into market noise and potential trend changes. It highlights periods of increased volatility or noise compared to the underlying trend.
Code Explanation:
Inputs:
mlen: Input for the length of the noise calculation.
hlen: Input for the length of the Hull moving average.
col_up: Input for the color of the up movement.
col_dn: Input for the color of the down movement.
Calculations:
ma: Calculate the simple moving average of the high, low, and close prices (hlc3) over the specified mlen period.
dist: Calculate the percentage distance between the hlc3 and the moving average ma, then scale it by 850. This quantifies the deviation from the moving average as a value.
sm: Smooth the calculated dist values using a weighted moving average (WMA) twice, with different weights, and subtract one from the other. This provides a smoothed representation of the dispersion.
Coloring:
col_wn: Determine the color of the bars based on whether dist is positive or negative and whether it's greater or less than the smoothed sm value. This creates color-coded columns indicating upward or downward movements with varying opacity.
col_switch: Define the color for the current trend state. It switches color when the smoothed sm crosses above or below its previous value, indicating potential trend changes.
col_switch2: Define the color for the horizontal line that separates the two trend states. It switches color based on the same crossover and crossunder conditions as col_switch.
Plots:
plot(dist): Plot the dispersion values as columns with color defined by col_wn.
plot(sm): Plot the smoothed dispersion line with a white color and thicker linewidth.
plot(sm ): Plot the previous smoothed dispersion value with a lighter white color to create a visual distinction.
Usage:
This indicator can help traders identify periods of increased market noise, visualize potential trend reversals, and assess the strength of price movements around the moving average. The colored columns and smoothed line offer insights into the ebb and flow of market sentiment, aiding in decision-making.
ps. This can be used as a long-term TPI component if you dabble in Modern Portfolio Theory (MPT)
Recommended for timeframes on the 1D or above:
Sublime Trading | Trend Strength FilterWhat kind of traders/investors are we?
We are trend followers. Our scripts are designed to be used on the higher timeframes (weekly/daily) to catch the large moves/trends in the market.
Most have heard of long-term trend following. Few know how to execute the strategy.
Our scripts are designed specifically to identify and invest in long-term market trends.
What does this script do?
Identifying trends is at the heart of sound investing.
This script is colour coded to help identify long-term trends and environments where you will want to consider taking positions.
It is also designed to identify sideways/consolidating markets, environments where you will want to consider standing aside.
How is the trailing stoploss produced?
The script uses two sets of Bollinger Bands, one with setting Standard Deviation 1 and the other with Standard Deviation 2.
These settings help to create 3 zones - Buy, Sell and Stand Aside.
The bars will change colour according to which zone they are in.
The Buy zone is colour-coded green, and when a bull market or the start of a bull trend is in play. The green switches from light green to dark green as the asset’s price moves above the Buy zone.
This switch in colour serves as a warning that a reversal/pullback may occur next from bullish to bearish.
The Sell zone is colour-coded red and when a bear market or the start of a bear trend is in play. The red switches from light red to dark red as the asset’s price moves below the Sell zone.
This switch in colour serves as a warning that a reversal/pullback may occur next from bearish to bullish.
The Stand Aside is confirmed when the colour-code changes to grey. This may not necessarily mean a trend reversal but simply a time to apply patience before a trend continuation.
A sustained mixture of red, green and grey bars confirms a consolidation or sideways market and when investors/traders will want to stand aside and consider another asset.
What is the best timeframe to use the script?
Long-term trends are identified on the daily and weekly timeframes where traders and investors take fewer positions but hold for longer time periods.
We recommend using the script in unison on the weekly and daily timeframes.
When both timeframes fall into the Buy zone and colour-coded green, it signifies a strong bull market.
When both timeframes fall into the Sell zone and colour-coded red, it signifies a strong bear market.
When there is a mixture of green, red and grey bars across the two timeframes, it signifies a sideways market and when investors stand aside and protect their capital.
The weekly timeframe will also help mask the noise on the daily timeframe, allowing you to hold positions longer.
The Trailing Strength Filter script is for investors who want to identify and invest in long-term trends whilst simultaneously eliminating intraday swings.
What makes this script unique?
Identifying the start of long-term trends and then riding out established trends are among the main struggles budding investors face. This script has been coded specifically for the daily and weekly timeframe to:
Seamlessly identify the start, middle and end of trends
Align with the market and remove social media noise calling market tops and bottoms
Allow for discretion when entering but particularly exiting of positions if a market trend has not ended
This trend filter script ensures alignment with long-term market trends.
Pro ScalperOverview
The Pro Scalper indicator is a powerful day trading tool designed specifically for the 30-minute timeframe, catering to stock and cryptocurrency markets. It provides traders with buy and sell signals, dynamic overbought/oversold zones, and reversal signal indicators. By combining a Kalman-adapted Supertrend calculation for buy and sell signals, and VWMA bands to determine overbought/oversold zones, this indicator aims to assist traders in identifying potential trading opportunities for scalping and day trading strategies using trend-following and mean-reverting methods. This combination of Kalman Filtering with an adapted Supertrend seeks to mitigate false signals, filter out market noise, and aims to provide traders with more reliable buy and sell indications.
Features
Buy and Sell Signals: Pro Scalper generates buy and sell signals based on a Kalman-adapted Supertrend calculation. These signals help traders identify potential entry and exit points in the market.
Dynamic Overbought/Oversold Zones: The indicator dynamically calculates overbought and oversold zones using VWMA bands. These zones provide valuable insights into potential price exhaustion levels, aiding traders in managing risk and identifying potential reversals.
Reversal Signals (R Labels): The indicator includes "R" labels that indicate potential reversal signals. These signals are based on the overbought/oversold zones calculated with VWMA bands. The appearance of an "R" label suggests a possible price reversal, offering traders an additional tool for decision-making.
Calculations
This indicator stands out as a unique tool due to unique Kalman filtering and altered Supertrend calculation, as well as its combination of specific features. This indicator combines the following calculations to provide its features:
Kalman Filter: The indicator employs a Kalman Filter to adapt the Supertrend calculation. This calculation was based on mathematical equations derived from Rudolf E. Kalman. This Kalman Filter helps smooth out price data, reducing noise and removing outliers from data.
Supertrend Calculation: This particular supertrend possesses alterations to price series data and ATR calculations in an aim to improve signal accuracy. Additionally, the calculation uses Kalman-filtering within the calculation to provide a powerful framework to handle uncertainties, noise, and changing conditions.
VWMA Bands: VWMA (Volume-Weighted Moving Average) bands are calculated using the highest high and lowest low values with specified multipliers. These bands are used to determine the dynamic overbought and oversold zones, giving traders insights into potential price exhaustion levels. These are included with the aim to adapt to changing market conditions and price data. This adaptability allows the zones to accurately reflect the current price volatility and trend.
Utility
This tool provides traders with valuable information for scalping and day trading strategies in the 30-minute timeframe. It helps traders by:
Generating buy and sell signals, indicating potential entry and exit points.
Calculating dynamic overbought/oversold zones, enabling traders to identify potential price exhaustion levels.
Displaying "R" labels to highlight potential reversal signals.
Offering optional alerts for reversal signals, buy/sell signals, allowing traders to stay updated even when they're not actively monitoring the charts.
Remember, past performance does not guarantee future performance. Traders should utilize this indicator as part of a comprehensive trading strategy and exercise their own judgment when making trading decisions.
Savitzky-Golay Filtered Chande Momentum OscillatorThe Savitzky-Golay Filtered Chande Momentum Oscillator (SGCMO) is a modified version of the Chande Momentum Oscillator that functions as a powerful analytical tool, capable of detecting trends and mean reversals. By applying a Savitzky-Golay filter to the price data, the oscillator provides enhanced visualization and smoother readings. (credit to © anieri for the Savitzky-Golay filter code: www.tradingview.com)
Chande Momentum Oscillator
The Chande Momentum Oscillator (CMO) is a technical indicator developed by Tushar Chande. It measures the momentum of an asset's price movement and provides insights into the overbought or oversold conditions of the market. The CMO calculates the difference between the sum of positive price changes and the sum of negative price changes over a specified period, and then normalizes it to a scale between -100 and +100. Traders and investors use the CMO to identify potential trend reversals, confirm the strength of a current trend, and generate buy or sell signals.
Smoothing
The Savitzky-Golay filter is a digital filter commonly employed for smoothing and noise reduction in time-series data. In the context of the SGCMO, the aim is to effectively smooth the CMO values, reducing the impact of short-term fluctuations and providing clearer insights into underlying trends. Additionally, an exponential moving average (EMA) filter is applied to further reduce noise and enhance trend visibility. This filtered CMO indicator may provide traders and investors with a clearer and more refined representation of momentum changes in the underlying asset, helping them make more informed trading decisions.
Application
The SGCMO serves as both a trend-following and mean-reversion tool. Traders can track the current trend using bullish white lines or bearish orange lines in trending markets. Alternatively, they can utilize green and red vertical lines, which indicate price retracement and help capture pullbacks and reversals. Green vertical lines appear when the trend reverses upwards in an oversold zone (-50 to -80), while red vertical lines indicate negative trend reversals in an overbought zone (50 to 80). Opening long positions when green and white lines appear, or short positions when red and orange lines are visible, can be considered. However, it is advisable to combine this indicator with other complementary technical analysis tools and incorporate it into a comprehensive trading strategy to maximize its effectiveness.
Kalman Filtered ROC & Stochastic with MA SmoothingThe "Smooth ROC & Stochastic with Kalman Filter" indicator is a trend following tool designed to identify trends in the price movement. It combines the Rate of Change (ROC) and Stochastic indicators into a single oscillator, the combination of ROC and Stochastic indicators aims to offer complementary information: ROC measures the speed of price change, while Stochastic identifies overbought and oversold conditions, allowing for a more robust assessment of market trends and potential reversals. The indicator plots green "B" labels to indicate buy signals and blue "S" labels to represent sell signals. Additionally, it displays a white line that reflects the overall trend for buy signals and a blue line for sell signals. The aim of the indicator is to incorporate Kalman and Moving Average (MA) smoothing techniques to reduce noise and enhance the clarity of the signals.
Rationale for using Kalman Filter:
The Kalman Filter is chosen as a smoothing tool in the indicator because it effectively reduces noise and fluctuations. The Kalman Filter is a mathematical algorithm used for estimating and predicting the state of a system based on noisy and incomplete measurements. It combines information from previous states and current measurements to generate an optimal estimate of the true state, while simultaneously minimizing the effects of noise and uncertainty. In the context of the indicator, the Kalman Filter is applied to smooth the input data, which is the source for the Rate of Change (ROC) calculation. By considering the previous smoothed state and the difference between the current measurement and the predicted value, the Kalman Filter dynamically adjusts its estimation to reduce the impact of outliers.
Calculation:
The indicator utilizes a combination of the ROC and the Stochastic indicator. The ROC is smoothed using a Kalman Filter (credit to © Loxx: ), which helps eliminate unwanted fluctuations and improve the signal quality. The Stochastic indicator is calculated with customizable parameters for %K length, %K smoothing, and %D smoothing. The smoothed ROC and Stochastic values are then averaged using the formula ((roc + d) / 2) to create the blended oscillator. MA smoothing is applied to the combined oscillator aiming to further reduce fluctuations and enhance trend visibility. Traders are free to choose their own preferred MA type from 'EMA', 'DEMA', 'TEMA', 'WMA', 'VWMA', 'SMA', 'SMMA', 'HMA', 'LSMA', and 'PEMA' (credit to: © traderharikrishna for this code: ).
Application:
The indicator's buy signals (represented by green "B" labels) indicate potential entry points for buying assets, suggesting a bullish trend. The white line visually represents the trend, helping traders identify and follow the upward momentum. Conversely, the sell signals (blue "S" labels) highlight possible exit points or opportunities for short selling, indicating a bearish trend. The blue line illustrates the bearish movement, aiding in the identification of downward momentum.
The "Smoothed ROC & Stochastic" indicator offers traders a comprehensive view of market trends by combining two powerful oscillators. By incorporating the ROC and Stochastic indicators into a single oscillator, it provides a more holistic perspective on the market's momentum. The use of a Kalman Filter for smoothing helps reduce noise and enhance the accuracy of the signals. Additionally, the indicator allows customization of the smoothing technique through various moving average types. Traders can also utilize the overbought and oversold zones for additional analysis, providing insights into potential market reversals or extreme price conditions. Please note that future performance of any trading strategy is fundamentally unknowable, and past results do not guarantee future performance.
Discrete Fourier Transformed Money Flow IndexThe Discrete Fourier Transform Money Flow Index indicator integrates the Money Flow Index (MFI) with Discrete Fourier Transform (credit to author wbburgin - May 26 2023 ) smoothing to offer a refined and smoothed depiction of the MFI's underlying trend. The MFI is calculated using the formula: MFI = 100 - (100 / (1 + MR)), where a high MFI value indicates robust buying pressure (signaling an overbought condition), and a low MFI value indicates substantial selling pressure (signaling an oversold condition).
Why is the DFT and MFI combined?
The aim of this combination between DFT and MFI is to effectively filter out short-term fluctuations and noise, enabling a clearer assessment of the overall trend. This smoothing process enhances the reliability of the MFI by emphasizing dominant and sustained buying or selling pressures. This script executes a full DFT but only uses filtering from one frequency component. The choice to focus on the magnitude at index 0 is significant as it captures the dominant or fundamental frequency in the data. By analyzing this primary cyclic behavior, we can identify recurring patterns and potential turning points more easily. This streamlined approach simplifies interpretation and enhances efficiency by reducing complexity associated with multiple frequency components. Overall, focusing on the dominant frequency and applying it to the MFI provides a concise and actionable assessment of the underlying data.
Note: The FMFI indicator provides both smoothed and non-smoothed versions of the MFI, with the option to toggle the original non-smoothed MFI on or off in the settings.
Application
FMFI functions as a trend-following indicator. Bullish trends are denoted by the color white, while bearish trends are represented by the color purple. Circles plotted on the FMFI indicate regular bull and bear signals. Additionally, red arrows indicate a strong negative trend, while green arrows indicate a strong positive trend. These arrows are calculated based on the presence of regular bull and bear signals within overbought and oversold zones. To enhance its effectiveness, it is recommended to combine this indicator with other complementary technical analysis tools and integrate it into a comprehensive trading strategy. Traders are encouraged to explore a wide range of settings and timeframes to align the indicator with their unique trading preferences and adapt it to the current market conditions. By doing so, traders can optimize the indicator's performance and increase their potential for successful trading outcomes.
Utility
Traders and investors can employ this indicator to enhance their trend-following strategies. The white-colored components of the FMFI can help identify potential buying zones, while the purple-colored components can assist in identifying potential selling points. The red and green arrows can be used to pinpoint moments of strong bull or bear momentum, allowing traders to position themselves advantageously in their trading activities. Please note that future performance of any trading strategy is fundamentally unknowable, and past results do not guarantee future performance.
ALMA Smoothed Gaussian Moving AverageThis indicator is an altered version of the Gaussian Moving Average (GMA) (Credit to author: © LeafAlgo ). The GMA applies weights to the prices, giving more importance to the values closer to the current period and gradually diminishing the significance of older prices. The ALMA Smoothed Gaussian Moving Average (ASGMA) applies an ALMA smoothing to its price data to minimize lag and provide a more accurate representation of the underlying trend by dynamically adapting to changing market conditions. The Arnaud Legoux Moving Average (ALMA) is a specialized smoothing technique that adjusts the weights of the moving average based on market volatility. Its calculation uses Wavelet Transform techniques which enables this type of smoothing to capture both high-frequency and low-frequency components of a signal or data. The rationale for this mashup between ALMA and Gaussian filtering is to smooth the moving average line over the smoothed price data and produce stronger trend signals.
ASGMA serves as a trend-following indicator, identifying both bullish and bearish trends. It provides buy and sell signals indicated by "B" and "S" labels plotted alongside the price data. Additionally, the ASGMA's Exponential Moving Average (EMA) line alternates between green and red, indicating bullish and bearish momentum, respectively.
The ASGMA also incorporates two popular momentum indicators, the Relative Strength Index (RSI) and the Chande Momentum Oscillator (CMO). The inclusion of these indicators aims to enhance trend identification and reversal signals. For a strong buy signal, all three indicators (RSI, CMO, and ASGMA) must indicate bullish conditions, resulting in a vertical green line. Conversely, a vertical red line is plotted when all indicators indicate bearish conditions, representing a strong sell signal.
The ASGMA, with its unique combination of smoothing techniques and indicator amalgamation, provides traders and investors with powerful analytical tools. It can be applied in trend-following strategies using the regular buy and sell signals generated by labels and the EMA line. Alternatively, the vertical lines offer stronger buy and sell signals. These features aid in identifying potential entry and exit points, thereby enhancing trading decisions and market analysis. However, it is important to remember that the future performance of any trading strategy is fundamentally unknowable, and past results do not guarantee future performance.
Moving Average-TREND POWER v2.0-(AS)HELLO:
-This indicator is a waaaay simpler version of my other script - Moving Average-TREND POWER v1.1-(AS).
HOW DOES IT WORK:
-Script counts number of bars below or above selected Moving Average (u can se them by turning PLOT BARS on). Then multiplies number of bars by 0.01 and adds previous value. So in the uptrend indicator will be growing faster with every bar when price is above MA. When MA crosess price Value goes to zero so it shows when the market is ranging.
If Cross happens when number of bars is higher than Upper threshold or below Lower threshold indicator will go back to zero only if MA crosses with high in UPtrend and low in DNtrend. If cross happens inside THSs Value will be zero when MA crosses with any type of price source like for example (close,high,low,ohlc4,hl etc.....).This helps to get more crosess in side trend and less resets during a visible trend
HOW TO SET:
Just select what type of MA you want to use and Length. Then based on your preference set values of THSs'
OTHER INFORMATIONS:
-Script was created and tested on EURUSD 5M.
-For bigger trends choose slowerMAs and bigger periods and the other way around for short trends (FasterMAs/shorter periods)
-Below script code you can find not used formulas for calculating indicator value(thanks chat GPT), If you know some pinescript I encourage you to try try them or maybe bulid better ones. Script uses most basic one.
-Pls give me some feedback/ideas to improve and check out first version. Its way more complicated for no real reason but still worth to take a look'
-Also let me know if you find some logical errors in the code.
Enjoy and till we meet again.
Hann Window Amplitude FilterThis script is designed to implement a multi-signal Hann filter, which is essentially a movable Hann window filter. The purpose of this filter is to allow users to select the periods or frequencies that best align with their trading strategy or market analysis.
The Hann window filter operates by enabling the selection of either lower or higher frequencies. The period of the window is twice the number of signals you wish to filter. As you shift the window by the number of your signals, the signal on one side will have an amplitude of 0, while the other side will have an amplitude of 1.
Continuing to shift the window will result in new values of 0. This feature is particularly useful for further filtering the frequencies or periods that you want to focus on for your trading decisions.
In summary, this script provides a flexible and customizable tool for filtering signals based on their frequency or period, which can be a valuable addition to any trader's technical analysis toolkit.
custom Bollinger bands with filters - indicator (AS)-----------Description-------------
This indicator is basically Bollinger bands with many ways to customize. It uses highest and lowest values of upper and lower band for exits. I think something is wrong with the script but cant find any mistakes – most probably smoothing. The ATR filter is implemented but is working incorrectly. In code you can also turn it into strategy but I do not recommend it for now as it is not ready yet.
So this is my first script and I am looking for any advice, ideas to improve this script, sets of parameters, markets to apply, logical mistakes in code or any ideas that you may have. Indicator was initially designed for EURUSD 5MIN but I would be interested in other ideas.
-----------SETTINGS--------------
---START - In starting settings we can choose
Line 1: what parts to use BB/DC/ATR
Line 2: what parts to plot on chart
Line 3 Whether or not apply smoothing to BB or ATR filter
Line 4 Calculate deviation for BB from price or Moving average
Line 5 Fill colors and plot other parts for debug (overlay=false)
Line 6:( for strategy) – enable Long/Short Trades
---BB and DC – here we modify Bollinger bands and Donchian
Line 1: Length and type of BB middle line and also length of DC from BB
Line 2: Length and type of BB standard deviation and multiplier
Line 3: Length and type of BB smoothing and %width for BB filter
---ATR filter – (not ready fully yet)
Line 1: type and length of ATR
Line 2: threshold and smoothing value of ATR
---DATE and SESSION
Line 1: apply custom date or session?
Line 2: session hours settings
Line 3:Custom starting date
Line 4: Custom Ending date
-----------HOW TO USE--------------
We open Long if BB width is bigger than threshold and close when upper band is no longer highest in the period set. Exact opposite with Short
Range Filter x Hull SuiteRange Filter x Hull Suite
This indicator is a hybrid of two popular indicators, with a twist; namely the Range Filter (Guikroth version) and the Hull Suite (by Insilico) .
Originally developed as a 1 minute trend following strategy and traded during the New York Session for it's typically high volume / likely trending nature, it provides entry signals based on the following logic:
For bullish entry signals:
The first bullish* candle (*defined by the Range Filter bar color logic, blue by default - which is not necessarily technically a bullish candle as defined by the OHLC values) which appears after the consolidation candles (also defined by the Range Filter bar color logic, orange by default), and where the Hull Suite moving average is also bullish.
For bearish entry signals:
The first bearish* candle (*defined by the Range Filter bar color logic, red by default - which is not necessarily technically a bearish candle as defined by the OHLC values) which appears after the consolidation candles (also defined by the Range Filter bar color logic, orange by default), and where the Hull Suite moving average is also bearish.
The indicator aims to filter out signals where possible consolidation is occurring and comes with styling options and alternative filter options such as a triple moving average trend detection method. Signals can also be filtered by a specific trading session. Standard options for the Range Filter and Hull Suite settings are also able to be customised within the settings menu.
Alerts
Various alerts are built-in, including the custom entry signals unique to this strategy.
Note : The above features listed above are accurate at the time of publishing, but may be altered in future.
Many thanks to guikroth & Insilico for sharing their open source indicators, and also to the original developer of the strategy itself for sharing it.
Variety MA Cluster Filter Crosses [Loxx]What is a Cluster Filter?
One of the approaches to determining a useful signal (trend) in stream data. Small filtering (smoothing) tests applied to market quotes demonstrate the potential for creating non-lagging digital filters (indicators) that are not redrawn on the last bars.
Standard Approach
This approach is based on classical time series smoothing methods. There are lots of articles devoted to this subject both on this and other websites. The results are also classical:
1. The changes in trends are displayed with latency;
2. Better indicator (digital filter) response achieved at the expense of smoothing quality decrease;
3. Attempts to implement non-lagging indicators lead to redrawing on the last samples (bars).
And whereas traders have learned to cope with these things using persistence of economic processes and other tricks, this would be unacceptable in evaluating real-time experimental data, e.g. when testing aerostructures.
The Main Problem
It is a known fact that the majority of trading systems stop performing with the course of time, and that the indicators are only indicative over certain intervals. This can easily be explained: market quotes are not stationary. The definition of a stationary process is available in Wikipedia:
A stationary process is a stochastic process whose joint probability distribution does not change when shifted in time.
Judging by this definition, methods of analysis of stationary time series are not applicable in technical analysis. And this is understandable. A skillful market-maker entering the market will mess up all the calculations we may have made prior to that with regard to parameters of a known series of market quotes.
Even though this seems obvious, a lot of indicators are based on the theory of stationary time series analysis. Examples of such indicators are moving averages and their modifications. However, there are some attempts to create adaptive indicators. They are supposed to take into account non-stationarity of market quotes to some extent, yet they do not seem to work wonders. The attempts to "punish" the market-maker using the currently known methods of analysis of non-stationary series (wavelets, empirical modes and others) are not successful either. It looks like a certain key factor is constantly being ignored or unidentified.
The main reason for this is that the methods used are not designed for working with stream data. All (or almost all) of them were developed for analysis of the already known or, speaking in terms of technical analysis, historical data. These methods are convenient, e.g., in geophysics: you feel the earthquake, get a seismogram and then analyze it for few months. In other words, these methods are appropriate where uncertainties arising at the ends of a time series in the course of filtering affect the end result.
When analyzing experimental stream data or market quotes, we are focused on the most recent data received, rather than history. These are data that cannot be dealt with using classical algorithms.
Cluster Filter
Cluster filter is a set of digital filters approximating the initial sequence. Cluster filters should not be confused with cluster indicators.
Cluster filters are convenient when analyzing non-stationary time series in real time, in other words, stream data. It means that these filters are of principal interest not for smoothing the already known time series values, but for getting the most probable smoothed values of the new data received in real time.
Unlike various decomposition methods or simply filters of desired frequency, cluster filters create a composition or a fan of probable values of initial series which are further analyzed for approximation of the initial sequence. The input sequence acts more as a reference than the target of the analysis. The main analysis concerns values calculated by a set of filters after processing the data received.
In the general case, every filter included in the cluster has its own individual characteristics and is not related to others in any way. These filters are sometimes customized for the analysis of a stationary time series of their own which describes individual properties of the initial non-stationary time series. In the simplest case, if the initial non-stationary series changes its parameters, the filters "switch" over. Thus, a cluster filter tracks real time changes in characteristics.
Cluster Filter Design Procedure
Any cluster filter can be designed in three steps:
1. The first step is usually the most difficult one but this is where probabilistic models of stream data received are formed. The number of these models can be arbitrary large. They are not always related to physical processes that affect the approximable data. The more precisely models describe the approximable sequence, the higher the probability to get a non-lagging cluster filter.
2. At the second step, one or more digital filters are created for each model. The most general condition for joining filters together in a cluster is that they belong to the models describing the approximable sequence.
3. So, we can have one or more filters in a cluster. Consequently, with each new sample we have the sample value and one or more filter values. Thus, with each sample we have a vector or artificial noise made up of several (minimum two) values. All we need to do now is to select the most appropriate value.
An Example of a Simple Cluster Filter
For illustration, we will implement a simple cluster filter corresponding to the above diagram, using market quotes as input sequence. You can simply use closing prices of any time frame.
1. Model description. We will proceed on the assumption that:
The aproximate sequence is non-stationary, i.e. its characteristics tend to change with the course of time.
The closing price of a bar is not the actual bar price. In other words, the registered closing price of a bar is one of the noise movements, like other price movements on that bar.
The actual price or the actual value of the approximable sequence is between the closing price of the current bar and the closing price of the previous bar.
The approximable sequence tends to maintain its direction. That is, if it was growing on the previous bar, it will tend to keep on growing on the current bar.
2. Selecting digital filters. For the sake of simplicity, we take two filters:
The first filter will be a variety filter calculated based on the last closing prices using the slow period. I believe this fits well in the third assumption we specified for our model.
Since we have a non-stationary filter, we will try to also use an additional filter that will hopefully facilitate to identify changes in characteristics of the time series. I've chosen a variety filter using the fast period.
3. Selecting the appropriate value for the cluster filter.
So, with each new sample we will have the sample value (closing price), as well as the value of MA and fast filter. The closing price will be ignored according to the second assumption specified for our model. Further, we select the МА or ЕМА value based on the last assumption, i.e. maintaining trend direction:
For an uptrend, i.e. CF(i-1)>CF(i-2), we select one of the following four variants:
if CF(i-1)fastfilter(i), then CF(i)=slowfilter(i);
if CF(i-1)>slowfilter(i) and CF(i-1)slowfilter(i) and CF(i-1)>fastfilter(i), then CF(i)=MAX(slowfilter(i),fastfilter(i)).
For a downtrend, i.e. CF(i-1)slowfilter(i) and CF(i-1)>fastfilter(i), then CF(i)=MAX(slowfilter(i),fastfilter(i));
if CF(i-1)>slowfilter(i) and CF(i-1)fastfilter(i), then CF(i)=fastfilter(i);
if CF(i-1)<slowfilter(i) and CF(i-1)<fastfilter(i), then CF(i)=MIN(slowfilter(i),fastfilter(i)).
Where:
CF(i) – value of the cluster filter on the current bar;
CF(i-1) and CF(i-2) – values of the cluster filter on the previous bars;
slowfilter(i) – value of the slow filter
fastfilter(i) – value of the fast filter
MIN – the minimum value;
MAX – the maximum value;
What is Variety MA Cluster Filter Crosses?
For this indicator we calculate a fast and slow filter of the same filter and then we run a cluster filter between the fast and slow filter outputs to detect areas of chop/noise. The output is the uptrend is denoted by green color, downtrend by red color, and chop/noise/no-trade zone by white color. As a trader, you'll likely want to avoid trading during areas of chop/noise so you'll want to avoid trading when the color turns white.
Extras
Bar coloring
Alerts
Loxx's Expanded Source Types, see here:
Loxx's Moving Averages, see here:
An example of filtered chop, see the yellow circles. The cluster filter identifies chop zones so you don't get stuck in a sideways market.
Ehlers Undersampled Double Moving Average Indicator [CC]The Undersampled Double Moving Average was created by John Ehlers (Stocks and Commodities April 2023), and this is a double moving average system which is pretty rare for John Ehlers. For those of you who would like my other take on an Ehlers double moving average, be sure to check out my previous Ehlers double moving average script . He came up with a unique idea for this indicator to create a moving average using a sample of the price data. For example, we use his suggested length of 5 only to use the price data every 5 bars. Feel free to change this, and please let me know if you find a length that works better. He then smooths the indicator using the Hann Windowed Moving Average . I color-coded the lines to show stronger signals in darker colors or standard signals in lighter colors. Buy when the line turns green and sell when it turns red.
Let me know if there is an indicator or script you would like to see me publish!