OPEN-SOURCE SCRIPT

Filtered, N-Order Power-of-Cosine, Sinc FIR Filter [Loxx]

Filtered, N-Order Power-of-Cosine, Sinc FIR Filter [Loxx] is a Discrete-Time, FIR Digital Filter that uses Power-of-Cosine Family of FIR filters. This is an N-order algorithm that allows up to 50 values for alpha, orders, of depth. This one differs from previous Power-of-Cosine filters I've published in that it this uses Windowed-Sinc filtering. I've also included a Dual Element Lag Reducer using Kalman velocity, a standard deviation filter, and a clutter filter. You can read about each of these below.

Impulse Response
snapshot

What are FIR Filters?
In discrete-time signal processing, windowing is a preliminary signal shaping technique, usually applied to improve the appearance and usefulness of a subsequent Discrete Fourier Transform. Several window functions can be defined, based on a constant (rectangular window), B-splines, other polynomials, sinusoids, cosine-sums, adjustable, hybrid, and other types. The windowing operation consists of multipying the given sampled signal by the window function. For trading purposes, these FIR filters act as advanced weighted moving averages.

A finite impulse response (FIR) filter is a filter whose impulse response (or response to any finite length input) is of finite duration, because it settles to zero in finite time. This is in contrast to infinite impulse response (IIR) filters, which may have internal feedback and may continue to respond indefinitely (usually decaying).

The impulse response (that is, the output in response to a Kronecker delta input) of an Nth-order discrete-time FIR filter lasts exactly {\displaystyle N+1}N+1 samples (from first nonzero element through last nonzero element) before it then settles to zero.

FIR filters can be discrete-time or continuous-time, and digital or analog.

A FIR filter is (similar to, or) just a weighted moving average filter, where (unlike a typical equally weighted moving average filter) the weights of each delay tap are not constrained to be identical or even of the same sign. By changing various values in the array of weights (the impulse response, or time shifted and sampled version of the same), the frequency response of a FIR filter can be completely changed.

An FIR filter simply CONVOLVES the input time series (price data) with its IMPULSE RESPONSE. The impulse response is just a set of weights (or "coefficients") that multiply each data point. Then you just add up all the products and divide by the sum of the weights and that is it; e.g., for a 10-bar SMA you just add up 10 bars of price data (each multiplied by 1) and divide by 10. For a weighted-MA you add up the product of the price data with triangular-number weights and divide by the total weight.

What is a Standard Deviation Filter?
If price or output or both don't move more than the (standard deviation) * multiplier then the trend stays the previous bar trend. This will appear on the chart as "stepping" of the moving average line. This works similar to Super Trend or Parabolic SAR but is a more naive technique of filtering.

What is a Clutter Filter?
For our purposes here, this is a filter that compares the slope of the trading filter output to a threshold to determine whether to shift trends. If the slope is up but the slope doesn't exceed the threshold, then the color is gray and this indicates a chop zone. If the slope is down but the slope doesn't exceed the threshold, then the color is gray and this indicates a chop zone. Alternatively if either up or down slope exceeds the threshold then the trend turns green for up and red for down. Fro demonstration purposes, an EMA is used as the moving average. This acts to reduce the noise in the signal.

What is a Dual Element Lag Reducer?
Modifies an array of coefficients to reduce lag by the Lag Reduction Factor uses a generic version of a Kalman velocity component to accomplish this lag reduction is achieved by applying the following to the array:

2 * coeff - coeff

The response time vs noise battle still holds true, high lag reduction means more noise is present in your data! Please note that the beginning coefficients which the modifying matrix cannot be applied to (coef whose indecies are < LagReductionFactor) are simply multiplied by two for additional smoothing .

Whats a Windowed-Sinc Filter?
Windowed-sinc filters are used to separate one band of frequencies from another. They are very stable, produce few surprises, and can be pushed to incredible performance levels. These exceptional frequency domain characteristics are obtained at the expense of poor performance in the time domain, including excessive ripple and overshoot in the step response. When carried out by standard convolution, windowed-sinc filters are easy to program, but slow to execute.

The sinc function sinc (x), also called the "sampling function," is a function that arises frequently in signal processing and the theory of Fourier transforms.

In mathematics, the historical unnormalized sinc function is defined for x ≠ 0 by

sinc x = sinx / x

In digital signal processing and information theory, the normalized sinc function is commonly defined for x ≠ 0 by

sinc x = sin(pi * x) / (pi * x)

For our purposes here, we are used a normalized Sinc function

Included
  • Bar coloring
  • Loxx's Expanded Source Types
  • Signals
  • Alerts


Related indicators
Variety, Low-Pass, FIR Filter Impulse Response Explorer [Loxx]
Variety, Low-Pass, FIR Filter Impulse Response Explorer [Loxx]


STD-Filtered, Variety FIR Digital Filters w/ ATR Bands [Loxx]
STD-Filtered, Variety FIR Digital Filters w/ ATR Bands [Loxx]


STD/C-Filtered, N-Order Power-of-Cosine FIR Filter [Loxx]
STD/C-Filtered, N-Order Power-of-Cosine FIR Filter [Loxx]


STD/C-Filtered, Truncated Taylor Family FIR Filter [Loxx]
STD/C-Filtered, Truncated Taylor Family FIR Filter [Loxx]


STD/Clutter-Filtered, Kaiser Window FIR Digital Filter [Loxx]
STD/Clutter-Filtered, Kaiser Window FIR Digital Filter [Loxx]


STD/Clutter Filtered, One-Sided, N-Sinc-Kernel, EFIR Filt [Loxx]
STD/Clutter Filtered, One-Sided, N-Sinc-Kernel, EFIR Filt [Loxx]
cardinalsineclutterfiltercosinedigitalfilterdualelementlagreducereducationalfiniteimpulseresponseFIRMoving AveragespowerofcosineSINC

Open-source script

In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in publication is governed by House rules. You can favorite it to use it on a chart.

Want to use this script on a chart?


Public Telegram Group, t.me/algxtrading_public

VIP Membership Info: patreon.com/algxtrading/membership
Also on:

Disclaimer