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.
Поиск скриптов по запросу "luxalgo"
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).
Rally Base Drop SND Pivots Strategy [LuxAlgo X PineIndicators]This strategy is based on the Rally Base Drop (RBD) SND Pivots indicator developed by LuxAlgo. Full credit for the concept and original indicator goes to LuxAlgo.
The Rally Base Drop SND Pivots Strategy is a non-repainting supply and demand trading system that detects pivot points based on Rally, Base, and Drop (RBD) candles. This strategy automatically identifies key market structure levels, allowing traders to:
Identify pivot-based supply and demand (SND) zones.
Use fixed criteria for trend continuation or reversals.
Filter out market noise by requiring structured price formations.
Enter trades based on breakouts of key SND pivot levels.
How the Rally Base Drop SND Pivots Strategy Works
1. Pivot Point Detection Using RBD Candles
The strategy follows a rigid market structure methodology, where pivots are detected only when:
A Rally (R) consists of multiple consecutive bullish candles.
A Drop (D) consists of multiple consecutive bearish candles.
A Base (B) is identified as a transition between Rallies and Drops, acting as a pivot point.
The pivot level is confirmed when the formation is complete.
Unlike traditional fractal-based pivots, RBD Pivots enforce stricter structural rules, ensuring that each pivot:
Has a well-defined bullish or bearish price movement.
Reduces false signals caused by single-bar fluctuations.
Provides clear supply and demand levels based on structured price movements.
These pivot levels are drawn on the chart using color-coded boxes:
Green zones represent bullish pivot levels (Rally Base formations).
Red zones represent bearish pivot levels (Drop Base formations).
Once a pivot is confirmed, the high or low of the base candle is used as the reference level for future trades.
2. Trade Entry Conditions
The strategy allows traders to select from three trading modes:
Long Only – Only takes long trades when bullish pivot breakouts occur.
Short Only – Only takes short trades when bearish pivot breakouts occur.
Long & Short – Trades in both directions based on pivot breakouts.
Trade entry signals are triggered when price breaks through a confirmed pivot level:
Long Entry:
A bullish pivot level is formed.
Price breaks above the bullish pivot level.
The strategy enters a long position.
Short Entry:
A bearish pivot level is formed.
Price breaks below the bearish pivot level.
The strategy enters a short position.
The strategy includes an optional mode to reverse long and short conditions, allowing traders to experiment with contrarian entries.
3. Exit Conditions Using ATR-Based Risk Management
This strategy uses the Average True Range (ATR) to calculate dynamic stop-loss and take-profit levels:
Stop-Loss (SL): Placed 1 ATR below entry for long trades and 1 ATR above entry for short trades.
Take-Profit (TP): Set using a Risk-Reward Ratio (RR) multiplier (default = 6x ATR).
When a trade is opened:
The entry price is recorded.
ATR is calculated at the time of entry to determine stop-loss and take-profit levels.
Trades exit automatically when either SL or TP is reached.
If reverse conditions mode is enabled, stop-loss and take-profit placements are flipped.
Visualization & Dynamic Support/Resistance Levels
1. Pivot Boxes for Market Structure
Each pivot is marked with a colored box:
Green boxes indicate bullish demand zones.
Red boxes indicate bearish supply zones.
These boxes remain on the chart to act as dynamic support and resistance levels, helping traders identify key price reaction zones.
2. Horizontal Entry, Stop-Loss, and Take-Profit Lines
When a trade is active, the strategy plots:
White line → Entry price.
Red line → Stop-loss level.
Green line → Take-profit level.
Labels display the exact entry, SL, and TP values, updating dynamically as price moves.
Customization Options
This strategy offers multiple adjustable settings to optimize performance for different market conditions:
Trade Mode Selection → Choose between Long Only, Short Only, or Long & Short.
Pivot Length → Defines the number of required Rally & Drop candles for a pivot.
ATR Exit Multiplier → Adjusts stop-loss distance based on ATR.
Risk-Reward Ratio (RR) → Modifies take-profit level relative to risk.
Historical Lookback → Limits how far back pivot zones are displayed.
Color Settings → Customize pivot box colors for bullish and bearish setups.
Considerations & Limitations
Pivot Breakouts Do Not Guarantee Reversals. Some pivot breaks may lead to continuation moves instead of trend reversals.
Not Optimized for Low Volatility Conditions. This strategy works best in trending markets with strong momentum.
ATR-Based Stop-Loss & Take-Profit May Require Optimization. Different assets may require different ATR multipliers and RR settings.
Market Noise May Still Influence Pivots. While this method filters some noise, fake breakouts can still occur.
Conclusion
The Rally Base Drop SND Pivots Strategy is a non-repainting supply and demand system that combines:
Pivot-based market structure analysis (using Rally, Base, and Drop candles).
Breakout-based trade entries at confirmed SND levels.
ATR-based dynamic risk management for stop-loss and take-profit calculation.
This strategy helps traders:
Identify high-probability supply and demand levels.
Trade based on structured market pivots.
Use a systematic approach to price action analysis.
Automatically manage risk with ATR-based exits.
The strict pivot detection rules and built-in breakout validation make this strategy ideal for traders looking to:
Trade based on market structure.
Use defined support & resistance levels.
Reduce noise compared to traditional fractals.
Implement a structured supply & demand trading model.
This strategy is fully customizable, allowing traders to adjust parameters to fit their market and trading style.
Full credit for the original concept and indicator goes to LuxAlgo.
Rolling VWAP Channel [LuxAlgo]The Rolling VWAP Channel indicator creates a channel by analyzing a large number of Volume Weighted Average Prices (VWAPs) and determining a Channel based on percentile linear interpolation throughout the VWAPs.
🔶 USAGE
In this indicator, we have formed a Channel by first calculating multiple VWAPs, each with their respective anchor, then locating prices using "Percentile Linear Interpolation".
Note: Percentile Linear Interpolation locates the price point at which a specified percentage of VWAPs fall below it.
For example, a percentile of 50% would mean that 50% of the VWAP values fall below this price.
This method of analysis is important since the VWAPs are not often evenly distributed; therefore, we are able to draw importance to different levels by analyzing in percentiles.
When visualized, there is typically clustering of the VWAP values, which occurs at any given time, as seen below.
The channel can be tailored to each individual, with full control of each percentile represented in the channel. That being said, a general concept is that these clustered areas are clear results of sideways price action, which would lead us to believe that after interactions at these levels, we should expect to see a directional decision made by the market closely after.
🔶 DETAILS
The Rolling VWAP calculation calculates a user-specified number of VWAPs (up to 500), each anchored to a unique starting point in the chart based on the start of a new timeframe.
Each new timeframe that occurs causes a new VWAP to initialize. When the total number of desired VWAPs is reached, the oldest VWAP is removed and re-initialized, anchored to the current bar. Hence, the name " Rolling " VWAPs
This method allows us to automatically generate and manage large amounts of VWAPs without the need for user interaction.
After we have generated these VWAPs, we are able to run analyses on their returned values, such as the "Percentile Linear Interpolation" mentioned in the section above.
🔶 SETTINGS
Anchor Period: Choose which time period to use as the anchor point to initialize new VWAPs from.
VWAP Source: Choose the source for your VWAPs to calculate.
VWAP Amount: Sets the number of VWAPs to use. After this amount is on the chart, the oldest will be rolled.
🔹 Channel Lines
Toggle: Enable the associated VWAP Channel percentile line.
Percentile: Adjust each line's percentile independently for your needs.
Width: Adjust the width of the associated percentile line.
🔹 Calculation
Calculated Bars: Tells the indicator how many bars to calculate on, for faster calculations with less history, use a lower value. Setting this to 0 will remove the bar constraint.
ATH/ATL Tracker [LuxAlgo]The ATH/ATL Tracker effectively displays changes made between new All-Time Highs (ATH)/All-Time Lows (ATL) and their previous respective values, over the entire history of available data.
The indicator shows a histogram of the change between a new ATH/ATL and its respective preceding ATH/ATL. A tooltip showing the price made during a new ATH/ATL alongside its date is included.
🔶 USAGE
By tracking the change between new ATHs/ATLs and older ATHs/ATLs, traders can gain insight into market sentiment, breadth, and rotation.
If many stocks are consistently setting new ATHs and the number of new ATHs is increasing relative to old ATHs, it could indicate broad market participation in a rally. If only a few stocks are reaching new ATHs or the number is declining, it might signal that the market's upward momentum is decreasing.
A significant increase in new ATHs suggests optimism and willingness among investors to buy at higher prices, which could be considered a positive sentiment. On the other hand, a decrease or lack of new ATHs might indicate caution or pessimism.
By observing the sectors where stocks are consistently setting new ATHs, users can identify which sectors are leading the market. Sectors with few or no new ATHs may be losing momentum and could be identified as lagging behind the overall market sentiment.
🔶 DETAILS
The indicator's main display is a histogram-style readout that displays the change in price from older ATH/ATLs to Newer/Current ATH/ATLs. This change is determined by the distance that the current values have overtaken the previous values, resulting in the displayed data.
The largest changes in ATH/ATLs from the ticker's history will appear as the largest bars in the display.
The most recent bars (depending on the selected display setting) will always represent the current ATH or ATL values.
When determining ATH & ATL values, it is important to filter out insignificant highs and lows that may happen constantly when exploring higher and lower prices. To combat this, the indicator looks to a higher timeframe than your chart's timeframe in order to determine these more significant ATHs & ATLs.
For Example: If a user was on a 1-minute chart and 5 highs-new highs occur across 5 adjacent bars, this has the potential to show up as 5 new ATHs. When looking at a higher timeframe, 5 minutes, only the highest of the 5 bars will indicate a new ATH. To assist with this, the indicator will display warnings in the dashboard when a suboptimal timeframe is selected as input.
🔹 Dashboard
The dashboard displays averages from the ATH/ATL data to aid in the anticipation and expectations for new ATH/ATLs.
The average duration is an average of the time between each new ATH/ATL, in this indicator it is calculated in "Days" to provide a more comprehensive understanding.
The average change is the average of all change data displayed in the histogram.
🔶 SETTINGS
Duration: The designated higher timeframe to use for filtering out insignificant ATHs & ATLs.
Order: The display order for the ATH/ATL Bars, Options are to display in chronological (oldest to newest) or reverse chronological order (newest to oldest).
Bar Width: Sets the width for each ATH/ATL bar.
Bar Spacing: Sets the # of empty bars in between each ATH/ATL bar.
Dashboard Settings: Parameters for the dashboard's size and location on the chart.
Dynamic Order Blocks [LuxAlgo]The Dynamic Order Blocks indicator displays the most recent unmitigated bullish and bearish order blocks on the chart, providing dynamic support/resistance areas.
When price sweeps an order block, this is highlighted by the script indicating a potential reversal.
The average between the displayed order blocks is also displayed.
🔶 USAGE
Order blocks are a popular method of price action analysis, representing price areas where more significant market participants accumulate their orders.
Displaying order blocks dynamically allows obtaining relevant areas of support/resistance. Users can obtain longer-term order blocks using a higher "Swing Lookback" setting.
Users can also use mitigation events to assess the current trend direction, with price mitigating a bearish order block (breaking above the upper extremity) indicating an uptrend, and price mitigating a bullish order block (breaking below the lower extremity) indicating a downtrend.
🔹 Average Level
An average level obtained from the displayed bullish and bearish order blocks is included in the indicator and offers an additional polyvalent dynamic support/resistance level.
The change of direction of the average line can also be indicative of the current trend direction.
🔹 Dynamic Sweeps
Price sweeping the mitigation level of an order block is highlighted on the chart using bordered rectangles. These highlight a breakout failure and can be indicative of a potential reversal.
🔶 SETTINGS
Swing Lookback: Period of the swing detection used to construct order blocks. Higher values will return longer-term order blocks.
Use Candle Body: Use the candle body as the order block area instead of the candle full range.
ICT Unicorn Model [LuxAlgo]The ICT Unicorn Model indicator highlights the presence of "unicorn" patterns on the user's chart which is derived from the lectures of "The Inner Circle Trader" (ICT) .
Detected patterns are followed by targets with a distance controlled by the user.
🔶 USAGE
At its core, the ICT Unicorn Model relies on two popular concepts, Fair Value Gaps and Breaker Blocks. This combination highlights a future area of support/resistance.
A Bullish Unicorn Pattern consists out of:
A Lower Low (LL), followed by a Higher High (HH)
A Fair Value Gap (FVG), overlapping the established Breaker Block
A successful re-test of the FVG which confirms the pattern.
A Bearish Unicorn Pattern consists of:
A Higher High (HH), followed by a Lower Low (LL)
A Fair Value Gap (FVG), overlapping the established Breaker Block
A successful re-test of the FVG which confirms the pattern
The pattern detection depends on detected swings, which can be controlled by the Swing setting. Using higher values of this setting will return longer-term breaker blocks.
🔹 Using Risk/Reward Targets
A confirmed Unicorn pattern will show a blue ( Target ) / grey ( Stop Loss) "Risk/Reward" areas (RR).
When the Stop Loss or Target is hit, a white line is shown on the concerned side.
The Risk/Reward ratio can be adjusted in the "Targets" settings.
🔹 Trailing Stop
As seen in the previous snapshots, besides the RR areas, this indicator also includes an optional Trailing Stop .
This can be helpful to lower your risk, by exiting earlier than if you would wait until the Stop Loss is hit.
This example shows a successful bullish and bearish Unicorn Pattern . In this scenario, the Trailing Stop could be used for partial Take Profit.
The goal of this publication is to show confirmed Unicorn Patterns . To increase the chance of success, it is important to evaluate the bigger picture & use this in confluence with your price action analysis. For example, look for potential areas of liquidity, consider this pattern only during certain market sessions, avoid trading during heavy impact news, &/or incorporate other aspects of technical analysis rather than just following this pattern blindly.
🔶 DETAILS
🔹 Combine
When disabled, all potential Unicorn Patterns will delete previous unconfirmed patterns:
Enabling Combine ensures the last Unicorn Patterns in the opposite direction will remain.
While the latter bullish pattern became invalid, another one formed.
The combination of the previous bearish pattern, and looking at the big picture, the bullish pattern did not have much chance to be successful.
While disabling 'combine' helps minimize clutter, enabling this feature can give a pattern more chance to hit the SL/Target level.
🔹 Mitigated FVG
Users can determine if a pattern becomes invalid due to a mitigated FVG, causing the pattern to be deleted.
🔹 New pattern detected
When a new pattern is detected, the previous unconfirmed pattern in the same direction (bullish - bullish or bearish - bearish) will be deleted. This will always be the case, whether "Combine' is enabled or disabled.
When the previous pattern was confirmed but no SL or Target level was hit, this pattern will stop updating.
🔶 SETTINGS
🔹 Unicorn
Swings: This sets the length of swings, used for the underlying ZigZag and Unicorn Patterns detection.
Bull: Enable/disable Bullish patterns, and set the color of FVG box and Trailing Stop .
Bear: Enable/disable Bearish patterns, and set the color of FVG box and Trailing Stop .
Combine: When enabled, patterns in opposite directions (bullish/bearish) can exist at the same time. disabling this feature tends to give less clutter. See the "Usage" section for more information.
🔹 Targets
Risk/Reward: Sets the Risk/Reward ratio.
Trailing Stop: Set the length of small swings, which is used for the Trailing Stop .
Targets For Overlay Indicators [LuxAlgo]The Targets For Overlay Indicators is a useful utility tool able to display targets during crossings made between the price and external indicators on the user chart. Users can display a series of two targets, one for crossover events and another one for crossunder event.
Alerts are included for the occurrence of a new target as well as for reached targets.
🔶 USAGE
In order for targets to be displayed users need to select an appropriate input source from the "Source" drop-down input setting. In the example above we apply the indicator to a volatility stop.
This can also easily be done by adding the "Targets For Overlay Indicators" script on the VStop indicator directly.
Targets can help users determine the price limit where the price might start deviating from an indication given by one or multiple indicators. In the context of trading, targets can help secure profits/reduce losses of a trade, as such this tool can be useful to evaluate/determine user take profits/stop losses.
Due to these essentially being horizontal levels, they can also serve as potential support/resistances, with breakouts potentially confirming new trends.
Users might be interested in obtaining new targets once one is reached, this can be done by enabling "New Target When Reached" in the target logic setting section, resulting in more frequent targets.
Lastly, users can restrict new target creation until current ones are reached. This can result in fewer and longer-term targets, with a higher reach rate.
🔹 Examples
The indicator can be applied to many overlay indicators that naturally produce crosses with the price, such as moving average, trailing stops, bands...etc.
Users can use trailing stops such as the SuperTrend or VStop to more easily create clean targets. Do note that certain SuperTrend scripts separate the upper and lower extremities of the SuperTrend into two different plot, which cannot be used with this tool, you may use the provided SuperTrend script below to have a compatible version with our tool:
//@version=5
indicator("SuperTrend", overlay = true)
factor = input.float(3, 'Factor', minval = 0)
atrLen = input.int(10, 'ATR Length', minval = 1)
= ta.supertrend(factor, atrLen)
plot(spt, 'SuperTrend', dir != dir ? na : dir < 0 ? #089981 : #f23645, 2)
plot(spt, 'Circles', dir > dir ? #f23645 : dir < dir ? #089981 : na, 3, plot.style_circles)
Using moving averages can produce more targets than other overlay indicators.
Users can apply the tool twice when using bands or any overlay indicator returning two outputs, using crossover targets for obtaining targets using the upper band as source and crossunder targets for targets using the lower band. We can also use the Trendlines with breaks indicator as example:
🔹 Dashboard
A dashboard is displayed on the top right of the chart, displaying the amount, reach rate of targets 1/2, and total amount.
This dashboard can be useful to evaluate the selected target distances relative to the selected conditions, with a higher reach rate suggesting the distance of the targets from the price allows them to be reached.
🔶 SETTINGS
Source: Indicator source used to create targets. Targets are created when the closing price crosses the specified source.
Show Target Labels: Display target labels on the chart.
Candle Coloring: Apply candle coloring based on the most recent active target.
🔹 Target
Crossover and Crossunder targets use the same settings below:
Show Target: Determines if the target is displayed or not.
Above Price Target: If selected, will create targets above the closing price.
Wait Until Reached: When enabled will not create a new target until an existing one is reached.
New Target When Reached: Will create a new target when an existing one is reached.
Evaluate Wicks: Will use high/low prices to determine if a target is reached. Unselecting this setting will use the closing price.
Target Distance From Price: Controls the distance of a target from the price. Can be determined in currencies/points, percentages, ATR multiples, or ticks.
MA Sabres [LuxAlgo]The "MA Sabres" indicator highlights potential trend reversals based on a moving average direction. Detected reversals are accompanied by an extrapolated "Sabre" looking shape that can be used as support/resistance and as a source of breakouts.
🔶 USAGE
If a selected moving average (MA) continues in the same direction for a certain time, a change in that direction could signify a potential reversal.
In this publication, when a trend change occurs, a sabre-shaped figure is drawn which can be used as support/resistance:
A sabre can be indicative of a direction, however, it can also act as a stop-loss when the price should go in the opposite direction:
Or show potential areas of interest:
🔶 DETAILS
This publication will look for a change in direction after the MA went in the same direction during x consecutive bars (settings: " Reversal after x bars in the same direction ").
Then a circle-shaped drawing will be drawn 1 bar back, at the previous high/low, dependable of the previous direction.
From there originates a sabre-shaped figure where the tip lies as far as the user-set MA length.
The angle of the "sabre" relies on the ATR of the previous 14 bars.
Less volatility will create a flatter sabre while the opposite is true when there is more volatility in the previous 14 bars.
The sabre is created by the latest feature, polylines , which enables us to connect several 'points', resulting in a polyline.new() object.
Do note that sabres are offset by one bar to the past to align their locations.
🔶 SETTINGS
MA Type: SMA, EMA, SMMA (RMA), HullMA, WMA, VWMA, DEMA, TEMA, NONE (off)
Length: this sets the length of MA, and the length of the sabre shape
Previous Trend Duration: After the MA direction is the same for x consecutive bars, the first time the direction changes, a sabre is drawn
Supply and Demand Visible Range [LuxAlgo]The Supply and Demand Visible Range indicator displays areas & levels on the user's chart for the visible range using a novel volume-based method. The script also makes use of intra-bar data to create precise Supply & Demand zones.
🔶 SETTINGS
Threshold %: Percentage of the total visible range volume used as a threshold to set supply/demand areas. Higher values return wider areas.
Resolution: Determines the number of bins used to find each area. Higher values will return more precise results.
Intra-bar TF: Timeframe used to obtain intra-bar data.
🔶 USAGE
The supply/demand areas and levels displayed by the script are aimed at providing potential supports/resistances for users. The script's behavior makes it recalculate each time the visible chart interval/range changes, as such this script is more suited as a descriptive tool.
Price reaching a supply (upper) area that might have been tested a few times might be indicative of a potential reversal down, while price reaching a demand (lower) area that might have been tested a few times could be indicative of a potential reversal up.
The width of each area can also indicate which areas are more liquid, with thinner areas indicating more significant liquidity.
The user can control the width of each area using the Threshold % setting, with a higher setting returning wider areas. The precision setting can also return wider supply/demand areas if very low values are used and has the benefit of improving the script execution time at the cost of precision.
The Supply and Demand Zones indicator returns various levels. The solid-colored levels display the average of each area, while dashed colored lines display the weighted averages of each area. These weighted averages can highlight more liquid price levels within the supply/demand areas.
Central solid/dashed lines display the average between the areas' averages and weighted averages.
🔶 DETAILS
Each supply/demand area is constructed from volume data. The calculation is done as follows:
The accumulated volume within the chart visible range is calculated.
The chart visible range is divided into N bins of equal width (where N is the resolution setting)
Calculation start from the highest visible range price value for the supply area, and lowest value for the demand area.
The volume within each bin after the starting calculation level is accumulated, once this accumulated volume is equal or exceed the threshold value ( p % of the total visible range volume) the area is set.
Each bin volume accumulation within an area is displayed on the left, this can help indicate how fast volume accumulates within an area.
🔶 LIMITATIONS
The script execution time is dependent on all of the script's settings, using more demanding settings might return errors so make sure to be aware of the potential scenarios that might make the script exceed the allowed execution time:
Having a chart's visible range including a high number of bars.
Using a high number of bins (high resolution value) will increase computation time, this can be worsened by using a high threshold %.
Using very low intra-bar timeframe can drastically increase computation time but can also simply throw an error if the chart timeframe is high.
Users facing issues can lower the resolution value or use the chart timeframe for intra-bar data.
Seasonality Chart [LuxAlgo]The Seasonality Chart script displays seasonal variations of price changes that are best used on the daily timeframe. Users have the option to select the calculation lookback (in years) as well as show the cumulative sum of the seasonal indexes.
🔶 SETTINGS
Lookback (Years): Number of years to use for the calculation of the seasonality chart.
Cumulative Sum: Displays the cumulative sum of seasonal indexes.
Use Percent Change: Uses relative price changes (as a percentage) instead of absolute changes.
Linear Regression: Fits a line on the seasonality chart results using the method of least squares.
🔶 USAGE
Seasonality refers to the recurrent tendencies in a time series to increase or decrease at specific times of the year. The proposed tool can highlight the seasonal variation of price changes.
It is common for certain analysts to use a cumulative sum of these indexes to display the results, highlighting months with the most significant bullish/bearish progressions.
The above chart allows us to highlight which months prices tended to have their worst performances over the selected number of years.
🔹 Note
Daily price changes are required for the construction of the seasonal chart. Thus, charts using a low timeframe might lack data compared to higher ones. We recommend using the daily timeframe for the best user experience.
🔶 DETAILS
To construct our seasonal chart, we obtain the average price changes for specific days on a specific month over a user-set number of years from January to December. These individual averages form "seasonal indexes."
This is a common method in classical time series decomposition.
Example:
To obtain the seasonal index of price changes on January first we record every price change occuring on January first over the years of interest, we then average the result.
This operation is done for all days in each month to construct our seasonal chart.
Seasonal variations are often highlighted if the underlying time series is affected by seasonal factors. For market prices, it is difficult to assess if there are stable seasonal variations on all securities.
The consideration of seasonality by market practitioners has often been highlighted through strategies or observations. One of the most common is expressed by the adage "Sell in May and Go Away" for the US market. We can also mention:
January Effect
Santa Claus Rally
Mark Twain Effect
...etc.
These are commonly known as calendar effects and appear from the study of seasonal variations over certain years.
Elliott Wave [LuxAlgo]The Elliott Wave indicator allows users to detect Elliott Wave (EW) impulses as well as corrective segments automatically on the chart. These are detected and displayed serially, allowing users to keep track of the evolution of an impulse or corrective wave.
Fibonacci retracements constructed from detected impulse waves are also included.
This script additionally allows users to get alerted on a wide variety of trigger conditions (see the ALERTS section below).
🔶 SETTINGS
🔹 Source
• "high" -> options high, close, maximum of open/close
• "low" -> options low, close, minimum of open/close
🔹 ZigZag
• The source and length are used to check whether a new Pivot Point is found.
Example:
• source = high/low, length = 10:
• There is a new pivot high when:
- previous high is higher than current high
- the highs of 10 bars prior to previous high are all lower
• These pivot points are used to form the ZigZag lines, which in their turn are used for pattern recognition
🔶 USAGE
The basic principles we use to identify Elliott Wave impulses are:
• A movement in the direction of the trend ( Motive/Impulse wave ) is divided in 5 waves (Wave 1 -> 5)
• The Corrective Wave (against the trend) is divided in 3 waves (Wave A -> C)
• The waves can be subdivided in smaller waves
• Wave 2 can’t retrace more than the beginning of Wave 1
• Wave 4 does not overlap with the price territory of Wave 1
Here we see an example:
Let's look at the development:
• 1 bar after point (5) a confirmed 5 Motive Wave pattern is found (1 -> 5; The 5 Waves can also be seen as one large Wave 1 ).
• Next, the script draws a set of Fibonacci lines, which are area's where the Corrective Wave potentially will bounce.
Here we see the fifth wave is getting larger, the previous highest point is updated, and the Wave 5 is larger than Wave 3 :
(At this point, the pattern is invalidated, and it display as dotted)
Further progression in time:
At this point, a confirmed " 3 Corrective Wave pattern " is found (a -> c)
When a new high has developed, a circle is drawn (in the same color of the lines)
However, when the bottom of the drawn box has breached, a red cross will be visualized.
Further progression:
Later on, a bearish confirmed " 5 Motive Wave pattern " is found (1 -> 5):
When a Corrective Wave becomes invalidated, the ABC pattern will display as dashed (not dotted):
🔶 TECHNIQUES
Pine Script™ introduces methods!
• More information can be found here:
• Pine Script™ v5 User Manual 👉 Methods
• Pine Script™ language reference manual 👉 method
🔶 ALERTS
Dynamic alerts are included in the script, you only need to set 1 alert to receive following messages:
• When a new EW Motive Pattern is found (Bullish/Bearish )
• When a new EW Corrective Pattern is found (Bullish/Bearish )
• When an EW Motive Pattern is invalidated (Bullish/Bearish )
• When an EW Corrective Pattern is invalidated (Bullish/Bearish )
• When possible, a start of a new EW Motive Wave is found (Bullish/Bearish )
• Here is information how you can set these alerts()
Buy Sell Calendar [LuxAlgo]The Buy Sell Calendar indicator displays a calendar showing the sentiment for the current day/month. Three different methods can be used to determine this sentiment.
The calendar can also highlight the percentage of bullish days/months for a month/year.
🔶 SETTINGS
Frequency: Calendar frequency, options include "Daily" and "Monthly"
Sentiment Method: Method used to determine the sentiment for the day/month, options include: "Linreg", "Accumulated Deltas", and "Max/Min"
Timezone Offset: UTC time zone offset.
Limit Date: Limit date used by the calendar, the sentiment of days/months outside this limit will not be returned.
🔹 Calendar
Show Calendar: Determines whether to display or hide the calendar.
Location: Location of the calendar on the chart.
Size: Calendar size.
🔶 USAGE
The proposed script can allow users to quickly determine if a specific day/month is considered bullish or bearish. A green cell is used for bullish days/months, while a red one is used for bearish days/months.
Additionally vertical lines are displayed on new days/months with a color highlighting the current sentiment for this specific day/month. Note that this is done retrospectively, the color of a line set at time t might differ at time t+n .
🔶 SENTIMENT METHODS
Determining whether a day/month is bullish or bearish can be done using three different methods. Note that each method makes use of the closing price as the input, and as such can eventually return different results depending on the selected timeframe. Each method is described below:
🔹 Linreg
The Linreg method fit lines between each day/month using the method of least squares and determines if that particular day is bullish or bearish based on the line slope sign. For example, a rising line would indicate a bullish day/month.
🔹 Accumulated Deltas
The method of accumulated deltas simply accumulates bullish and bearish price changes for the current day/month, the result with the highest magnitude determines the sentiment for that day/month.
🔹 Max/Min
The max/min method computes a trailing maximum and a trailing minimum for the current day/month. The sentiment is determined by the price position relative to the average between the obtained maximum/minimum, with a bullish sentiment being determined if price is above the average.
SMA Directional Matrix [LuxAlgo]This script was created in collaboration with alexgrover and displays a simple & elegant panel showing the direction of simple moving averages with periods in a user-selected range (Min, Max). The displayed number in the panel is the period of a simple moving average and the symbol situated at the right of it is associated with the direction this moving average is taking.
Settings
Min: Minimum period of the moving average
Max: Maximum period of the moving average
Src: Source input of the moving averages
Number Of Columns: Number of columns to be displayed in the panel, handy when using a large range of periods.
Usage
Looking at the direction of moving averages with different periods is extremely useful when it comes to having information about the short/mid/long term overall market sentiment, and can also tell us if the market is trending or ranging.
Here we use periods ranging from 25 to 50, we can see that shorter moving averages react to the recent upward price variation, longer-term moving averages however are still affected by the overall downward variation you can see on the image. We can as such get information about the presence of potentials divergences, with shorter-term moving averages reacting to the divergence while the longer-term moving averages will still display the direction of the main trend.
As such the indicator can give information about how clean a trend is, with a clean trend being defined as a variation containing no retracements. When our trend contains no retracement, the mid/long term moving averages will all have the same direction, however, when a retracement is present, the midterm moving averages might be affected by it, thus displaying a direction contrary to the main trend.
When the market is ranging we can expect the panel to display an equal number of decreasing/increasing moving averages.
Possible Issues
When using a large range of periods, you might have an error message showing: "String is too long", try lowering the range of periods by increasing Min or decreasing Max .
If the script displays the error message "Loop is too long to execute", try resetting the settings and change them back to the one you wanted to use.
Volume Bubbles & Liquidity Heatmap [LuxAlgo]The Volume Bubbles & Liquidity Heatmap indicator highlights volume and liquidity clearly and precisely with its volume bubbles and liquidity heat map, allowing to identify key price areas.
Customize the bubbles with different time frames and different display modes: total volume, buy and sell volume, or delta volume.
🔶 USAGE
The primary objective of this tool is to offer traders a straightforward method for analyzing volume on any selected timeframe.
By default, the tool displays buy and sell volume bubbles for the daily timeframe over the last 2,000 bars. Traders should be aware of the difference between the timeframe of the chart and that of the bubbles.
The tool also displays a liquidity heat map to help traders identify price areas where liquidity accumulates or is lacking.
🔹 Volume Bubbles
The bubbles have three possible display modes:
Total Volume: Displays the total volume of trades per bubble.
Buy & Sell Volume: Each bubble is divided into buy and sell volume.
Delta Volume: Displays the difference between buy and sell volume.
Each bubble represents the trading volume for a given period. By default, the timeframe for each bubble is set to daily, meaning each bubble represents the trading volume for each day.
The size of each bubble is proportional to the volume traded; a larger bubble indicates greater volume, while a smaller bubble indicates lower volume.
The color of each bubble indicates the dominant volume: green for buy volume and red for sell volume.
One of the tool's main goals is to facilitate simple, clear, multi-timeframe volume analysis.
The previous chart shows Delta Volume bubbles with various chart and bubble timeframe configurations.
To correctly visualize the bubbles, traders must ensure there is a sufficient number of bars per bubble. This is achieved by using a lower chart timeframe and a higher bubble timeframe.
As can be seen in the image above, the greater the difference between the chart and bubble timeframes, the better the visualization.
🔹 Liquidity Heatmap
The other main element of the tool is the liquidity heatmap. By default, it divides the chart into 25 different price areas and displays the accumulated trading volume on each.
The image above shows a 4-hour BTC chart displaying only the liquidity heatmap. Traders should be aware of these key price areas and observe how the price behaves in them, looking for possible opportunities to engage with the market.
The main parameters for controlling the heatmap on the settings panel are Rows and Cell Minimum Size. Rows modifies the number of horizontal price areas displayed, while Cell Minimum Size modifies the minimum size of each liquidity cell in each row.
As can be seen in the above BTC hourly chart, the cell size is 24 at the top and 168 at the bottom. The cells are smaller on top and bigger on the bottom.
The color of each cell reflects the liquidity size with a gradient; this reflects the total volume traded within each cell. The default colors are:
Red: larger liquidity
Yellow: medium liquidity
Blue: lower liquidity
🔹 Using Both Tools Together
This indicator provides the means to identify directional bias and market timing.
The main idea is that if buyers are strong, prices are likely to increase, and if sellers are strong, prices are likely to decrease. This gives us a directional bias for opening long or short positions. Then, we combine our directional bias with price rejection or acceptance of key liquidity levels to determine the timing of opening or closing our positions.
Now, let's review some charts.
This first chart is BTC 1H with Delta Weekly Bubbles. Delta Bubbles measure the difference between buy and sell volume, so we can easily see which group is dominant (buyers or sellers) and how strong they are in any given week. This, along with the key price areas displayed by the Liquidity Heatmap, can help us navigate the markets.
We divided market behavior into seven groups, and each group has several bubbles, numbered from 1 to 17.
Bubbles 1, 2, and 3: After strong buyers market consolidates with positive delta, prices move up next week.
Bubbles 3, 4, and 5: Strength changes from buyers to sellers. Next week, prices go down.
Bubbles 6 and 7: The market trades at higher prices, but with negative delta. Next week, prices go down.
Bubbles 7, 8, and 9: Strength changes from sellers to buyers. Next weeks (9 and 10), prices go up.
Bubbles 10, 11, and 12: After strong buyers prices trade higher with a negative delta. Next weeks (12 and 13) prices go down.
Bubbles 12, 14, and 15: Strength changes from sellers to buyers; next week, prices increase.
Bubbles 15 and 16: The market trades higher with a very small positive delta; next week, prices go down.
Current bubble/week 17 is not yet finished. Right now, it is trading lower, but with a smaller negative delta than last week. This may signal that sellers are losing strength and that a potential reversal will follow, with prices trading higher.
This is the same BTC 1H chart, but with price rejections from key liquidity areas acting as strong price barriers.
When prices reach a key area with strong liquidity and are rejected, it signals a good time to take action.
By observing price behavior at certain key price levels, we can improve our timing for entering or exiting the markets.
🔶 DETAILS
🔹 Bubbles Display
From the settings panel, traders can configure the bubbles with four main parameters: Mode, Timeframe, Size%, and Shape.
The image above shows five-minute BTC charts with execution over the last 3,500 bars, different display modes, a daily timeframe, 100% size, and shape one.
The Size % parameter controls the overall size of the bubbles, while the Shape parameter controls their vertical growth.
Since the chart has two scales, one for time and one for price, traders can use the Shape parameter to make the bubbles round.
The chart above shows the same bubbles with different size and shape parameters.
You can also customize data labels and timeframe separators from the settings panel.
🔶 SETTINGS
Execute on last X bars: Number of bars for indicator execution
🔹 Bubbles
Display Bubbles: Enable/Disable volume bubbles.
Bubble Mode: Select from the following options: total volume, buy and sell volume, or the delta between buy and sell volume.
Bubble Timeframe: Select the timeframe for which the bubbles will be displayed.
Bubble Size %: Select the size of the bubbles as a percentage.
Bubble Shape: Select the shape of the bubbles. The larger the number, the more vertical the bubbles will be stretched.
🔹 Labels
Display Labels: Enable/Disable data labels, select size and location.
🔹 Separators
Display Separators: Enable/Disable timeframe separators and select color.
🔹 Liquidity Heatmap
Display Heatmap: Enable/Disable liquidity heatmap.
Heatmap Rows: select number of rows to be displayed.
Cell Minimum Size: Select the minimum size for each cell in each row.
Colors.
🔹 Style
Buy & Sell Volume Colors.
Swing Highs/Lows & Candle Patterns[LuxAlgo] [Filtered]Swing Highs/Lows & Candle Patterns - Tweaked Version
This indicator is a customized and enhanced version of LuxAlgo’s original Swing Highs/Lows & Candle Patterns indicator. It identifies and labels critical swing high and swing low points to help visualize market structure, alongside detecting key reversal candlestick patterns such as Hammer, Inverted Hammer, Bullish Engulfing, Hanging Man, Shooting Star, and Bearish Engulfing.
With added options to selectively display only Lower Highs (LH) and Higher Lows (HL), this tweaked version offers greater flexibility for traders focusing on specific market dynamics. Users can also customize the lookback length and label styling to fit their preferences.
Credit to LuxAlgo for the original concept and foundation of this powerful tool, which this script builds upon to support more tailored technical analysis. Ideal for swing traders and technical analysts seeking improved entry and exit signals through a combination of price swings and candlestick pattern recognition.
ICT Macros All hours - credit to luxalgoICT Macros custom original one from LuxAlgo
default indicator does not enabled for all hours
this one have options to enable all hours
ICT Opening Gaps & EHPDA [LuxAlgo Modified]Modified version of LuxAlgo's original opening gap indicator to include NMOGs and NYOGs
Horns Pattern Identifier with alertsUpdated version of LuxAlgo indicator to add the ability to change the displayed line widths and to raise alerts when the pattern is detected.
The original indicator and it's history are at
Their description:
The following script detects regular and inverted horn patterns. Detected patterns are displayed alongside their respective confirmation and take profit levels derived from the pattern measure rule. Breakout of the confirmation levels are highlighted with labels.
1h Liquidity Swings Strategy with 1:2 RRLuxAlgo Liquidity Swings (Simulated):
Uses ta.pivothigh and ta.pivotlow to detect 1h swing highs (resistance) and swing lows (support).
The lookback parameter (default 5) controls swing point sensitivity.
Entry Logic:
Long: Uptrend, price crosses above 1h swing low (ta.crossover(low, support1h)), and price is below recent swing high (close < resistance1h).
Short: Downtrend, price crosses below 1h swing high (ta.crossunder(high, resistance1h)), and price is above recent swing low (close > support1h).
Take Profit (1:2 Risk-Reward):
Risk:
Long: risk = entryPrice - initialStopLoss.
Short: risk = initialStopLoss - entryPrice.
Take-profit price:
Long: takeProfitPrice = entryPrice + 2 * risk.
Short: takeProfitPrice = entryPrice - 2 * risk.
Set via strategy.exit’s limit parameter.
Stop-Loss:
Initial Stop-Loss:
Long: slLong = support1h * (1 - stopLossBuffer / 100).
Short: slShort = resistance1h * (1 + stopLossBuffer / 100).
Breakout Stop-Loss:
Long: close < support1h.
Short: close > resistance1h.
Managed via strategy.exit’s stop parameter.
Visualization:
Plots:
50-period SMA (trendMA, blue solid line).
1h resistance (resistance1h, red dashed line).
1h support (support1h, green dashed line).
Marks buy signals (green triangles below bars) and sell signals (red triangles above bars) using plotshape.
Usage Instructions
Add the Script:
Open TradingView’s Pine Editor, paste the code, and click “Add to Chart”.
Set Timeframe:
Use the 1-hour (1h) chart for intraday trading.
Adjust Parameters:
lookback: Swing high/low lookback period (default 5). Smaller values increase sensitivity; larger values reduce noise.
stopLossBuffer: Initial stop-loss buffer (default 0.5%).
maLength: Trend SMA period (default 50).
Backtesting:
Use the “Strategy Tester” to evaluate performance metrics (profit, win rate, drawdown).
Optimize parameters for your target market.
Notes on Limitations
LuxAlgo Liquidity Swings:
Simulated using ta.pivothigh and ta.pivotlow. LuxAlgo may include proprietary logic (e.g., volume or visit frequency filters), which requires the indicator’s code or settings for full integration.
Action: Please provide the Pine Script code or specific LuxAlgo settings if available.
Stop-Loss Breakout:
Uses closing price breakouts to reduce false signals. For more sensitive detection (e.g., high/low-based), I can modify the code upon request.
Market Suitability:
Ideal for high-liquidity markets (e.g., BTC/USD, EUR/USD). Choppy markets may cause false breakouts.
Action: Backtest in your target market to confirm suitability.
Fees:
Take-profit/stop-loss calculations exclude fees. Adjust for trading costs in live trading.
Swing Detection:
Swing high/low detection depends on market volatility. Optimize lookback for your market.
Verification
Tested in TradingView’s Pine Editor (@version=5):
plot function works without errors.
Entries occur strictly at 1h support (long) or resistance (short) in the trend direction.
Take-profit triggers at 1:2 risk-reward.
Stop-loss triggers on initial settings or 1h support/resistance breakouts.
Backtesting performs as expected.
Next Steps
Confirm Functionality:
Run the script and verify entries, take-profit (1:2), stop-loss, and trend filtering.
If issues occur (e.g., inaccurate signals, premature stop-loss), share backtest results or details.
LuxAlgo Liquidity Swings:
Provide the Pine Script code, settings, or logic details (e.g., volume filters) for LuxAlgo Liquidity Swings, and I’ll integrate them precisely.
Fibonacci HH LL TRAMA BandLuxAlgo's Trend Moving Adaptive Moving Average was used as a reference to create bands by reading the highest and lowest prices of past bars based on Fibonacci numbers and then multiplying them by the Fibonacci ratio.
LuxAlgo/ LuxAlgo/
In particular, the so-called TRAMA is characterized by its adaptation to the average of the highest and lowest prices over a specific period of time and is used to identify support/resistance.
In order to apply this feature to the maximum extent possible, I used the high or low prices as the source of input, rather than the closing price.
For example,
src = high
not original like
src = close
In addition, I created 6 levels by multiplying the Fibonacci ratio
//Midline
mah = ama1
mal = ama2
m = (mah + mal)/2
//Half Mean Range
dist = (mah - mal)/2
//Levels
h6 = m + dist * 11.089
h5 = m + dist * 6.857
h4 = m + dist * 4.235
h3 = m + dist * 2.618
h2 = m + dist * 1.618
h1 = m + dist * 0.618
l1 = m - dist * 0.618
l2 = m - dist * 1.618
l3 = m - dist * 2.618
l4 = m - dist * 4.235
l5 = m - dist * 6.857
l6 = m - dist * 11.089
If you want to use it for scalping, such as 15 minutes, you can include Fibonacci numbers such as 21,34,55 for a quick reaction type to detect the trend. Also, by including Fibonacci numbers such as 89,144,233, you can see where you stand in the larger trend. Some examples are included below.
For Investors
BTCUSDT 1day Chart Fibonacci number "55"
For Daytraders
BTCUSDT 4hour Chart Fibonacci number "34"
For Scalpers
BTCUSDT 15min Chart Fibonacci number "55"
BTCUSDT 15min Chart Fibonacci number "89"
BTCUSDT 15min Chart Fibonacci number "233"
Fibonacci numbers are 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, etc.,
Fibonacci ratios are 0.618, 1.618, 2.618, 4.236, 6.854, 11.089, etc.,