Rainbow Adaptive RSI [LuxAlgo]The following oscillator uses an adaptive moving average as an input for another RSI oscillator and aims to provide a way to minimize the impact of retracements over the oscillator output without introducing significant lag.
An additional trigger line is present in order to provide entry points from the crosses between the oscillator and the trigger line. More details are given below.
Settings
Length : period of the oscillator
Power : controls the sensitivity of the oscillator to retracements, with higher values minimizing the sensitivity to retracements.
Src : source input of the indicator
The indicator also includes the following graphical settings:
Gradient : Determines the color mode to use for the gradient, options include "Red To Green", "Red To Blue" and "None", with "None" displaying no gradient.
Color fill : Determines whether to fill the area between the oscillator and the trigger line or not, by default "On".
Circles : Determines whether to show circles highlighting the crosses between the oscillator and the trigger line.
Usage
The indicator can be used like any normalized oscillator, but unlike a classical RSI, it does not converge toward 50 with higher length values. This is caused by the RSI using a smooth input.
The power setting will minimize the impact of certain variations on the oscillator:
Here the oscillator at the bottom uses a power value of 1.5.
The trigger line is a smoothed RSI using an EMA as input, and it won't remain as near to 100 and 0 as the main oscillator. Using a moving average of the main oscillator as a trigger line would create faster crosses, but this approach allows us to have no crosses when a retracement is present.
Details
As previously discussed the main oscillator uses an adaptive moving average as input; this adaptive moving average is computed using a smoothing factor derived from an RSI oscillator, a similar adaptive moving average known as ARSI, but unlike ARSI which uses a classical RSI of the closing price for the calculation of the smoothing factor, our smoothing factor makes use of RSI on the adaptive moving average error, which provides a higher level of adaptiveness.
Luxalgo
Trend Regularity Adaptive Moving Average [LuxAlgo]The following moving average adapt to the average number of highest high/lowest low made over a specific period, thus adapting to trend strength. Interesting results can be obtained when using the moving average in a MA crossover system or as a trailing support/resistance.
Settings
Length : Period of the indicator, with higher values returning smoother results.
Src : Source input of the indicator.
Usage
The trend regularity adaptive moving average (TRAMA) can be used like most moving averages, with the advantage of being smoother during ranging markets.
Notice how the moving closer to the price the longer a trend last, such effect can be practical to have early entry points when using the moving average in a MA crossover system, such effect is due to the increasing number of average highest high/lowest low made during longer trends. Note that in the case of a significant uptrend followed by a downtrend, the moving average might penalize the start of the downtrend (and vice versa).
The moving average can also act as an interesting trailing support/resistance.
Details
The moving average is calculated using exponential averaging, using as smoothing factor the squared simple moving average of the number of highest high/lowest low previously made, highest high/lowest low are calculated using rolling maximums/minimums.
Using higher values of length will return fewer highest high/lowest low which explains why the moving average is smoother for higher length values. Squaring allows the moving average to penalize lower values, thus appearing more stationary during ranging markets, it also allows to have some consistency regarding the length setting.
🧙 this moving average would not be possible without the existence of corn syrup 🦎
Trend Volume Accumulations [LuxAlgo]Deeply inspired by the Weiss wave indicator, the following indicator aims to return the accumulations of rising and declining volume of a specific trend. Positive waves are constructed using rising volume while negative waves are using declining volume.
The trend is determined by the sign of the rise of a rolling linear regression.
Settings
Length : Period of the indicator.
Src : Source of the indicator.
Linearity : Allows the output of the indicator to look more linear.
Mult : the multiplicative factor of both the upper and lower levels
Gradient : Use a gradient as color for the waves, true by default.
Usages
The trend volume accumulations (TVA) indicator allows determining the current price trend while taking into account volume, with blue colors representing an uptrend and red colors representing a downtrend.
The first motivation behind this indicator was to see if movements mostly made of declining volume were different from ones made of rising volume.
Waves of low amplitude represent movements with low trading activity.
Using higher values of Linearity allows giving less importance to individual volumes values, thus returning more linear waves as a result.
The indicator includes two levels, the upper one is derived from the cumulative mean of the waves based on rising volume, while the lower one is based on the cumulative mean of the waves based on declining volume, when a wave reaches a level we can expect the current trend to reverse. You can use different values of mult to control the distance from 0 of each level.
Triangular Momentum Oscillator & Real Time Divergences [LuxAlgo]Oscillators are widely used in technical analysis and can return a large amount of information to the trader depending on their design. It is common to use oscillators to detect divergences with the price, divergences occur when the tops/bottoms made by the oscillator and price are negatively correlated.
The following oscillator is based on the momentum of a triangular moving average, hence the name "triangular momentum" because of the very smooth property of the triangular moving average, we aimed at a real-time detection of divergences instead of using more common methods such as relying on pivot high/low detection which are suitable for more noisy oscillators.
The oscillator can also be colored based on a gradient derived from the correlation between its output and the price which can be useful to detect when the oscillator is out of phase (significantly lagging or leading the price).
Settings
length : Period of the oscillator, higher values return a smoother output.
src : Input source of the indicator.
Show Lines : Show lines connecting the current top/bottom with the previous one made by the oscillator when a divergence is detected. True by default.
Color Based On Price/Oscillator Correlation : Allows the color of the oscillator to change based on its correlation with the price, with red colors suggesting a negative correlation.
Usages
The advantage of having a smoother oscillator for divergences detection is that it can be done in real-time since a top or bottom is present when the oscillator first difference cross 0. Smoother oscillators are also easier to interpret, however, they will still suffer from lag.
The divergences detected by the oscillator are regular divergences, where the oscillator leads price variations.
Using higher values of length allows the oscillator to filter out longer-term variations thus being smoother as a result.
By using the color mode based on the price/oscillator correlation we can see where the oscillator leads or lag the price, and since divergences are based on the price and oscillator going in the opposite direction we can have information where price might reverse.
It is also possible to interpret the oscillator without relying on the divergence detection, with a decreasing value of the oscillator indicating a downtrend and an increasing value indicating an uptrend.
ArcTan Oscillator [LuxAlgo]The following indicator is a normalized oscillator making use of the arc tangent sigmoid function (ArcTan), this allows to "squarify" the output result, thus visually filtering out certain variations originally in the oscillator. The magnitude of this effect can be controlled by the user. The indicator contains a gradient that shows the possibility of a reversal, with red colors indicating that a reversal might occur.
Settings
Length : Period of the oscillator
Pre-Gain : Changes the amplitude of the oscillator before passing through the ArcTan function, this allows to amplify/reduce the "squarification" effect introduced by this function. In order to make it easier for the user, the setting is in a (-10,10) range, with negative values reducing the amplitude and positive one increasing it.
Src : Source input of the indicator
Usage
The oscillator can be used to determine the direction of the trend by looking at its sign, if the oscillator is positive, market is up-trending, else down-trending, based on this usage the user might not be interested to look at every variations produced by the oscillator, this is where the hyperbolic tangent function and pre-gain setting can be useful, by using an high value of pre-gain the user will be able to only focus on the sign of the oscillator.
Here pre-gain is set to 5, we can see that the oscillator is now easier to visualize. However, the use of sigmoid functions remove useful information for a trader that needs to find divergences, this is where using a negative value of the pre-gain setting will result useful.
Here pre-gain is set to -5.
The indicator makes use of a gradient to show potential reversals, this gradient is determined by the correlation between the oscillator and the price (this is a way to measure potential divergences). If the color is closer to red it means that a potential reversal might occur, it is possible to say in which direction price might go by looking at the sign of the oscillator, so if the gradient is red and the oscillator is negative price might rise. The gradient is not affected by the pre-gain setting.
Support and Resistance Levels with Breaks [LuxAlgo]This script provides basic pivot point Support and Resistance Levels to the user whilst displaying Break signal tags. It also has the ability to let the user display more significant breaks by filtering using the Volume Oscillator.
Only more significant breaks of these basic levels are displayed to the user when optimized which avoids noise and messy signals.
It will also display breaks with candles it deems to be bullish (e.g. having a longer upper or lower wick).
Notation
The notation of "B" denotes a break of either a Support or Resistance level with a volume greater than the threshold.
The notation of "Bull or Bear Wick" denotes a bullish or bearish candle on the break.
Settings:
Left Bars - the number of bars left hand side of the pivot.
Right Bars - the number of bars right hand side of the pivot.
Volume Threshold - the threshold value (%) for the Volume Oscillator.
Usage & Details:
Knowing when a pivot S/R level is broken with significance can be of great help to a trader. Many times significant levels may not be broken with significant force and the move is therefore weaker and possibly not worth trading.
Swing Highs/Lows & Candle Patterns [LuxAlgo]This script labels swing highs and swing lows as well as the candle pattern that occurred at that precise point. The script can detect the following 6 candle patterns: hammer, inverse hammer, bullish engulfing, hanging man, shooting star, and bearish engulfing.
This indicator by its very nature backpaints by default, meaning that the displayed components are offset in the past.
🔶 USAGE
It can be interesting to see if a top or bottom is associated with a specific candle pattern, this allows us to study the potential of such a pattern to indicate a reversal. You can hover on a label with a specific pattern to see more details about it.
The notations HH, HL, LH, and LL you can see on the labels are defined as follows:
HH : Higher high
HL : Higher low
LH : Lower high
LL : Lower low
🔶 SETTING
Length: Sensitivity of the swing high/low detection, with lower values returning the maximum/minimum of shorter-term price variations.
Percentile Nearest Rank Using Arrays [LuxAlgo]The new array feature is extremely powerful, as it will allow pinescript users to do more complex things, or compute existing calculations more efficiently, it will also be possible to shine some light to some already existing functions, one of them being percentile_nearest_rank .
We have been working on this new feature with our pal alexgrover, and made this script which computes a rolling percentile using the nearest rank method.
Settings
Length: Window of the rolling percentile, determine the number of past data to be used.
Percentage: Return the current value if Percentage % of the data fall below that value, the setting is in a range (0,100).
Src: Input source of the indicator.
Usage
A rolling percentile can have many usages when it comes to technical analysis, this is due to its ability to return the value of three common rolling statistics, the rolling median, which can be obtained using a percentage equal to 50, the rolling maximum, obtained with a percentage equal to 100, and the rolling minimum, obtained with a percentage equal to 0.
When we use our rolling percentile as a rolling median, we can obtain a robust estimation of the underlying trend in the price, while using it as a rolling maximum/minimum can allow us to determine if the market is trending, and at which direction. The rolling maximum/minimum is a rolling statistic used to calculate the well known stochastic oscillator and Donchian channel indicator.
We can also compute rolling quartiles, which can be obtained using a percentage of 25 or 75, with one of 25 returning the lower quartile and 75 the upper quartile.
In blue the upper rolling quartile (%75), in orange the lower rolling quartile (%25), both using a window size of 100.
Details
In order to compute a rolling percentile nearest rank, we must first take the most recent length closing prices, then order them in ascending order, we then return the value of the ordered observations at index (percentage/100*length) - 1 (we use - 1 because our array index starts at 0).