Robust Cycle Measurement [Ehlers]The last of Ehlers Instantaneous Frequency Measurement methods.
This is a more robust version of this script.
I wrote it as a function, so you can simply copy and paste it into any script to add an adaptive period setting capability.
Cheers,
DasanC
Cycle
Cosine, In-Phase & Quadrature IFM [Ehlers]Yet another method for determining the cycle of a market: this time, you have access to the two fastest and most accurate methods
as well as the option to average these methods together.
The controls are pretty straight forward:
Source lets you select the price data to perform calculations on (close, open, etc..)
Max Period is simply the cap for the algorithm when it's checking the validity of Periods.
-> If you notice your plots have a flat top, then increase this value to accept a wider range of Periods.
-> This setting has a min. value of 8 to reduce noise and a max of 100 to ignore waves from higher time frames.
Average? simply averages the two methods of calculation.
-> You may want to do this if you notice the two plots diverging a lot.
-> Cosine IFM tends to favor shorter periods; I-Q IFM tends to favor longer.
Cheers,
- DasanC
Adaptive Bandpass Filter [Ehlers]This is my latest bandpass filter - used to determine if a security is in a trend or cycle.
Now with an adaptive period setting! I use Ehlers in-phase & quadrature dominant cycle measurement (IQ IFM) method to set the period dynamically.
This method favors longer periods which tend to produce smoother, albeit laggier bandpass oscillator plots. From my quick tests, I tend to have lag between 4 and 8 bars, depending on the Timeframe.
The lower timeframes tend to have more noise and thus produce more interfering frequencies that may cause lag.
>Settings
Source: Select the data source to perform calc's on (close, open, etc...)
Period: Select the period to tune. Periods outside of this value will be attenuated (reduced)
Adaptive: Enable to have the I-Q IFM set the period for you (disables Period setting)
Bandpass Tolerance: Allow periods that are plus/minus the chosen period to pass.
Cycle Tolerance: Sensitivity of cycle mode. Lower values consider trends more frequent, higher values consider cycles more frequent.
Bandpass tolerance example: for instance, if this setting is 0.1 (10%) and Period is set to 20, then waves with a period of 18 - 22 will pass.
>How to read
Red line is the bandpass output, showing a lagged version of the dominant cycle representing the
Black lines are the upper and lower bounds for a cycle
Green Background indicates an uptrend
Red background indicates a downtrend
In-Phase & Quadrature IFMThis indicator provides a continuous measurement of a securities' dominant cycle period, based on Ehlers ever-impressive reports and analysis tools.
This method uses in-phase and quadrature analysis, making use of the imaginary domain. This method is prone to favor longer periods and can
allow noise to greatly affect the end result.
>What does that even mean?
Essentially, you get a real-time (low lag) plot of the cycle period in bars. If the I-Q IFM reads "16" then you can expect the distance between swing highs and swing lows to be approx. 16 bars.
>How is this useful?
When you throw an RSI or MACD on your chart, you can now set the "Period" or "Length" value with confidence.
Knowing the dominant cycle period tells you that price reversal will occur around these intervals.
>Extending.
The better way to use this tool is by extending the script into any indicators that use a length or period that is set manually.
Simply use the "len" variable in your custom script to replace your input values.
Now you have a way to adaptively set the period value, using signal processing theory instead of just intuition ;)
PM if you have questions.
Cosine IFM [Ehlers]This indicator provides a continuous measurement of a securities' dominant cycle period, based on Ehlers ever-impressive reports and analysis tools.
>What does that even mean?
Essentially, you get a real-time (low lag) plot of the cycle period in bars. If the COS IFM reads "16" then you can expect the distance between swing highs and swing lows to be approx. 16 bars.
>How is this useful?
When you throw an RSI or MACD on your chart, you can now set the "Period" or "Length" value with confidence.
Knowing the dominant cycle period tells you that price reversal will occur around these intervals.
>Extending.
The better way to use this tool is by extending the script into any indicators that use a length or period that is set manually.
Simply use the "len" variable in your custom script to replace your input values.
Now you have a way to adaptively set the period value, using signal processing theory instead of just intuition ;)
PM if you have questions.
Recursive StochasticThe Self Referencing Stochastic Oscillator
The stochastic oscillator bring values in range of (0,100). This process is called Feature scaling or Unity-Based Normalization
When a function use recursion you can highlights cycles or create smoother results depending on various factors, this is the goal of a recursive stochastic.
For example : k = s(alpha*st+(1-alpha)*nz(k )) where st is the target source.
Using inputs with different scale level can modify the result of the indicator depending on which instrument it is applied, therefore the input must be normalized, here the price is first passed through a stochastic, then this result is used for the recursion.
In order to control the level of the recursion, weights are distributed using the alpha parameter. This parameter is in a range of (0,1), if alpha = 1, then the indicator act as a normal stochastic oscillator, if alpha = 0, then the indicator return na since the initial value for k = 0. The smaller the alpha parameter, the lower the correlation between the price and the indicator, but the indicator will look more periodic.
Comparison
Recursive Stochastic oscillator with alpha = 0.1 and bellow a classic oscillator (alpha = 1)
The use of recursion can both smooth the result and make it more reactive as well.
Filter As Source
It is possible to stabilize the indicator and make it less affected by outliers using a filter as input.
Lower alpha can be used in order to recover some reactivity, this will also lead to more periodic results (which are not inevitably correlated with price)
Hope you enjoy
For any questions/demands feel free to pm me, i would be happy to help you
Ehlers Instantaneous TrendlineEhlers Instantaneous Trendline script.
This indicator was described by John F. Ehlers in his book "Rocket Science for Traders" (2001, Chapter 10: The Instantaneous Trendline).
CCI Cycle (Modified Schaff Trend Cycle)This is a modified Schaff Trend Cycle (STC), which is designed to provide quicker entries and exits.
I've been a huge fan of the STC for a long time, but being based on the MACD means its signals often lag by a bar or two (especially in fast moving markets). All I've done here is take the base STC script (all credit to user @LazyBear), and change the source to a modified CCI.
The CCI Cycle provides more timely entries and exits, often by 1-2 bars. The flip side of the increased responsiveness is a prevalence for more false signals (a perfect example is the 17th August on the above chart). It's the nature of the beast! Still, I've been using this for a few months now and it's (in my opinion) an upgrade on the standard STC.
As always, you will need to pair this with another indicator or method of technical analysis to provide a trade bias, as the CCI Cycle (and STC) aren't designed to trade every signal. In my experience, either divergence identification, or using one or more moving averages works particularly well.
The indicator is also MTF capable, so you can get some interesting results from that.
Any queries let me know.
DD
Missile RSI (RSI of momentum w/ Dominant Cycle length + Fisher)This is a predictive indicator that looks for explosions in momentum of the cycles in price and large shifts in Momentum (Fisher turns the Bimodal PDF into Guassian like) as statistically unlikely events, showing points to exit or reverse positions.
You can adjust the lowpass frequency cuttoff (Aka what cycles you want to remove from the calculations through the super smoother filter).
To be honest you can monkey trade the direction of the Signal if you'd like but the Divergences and Maxing of the values is whats most useful.
Let me know if you guys want me to add anything else.
Ehlers Reverse Exponential Moving AverageEhlers Reverse Exponential Moving Average script.
This indicator was originally developed by John F. Ehlers (Stocks & Commodities V. 35:10: The Reverse EMA Indicator).
DFT - Dominant Cycle Period 8-50 bars - John EhlerThis is the translation of discret cosine tranform (DCT) usage by John Ehler for finding dominant cycle period (DC).
The price is first filtered to remove aliasing noise(bellow 8 bars) and trend informations(above 50 bars), then the power is computed.
The trick here is to use a normalisation against the maximum power in order to get a good frequency resolution.
Current limitation in tradingview does not allow to display all of the periods, still the DC period is plot after beeing computed based on the center of gravity algo.
The DC period can be used to tune all of the indicators based on the cycles of the markets. For instance one can use this (DC period)/2 as an input for RSI.
Hope you find this of some interrest.
Better RSI with bullish / bearish market cycle indicator This script improves the default RSI. First. it identifies regions of the RSI which are oversold and overbought by changing the color of RSI from white to red. Second, it adds additional reference lines at 20,40,50,60, and 80 to better gauge the RSI value. Finally, the coolest feature, the middle 50 line is used to indicate which cycle the price is currently at. A green color at the 50 line indicates a bullish cycle, a red color indicators a bearish cycle, and a white color indicates a neutral cycle.
The cycles are determined using the RSI as follows:
if RSI is overbought, cycle switches to bullish until RSI falls below 40, at which point it becomes neutral
if RSI is oversold, cycle switches bearish until RSI rises above 60, at which point it becomes neutral
a neutral cycle is exited at either overbought or oversold conditions
Very useful, please give it a try and let me know what you think
Relative Vigor Index with Dominant Cycle Detection (RVI)Relative Vigor Index with Dominant Cycle Detection. As Ehler's mentioned, fixed length look back is inherently flawed when it is possible to extract a length from a dominant price cycle. may be less effective if signal to noise ratio is greater than 2, but that usually would not happen at >5m candles, and honestly shouldn't be looking at RV(igor)I when price is moving sideways.
Read just like an RVGI, but adjusted to the current time frame. To reduce noise, changing to heiken ashi will help with signals as well. Let me know if there are improvements!
Made for JD, the OG.
The Perfect RSI (Ehler's Cycle RSI Modified with Discriminator)This is the RSI indicator that I use. It combines two concepts of John Ehler. It integrates the idea of Highpass filtering the Price data, along with the the idea of automatically determining the Dominant price cycle through a Homodyne Discriminator, and using half of a cycle length as the input for the RSI. Not only determines the most effective range for the RSI by setting it based on the cycle, but also makes the RSI PDF(Probability Distribution Function) adjustable as shown in John Ehler's papers. Still needs some tweaking on determining the best calculations for cycles, and whether or not to better filter the price data into the discriminator.
Works just like a normal RSI, but should have less false signals, and also has the option for super smoothing. Play around it and see if theres any new indications or signals that come from it ;)
Let me know if there's any concerns or additions!
B3 Bar Cycle MTF (fix)Apologies, there was an error in printing for the thick gray boxes, happened when MTF was switched on. All better, and here is the details from before:
This is an interesting study that can be used as a tool for determining trend direction, and also could be a trailing stop setter. I use it as a gauge on MTF settings. If on, you can look at the bar cycle of the 1h while on the 15m giving you a lot of information in one tool. If a line is missing high or low, it is because it was broken, if both exist you are trading in range and cloud appears. If both sides break you get thick gray boxes above and below bar.
Get used to editing the inputs to suit your liking. Often 3-5 length and always looking at different resolutions to get a big picture story. You could put multiple instances of the study up to see them simultaneously. I based the idea off of Krausz's 3 day cycle which you can read about in his teachings. I tend to find it looking better using Heikin Ashi bar-style.
B3 Bar Cycle MTFThis is an interesting study that can be used as a tool for determining trend direction, and also could be a trailing stop setter. I use it as a gauge on MTF settings, in the pic MTF is turned off. If on, you can look at the bar cycle of the 1h while on the 15m giving you a lot of information in one tool. If a line is missing high or low, it is because it was broken, if both exist you are trading in range and cloud appears. If both sides break you get thick gray boxes above and below bar.
Get used to editing the inputs to suit your liking. Often 3-5 length and always looking at different resolutions to get a big picture story. You could put multiple instances of the study up to see them simultaneously. I based the idea off of Krausz's 3 day cycle which you can read about in his teachings. I tend to find it looking better using Heikin Ashi bar-style.
[RS]MTF Fibonacci Cycles V0EXPERIMENTAL:
Fibonacci rate levels based on price advance/decline, can be used to make visualizations of fib clusters or for cycles.
Ehlers Cyber Cycle Indicator [LazyBear]The Cyber Cycle Indicator, developed by John Ehlers, is used for isolating the cycle component of the market from its trend counterpart. Unlike other oscillators like RSI, Cyber Cycle Indicator's wave has a variable amplitude.
Use the osc/signal crossover for entry/exit points. You can enable highlighting the crossovers by using region fills (via options page). I have also added an option to color the bars based on this.
Actually I have lot of Ehlers indicators in my to-publish backlog, will try to prioritize them over the others in the pipeline. Lets have an Ehlers week for indicators :)
More info:
Cybernetic Analysis for Stocks and Futures
List of my public indicators: bit.ly
List of my app-store indicators: blog.tradingview.com