Inspired by the QQE's filter, this filter applies the process directly to price rather than to a smoothed .
First, a smooth average price range is calculated for the basis of the filter and multiplied by a specified amount.
Next, the filter is calculated by gating price movements that do not exceed the specified range.
Lastly the target ranges are plotted to display the prices that will trigger filter movement.
Custom bar colors are included. The color scheme is based on the filtered price trend.
-> Migrated to v4.
-> Range Filter and the bands are now calculated in a singular function.
-> There are now two different calculation methods for the filter. Select the type you want to use via the "Filter Type" input. Type 1 is the original formula.
-> Multiple range sizing methods are now available. You can choose from the following scales:
- Pips (Works best with forex pairs, obviously)
- % of Price
- Average Change (Default. This is the original sizing method.)
- Standard Deviation
- Absolute (Absolute numerical value)
-> Range smoothing is now optional, and you can specify your smoothing length. Smoothing only affects dynamic scales (ATR, Average Change, and Standard Deviation).
-> Filter movement can now be determined using wicks or close. This can be specified via the "Movement Source" input.
-> Stability Fix: Added correction for NaN values to stabilize initial states.
-> Reorganized the script structure.
-> Revamped the color scheme.
- The Range Filter functions have now been rebuilt using Pine's awesome new array functions.
- Standard deviation calculation has been adjusted to calculate the same as TV's built in stdev() function.
- Rewritten filter direction and bar color variables.
- Included an external output variable for trend information that can easily be sent to other scripts without hardcoding.
The output format is 1 for bullish, and -1 for bearish.
To use this external variable with another script, simply select it from your other script's source dropdown tab.
- Added the ability to average range filter values based on a user defined number of filter changes.
This averaging method utilized the Conditional Sampling EMA function I introduced in my Resampling Filter Pack and only takes a new sample when the filter changes its value.
This opens up a whole new world of possible filter outputs.
To make the signals, you can use a conditions like these:
bull_sig = upward==0 and upward
bear_sig = downward==0 and downward
That will signal the change in var states.