Smoothed RWI(Random Walk Index)Smoothed Random Walk Index.
It gives slightly slower but less false signal than stochastic.
If it draws double bottom with higher low, long entry is considered.
If it draws double with lower high, short entry is considered.
For more accuracy, another smoothed RWI with slower setting is needed.
If fast setting RWI draws lower high AND slower setting RWI is also going down(red color),
short entry is considered with more confidence.
Smoothing
Edge-Preserving FilterIntroduction
Edge-preserving smoothing is often used in image processing in order to preserve edge information while filtering the remaining signal. I introduce two concepts in this indicator, edge preservation and an adaptive cumulative average allowing for fast edge-signal transition with period increase over time. This filter have nothing to do with classic filters for image processing, those filters use kernels convolution and are most of the time in a spatial domain.
Edge Detection Method
We want to minimize smoothing when an edge is detected, so our first goal is to detect an edge. An edge will be considered as being a peak or a valley, if you recall there is one of my indicator who aim to detect peaks and valley (reference at the bottom of the post) , since this estimation return binary outputs we will use it to tell our filter when to stop filtering.
Filtering Increase By Using Multi Steps Cumulative Average
The edge detection is a binary output, using a exponential smoothing could be possible and certainly more efficient but i wanted instead to try using a cumulative average approach because it smooth more and is a bit more original to use an adaptive architecture using something else than exponential averaging. A cumulative average is defined as the sum of the price and the previous value of the cumulative average and then this result is divided by n with n = number of data points. You could say that a cumulative average is a moving average with a linear increasing period.
So lets call CMA our cumulative average and n our divisor. When an edge is detected CMA = close price and n = 1 , else n is equal to previous n+1 and the CMA act as a normal cumulative average by summing its previous values with the price and dividing the sum by n until a new edge is detected, so there is a "no filtering state" and a "filtering state" with linear period increase transition, this is why its multi-steps.
The Filter
The filter have two parameters, a length parameter and a smooth parameter, length refer to the edge detection sensitivity, small values will detect short terms edges while higher values will detect more long terms edges. Smooth is directly related to the edge detection method, high values of smooth can avoid the detection of some edges.
smooth = 200
smooth = 50
smooth = 3
Conclusion
Preserving the price edges can be useful when it come to allow for reactivity during important price points, such filter can help with moving average crossover methods or can be used as a source for other indicators making those directly dependent of the edge detection.
Rsi with a period of 200 and our filter as source, will cross triggers line when an edge is detected
Feel free to share suggestions ! Thanks for reading !
References
Peak/Valley estimator used for the detection of edges in price.
Zero Phase Filtering [Repaint] - ExperimentalImportant !
The indicator is for experimental purpose only, it must not be used as a decisional tool but only as a visual one (like Zig-Zag, Fractal etc). The information this indicator display is uncertain and subject to drastic changes over time. If you have further question feel free to pm me.
Introduction
Most of the filters you will find are causal, this mean that they depend on present and past input values, this explain the lag they produce. Non causal filters however will use future input values. A well know way to get a zero-phase filter is by using the forward backward method, but this is not possible in pinescript as i recall. So we have to use some kind of function that will display future values, this is possible using the security function in version 2 or the one in version 3 using barmerge.lookahead_on .
The Use Of A Repainting Indicator
Its always better to filter data in order to have a clearer view of what is happening, this can be useful when doing some forecasting or doing less formal kind of analysis. However since it repaint you cant use it as a signal provider or use signals of other indicators using this filter as source.
For example if you want to forecast a smooth indicator, the forecast of this indicator under normal circumstances could still have lag associated with it, so you would have to react before your forecast, this wont happen if you apply this filter as your indicator source.
The Filter
We smooth with a simple moving average the price provided by the security function twice, length control the smoothing level. Since security depend on the time frame you are in you must select your time frame in the indicator parameter selection window.
Filtering using 45 minutes time frame close price in a 5 minutes chart, we fix this by selecting our time frame.
Consider the fact that the input of the indicator is just periodic price, so sometimes the lag can sometimes be less or more than 0 and the estimation not centered.
The indicator can work on time frames up to 1h, after that the filter have some lag, i tried fixing this and i ended up having data errors.
Applying our filter as source for the rsi oscillator.
Conclusion
It is possible to have a kind of zero-phase filters, but it would be better if pinescript could support backward indexing thus making us able to do forward backward filtering.
Since noise can affect our analysis, applying smoothing without having to use offset in plot can be considered useful.
Pentuple Exponential Moving Average (PEMA)This type of moving average was originally developed by Bruno Pio in 2010. I just ported the original code from MetaTrader 5. The method uses a linear combination of EMA cascades to achieve better smoothness. Well, actually you can create your own X-uple EMA, but be sure that the combination' coefficients are valid.
Quadruple Exponential Moving Average (QEMA)This type of moving average was originally developed by Bruno Pio in 2010. I just ported the original code from MetaTrader 5.
Parabolic Weighted Moving AverageThe weights of this moving average are powers of the weights of the standard weighted moving average WMA .
Remember:
When parameter Power = 0, you will get SMA .
When parameter Power = 1, you will get WMA .
Good luck!
Kalman SmootherA derivation of the Kalman Filter.
Lower Gain values create smoother results.The ratio Smoothing/Lag is similar to any Low Lagging Filters.
The Gain parameter can be decimal numbers.
Kalman Smoothing With Gain = 20
For any questions/suggestions feel free to contact me
One Dimensional Parametric Kalman FilterA One Dimensional Kalman Filter, the particularity of Kalman Filtering is the constant recalculation of the Error between the measurements and the estimate.This version is modified to allow more/less filtering using an alternative calculation of the error measurement.
Camparison of the Kalman filter Red with a moving average Black of both period 50
Can be used as source for others indicators such as stochastic/rsi/moving averages...etc
For any questions/suggestions feel free to contact me
On Balance VolumeThis indicator was originally described by Joseph E. Granville in his book "Granville's New Key To Stock Market Profits" (1963).
Moving Average 3.0 (3rd Generation)Moving Average 3.0 (3rd Generation) script.
This indicator was originally developed and described by Dr. Manfred G. Dürschner in his paper "Gleitende Durchschnitte 3.0".
Ehlers StochasticEhlers Stochastic script.
This indicator was originally developed by John F. Ehlers (Stocks & Commodities V. 32:1: Predictive And Successful Indicators).
Ehlers Super Smoother FilterEhlers Super Smoother Filter script.
This indicator was originally developed by John F. Ehlers (see his book `Cybernetic Analysis for Stocks and Futures`, Chapter 13: `Super Smoothers`).
Ehlers Leading IndicatorEhlers Leading Indicator script.
This indicator was originally developed by John F. Ehlers (see his book `Cybernetic Analysis for Stocks and Futures`, Chapter 16: `Leading Indicators`).
Quadratic RegressionA quadratic regression is the process of finding the equation that best fits a set of data.This form of regression is mainly used for smoothing data shaped like a parabola.
Because we can use short/midterm/longterm periods we can say that we use a Quadratic Least Squares Moving Average or a Moving Quadratic Regression.
Like the Linear Regression (LSMA) a Quadratic regression attempt to minimize the sum of squares (sum of the squared difference between a set of data and an estimator), this is why
those kinds of filters have low lag .
Here the difference between a Least Squared Moving Average ( green ) and a Quadratic Regression ( red ) of both period 500
Here it look like the Quadratic Regression have a best fit than the LSMA
Hamming Windowed Volume Weighted Moving AverageApplying a window to the filter weights provides sometimes extra control over the characteristics of the filter.In this script an hamming window is applied to the volume before being used as a weight.In general this process smooth the frequency response of a filter.
Lets compare the classic vwma with hamming windowed vwma
Something i noticed is that windowed filters depending on their period ( high ones in general ) tend to make less bad crosses with the price ( at least with the hamming window )
Here are some data regarding number of crosses with period 50 with the hamming vwma in orange and the classic vwma in purple
Feel free to use the hamming window when using weighted filter.
Double Exponential SmoothingSingle Exponential Smoothing ( ema ) does not excel in following the data when there is a trend. This situation can be improved by the introduction of a second equation with a second constant gamma .
The gamma constant cant be lower than 0 and cant be greater than 1, higher values of gamma create less lag while preserving smoothness.Higher values of length must be followed by higher values of gamma in order to keep the lag low.
The first smoothing part consist of a classic ema but we add s-s1 to the previous smoothed value, this will help decrease lag.The second smoothing part then updates the trend, which is expressed as the difference between the last two values.
Holt Exponential Moving AverageHolt Exponential Moving Average indicator script.
This indicator was originally developed by Charles C. Holt (International Journal of Forecasting 20(1):5-10, March 2004: Forecasting seasonals and trends by exponentially weighted moving averages).
Auto-FilterA least squares filter using the Auto line as source, practical for noise removal without higher phase shift.
Its possible to create another parameter for the auto-line length, just add a parameter Period or whatever you want.
r = round(close/round)*round
dev = stdev(close,Period)
Hope you enjoy :)